diff --git a/MultiClient.py b/MultiClient.py index 42748abb..174effef 100644 --- a/MultiClient.py +++ b/MultiClient.py @@ -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() }]]) diff --git a/Utils.py b/Utils.py index 38f2c11b..2e23c75a 100644 --- a/Utils.py +++ b/Utils.py @@ -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