Added auth tokens
This commit is contained in:
10
network/server/Client.gd
Normal file
10
network/server/Client.gd
Normal 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 != ""
|
@ -1,5 +0,0 @@
|
||||
class_name Connection
|
||||
|
||||
var peer: PacketPeerUDP
|
||||
var address: String
|
||||
var last_packet: int
|
@ -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"
|
||||
|
@ -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)
|
||||
|
Reference in New Issue
Block a user