From d1bdb6198b184c0405c8ddbb8871a04d8dbf1073 Mon Sep 17 00:00:00 2001 From: Andrew Date: Tue, 2 Aug 2022 21:08:53 -0400 Subject: [PATCH 1/4] Fix server creation with serverjars API By accident this adds some modded support. TODO: Cleanup javascript in wizard. Fix naming on selects in wizard --- app/classes/minecraft/serverjars.py | 38 ++++---- app/classes/shared/main_controller.py | 3 +- app/classes/web/server_handler.py | 12 ++- app/frontend/templates/server/wizard.html | 114 +++++++++++++++------- 4 files changed, 106 insertions(+), 61 deletions(-) diff --git a/app/classes/minecraft/serverjars.py b/app/classes/minecraft/serverjars.py index b1fc9580..b24e7d12 100644 --- a/app/classes/minecraft/serverjars.py +++ b/app/classes/minecraft/serverjars.py @@ -51,7 +51,7 @@ class ServerJars: def get_serverjar_data(self): data = self._read_cache() - return data.get("servers") + return data.get("types") def _check_api_alive(self): logger.info("Checking serverjars.com API status") @@ -88,22 +88,18 @@ class ServerJars: if cache_old: logger.info("Cache file is over 1 day old, refreshing") now = datetime.now() - data = {"last_refreshed": now.strftime("%m/%d/%Y, %H:%M:%S"), "servers": {}} + data = { + "last_refreshed": now.strftime("%m/%d/%Y, %H:%M:%S"), + "types": {}, + } jar_types = self._get_server_type_list() - - # for each jar type - for j in jar_types: - - # for each server - for s in jar_types.get(j): - # jar versions for this server - versions = self._get_jar_details(s) - - # add these versions (a list) to the dict with - # a key of the server type - data["servers"].update({s: versions}) - + data["types"].update(jar_types) + for s in data["types"]: + data["types"].update({s: dict.fromkeys(data["types"].get(s), {})}) + for j in data["types"].get(s): + versions = self._get_jar_details(j, s) + data["types"][s].update({j: versions}) # save our cache try: with open(cache_file, "w", encoding="utf-8") as f: @@ -113,8 +109,8 @@ class ServerJars: except Exception as e: logger.error(f"Unable to update serverjars.com cache file: {e}") - def _get_jar_details(self, jar_type="servers"): - url = f"/api/fetchAll/{jar_type}" + def _get_jar_details(self, server_type, jar_type="servers"): + url = f"/api/fetchAll/{jar_type}/{server_type}" response = self._get_api_result(url) temp = [] for v in response: @@ -127,19 +123,19 @@ class ServerJars: response = self._get_api_result(url) return response - def download_jar(self, server, version, path, server_id): + def download_jar(self, jar, server, version, path, server_id): update_thread = threading.Thread( name=f"server_download-{server_id}-{server}-{version}", target=self.a_download_jar, daemon=True, - args=(server, version, path, server_id), + args=(jar, server, version, path, server_id), ) update_thread.start() - def a_download_jar(self, server, version, path, server_id): + def a_download_jar(self, jar, server, version, path, server_id): # delaying download for server register to finish time.sleep(3) - fetch_url = f"{self.base_url}/api/fetchJar/{server}/{version}" + fetch_url = f"{self.base_url}/api/fetchJar/{jar}/{server}/{version}" server_users = PermissionsServers.get_server_user_list(server_id) # We need to make sure the server is registered before diff --git a/app/classes/shared/main_controller.py b/app/classes/shared/main_controller.py index c6c3cfb6..393aa475 100644 --- a/app/classes/shared/main_controller.py +++ b/app/classes/shared/main_controller.py @@ -422,6 +422,7 @@ class Controller: def create_jar_server( self, + jar: str, server: str, version: str, name: str, @@ -493,7 +494,7 @@ class Controller: # download the jar self.server_jars.download_jar( - server, version, os.path.join(server_dir, server_file), new_id + jar, server, version, os.path.join(server_dir, server_file), new_id ) return new_id diff --git a/app/classes/web/server_handler.py b/app/classes/web/server_handler.py index e4e10a04..3dba00e4 100644 --- a/app/classes/web/server_handler.py +++ b/app/classes/web/server_handler.py @@ -386,14 +386,20 @@ class ServerHandler(BaseHandler): # deletes temp dir FileHelpers.del_dirs(zip_path) else: - if len(server_parts) != 2: + if len(server_parts) != 3: self.redirect("/panel/error?error=Invalid server data") return - server_type, server_version = server_parts + jar_type, server_type, server_version = server_parts # TODO: add server type check here and call the correct server # add functions if not a jar new_server_id = self.controller.create_jar_server( - server_type, server_version, server_name, min_mem, max_mem, port + jar_type, + server_type, + server_version, + server_name, + min_mem, + max_mem, + port, ) self.controller.management.add_to_audit_log( exec_user["user_id"], diff --git a/app/frontend/templates/server/wizard.html b/app/frontend/templates/server/wizard.html index 293eff32..0f4887b8 100644 --- a/app/frontend/templates/server/wizard.html +++ b/app/frontend/templates/server/wizard.html @@ -32,10 +32,9 @@
- - {% for s in data['server_types'] %} {% end %} @@ -43,6 +42,16 @@
+
+
+ + +
+
+
@@ -56,14 +65,14 @@
+ placeholder="{{ translate('serverWizard', 'myNewServer', data['lang']) }}" required>

