mirror of
https://gitlab.com/crafty-controller/crafty-4.git
synced 2024-08-30 18:23:09 +00:00
Refactor add category back.
This commit is contained in:
parent
76424aba7f
commit
5b58af2226
@ -64,7 +64,9 @@ class BigBucket:
|
|||||||
try:
|
try:
|
||||||
response = requests.get(f"{self.base_url}/manifest.json", timeout=5)
|
response = requests.get(f"{self.base_url}/manifest.json", timeout=5)
|
||||||
if response.status_code in [200, 201]:
|
if response.status_code in [200, 201]:
|
||||||
return response.json().get("mc_java_servers")
|
data = response.json()
|
||||||
|
del data["manifest_version"]
|
||||||
|
return data
|
||||||
return {}
|
return {}
|
||||||
except TimeoutError as e:
|
except TimeoutError as e:
|
||||||
logger.error(f"Unable to get jars from remote with error {e}")
|
logger.error(f"Unable to get jars from remote with error {e}")
|
||||||
@ -126,10 +128,11 @@ class BigBucket:
|
|||||||
logger.info("Automatic cache refresh initiated due to old cache.")
|
logger.info("Automatic cache refresh initiated due to old cache.")
|
||||||
self._refresh_cache()
|
self._refresh_cache()
|
||||||
|
|
||||||
def get_fetch_url(self, server, version) -> str:
|
def get_fetch_url(self, jar, server, version) -> str:
|
||||||
"""
|
"""
|
||||||
Constructs the URL for downloading a server JAR file based on the server type.
|
Constructs the URL for downloading a server JAR file based on the server type.
|
||||||
Parameters:
|
Parameters:
|
||||||
|
jar (str): The category of the JAR file to download.
|
||||||
server (str): Server software name (e.g., "paper").
|
server (str): Server software name (e.g., "paper").
|
||||||
version (str): Server version.
|
version (str): Server version.
|
||||||
|
|
||||||
@ -139,21 +142,23 @@ class BigBucket:
|
|||||||
"""
|
"""
|
||||||
try:
|
try:
|
||||||
# Read cache file for URL that is in a list of one item
|
# Read cache file for URL that is in a list of one item
|
||||||
return self._read_cache()["types"][server]["versions"][version]["url"][0]
|
return self._read_cache()["types"][jar][server]["versions"][version]["url"][
|
||||||
|
0
|
||||||
|
]
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
logger.error(f"An error occurred while constructing fetch URL: {e}")
|
logger.error(f"An error occurred while constructing fetch URL: {e}")
|
||||||
return None
|
return None
|
||||||
|
|
||||||
def download_jar(self, server, version, path, server_id):
|
def download_jar(self, jar, server, version, path, server_id):
|
||||||
update_thread = threading.Thread(
|
update_thread = threading.Thread(
|
||||||
name=f"server_download-{server_id}-{server}-{version}",
|
name=f"server_download-{server_id}-{server}-{version}",
|
||||||
target=self.a_download_jar,
|
target=self.a_download_jar,
|
||||||
daemon=True,
|
daemon=True,
|
||||||
args=(server, version, path, server_id),
|
args=(jar, server, version, path, server_id),
|
||||||
)
|
)
|
||||||
update_thread.start()
|
update_thread.start()
|
||||||
|
|
||||||
def a_download_jar(self, server, version, path, server_id):
|
def a_download_jar(self, jar, server, version, path, server_id):
|
||||||
"""
|
"""
|
||||||
Downloads a server JAR file and performs post-download actions including
|
Downloads a server JAR file and performs post-download actions including
|
||||||
notifying users and setting import status.
|
notifying users and setting import status.
|
||||||
@ -166,6 +171,7 @@ class BigBucket:
|
|||||||
notifies server users about the completion of the download.
|
notifies server users about the completion of the download.
|
||||||
|
|
||||||
Parameters:
|
Parameters:
|
||||||
|
- jar (str): The category of the JAR file to download.
|
||||||
- server (str): The type of server software (e.g., 'forge', 'paper').
|
- server (str): The type of server software (e.g., 'forge', 'paper').
|
||||||
- version (str): The version of the server software.
|
- version (str): The version of the server software.
|
||||||
- path (str): The local filesystem path where the JAR file will be saved.
|
- path (str): The local filesystem path where the JAR file will be saved.
|
||||||
@ -183,7 +189,7 @@ class BigBucket:
|
|||||||
# delaying download for server register to finish
|
# delaying download for server register to finish
|
||||||
time.sleep(3)
|
time.sleep(3)
|
||||||
|
|
||||||
fetch_url = self.get_fetch_url(server, version)
|
fetch_url = self.get_fetch_url(jar, server, version)
|
||||||
if not fetch_url:
|
if not fetch_url:
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
@ -572,11 +572,14 @@ class Controller:
|
|||||||
if create_data["type"] != "forge-installer":
|
if create_data["type"] != "forge-installer":
|
||||||
server_obj = self.servers.get_server_obj(new_server_id)
|
server_obj = self.servers.get_server_obj(new_server_id)
|
||||||
url = self.big_bucket.get_fetch_url(
|
url = self.big_bucket.get_fetch_url(
|
||||||
create_data["type"], create_data["version"]
|
create_data["category"],
|
||||||
|
create_data["type"],
|
||||||
|
create_data["version"],
|
||||||
)
|
)
|
||||||
server_obj.executable_update_url = url
|
server_obj.executable_update_url = url
|
||||||
self.servers.update_server(server_obj)
|
self.servers.update_server(server_obj)
|
||||||
self.big_bucket.download_jar(
|
self.big_bucket.download_jar(
|
||||||
|
create_data["category"],
|
||||||
create_data["type"],
|
create_data["type"],
|
||||||
create_data["version"],
|
create_data["version"],
|
||||||
full_jar_path,
|
full_jar_path,
|
||||||
|
@ -134,7 +134,13 @@ new_server_schema = {
|
|||||||
"mem_min",
|
"mem_min",
|
||||||
"mem_max",
|
"mem_max",
|
||||||
"server_properties_port",
|
"server_properties_port",
|
||||||
|
"category",
|
||||||
],
|
],
|
||||||
|
"category": {
|
||||||
|
"title": "Jar Category",
|
||||||
|
"type": "string",
|
||||||
|
"examples": ["Mc_java_servers", "Mc_java_proxies"],
|
||||||
|
},
|
||||||
"properties": {
|
"properties": {
|
||||||
"type": {
|
"type": {
|
||||||
"title": "Server JAR Type",
|
"title": "Server JAR Type",
|
||||||
|
@ -65,10 +65,10 @@
|
|||||||
|
|
||||||
<div class="col-sm-12">
|
<div class="col-sm-12">
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label for="server_type">{{ translate('serverWizard', 'serverSelect', data['lang']) }}</label>
|
<label for="server_jar">{{ translate('serverWizard', 'serverType', data['lang']) }}</label>
|
||||||
<div class="input-group">
|
<div class="input-group">
|
||||||
<select required class="form-control form-control-lg select-css" id="server_type" name="type"
|
<select required class="form-control form-control-lg select-css" id="server_jar" name="type"
|
||||||
onchange="serverTypeChange(this)">
|
onchange="serverJarChange(this)">
|
||||||
<option value="">{{ translate('serverWizard', 'selectServer', data['lang']) }}</option>
|
<option value="">{{ translate('serverWizard', 'selectServer', data['lang']) }}</option>
|
||||||
{% for s in data['server_types'] %}
|
{% for s in data['server_types'] %}
|
||||||
<option value="{{ s }}">{{ s.capitalize() }}</option>
|
<option value="{{ s }}">{{ s.capitalize() }}</option>
|
||||||
@ -84,6 +84,16 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<div class="col-sm-12">
|
||||||
|
<div class="form-group">
|
||||||
|
<label for="server_type">{{ translate('serverWizard', 'serverSelect', data['lang']) }}</label>
|
||||||
|
<select required class="form-control form-control-lg select-css" id="server_type" name="type"
|
||||||
|
onchange="serverTypeChange(this)">
|
||||||
|
<option value="">{{ translate('serverWizard', 'selectServer', data['lang']) }}</option>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
<div class="col-sm-12">
|
<div class="col-sm-12">
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label for="server_version">{{ translate('serverWizard', 'serverVersion', data['lang']) }}</label>
|
<label for="server_version">{{ translate('serverWizard', 'serverVersion', data['lang']) }}</label>
|
||||||
@ -957,8 +967,9 @@
|
|||||||
"minecraft_java_create_data": {
|
"minecraft_java_create_data": {
|
||||||
"create_type": "download_jar",
|
"create_type": "download_jar",
|
||||||
"download_jar_create_data": {
|
"download_jar_create_data": {
|
||||||
"type": formDataObject.version.split("|")[0],
|
"category": formDataObject.version.split("|")[0],
|
||||||
"version": formDataObject.version.split("|")[1],
|
"type": formDataObject.version.split("|")[1],
|
||||||
|
"version": formDataObject.version.split("|")[2],
|
||||||
"mem_min": formDataObject.mem_min,
|
"mem_min": formDataObject.mem_min,
|
||||||
"mem_max": formDataObject.mem_max,
|
"mem_max": formDataObject.mem_max,
|
||||||
"server_properties_port": formDataObject.port
|
"server_properties_port": formDataObject.port
|
||||||
@ -1184,11 +1195,12 @@
|
|||||||
function serverTypeChange(selectObj) {
|
function serverTypeChange(selectObj) {
|
||||||
// get the index of the selected option
|
// get the index of the selected option
|
||||||
let idx = document.getElementById('server_type').value;
|
let idx = document.getElementById('server_type').value;
|
||||||
|
let idx_list = idx.split("|");
|
||||||
// get the value of the selected option
|
// get the value of the selected option
|
||||||
let cSelect = document.getElementById("server");
|
let cSelect = document.getElementById("server");
|
||||||
let which = {};
|
let which = {};
|
||||||
try {
|
try {
|
||||||
versions = Object.keys(serverTypesLists[idx]["versions"]);
|
versions = Object.keys(serverTypesLists[idx_list[0]][idx_list[1]]["versions"]);
|
||||||
} catch {
|
} catch {
|
||||||
while (cSelect.options.length > 0) {
|
while (cSelect.options.length > 0) {
|
||||||
cSelect.remove(0);
|
cSelect.remove(0);
|
||||||
@ -1230,5 +1242,48 @@
|
|||||||
$('.version-hint').popover("hide");
|
$('.version-hint').popover("hide");
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
function serverJarChange(selectObj) {
|
||||||
|
const type_select = document.getElementById('server_jar')
|
||||||
|
const tidx = type_select.selectedIndex;
|
||||||
|
const val = type_select.options[tidx].value;
|
||||||
|
console.log(val);
|
||||||
|
let jcSelect = {};
|
||||||
|
if (val == 'None') {
|
||||||
|
jcSelect = document.getElementById("server_type");
|
||||||
|
while (jcSelect.options.length > 0) {
|
||||||
|
jcSelect.remove(0);
|
||||||
|
}
|
||||||
|
serverTypeChange(selectObj);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
// get the index of the selected option
|
||||||
|
let jidx = selectObj.selectedIndex;
|
||||||
|
// get the value of the selected option
|
||||||
|
let jwhich = selectObj.options[jidx].value;
|
||||||
|
// use the selected option value to retrieve the list of items from the serverTypesLists array
|
||||||
|
let jcList = Object.keys(serverTypesLists[jwhich]);
|
||||||
|
// get the country select element via its known id
|
||||||
|
jcSelect = document.getElementById("server_type");
|
||||||
|
// remove the current options from the country select
|
||||||
|
while (jcSelect.options.length > 0) {
|
||||||
|
jcSelect.remove(0);
|
||||||
|
}
|
||||||
|
let jnewOption;
|
||||||
|
// create new options ordered by ascending
|
||||||
|
jcList.forEach(type => {
|
||||||
|
jnewOption = document.createElement("option");
|
||||||
|
jnewOption.value = jwhich + "|" + type; // assumes option string and value are the same
|
||||||
|
jnewOption.text = type;
|
||||||
|
// add the new option
|
||||||
|
try {
|
||||||
|
jcSelect.add(jnewOption); // this will fail in DOM browsers but is needed for IE
|
||||||
|
}
|
||||||
|
catch (e) {
|
||||||
|
jcSelect.appendChild(jnewOption);
|
||||||
|
}
|
||||||
|
})
|
||||||
|
serverTypeChange(selectObj);
|
||||||
|
}
|
||||||
</script>
|
</script>
|
||||||
{% end %}
|
{% end %}
|
Loading…
Reference in New Issue
Block a user