mirror of
https://gitlab.com/crafty-controller/crafty-4.git
synced 2024-08-30 18:23:09 +00:00
Zip imports by API v2
This commit is contained in:
parent
470ab04bb2
commit
2847cab1d8
@ -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)
|
||||
|
@ -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",
|
||||
|
Loading…
Reference in New Issue
Block a user