Added auth tokens

This commit is contained in:
2024-01-22 23:41:48 +01:00
parent 1f6c128893
commit 532a1faa21
6 changed files with 60 additions and 33 deletions

10
network/server/Client.gd Normal file
View File

@ -0,0 +1,10 @@
class_name Client
var peer: PacketPeerUDP
var address: String
var last_packet: int
var auth_token: String
var account: Account
func is_logged_in() -> bool:
return auth_token != ""

View File

@ -1,5 +0,0 @@
class_name Connection
var peer: PacketPeerUDP
var address: String
var last_packet: int

View File

@ -14,6 +14,11 @@ func _ready():
%Server.set_handler(Packet.LOGIN, self)
func handle_packet(data: PackedByteArray, peer: PacketPeer):
var client = %Server.peer_to_client(peer)
if client.is_logged_in():
return
var data_string = data.get_string_from_utf8()
var login_request = JSON.parse_string(data_string)
@ -32,9 +37,12 @@ func handle_packet(data: PackedByteArray, peer: PacketPeer):
fail_login(peer)
return
client.auth_token = generate_auth_token()
var buffer := StreamPeerBuffer.new()
buffer.put_8(Packet.LOGIN)
buffer.put_8(SUCCESS)
buffer.put_data(client.auth_token.to_ascii_buffer())
peer.put_packet(buffer.data_array)
func fail_login(peer: PacketPeer):
@ -42,3 +50,6 @@ func fail_login(peer: PacketPeer):
buffer.put_8(Packet.LOGIN)
buffer.put_8(FAIL)
peer.put_packet(buffer.data_array)
func generate_auth_token() -> String:
return "secret"

View File

@ -27,20 +27,11 @@ func _process(_delta):
# Accept new connections
while server.is_connection_available():
var peer: PacketPeerUDP = server.take_connection()
var address := "%s:%d" % [peer.get_packet_ip(), peer.get_packet_port()]
if !clients.has(address):
var connection = Connection.new()
connection.peer = peer
connection.address = address
clients[address] = connection
peer_connected(connection)
clients[address].last_packet = now
peer_to_client(peer).last_packet = now
# Process packets from clients
for key in clients:
var client = clients[key]
for address in clients:
var client = clients[address]
var peer = client.peer
while peer.get_available_packet_count() > 0:
@ -62,8 +53,24 @@ func _process(_delta):
packet_count = 0
last_statistics = Time.get_ticks_msec()
func peer_connected(c: Connection):
func peer_address(peer: PacketPeerUDP):
return "%s:%d" % [peer.get_packet_ip(), peer.get_packet_port()]
func peer_to_client(peer: PacketPeerUDP) -> Client:
var address = peer_address(peer)
if !clients.has(address):
var client = Client.new()
client.peer = peer
client.address = address
clients[address] = client
peer_connected(client)
return client
return clients[address]
func peer_connected(c: Client):
print("[Server] Connected: ", c.address)
func peer_disconnected(c: Connection):
func peer_disconnected(c: Client):
print("[Server] Disconnected: ", c.address)