diff --git a/applications/luci-app-attendedsysupgrade/root/www/luci-static/resources/attendedsysupgrade.js b/applications/luci-app-attendedsysupgrade/root/www/luci-static/resources/attendedsysupgrade.js
index 2cf5cc6e1b..9cfd1bc7a6 100644
--- a/applications/luci-app-attendedsysupgrade/root/www/luci-static/resources/attendedsysupgrade.js
+++ b/applications/luci-app-attendedsysupgrade/root/www/luci-static/resources/attendedsysupgrade.js
@@ -58,21 +58,6 @@ function edit_packages() {
show("#edit_packages");
}
-// requests to the upgrade server
-function server_request(path, callback) {
- var request = new XMLHttpRequest();
- request.open("POST", data.url + "/" + path, true);
- request.setRequestHeader("Content-type", "application/json");
- request.send(JSON.stringify(request_dict));
- request.onerror = function(e) {
- set_status("danger", "upgrade server down")
- show("#server_div");
- }
- request.addEventListener('load', function(event) {
- callback(request)
- });
-}
-
// initial setup, get system information
function setup() {
ubus_call("rpc-sys", "packagelist", {}, "packages");
@@ -163,57 +148,74 @@ function set_status(type, message, loading, show_log) {
if (loading) {
loading_image = ' ';
}
- if (show_log && data.log) {
- message += '
Created file: ' + sysupgrade_file + '
' + set_status("success", info_output, false, true); - var info_output = 'Created file: ' + data.sysupgrade + '
' - set_status("success", info_output, false, true); - - show("#keep_container"); - var upgrade_button = $("#upgrade_button") - upgrade_button.disabled = false; - upgrade_button.style.display = "block"; - upgrade_button.value = "Flash firmware"; - upgrade_button.onclick = download_image; + show("#keep_container"); + var upgrade_button = $("#upgrade_button") + upgrade_button.disabled = false; + upgrade_button.style.display = "block"; + upgrade_button.value = "Flash firmware"; + upgrade_button.onclick = download_image; + } else { + set_status("danger", "Firmware build successfull but device not sysupgrade compatible!") + } } function flash_image() { @@ -323,7 +327,7 @@ function download_image() { hide("#keep_container"); hide("#upgrade_button"); var download_request = new XMLHttpRequest(); - download_request.open("GET", data.url + data.files + data.sysupgrade); + download_request.open("GET", data.sysupgrade_url); download_request.responseType = "arraybuffer"; download_request.onload = function() { @@ -338,90 +342,43 @@ function download_image() { download_request.send(); } -function server_request(path, callback) { - var request_json; - var request = new XMLHttpRequest(); - request.open("POST", data.url + "/" + path, true); - request.setRequestHeader("Content-type", "application/json"); - request.send(JSON.stringify(request_dict)); - request.onerror = function(e) { - set_status("danger", "Upgrade server down or could not connect") - show("#server_div"); - } - request.addEventListener('load', function(event) { - var request_text = request.responseText; - if (request.status === 200) { - callback(request_text) - - } else if (request.status === 202) { - var imagebuilder = request.getResponseHeader("X-Imagebuilder-Status"); - if (imagebuilder === "queue") { - // in queue - var queue = request.getResponseHeader("X-Build-Queue-Position"); - set_status("info", "In build queue position " + queue, true) - console.log("queued"); - } else if (imagebuilder === "building") { - set_status("info", "Building image", true); - console.log("building"); - } else { - // fallback if for some reasons the headers are missing e.g. browser blocks access - set_status("info", "Processing request", true); - console.log(imagebuilder) +function server_request() { + fetch(data.url + "/api/build", { + method: 'POST', + headers: { + 'Content-Type': 'application/json' + }, + body: JSON.stringify(request_dict) + }) + .then(response => { + switch (response.status) { + case 200: + response.json() + .then(response => { + upgrade_request_callback(response) + }); + break; + case 202: + set_status("info", "Processing request", true); + setTimeout(function() { + server_request() + }, 5000) + break; + case 400: // bad request + case 422: // bad package + case 500: // build failed + console.log('error (' + response.status + ')'); + response.json() + .then(response => { + if (response.buildlog) { + data.buildlog_url = data.url + '/' + response.bin_dir + '/buildlog.txt'; + } + set_status("danger", response.message); + }); + break; } - setTimeout(function() { - server_request(path, callback) - }, 5000) - - } else if (request.status === 204) { - // no upgrades available - set_status("success", "No upgrades available") - - } else if (request.status === 400) { - // bad request - request_json = JSON.parse(request_text) - set_status("danger", request_json.error) - - } else if (request.status === 409) { - // bad request - request_json = JSON.parse(request_text) - data.log = request_json.log - set_status("danger", "Incompatible package selection. See build log for details", false, true) - - } else if (request.status === 412) { - // this is a bit generic - set_status("danger", "Unsupported device, release, target, subtraget or board") - - } else if (request.status === 413) { - set_status("danger", "No firmware created due to image size. Try again with less packages selected.") - - } else if (request.status === 422) { - var package_missing = request.getResponseHeader("X-Unknown-Package"); - set_status("danger", "Unknown package in request: " + package_missing + "") - } else if (request.status === 500) { - request_json = JSON.parse(request_text) - - var error_box_content = "Internal server error