summaryrefslogtreecommitdiff
path: root/server.lua
diff options
context:
space:
mode:
authorLizzy Fleckenstein <lizzy@vlhl.dev>2026-06-03 02:16:04 +0200
committerLizzy Fleckenstein <lizzy@vlhl.dev>2026-06-03 02:16:04 +0200
commit4a79d7220f753cc9e26a2812da131218b46b6c1c (patch)
treec0631982a2584222299f55d3b2865b0cdc6d957c /server.lua
parentf08683a3775989e749237cd001a8eaf3193d1684 (diff)
downloadr6p-4a79d7220f753cc9e26a2812da131218b46b6c1c.tar.xz
vendor json library
Diffstat (limited to 'server.lua')
-rw-r--r--server.lua34
1 files changed, 18 insertions, 16 deletions
diff --git a/server.lua b/server.lua
index 4ae4c87..8111436 100644
--- a/server.lua
+++ b/server.lua
@@ -1,7 +1,5 @@
local enet = require("enet")
-local json = require("json")
local socket = require("socket")
-local base64 = require("base64")
local common = require("common")
local server = {}
@@ -21,7 +19,8 @@ end
local function handle_match(srv, pkt)
if pkt.type == "server_match" then
- if type(pkt.game_id) ~= "string" then
+ local game_id = type(pkt.game_id) == "string" and common.base64_dec(pkt.game_id)
+ if not game_id then
print("[server] server_match: invalid game_id")
return
end
@@ -31,8 +30,8 @@ local function handle_match(srv, pkt)
return
end
- srv.game_id = pkt.game_id
- srv.invite = base64.encode(srv.game_id .. srv.secret)
+ srv.game_id = game_id
+ srv.invite = common.base64_enc(srv.game_id .. srv.secret)
elseif pkt.type == "server_join" then
if type(pkt.peer_addr) ~= "string" then
print("[server] server_join: invalid peer_addr")
@@ -44,7 +43,8 @@ end
local function handle_client(srv, peer, pkt)
if pkt.type == "server_hi" then
- if type(pkt.secret) ~= "string" then
+ local secret = type(pkt.secret) == "string" and common.base64_dec(pkt.secret)
+ if not secret then
print("[server] server_hi: invalid secret")
return
end
@@ -54,14 +54,14 @@ local function handle_client(srv, peer, pkt)
return
end
- if pkt.secret == srv.secret then
+ if secret == srv.secret then
print("[server] auth success " .. tostring(peer))
srv.clients[peer] = { peer = peer }
- peer:send(json.encode({ type = "client_hi" }))
+ peer:send(common.json_enc({ type = "client_hi" }))
else
print("[server] auth failure " .. tostring(peer))
- peer:send(json.encode({ type = "client_reject" }))
- peer:disconnect()
+ peer:send(common.json_enc({ type = "client_reject" }))
+ peer:disconnect_later()
end
end
end
@@ -70,15 +70,17 @@ function server.update(srv)
local event = srv.host:service(20)
while event do
if event.type == "receive" then
- local pkt = json.decode(event.data)
- if event.peer == srv.match then
- handle_match(srv, pkt)
- else
- handle_client(srv, event.peer, pkt)
+ local pkt = common.json_dec(event.data)
+ if pkt then
+ if event.peer == srv.match then
+ handle_match(srv, pkt)
+ else
+ handle_client(srv, event.peer, pkt)
+ end
end
elseif event.type == "connect" then
if event.peer == srv.match then
- srv.match:send(json.encode({ type = "match_register" }))
+ srv.match:send(common.json_enc({ type = "match_register" }))
end
print("[server] connect " .. tostring(event.peer))
elseif event.type == "disconnect" then