{{ translate('serverWizard', 'quickSettings', data['lang']) }} - {{ translate('serverWizard', 'quickSettingsDescription', + style="text-transform: none;"> - {{ translate('serverWizard', 'quickSettingsDescription', data['lang']) }}


@@ -73,7 +82,7 @@ + min="0.5" required>
@@ -82,7 +91,7 @@ + min="0.5" required> @@ -91,7 +100,7 @@ + required>
@@ -100,7 +109,7 @@

+ aria-controls="collapseRole-1"> {{ translate('serverWizard', 'addRole', data['lang']) }} - {{ translate('serverWizard', 'autoCreate', data['lang']) }} @@ -111,7 +120,7 @@

{% for r in data['roles'] %} {% end %}
@@ -152,7 +161,7 @@
+ placeholder="{{ translate('serverWizard', 'myNewServer', data['lang']) }}" required>
@@ -161,7 +170,7 @@ + placeholder="/var/opt/server" required>
@@ -169,7 +178,7 @@
+ placeholder="paper.jar" required>
@@ -178,7 +187,7 @@

{{ translate('serverWizard', 'quickSettings', data['lang']) }} - {{ translate('serverWizard', 'quickSettingsDescription', + style="text-transform: none;"> - {{ translate('serverWizard', 'quickSettingsDescription', data['lang']) }}


@@ -188,7 +197,7 @@ + min="0.5" required>
@@ -197,7 +206,7 @@ + min="0.5" required> @@ -206,7 +215,7 @@ + required>
@@ -215,7 +224,7 @@

+ aria-controls="collapseRole-2"> {{ translate('serverWizard', 'addRole', data['lang']) }} - {{ translate('serverWizard', 'autoCreate', data['lang']) }} @@ -226,7 +235,7 @@

{% for r in data['roles'] %} {% end %}
@@ -266,7 +275,7 @@
+ placeholder="{{ translate('serverWizard', 'myNewServer', data['lang']) }}" required>
@@ -275,7 +284,7 @@ + placeholder="/var/opt/server.zip" required>
@@ -294,7 +303,7 @@
+ placeholder="paper.jar" required>
@@ -303,7 +312,7 @@

{{ translate('serverWizard', 'quickSettings', data['lang']) }} - {{ translate('serverWizard', 'quickSettingsDescription', + style="text-transform: none;"> - {{ translate('serverWizard', 'quickSettingsDescription', data['lang']) }}


@@ -313,7 +322,7 @@ + min="0.5" required>
@@ -322,7 +331,7 @@ + min="0.5" required> @@ -331,7 +340,7 @@ + required> @@ -341,7 +350,7 @@

+ aria-expanded="true" aria-controls="collapseRole-3"> {{ translate('serverWizard', 'addRole', data['lang']) }} - {{ translate('serverWizard', 'autoCreate', data['lang']) }} @@ -352,7 +361,7 @@

{% for r in data['roles'] %} {% end %}
@@ -368,7 +377,7 @@