From e009ff9819b778039ba8d65eeff4c3d520f57865 Mon Sep 17 00:00:00 2001 From: luukas Date: Thu, 16 Jun 2022 02:10:26 +0300 Subject: [PATCH] Use relative paths for the jarfile and logs --- app/classes/controllers/servers_controller.py | 3 +-- app/classes/shared/main_controller.py | 26 +++++++++---------- app/classes/web/ajax_handler.py | 5 +++- .../web/routes/api/servers/server/action.py | 6 ++--- .../web/routes/api/servers/server/logs.py | 5 +++- app/classes/web/server_handler.py | 6 ++--- app/translations/en_EN.json | 2 +- app/translations/fi_FI.json | 2 +- 8 files changed, 27 insertions(+), 28 deletions(-) diff --git a/app/classes/controllers/servers_controller.py b/app/classes/controllers/servers_controller.py index 79ec384e..fc8ff3e8 100644 --- a/app/classes/controllers/servers_controller.py +++ b/app/classes/controllers/servers_controller.py @@ -529,8 +529,7 @@ class ServersController(metaclass=Singleton): def check_for_old_logs(self): servers = HelperServers.get_all_defined_servers() for server in servers: - logs_path = os.path.split(server["log_path"])[0] - latest_log_file = os.path.split(server["log_path"])[1] + logs_path, latest_log_file = os.path.split(server["log_path"]) logs_delete_after = int(server["logs_delete_after"]) if logs_delete_after == 0: continue diff --git a/app/classes/shared/main_controller.py b/app/classes/shared/main_controller.py index 95599384..f1515031 100644 --- a/app/classes/shared/main_controller.py +++ b/app/classes/shared/main_controller.py @@ -280,9 +280,7 @@ class Controller: return str(int(gibs * 1024)) def _wrap_jar_if_windows(): - return ( - f'"{full_jar_path}"' if Helpers.is_os_windows() else full_jar_path - ) + return f'"{server_file}"' if Helpers.is_os_windows() else server_file server_command = ( f"java -Xms{_gibs_to_mibs(min_mem)}M " @@ -339,8 +337,7 @@ class Controller: stop_command = "stop" log_location = data.get("log_location", "") - if log_location == "": - # TODO: different default log locations for server creation types + if log_location == "" and data["create_type"] == "minecraft_java": log_location = "./logs/latest.log" if data["monitoring_type"] == "minecraft_java": @@ -404,7 +401,6 @@ class Controller: backup_path.replace(" ", "^ ") server_file = f"{server}-{version}.jar" - full_jar_path = os.path.join(server_dir, server_file) # make the dir - perhaps a UUID? Helpers.ensure_dir_exists(server_dir) @@ -433,15 +429,15 @@ class Controller: server_command = ( f"java -Xms{Helpers.float_to_string(min_mem)}M " f"-Xmx{Helpers.float_to_string(max_mem)}M " - f'-jar "{full_jar_path}" nogui' + f'-jar "{server_file}" nogui' ) else: server_command = ( f"java -Xms{Helpers.float_to_string(min_mem)}M " f"-Xmx{Helpers.float_to_string(max_mem)}M " - f"-jar {full_jar_path} nogui" + f"-jar {server_file} nogui" ) - server_log_file = f"{server_dir}/logs/latest.log" + server_log_file = "./logs/latest.log" server_stop = "stop" new_id = self.register_server( @@ -458,7 +454,9 @@ class Controller: ) # download the jar - self.server_jars.download_jar(server, version, full_jar_path, new_id) + self.server_jars.download_jar( + server, version, os.path.join(server_dir, server_file), new_id + ) return new_id @@ -534,7 +532,7 @@ class Controller: f"-Xmx{Helpers.float_to_string(max_mem)}M " f"-jar {full_jar_path} nogui" ) - server_log_file = f"{new_server_dir}/logs/latest.log" + server_log_file = "./logs/latest.log" server_stop = "stop" new_id = self.register_server( @@ -614,7 +612,7 @@ class Controller: f"-jar {full_jar_path} nogui" ) logger.debug("command: " + server_command) - server_log_file = f"{new_server_dir}/logs/latest.log" + server_log_file = "./logs/latest.log" server_stop = "stop" new_id = self.register_server( @@ -677,7 +675,7 @@ class Controller: else: server_command = f"./{server_exe}" logger.debug("command: " + server_command) - server_log_file = "N/A" + server_log_file = "" server_stop = "stop" new_id = self.register_server( @@ -746,7 +744,7 @@ class Controller: else: server_command = f"./{server_exe}" logger.debug("command: " + server_command) - server_log_file = "N/A" + server_log_file = "" server_stop = "stop" new_id = self.register_server( diff --git a/app/classes/web/ajax_handler.py b/app/classes/web/ajax_handler.py index d78a4f0b..44ba6b34 100644 --- a/app/classes/web/ajax_handler.py +++ b/app/classes/web/ajax_handler.py @@ -1,5 +1,6 @@ import os import html +import pathlib import re import logging import time @@ -62,7 +63,9 @@ class AjaxHandler(BaseHandler): if full_log: log_lines = self.helper.get_setting("max_log_lines") data = Helpers.tail_file( - Helpers.get_os_understandable_path(server_data["log_path"]), + # If the log path is absolute it returns it as is + # If it is relative it joins the paths below like normal + pathlib.Path(server_data["path"], server_data["log_path"]), log_lines, ) else: diff --git a/app/classes/web/routes/api/servers/server/action.py b/app/classes/web/routes/api/servers/server/action.py index 2ae77f62..2360b172 100644 --- a/app/classes/web/routes/api/servers/server/action.py +++ b/app/classes/web/routes/api/servers/server/action.py @@ -70,12 +70,10 @@ class ApiServersServerActionHandler(BaseApiHandler): FileHelpers.copy_dir(server_data.get("path"), new_server_path) # TODO get old server DB data to individual variables - new_server_command = str(server_data.get("execution_command")).replace( - server_uuid, new_server_uuid - ) + new_server_command = str(server_data.get("execution_command")) new_server_log_file = str( self.helper.get_os_understandable_path(server_data.get("log_path")) - ).replace(server_uuid, new_server_uuid) + ) new_server_id = self.controller.servers.create_server( new_server_name, diff --git a/app/classes/web/routes/api/servers/server/logs.py b/app/classes/web/routes/api/servers/server/logs.py index b29333f6..641a1163 100644 --- a/app/classes/web/routes/api/servers/server/logs.py +++ b/app/classes/web/routes/api/servers/server/logs.py @@ -1,5 +1,6 @@ import html import logging +import pathlib import re from app.classes.models.server_permissions import EnumPermissionsServer from app.classes.shared.server import ServerOutBuf @@ -44,7 +45,9 @@ class ApiServersServerLogsHandler(BaseApiHandler): if read_log_file: log_lines = self.helper.get_setting("max_log_lines") raw_lines = self.helper.tail_file( - self.helper.get_os_understandable_path(server_data["log_path"]), + # If the log path is absolute it returns it as is + # If it is relative it joins the paths below like normal + pathlib.Path(server_data["path"], server_data["log_path"]), log_lines, ) diff --git a/app/classes/web/server_handler.py b/app/classes/web/server_handler.py index 71615bb0..e2913f5f 100644 --- a/app/classes/web/server_handler.py +++ b/app/classes/web/server_handler.py @@ -225,13 +225,11 @@ class ServerHandler(BaseHandler): # TODO get old server DB data to individual variables stop_command = server_data.get("stop_command") - new_server_command = str( - server_data.get("execution_command") - ).replace(server_uuid, new_server_uuid) + new_server_command = str(server_data.get("execution_command")) new_executable = server_data.get("executable") new_server_log_file = str( Helpers.get_os_understandable_path(server_data.get("log_path")) - ).replace(server_uuid, new_server_uuid) + ) backup_path = os.path.join(self.helper.backup_path, new_server_uuid) server_port = server_data.get("server_port") server_type = server_data.get("type") diff --git a/app/translations/en_EN.json b/app/translations/en_EN.json index 55f1d4cc..312b2a6a 100644 --- a/app/translations/en_EN.json +++ b/app/translations/en_EN.json @@ -305,7 +305,7 @@ "serverIP": "Server IP", "serverIPDesc": "IP Crafty should connect to for stats (Try a real ip instead of 127.0.0.1 if you have issues)", "serverLogLocation": "Server Log Location", - "serverLogLocationDesc": "Absolute full path to the log file", + "serverLogLocationDesc": "Path to the log file", "serverName": "Server Name", "serverNameDesc": "What you wish to call this server", "serverPath": "Server Working Directory", diff --git a/app/translations/fi_FI.json b/app/translations/fi_FI.json index 66f0be89..640480d3 100644 --- a/app/translations/fi_FI.json +++ b/app/translations/fi_FI.json @@ -328,7 +328,7 @@ "serverIP": "Palvelimen IP-osoite", "serverIPDesc": "IP-osoite, johon Craftyn tulisi muodostaa yhteys tilastojen saamiseen (Kokeile todellista ip:tä \"127.0.0.1\" sijaan, jos sinulla on ongelmia)", "serverLogLocation": "Palvelimen lokin sijainti", - "serverLogLocationDesc": "Absoluuttinen polku lokitiedostoon", + "serverLogLocationDesc": "Polku lokitiedostoon", "serverName": "Palvelimen nimi", "serverNameDesc": "Miksi haluat kutsua tätä palvelinta", "serverPath": "Palvelimen työkansio",