add subid

This commit is contained in:
Cloud Wu
2014-07-13 21:25:44 +08:00
parent 0d1c3a64d1
commit ad58ed8a26
3 changed files with 14 additions and 8 deletions

View File

@@ -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))

View File

@@ -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 = {}

View File

@@ -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)