mirror of
https://github.com/cloudwu/skynet.git
synced 2026-07-25 12:43: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)
|
local b = crypt.base64encode(etoken)
|
||||||
socket.writeline(fd, 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)
|
socket.close(fd)
|
||||||
|
|
||||||
|
local subid = crypt.base64decode(string.sub(result, 5))
|
||||||
|
|
||||||
----- connect to game server
|
----- connect to game server
|
||||||
|
|
||||||
local input = {}
|
local input = {}
|
||||||
@@ -105,7 +108,7 @@ end
|
|||||||
|
|
||||||
local index = 0
|
local index = 0
|
||||||
local request = 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)
|
local hmac = crypt.hmac64(crypt.hashkey(handshake), secret)
|
||||||
|
|
||||||
socket.send(fd, handshake .. ":" .. crypt.base64encode(hmac))
|
socket.send(fd, handshake .. ":" .. crypt.base64encode(hmac))
|
||||||
|
|||||||
@@ -15,11 +15,11 @@ local server_mt = {}
|
|||||||
server_mt.__index = server_mt
|
server_mt.__index = server_mt
|
||||||
|
|
||||||
function server_mt:kick(uid)
|
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
|
end
|
||||||
|
|
||||||
function server_mt:login(uid, secret)
|
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
|
end
|
||||||
|
|
||||||
function server.auth_handler(token)
|
function server.auth_handler(token)
|
||||||
@@ -40,8 +40,9 @@ function server.login_handler(server, uid, secret)
|
|||||||
end
|
end
|
||||||
assert(user_online[uid] == nil, "kick failed")
|
assert(user_online[uid] == nil, "kick failed")
|
||||||
local gameserver = assert(server_list[server], "Unknown server")
|
local gameserver = assert(server_list[server], "Unknown server")
|
||||||
gameserver:login(uid, secret)
|
local subid = gameserver:login(uid, secret)
|
||||||
user_online[uid] = gameserver
|
user_online[uid] = gameserver
|
||||||
|
return tostring(subid)
|
||||||
end
|
end
|
||||||
|
|
||||||
local CMD = {}
|
local CMD = {}
|
||||||
|
|||||||
@@ -32,7 +32,7 @@ function handler.connect(fd, addr)
|
|||||||
end
|
end
|
||||||
|
|
||||||
local function auth(fd, msg, sz)
|
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 message = netpack.tostring(msg, sz)
|
||||||
local username, index, request , hmac = string.match(message, "([^:]*):([^:]*):([^:]*):([^:]*)")
|
local username, index, request , hmac = string.match(message, "([^:]*):([^:]*):([^:]*):([^:]*)")
|
||||||
local content = users[username]
|
local content = users[username]
|
||||||
@@ -147,7 +147,8 @@ end
|
|||||||
local CMD = {}
|
local CMD = {}
|
||||||
|
|
||||||
function CMD.login(source, server, uid, secret)
|
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] = {
|
users[username] = {
|
||||||
server = server,
|
server = server,
|
||||||
uid = uid,
|
uid = uid,
|
||||||
@@ -157,6 +158,7 @@ function CMD.login(source, server, uid, secret)
|
|||||||
reserved = 0,
|
reserved = 0,
|
||||||
response = {},
|
response = {},
|
||||||
}
|
}
|
||||||
|
return subid
|
||||||
end
|
end
|
||||||
|
|
||||||
function CMD.logout(source)
|
function CMD.logout(source)
|
||||||
|
|||||||
Reference in New Issue
Block a user