diff --git a/Main.py b/Main.py index 53855b7e..46395279 100644 --- a/Main.py +++ b/Main.py @@ -311,7 +311,7 @@ def main(args, seed=None, baked_server_options: Optional[Dict[str, object]] = No multidata = zlib.compress(pickle.dumps(multidata), 9) with open(os.path.join(temp_dir, f'{outfilebase}.archipelago'), 'wb') as f: - f.write(bytes([1])) # version of format + f.write(bytes([2])) # version of format f.write(multidata) multidata_task = pool.submit(write_multidata) diff --git a/MultiServer.py b/MultiServer.py index 7faa12ff..f81c5083 100644 --- a/MultiServer.py +++ b/MultiServer.py @@ -241,8 +241,8 @@ class Context: @staticmethod def decompress(data: bytes) -> dict: format_version = data[0] - if format_version != 1: - raise Exception("Incompatible multidata.") + if format_version > 2: + raise Utils.VersionException("Incompatible multidata.") return restricted_loads(zlib.decompress(data[1:])) def _load(self, decoded_obj: dict, use_embedded_server_options: bool): diff --git a/Utils.py b/Utils.py index c2eab405..595ce1ae 100644 --- a/Utils.py +++ b/Utils.py @@ -474,3 +474,7 @@ def stream_input(stream, queue): thread = Thread(target=queuer, name=f"Stream handler for {stream.name}", daemon=True) thread.start() return thread + + +class VersionException(Exception): + pass diff --git a/WebHostLib/__init__.py b/WebHostLib/__init__.py index b42ac6a0..be7c442a 100644 --- a/WebHostLib/__init__.py +++ b/WebHostLib/__init__.py @@ -136,7 +136,7 @@ def view_seed(seed: UUID): seed = Seed.get(id=seed) if not seed: abort(404) - return render_template("viewSeed.html", seed=seed) + return render_template("viewSeed.html", seed=seed, slot_count=count(seed.slots)) @app.route('/new_room/') diff --git a/WebHostLib/templates/viewSeed.html b/WebHostLib/templates/viewSeed.html index deb62617..410b2206 100644 --- a/WebHostLib/templates/viewSeed.html +++ b/WebHostLib/templates/viewSeed.html @@ -22,6 +22,10 @@ Created:  + + Players:  + {{ slot_count }} + {% if seed.spoiler %} Spoiler:  diff --git a/WebHostLib/upload.py b/WebHostLib/upload.py index d1911a92..bf3dc77a 100644 --- a/WebHostLib/upload.py +++ b/WebHostLib/upload.py @@ -9,7 +9,7 @@ from flask import request, flash, redirect, url_for, session, render_template from pony.orm import flush, select from WebHostLib import app, Seed, Room, Slot -from Utils import parse_yaml +from Utils import parse_yaml, VersionException from Patch import preferred_endings banned_zip_contents = (".sfc",) @@ -102,11 +102,15 @@ def uploads(): elif file and allowed_file(file.filename): if zipfile.is_zipfile(file): with zipfile.ZipFile(file, 'r') as zfile: - res = upload_zip_to_db(zfile) - if type(res) == str: - return res - elif res: - return redirect(url_for("view_seed", seed=res.id)) + try: + res = upload_zip_to_db(zfile) + except VersionException: + flash(f"Could not load multidata. Wrong Version detected.") + else: + if type(res) == str: + return res + elif res: + return redirect(url_for("view_seed", seed=res.id)) else: file.seek(0) # offset from is_zipfile check # noinspection PyBroadException