133 lines
6.4 KiB
Django/Jinja
133 lines
6.4 KiB
Django/Jinja
settingsSubmitNetwork() {
|
|
if (this.submitStatus.network) { return }
|
|
let query = {
|
|
"network.managementIp": this.param.network.managementIp,
|
|
"network.managementGateway": this.param.network.managementGateway,
|
|
"network.mode": this.param.network.mode,
|
|
"network.dataIp": this.param.network.dataIp,
|
|
"network.dataMtu": this.param.network.dataMtu
|
|
}
|
|
if (confirm('Вы уверены, что хотите сохранить настройки сети? После этого модем может стать недоступным.')) {
|
|
this.submitStatus.network = true
|
|
fetch('/api/set/network', {
|
|
method: 'POST',
|
|
headers: {
|
|
'Content-Type': 'application/json'
|
|
},
|
|
body: JSON.stringify(query)
|
|
}).then(async (resp) => {
|
|
this.submitStatus.network = false
|
|
this.updateNetworkSettings(await resp.json())
|
|
}).catch((reason) => {
|
|
this.submitStatus.network = false
|
|
alert(`Ошибка при применении настроек: ${reason}`)
|
|
})
|
|
}
|
|
},
|
|
|
|
settingsSubmitDebugSend() {
|
|
if (this.submitStatus.debugSend) { return }
|
|
let query = {
|
|
"debugSend.en": this.param.debugSend.en,
|
|
"debugSend.receiverIp": this.param.debugSend.receiverIp,
|
|
"debugSend.portCinC": this.param.debugSend.portCinC,
|
|
"debugSend.portData": this.param.debugSend.portData,
|
|
"debugSend.timeout": this.param.debugSend.timeout
|
|
}
|
|
this.submitStatus.debugSend = true
|
|
fetch('/api/set/debugSend', {
|
|
method: 'POST',
|
|
headers: {
|
|
'Content-Type': 'application/json'
|
|
},
|
|
body: JSON.stringify(query)
|
|
}).then(async (resp) => {
|
|
this.submitStatus.debugSend = false
|
|
this.updateNetworkSettings(await resp.json())
|
|
}).catch((reason) => {
|
|
this.submitStatus.debugSend = false
|
|
alert(`Ошибка при применении настроек: ${reason}`)
|
|
})
|
|
},
|
|
|
|
async settingsUploadUpdate() {
|
|
if (!this.uploadFw.filename) {
|
|
alert('Выберите файл для загрузки');
|
|
return;
|
|
}
|
|
|
|
async function readFileAsArrayBuffer(fileName) {
|
|
return new Promise((resolve, reject) => {
|
|
if (!fileName) { reject(`Файл не выбран`); return }
|
|
const reader = new FileReader();
|
|
reader.onload = (e) => { resolve(reader.result) }
|
|
reader.onerror = (e) => { reject(e) }
|
|
reader.readAsArrayBuffer(fileName)
|
|
})
|
|
}
|
|
|
|
try {
|
|
this.submitStatus.firmwareUpload = true
|
|
this.uploadFw.progress = 0
|
|
const blob = await readFileAsArrayBuffer(this.uploadFw.filename)
|
|
|
|
const xhr = new XMLHttpRequest();
|
|
await new Promise((resolve) => {
|
|
xhr.upload.addEventListener("progress", (event) => {
|
|
if (event.lengthComputable) {
|
|
this.uploadFw.progress = Math.round((event.loaded / event.total) * 1000) / 10;
|
|
}
|
|
});
|
|
xhr.addEventListener("loadend", () => {
|
|
this.uploadFw.progress = 100
|
|
const rep = JSON.parse(xhr.responseText);
|
|
this.uploadFw.sha256 = rep['sha256']
|
|
resolve(xhr.readyState === 4 && xhr.status === 200);
|
|
});
|
|
xhr.open("PUT", "/api/firmwareUpdate", true);
|
|
xhr.setRequestHeader("Content-Type", "application/octet-stream");
|
|
xhr.send(blob);
|
|
});
|
|
} catch (e) {
|
|
alert(`Ошибка загрузки файла: ${e}`);
|
|
}
|
|
this.submitStatus.firmwareUpload = false
|
|
},
|
|
|
|
async settingsPerformFirmwareUpgrade() {
|
|
if (this.submitStatus.firmwareUpgrade) { return }
|
|
this.submitStatus.firmwareUpgrade = true
|
|
try {
|
|
await fetch('/api/doFirmwareUpgrade', { method: 'POST' })
|
|
} catch (e) {
|
|
console.log("failed to perform upgrade firmware: ", e)
|
|
}
|
|
this.submitStatus.firmwareUpgrade = false
|
|
},
|
|
|
|
updateNetworkSettings(vals) {
|
|
this.submitStatus.network = false
|
|
this.param.network.managementIp = vals["settings"]["network.managementIp"]
|
|
this.param.network.managementGateway = vals["settings"]["network.managementGateway"]
|
|
this.param.network.mode = vals["settings"]["network.mode"]
|
|
this.param.network.dataIp = vals["settings"]["network.dataIp"]
|
|
this.param.network.dataMtu = vals["settings"]["network.dataMtu"]
|
|
},
|
|
|
|
updateDebugSendSettings(vals) {
|
|
this.submitStatus.debugSend = false
|
|
this.param.debugSend.en = vals["settings"]["debugSend.en"]
|
|
this.param.debugSend.receiverIp = vals["settings"]["debugSend.receiverIp"]
|
|
this.param.debugSend.portCinC = vals["settings"]["debugSend.portCinC"]
|
|
this.param.debugSend.portData = vals["settings"]["debugSend.portData"]
|
|
this.param.debugSend.timeout = vals["settings"]["debugSend.timeout"]
|
|
},
|
|
|
|
doModemReboot() {
|
|
if (this.submitStatus.modemReboot !== null) {
|
|
return
|
|
}
|
|
this.submitStatus.modemReboot = 30
|
|
fetch('/api/reboot', { method: 'POST' }).then((r) => {})
|
|
},
|