From 4f4798d44a14d16f5e1f6c40dc40f9157a02587d Mon Sep 17 00:00:00 2001 From: Andrew Date: Wed, 3 Aug 2022 15:38:44 -0400 Subject: [PATCH] Add serverjars cache refresh --- app/classes/minecraft/serverjars.py | 33 ++++++++++++++++ app/classes/web/ajax_handler.py | 8 ++++ app/classes/web/server_handler.py | 1 + app/frontend/templates/server/wizard.html | 46 +++++++++++++++++++---- 4 files changed, 81 insertions(+), 7 deletions(-) diff --git a/app/classes/minecraft/serverjars.py b/app/classes/minecraft/serverjars.py index b24e7d12..a5eb11ba 100644 --- a/app/classes/minecraft/serverjars.py +++ b/app/classes/minecraft/serverjars.py @@ -70,6 +70,39 @@ class ServerJars: logger.error("unable to contact serverjars.com api") return False + def manual_refresh_cache(self): + cache_file = self.helper.serverjar_cache + + # debug override + # cache_old = True + + # if the API is down... we bomb out + if not self._check_api_alive(): + return False + + logger.info("Manual Refresh requested.") + now = datetime.now() + data = { + "last_refreshed": now.strftime("%m/%d/%Y, %H:%M:%S"), + "types": {}, + } + + jar_types = self._get_server_type_list() + 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: + f.write(json.dumps(data, indent=4)) + logger.info("Cache file refreshed") + + except Exception as e: + logger.error(f"Unable to update serverjars.com cache file: {e}") + def refresh_cache(self): cache_file = self.helper.serverjar_cache diff --git a/app/classes/web/ajax_handler.py b/app/classes/web/ajax_handler.py index 44ba6b34..42dc4275 100644 --- a/app/classes/web/ajax_handler.py +++ b/app/classes/web/ajax_handler.py @@ -454,6 +454,14 @@ class AjaxHandler(BaseHandler): self.helper.backup_select(path, exec_user["user_id"]) return + elif page == "jar_cache": + if not superuser: + self.redirect("/panel/error?error=Not a super user") + return + + self.controller.server_jars.manual_refresh_cache() + return + @tornado.web.authenticated def delete(self, page): api_key, _, exec_user = self.current_user diff --git a/app/classes/web/server_handler.py b/app/classes/web/server_handler.py index 3dba00e4..d7bd054d 100644 --- a/app/classes/web/server_handler.py +++ b/app/classes/web/server_handler.py @@ -96,6 +96,7 @@ class ServerHandler(BaseHandler): "user_data": exec_user, "user_role": exec_user_role, "roles": list_roles, + "super_user": exec_user["superuser"], "user_crafty_permissions": exec_user_crafty_permissions, "crafty_permissions": { "Server_Creation": EnumPermissionsCrafty.SERVER_CREATION, diff --git a/app/frontend/templates/server/wizard.html b/app/frontend/templates/server/wizard.html index 266f2aed..53b045bf 100644 --- a/app/frontend/templates/server/wizard.html +++ b/app/frontend/templates/server/wizard.html @@ -32,14 +32,23 @@
- - + {% else %} + + {% if data['super_user'] %} +    {% end %} -
@@ -424,6 +433,10 @@