mirror of
https://github.com/cloudwu/skynet.git
synced 2026-07-22 02:53:09 +00:00
add subid
This commit is contained in:
@@ -71,10 +71,13 @@ local etoken = crypt.desencode(secret, encode_token(token))
|
||||
local b = crypt.base64encode(etoken)
|
||||
socket.writeline(fd, crypt.base64encode(etoken))
|
||||
|
||||
print(readline())
|
||||
|
||||
local result = readline()
|
||||
local code = tonumber(string.sub(result, 1, 3))
|
||||
assert(code == 200)
|
||||
socket.close(fd)
|
||||
|
||||
local subid = crypt.base64decode(string.sub(result, 5))
|
||||
|
||||
----- connect to game server
|
||||
|
||||
local input = {}
|
||||
@@ -105,7 +108,7 @@ end
|
||||
|
||||
local index = 0
|
||||
local request = 0
|
||||
local handshake = string.format("%s@%s:%d:%d", crypt.base64encode(token.user), crypt.base64encode(token.server) , index, request)
|
||||
local handshake = string.format("%s#%s@%s:%d:%d", crypt.base64encode(token.user), crypt.base64encode(subid),crypt.base64encode(token.server) , index, request)
|
||||
local hmac = crypt.hmac64(crypt.hashkey(handshake), secret)
|
||||
|
||||
socket.send(fd, handshake .. ":" .. crypt.base64encode(hmac))
|
||||
|
||||
@@ -15,11 +15,11 @@ local server_mt = {}
|
||||
server_mt.__index = server_mt
|
||||
|
||||
function server_mt:kick(uid)
|
||||
skynet.call(self.address, "lua", "kick", self.name, uid)
|
||||
return skynet.call(self.address, "lua", "kick", self.name, uid)
|
||||
end
|
||||
|
||||
function server_mt:login(uid, secret)
|
||||
skynet.call(self.address, "lua", "login", self.name, uid, secret)
|
||||
return skynet.call(self.address, "lua", "login", self.name, uid, secret)
|
||||
end
|
||||
|
||||
function server.auth_handler(token)
|
||||
@@ -40,8 +40,9 @@ function server.login_handler(server, uid, secret)
|
||||
end
|
||||
assert(user_online[uid] == nil, "kick failed")
|
||||
local gameserver = assert(server_list[server], "Unknown server")
|
||||
gameserver:login(uid, secret)
|
||||
local subid = gameserver:login(uid, secret)
|
||||
user_online[uid] = gameserver
|
||||
return tostring(subid)
|
||||
end
|
||||
|
||||
local CMD = {}
|
||||
|
||||
@@ -32,7 +32,7 @@ function handler.connect(fd, addr)
|
||||
end
|
||||
|
||||
local function auth(fd, msg, sz)
|
||||
-- base64(base64(uid)@base64(server):index:request:base64(hmac)
|
||||
-- base64(base64(uid)@base64(server)#base64(subid):index:request:base64(hmac)
|
||||
local message = netpack.tostring(msg, sz)
|
||||
local username, index, request , hmac = string.match(message, "([^:]*):([^:]*):([^:]*):([^:]*)")
|
||||
local content = users[username]
|
||||
@@ -147,7 +147,8 @@ end
|
||||
local CMD = {}
|
||||
|
||||
function CMD.login(source, server, uid, secret)
|
||||
local username = crypt.base64encode(uid) .. '@' .. crypt.base64encode(server)
|
||||
local subid = "1"
|
||||
local username = crypt.base64encode(uid) .. '#'..crypt.base64encode(subid)..'@' .. crypt.base64encode(server)
|
||||
users[username] = {
|
||||
server = server,
|
||||
uid = uid,
|
||||
@@ -157,6 +158,7 @@ function CMD.login(source, server, uid, secret)
|
||||
reserved = 0,
|
||||
response = {},
|
||||
}
|
||||
return subid
|
||||
end
|
||||
|
||||
function CMD.logout(source)
|
||||
|
||||
Reference in New Issue
Block a user