Make clients identify themselves against server

prep for potential later async auth system. Wanted to get this into the 2.3 client update.
This commit is contained in:
Fabian Dill 2020-06-04 21:27:29 +02:00
parent dac3c0ca29
commit d25973989a
2 changed files with 17 additions and 2 deletions

View File

@ -9,7 +9,7 @@ import functools
import webbrowser
import multiprocessing
import socket
import uuid
from random import randrange
from Utils import get_item_name_from_id, get_location_name_from_address, ReceivedItem
@ -888,7 +888,7 @@ async def server_auth(ctx: Context, password_requested):
ctx.auth = ctx.rom.copy()
await ctx.send_msgs([['Connect', {
'password': ctx.password, 'rom': ctx.auth, 'version': Utils._version_tuple, 'tags': get_tags(ctx),
'uuid': uuid.getnode()
'uuid': Utils.get_unique_identifier()
}]])

View File

@ -226,6 +226,9 @@ def persistent_store(category, key, value):
def persistent_load() -> typing.Dict[dict]:
storage = getattr(persistent_load, "storage", None)
if storage:
return storage
path = local_path("_persistent_storage.yaml")
storage: dict = {}
if os.path.exists(path):
@ -237,6 +240,7 @@ def persistent_load() -> typing.Dict[dict]:
logging.debug(f"Could not read store: {e}")
if storage is None:
storage = {}
persistent_load.storage = storage
return storage
@ -244,3 +248,14 @@ class ReceivedItem(typing.NamedTuple):
item: int
location: int
player: int
def get_unique_identifier():
uuid = persistent_load().get("client", {}).get("uuid", None)
if uuid:
return uuid
import uuid
uuid = uuid.getnode()
persistent_store("client", "uuid", uuid)
return uuid