var systemInterval = Number(); const ips = ["ip", "netmask", "gw"]; function checkIp(ip) { const ipv4 = /^(\d{1,3}\.){3}\d{1,3}$/; if (!ipv4.test(ip)) {alert(`Invalid ip:${ip}`); return false }; return true; } async function ipSub() { for (let i=0;i<3;i++) { if (!checkIp(document.getElementById(ips[i]).value)) return; } for (let i=0; i<3;i++){ var cmd = ips[i]+' '+document.getElementById(ips[i]).value; try { const response = await fetch('/cmd', { method: 'POST', body: cmd }); console.log('Completed!', response); fetchIP(); } catch(err) { console.error(`Error: ${err}`); } } } async function sendConfig(c) { const form = new FormData(); form.append("MAX_FILE_SIZE", "4096"); form.append("configuration", new Blob([c], {type: "application/octet-stream"})); try { const response = await fetch('/config', { method: 'POST', body: form }); console.log('Completed!', response); } catch(err) { console.error(`Error: ${err}`); } } async function flashSave() { var configContent = document.getElementById("config_display").value; console.log("CONFIGURATION to save: ", configContent); sendConfig(configContent); } function clearConfig() { document.getElementById("config_display").value = ""; // Validate and populate with current IP settings for (let i=0; i<3; i++) { if (!checkIp(document.getElementById(ips[i]).value)) return; } var configLines = ""; for (let i=0; i<3; i++){ var cmd = ips[i]+' '+document.getElementById(ips[i]).value; configLines += cmd + "\n"; } document.getElementById("config_display").value = configLines; } function fetchIP() { var xhttp = new XMLHttpRequest(); xhttp.onreadystatechange = function() { if (this.readyState == 4 && this.status == 200) { const s = JSON.parse(xhttp.responseText); console.log("IP: ", s); document.getElementById("ip").value=s.ip_address; document.getElementById("netmask").value=s.ip_netmask; document.getElementById("gw").value=s.ip_gateway; clearInterval(systemInterval); // Fetch and populate the config textbox fetchConfig().then((configText) => { let fullConfig = configText; // Fetch and append cmd_log return fetchCmdLog().then((cmdLogText) => { if (cmdLogText) { fullConfig = fullConfig + cmdLogText; } document.getElementById("config_display").value = fullConfig; }); }); } } xhttp.open("GET", `/information.json`, true); xhttp.send(); } window.addEventListener("load", function() { systemInterval = setInterval(fetchIP, 1000); });