diff --git a/app/classes/shared/main_controller.py b/app/classes/shared/main_controller.py index d5607d17..e522d462 100644 --- a/app/classes/shared/main_controller.py +++ b/app/classes/shared/main_controller.py @@ -362,6 +362,7 @@ class Controller: elif root_create_data["create_type"] == "import_zip": # TODO: Copy files from the zip file to the new server directory server_file = create_data["jarfile"] + self.import_zip_server() raise NotImplementedError("Not yet implemented") _create_server_properties_if_needed( create_data["server_properties_port"], @@ -519,107 +520,6 @@ class Controller: return new_server_id, server_fs_uuid - def create_jar_server( - self, - jar: str, - server: str, - version: str, - name: str, - min_mem: int, - max_mem: int, - port: int, - user_id: int, - ): - server_id = Helpers.create_uuid() - server_dir = os.path.join(self.helper.servers_dir, server_id) - backup_path = os.path.join(self.helper.backup_path, server_id) - if Helpers.is_os_windows(): - server_dir = Helpers.wtol_path(server_dir) - backup_path = Helpers.wtol_path(backup_path) - server_dir.replace(" ", "^ ") - backup_path.replace(" ", "^ ") - - server_file = f"{server}-{version}.jar" - - # make the dir - perhaps a UUID? - Helpers.ensure_dir_exists(server_dir) - Helpers.ensure_dir_exists(backup_path) - - try: - # do a eula.txt - with open( - os.path.join(server_dir, "eula.txt"), "w", encoding="utf-8" - ) as file: - file.write("eula=false") - file.close() - - # setup server.properties with the port - with open( - os.path.join(server_dir, "server.properties"), "w", encoding="utf-8" - ) as file: - file.write(f"server-port={port}") - file.close() - - except Exception as e: - logger.error(f"Unable to create required server files due to :{e}") - return False - - if Helpers.is_os_windows(): - # Let's check for and setup for install server commands - if server == "forge": - server_command = ( - f"java -Xms{Helpers.float_to_string(min_mem)}M " - f"-Xmx{Helpers.float_to_string(max_mem)}M " - f'-jar "{server_file}" --installServer' - ) - else: - server_command = ( - f"java -Xms{Helpers.float_to_string(min_mem)}M " - f"-Xmx{Helpers.float_to_string(max_mem)}M " - f'-jar "{server_file}" nogui' - ) - else: - if server == "forge": - server_command = ( - f"java -Xms{Helpers.float_to_string(min_mem)}M " - f"-Xmx{Helpers.float_to_string(max_mem)}M " - f"-jar {server_file} --installServer" - ) - else: - server_command = ( - f"java -Xms{Helpers.float_to_string(min_mem)}M " - f"-Xmx{Helpers.float_to_string(max_mem)}M " - f"-jar {server_file} nogui" - ) - server_log_file = "./logs/latest.log" - server_stop = "stop" - - new_id = self.register_server( - name, - server_id, - server_dir, - backup_path, - server_command, - server_file, - server_log_file, - server_stop, - port, - user_id, - server_type="minecraft-java", - ) - # modded update urls from server jars will only update the installer - if jar != "modded": - server_obj = self.servers.get_server_obj(new_id) - url = f"https://serverjars.com/api/fetchJar/{jar}/{server}/{version}" - server_obj.executable_update_url = url - self.servers.update_server(server_obj) - # download the jar - self.server_jars.download_jar( - jar, server, version, os.path.join(server_dir, server_file), new_id - ) - - return new_id - @staticmethod def verify_jar_server(server_path: str, server_jar: str): server_path = Helpers.get_os_understandable_path(server_path) diff --git a/app/frontend/templates/server/wizard.html b/app/frontend/templates/server/wizard.html index 61fb8c46..e51dbfff 100644 --- a/app/frontend/templates/server/wizard.html +++ b/app/frontend/templates/server/wizard.html @@ -302,7 +302,7 @@ <br /> <p class="card-description"> - <form name="zip" method="post" class="server-wizard" onSubmit="wait_msg(true)"> + <form name="zip" id="import-zip" class="server-wizard"> {% raw xsrf_form_html() %} <input type="hidden" value="import_zip" name="create_type"> @@ -311,7 +311,7 @@ <div class="col-sm-12"> <div class="form-group"> <label for="server_name">{{ translate('serverWizard', 'serverName', data['lang']) }}</label> - <input type="text" class="form-control" id="server_name" name="server_name" value="" placeholder="{{ translate('serverWizard', 'myNewServer', data['lang']) }}" required> + <input type="text" class="form-control" id="server_name" name="name" value="" placeholder="{{ translate('serverWizard', 'myNewServer', data['lang']) }}" required> </div> </div> @@ -354,7 +354,7 @@ <div class="form-group"> <label for="min_memory3">{{ translate('serverWizard', 'minMem', data['lang']) }} <small> - {{ translate('serverWizard', 'sizeInGB', data['lang']) }}</small></label> - <input type="number" class="form-control" id="min_memory3" name="min_memory" value="1" step="0.5" min="0.5" required> + <input type="number" class="form-control" id="min_memory3" name="mem_min" value="1" step="0.5" min="0.5" required> </div> </div> @@ -362,7 +362,7 @@ <div class="form-group"> <label for="max_memory3">{{ translate('serverWizard', 'maxMem', data['lang']) }} <small> - {{ translate('serverWizard', 'sizeInGB', data['lang']) }}</small></label> - <input type="number" class="form-control" id="max_memory3" name="max_memory" value="2" step="0.5" min="0.5" required> + <input type="number" class="form-control" id="max_memory3" name="mem_max" value="2" step="0.5" min="0.5" required> </div> </div> @@ -455,13 +455,13 @@ <br /> <p class="card-description"> - <form name="zip" method="post" class="server-wizard" onSubmit="wait_msg(true)"> + <form name="zip" id="import-upload" class="server-wizard"> {% raw xsrf_form_html() %} <input type="hidden" value="import_zip" name="create_type"> <div class="form-group"> <label for="server_name">{{ translate('serverWizard', 'serverName', data['lang']) }}</label> - <input type="text" class="form-control" id="server_name" name="server_name" value="" placeholder="{{ translate('serverWizard', 'myNewServer', data['lang']) }}" required> + <input type="text" class="form-control" id="server_name" name="name" value="" placeholder="{{ translate('serverWizard', 'myNewServer', data['lang']) }}" required> </div> <div class="form-group"> <label for="server">{{ translate('serverWizard', 'serverUpload', data['lang']) }}</label> @@ -498,13 +498,13 @@ <div class="form-group"> <label for="min_memory3">{{ translate('serverWizard', 'minMem', data['lang']) }} <small> - {{ translate('serverWizard', 'sizeInGB', data['lang']) }}</small></label> - <input type="number" class="form-control" id="min_memory3" name="min_memory" value="1" step="0.5" min="0.5" required> + <input type="number" class="form-control" id="min_memory3" name="mem_min" value="1" step="0.5" min="0.5" required> </div> <div class="form-group"> <label for="max_memory3">{{ translate('serverWizard', 'maxMem', data['lang']) }} <small> - {{ translate('serverWizard', 'sizeInGB', data['lang']) }}</small></label> - <input type="number" class="form-control" id="max_memory3" name="max_memory" value="2" step="0.5" min="0.5" required> + <input type="number" class="form-control" id="max_memory3" name="mem_max" value="2" step="0.5" min="0.5" required> </div> <div class="form-group"> @@ -905,12 +905,31 @@ return value; } } + async function send_server(data){ + let token = getCookie("_xsrf") + let res = await fetch(`/api/v2/servers/`, { + method: 'POST', + headers: { + 'X-XSRFToken': token + }, + body: data, + }); + let responseData = await res.json(); + if (responseData.status === "ok") { + window.location.href = '/panel/dashboard'; + } else { + + bootbox.alert({ + title: responseData.error, + message: responseData.error_data + }); + } + } $(document).ready(function () { $("#download_jar").on("submit", async function (e) { wait_msg(); e.preventDefault(); - var token = getCookie("_xsrf") let jarForm = document.getElementById("download_jar"); let formData = new FormData(jarForm); @@ -944,29 +963,12 @@ console.log(formDataJsonString); - let res = await fetch(`/api/v2/servers/`, { - method: 'POST', - headers: { - 'X-XSRFToken': token - }, - body: formDataJsonString, - }); - let responseData = await res.json(); - if (responseData.status === "ok") { - window.location.href = '/panel/dashboard'; - } else { - - bootbox.alert({ - title: responseData.error, - message: responseData.error_data - }); - } + send_server(formDataJsonString); }); $("#import-jar").on("submit", async function (e) { - wait_msg(); + wait_msg(true); e.preventDefault(); - var token = getCookie("_xsrf") let jarForm = document.getElementById("import-jar"); let formData = new FormData(jarForm); @@ -996,24 +998,78 @@ // Format the plain form data as JSON let formDataJsonString = JSON.stringify(send_data, replacer); - let res = await fetch(`/api/v2/servers/`, { - method: 'POST', - headers: { - 'X-XSRFToken': token - }, - body: formDataJsonString, - }); - let responseData = await res.json(); - if (responseData.status === "ok") { - window.location.href = '/panel/dashboard'; - } else { - - bootbox.alert({ - title: responseData.error, - message: responseData.error_data - }); - } + send_server(formDataJsonString); }); + + $("#import-zip").on("submit", async function (e) { + wait_msg(true); + e.preventDefault(); + let jarForm = document.getElementById("import-zip"); + + let formData = new FormData(jarForm); + //Create an object from the form data entries + let formDataObject = Object.fromEntries(formData.entries()); + console.log(formDataObject); + let send_data = { + "name": formDataObject.name, + "monitoring_type": "minecraft_java", + "minecraft_java_monitoring_data": { + "host": "127.0.0.1", + "port": formDataObject.port + }, + "create_type": "minecraft_java", + "minecraft_java_create_data": { + "create_type": "import_server", + "import_server_create_data": { + "existing_server_path": formDataObject.root_path, + "jarfile": formDataObject.server_jar, + "mem_min": formDataObject.mem_min, + "mem_max": formDataObject.mem_max, + "server_properties_port": formDataObject.port + } + } + } + console.log(send_data); + // Format the plain form data as JSON + let formDataJsonString = JSON.stringify(send_data, replacer); + + send_server(formDataJsonString); + }); + + $("#import-upload").on("submit", async function (e) { + wait_msg(true); + e.preventDefault(); + let jarForm = document.getElementById("import-upload"); + + let formData = new FormData(jarForm); + //Create an object from the form data entries + let formDataObject = Object.fromEntries(formData.entries()); + console.log(formDataObject); + let send_data = { + "name": formDataObject.name, + "monitoring_type": "minecraft_java", + "minecraft_java_monitoring_data": { + "host": "127.0.0.1", + "port": formDataObject.port + }, + "create_type": "minecraft_java", + "minecraft_java_create_data": { + "create_type": "import_server", + "import_server_create_data": { + "existing_server_path": formDataObject.root_path, + "jarfile": formDataObject.server_jar, + "mem_min": formDataObject.mem_min, + "mem_max": formDataObject.mem_max, + "server_properties_port": formDataObject.port + } + } + } + console.log(send_data); + // Format the plain form data as JSON + let formDataJsonString = JSON.stringify(send_data, replacer); + send_server(formDataJsonString); + }); + }); </script> @@ -1199,7 +1255,7 @@ } function refreshCache() { - var token = getCookie("_xsrf") + let token = getCookie("_xsrf") document.getElementById("refresh-cache").classList.add("fa-spin") $.ajax({ type: "POST",