Auth.gd 2.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. extends Node
  2. var net = NetworkedMultiplayerENet.new()
  3. var api = MultiplayerAPI.new()
  4. var port = 1909
  5. var maxplayer = 100
  6. #var cert = load('user://Certificate/x509_Certificate.crt')
  7. #var key = load('user://Certificate/x509_Key.key')
  8. func _ready():
  9. print('Login listening to port: ' + str(port))
  10. net.create_server(port, maxplayer)
  11. # net.set_dtls_key(key)
  12. # net.set_dtls_certificate(cert)
  13. # net.set_dtls_enabled(true)
  14. self.set_custom_multiplayer(api)
  15. custom_multiplayer.set_root_node(self)
  16. custom_multiplayer.set_network_peer(net)
  17. # net.connect("peer_disconnected",self,"disc")
  18. net.connect("peer_connected",self,"conn")
  19. pass # Replace with function body.
  20. func _process(_delta):
  21. custom_multiplayer.poll()
  22. var playerphsyics = preload('res://playerphysics.tscn')
  23. func conn(id):
  24. print('login client connected, id: ' + str(id))
  25. export(NodePath) var PostgreSQL
  26. remote func RegisterPlayer(username, password, password2, email, salt, requester):
  27. var db = get_parent().get_node('PostgreSQL')
  28. var message = 'registering...'
  29. if password != password2:
  30. message = 'passwords are not equal'
  31. var email_check = db.Read('login_database','email',"'"+email+"'")
  32. var username_check = db.Read('login_database','username',"'"+username+"'")
  33. if email_check != []: message = 'this email is already registered'
  34. if username_check != []: message = 'soemone already has this username'
  35. print(message)
  36. rpc_id(api.get_rpc_sender_id(), 'update_status', message)
  37. if message != 'registering...': return
  38. for i in 1024: password = (password+salt).sha256_text()
  39. print('adding new data to the login db...')
  40. db.Create('login_database',['email','username','password','salt','creation_date'],[email, username, password, salt, str(OS.get_unix_time())])
  41. remote func salt_request(username):
  42. var db = get_parent().get_node('PostgreSQL')
  43. print('salt requested... by ' + str(username))
  44. var salt = db.Read('login_database','username',"'"+username+"'")
  45. print(salt)
  46. rpc_id(api.get_rpc_sender_id(), 'salt_arrived', salt[0][4])
  47. remote func password_confirmation(username,password, salt):
  48. var message = 'login...'
  49. var db = get_parent().get_node('PostgreSQL')
  50. for i in 1024: password = (password+salt).sha256_text()
  51. var password_db = db.Read('login_database','username',"'"+username+"'")[0][3]
  52. print(salt)
  53. print(password)
  54. print(password_db)
  55. if password != password_db: message = 'password or username is wrong'
  56. rpc_id(api.get_rpc_sender_id(), 'update_status', message)
  57. if message != 'login...': return
  58. var ip = api.get_peer_address(api.get_rpc_sender_id())
  59. print(ip)
  60. var token = ( username+ip+str(OS.get_unix_time())).sha256_text()
  61. db.Delete('validtokens_database',"username", "'"+username+"'")
  62. db.Create('validtokens_database',['username','token','ip','creation_date'],[username, token, ip, str(OS.get_unix_time())])
  63. rpc_id(api.get_rpc_sender_id(), '_on_servertoken', token, username)
  64. print(message)