diff --git a/web_interface/js/attack.js b/web_interface/js/attack.js index 6edc414..179da9b 100644 --- a/web_interface/js/attack.js +++ b/web_interface/js/attack.js @@ -1,40 +1,33 @@ -var attackJSON = [[false,0,0],[false,0,0],[false,0,0]]; - -function draw(){ - getE("deauth").innerHTML = attackJSON[0][0] ? lang("stop") : lang("start"); - getE("beacon").innerHTML = attackJSON[1][0] ? lang("stop") : lang("start"); - getE("probe").innerHTML = attackJSON[2][0] ? lang("stop") : lang("start"); - - getE("deauthTargets").innerHTML = esc(attackJSON[0][1]+""); - getE("beaconTargets").innerHTML = esc(attackJSON[1][1]+""); - getE("probeTargets").innerHTML = esc(attackJSON[2][1]+""); - - getE("deauthPkts").innerHTML = esc(attackJSON[0][2] + "/" + attackJSON[0][3]); - getE("beaconPkts").innerHTML = esc(attackJSON[1][2] + "/" + attackJSON[1][3]); - getE("probePkts").innerHTML = esc(attackJSON[2][2] + "/" + attackJSON[2][3]); - - getE("allpkts").innerHTML = esc(attackJSON[3]+""); +const attackJSON = [ + [false, 0, 0], + [false, 0, 0], + [false, 0, 0] +]; + +const draw = () => { + getE("deauth").innerHTML = lang(attackJSON[0][0] ? "stop" : "start"); + getE("beacon").innerHTML = lang(attackJSON[1][0] ? "stop" : "start"); + getE("probe").innerHTML = lang(attackJSON[2][0] ? "stop" : "start"); + + getE("deauthTargets").innerHTML = esc(`${attackJSON[0][1]}`); + getE("beaconTargets").innerHTML = esc(`${attackJSON[1][1]}`); + getE("probeTargets").innerHTML = esc(`${attackJSON[2][1]}`); + + getE("deauthPkts").innerHTML = esc(`${attackJSON[0][2]}/${attackJSON[0][3]}`); + getE("beaconPkts").innerHTML = esc(`${attackJSON[1][2]}/${attackJSON[1][3]}`); + getE("probePkts").innerHTML = esc(`${attackJSON[2][2]}/${attackJSON[2][3]}`); + + getE("allpkts").innerHTML = esc(`${attackJSON[3]}`); } -function start(mode){ - switch(mode){ - case 0: - attackJSON[0][0] = !attackJSON[0][0]; - break; - case 1: - attackJSON[1][0] = !attackJSON[1][0]; - break; - case 2: - attackJSON[2][0] = !attackJSON[2][0]; - break; - } - getFile("run?cmd=attack"+(attackJSON[0][0] ? " -d":"")+(attackJSON[1][0] ? " -b":"")+(attackJSON[2][0] ? " -p":""),function(){ - draw(); - }); +const start = (mode) => { + attackJSON[mode][0] = !attackJSON[mode][0]; + + getFile(`run?cmd=attack${attackJSON[0][0] ? " -d":""}${attackJSON[1][0] ? " -b":""}${attackJSON[2][0] ? " -p":""}`, draw); } -function load(){ - getFile("attack.json",function(response){ +const load = () => { + getFile("attack.json", (response) => { attackJSON = JSON.parse(response); draw(); }); diff --git a/web_interface/js/scan.js b/web_interface/js/scan.js index 0ed28ef..ef16f0d 100644 --- a/web_interface/js/scan.js +++ b/web_interface/js/scan.js @@ -1,130 +1,167 @@ -var nameJson = []; -var scanJson = {aps:[],stations:[]}; - -function drawScan(){ - var html; - var selected; - var width; - var color; - var macVendor; - +let nameJson = []; +let scanJson = { + aps: [], + stations: [] +}; + +const drawScan = () => { + let html; + // Access Points getE("apNum").innerHTML = scanJson.aps.length; - html = "" - + "" - + "SSID" - + "Name" - + "Ch" - + "RSSI" - + "Enc" - + "" - + "MAC" - + "Vendor" - + "" - + "" - + ""; - - for(var i=0;i + + SSID + Name + Ch + RSSI + Enc + + MAC + Vendor + + + + ` - if(width < 50) color = "meter_red"; - else if(width < 70) color = "meter_orange"; + scanJson.aps.forEach((item, index) => { + const selected = item[item.length - 1]; + const width = parseInt(item[3]) + 130; + let color = ''; + + if (width < 50) color = "meter_red"; + else if (width < 70) color = "meter_orange"; else color = "meter_green"; - - html += (selected ? "" : "") - + ""+i+"" // ID - + ""+esc(scanJson.aps[i][0])+"" // SSID - + ""+(scanJson.aps[i][1].length > 0 ? esc(scanJson.aps[i][1]) : "")+"" // Name - + ""+esc(scanJson.aps[i][2])+"" // Ch - // RSSI - + "
" + scanJson.aps[i][3] + "
" - + ""+esc(scanJson.aps[i][4])+"" // ENC - + ""+(scanJson.aps[i][4] == "-" ? "":"🔒")+"" // Lock Emoji - + ""+esc(scanJson.aps[i][5])+"" // MAC - + ""+esc(scanJson.aps[i][6])+"" // Vendor - // Select - + "" - + "" // Remove - + ""; - } - + + html += ` + " : ""}> + ${index} + ${esc(item[0])} + + ${item[1].length > 0 ? esc(item[1]) : ``} + + ${esc(item[2])}" + +
+
+
+ item[3] +
+
+
+ + ${esc(item[4])} + ${item[4] === "-" ? "" : "🔒"} + ${esc(item[5])} + ${esc(item[6])} + + + + + + + + `; + }) + getE("apTable").innerHTML = html; - + // Stations getE("stNum").innerHTML = scanJson.stations.length; - html = "" - + "" - + "Vendor" - + "MAC" - + "Ch" - + "Name" - + "Pkts" - + "AP" - + "Last seen" - + "" - + "" - + ""; - - for(var i=0;i= 0) - ap = esc(scanJson.aps[scanJson.stations[i][5]][0]); - - html += (selected ? "" : "") - + ""+i+"" // ID - + ""+esc(scanJson.stations[i][3])+"" // Vendor - + ""+esc(scanJson.stations[i][0])+"" // MAC - + ""+esc(scanJson.stations[i][1])+"" // Ch - + ""+(scanJson.stations[i][2].length > 0 ? esc(scanJson.stations[i][2]) : "")+"" // Name - + ""+esc(scanJson.stations[i][4])+"" // Pkts - + ""+ap+"" // AP - + ""+esc(scanJson.stations[i][6])+"" // Last seen - // Select - + "" - + "" // Remove - + ""; - } - + + html = ` + + + Vendor + MAC + Ch + Name + Pkts + AP + Last seen + + + + `; + + scanJson.stations.forEach((item, index) => { + const selected = item[item.length - 1]; + const ap = item[5] >= 0 ? esc(scanJson.aps[item[5]][0]) : ""; + + html += ` + " : ""}> + ${i} + ${esc(item[3])} + ${esc(item[0])} + ${esc(item[1])} + + ${item[2].length > 0 ? esc(item[2]) : ``} + + ${esc(item[4])} + ${ap} + ${esc(item[6])} + + + + + + + + `; + }) + getE("stTable").innerHTML = html; } -function drawNames(){ - var html; - var selected; - - // Names +const drawNames = () => { getE("nNum").innerHTML = nameJson.length; - html = "" - + "" - + "MAC" - + "Vendor" - + "Name" - + "AP-BSSID" - + "Ch" - + "" - + "" - + "" - + ""; - - for(var i=0;i" : "") - + ""+i+"" // ID - + ""+esc(nameJson[i][0])+"" // MAC - + ""+esc(nameJson[i][1])+"" // Vendor - + ""+esc(nameJson[i][2].substring(0,16))+"" // Name - + ""+esc(nameJson[i][3])+"" // AP-BSSID - + ""+esc(nameJson[i][4])+"" // Ch - + "" // Save - // Select - + "" - + "" // Remove - + ""; - } - + let html = ` + + + MAC + Vendor + Name + AP-BSSID + Ch + + + + ` + + nameJson.forEach((item, index) => { + const selected = item[item.length - 1]; + + html += ` + " : ""}> + ${index} + ${esc(item[0])} + ${esc(item[1])} + ${esc(item[2].substring(0,16))} + ${esc(item[3])} + ${esc(item[4])} + + + + + + + + + + + `; + }) + getE("nTable").innerHTML = html; } @@ -166,126 +203,137 @@ function buttonFunc(){ function load(){ // APs and Stations - getFile("run?cmd=save scan", function(){ - getFile("scan.json",function(res){ + getFile("run?cmd=save scan", () => + getFile("scan.json", res => { scanJson = JSON.parse(res); drawScan(); - }); - }); + }) + ); + // Names - getFile("run?cmd=save names", function(){ - getFile("names.json",function(res){ + getFile("run?cmd=save names", () => + getFile("names.json", res => { nameJson = JSON.parse(res); drawNames(); - }); - }); + }) + ); } -function selectRow(type,id,selected){ - switch(type){ +const selectRow = (type, id, selected) => { + if (type === 0 || type === 1) { + scanJson.aps[id][7] = selected; + drawScan(); + } else if (type === 2) { + save(id); + nameJson[id][5] = selected; + drawNames(); + } + + switch(type) { case 0: - scanJson.aps[id][7] = selected; - drawScan(); - getFile("run?cmd="+(selected ? "":"de")+"select ap "+id); - break; + return getFile(`run?cmd=${selected ? "" : "de" } select ap ${id}`); case 1: - scanJson.stations[id][7] = selected; - drawScan(); - getFile("run?cmd="+(selected ? "":"de")+"select station "+id); - break; + return getFile(`run?cmd=${selected ? "" : "de" } select station ${id}`); case 2: - save(id); - nameJson[id][5] = selected; - drawNames(); - getFile("run?cmd="+(selected ? "":"de")+"select name "+id); + return getFile(`run?cmd=${selected ? "" : "de" } select name ${id}`); } } -function remove(type,id){ - switch(type){ +const remove = (type, id) => { + if (type === 0 || type === 1) { + scanJson.aps.splice(id, 1); + drawScan(); + } else if (type === 2) { + nameJson.splice(id, 1); + drawNames(); + } + + switch(type) { case 0: - scanJson.aps.splice(id, 1); - drawScan(); - getFile("run?cmd=remove ap "+id); + getFile(`run?cmd=remove ap ${id}`); break; case 1: - scanJson.stations.splice(id, 1); - drawScan(); - getFile("run?cmd=remove station "+id); + getFile(`run?cmd=remove station ${id}`); break; case 2: - nameJson.splice(id, 1); - drawNames(); - getFile("run?cmd=remove name "+id); + getFile(`run?cmd=remove name ${id}`); } } -function save(id){ - var mac = getE("name_"+id+"_mac").innerHTML.replace("
",""); - var name = getE("name_"+id+"_name").innerHTML.replace("
",""); - var apbssid = getE("name_"+id+"_apbssid").innerHTML.replace("
",""); - var ch = getE("name_"+id+"_ch").innerHTML.replace("
",""); - var changed = mac != nameJson[id][0] || name != nameJson[id][2] || apbssid != nameJson[id][3] || ch != nameJson[id][4]; - if(changed){ +const save = id => { + const mac = getE(`name_${id}_mac`).innerHTML.replace("
" ,""); + const name = getE(`name_${id}_name`).innerHTML.replace("
", ""); + const apbssid = getE(`name_${id}_apbssid`).innerHTML.replace("
", ""); + const ch = getE(`name_${id}_ch`).innerHTML.replace("
", ""); + const changed = mac !== nameJson[id][0] || name !== nameJson[id][2] || apbssid !== nameJson[id][3] || ch !== nameJson[id][4]; + + if (changed) { nameJson[id][0] = mac; nameJson[id][2] = name; nameJson[id][3] = apbssid; nameJson[id][4] = ch; - - if(nameJson[id][0].length != 17){ - showMessage("ERROR: MAC invalid"); - return; + + if (nameJson[id][0].length !== 17) { + return showMessage("ERROR: MAC invalid"); } - - getFile("run?cmd=replace name "+id+" -n \""+nameJson[id][2]+"\" -m \""+nameJson[id][0]+"\" -ch "+nameJson[id][4]+" -b \""+nameJson[id][3]+"\" "+(nameJson[id][5] ? "-s" : "")); - + + getFile(`run?cmd=replace name ${id} -n "${nameJson[id][2]}" -m "${nameJson[id][0]}" -ch ${nameJson[id][4]} -b "${nameJson[id][3]}" ${nameJson[id][5] ? "-s" : ""}`); + drawNames(); } } -function add(type,id){ +const add = (type, id) => { if(nameJson.length >= 25){ - showMessage("Device Name List is full!"); - return; - } - - switch(type){ + return showMessage("Device Name List is full!"); + } + + switch(type) { case 0: - getFile("run?cmd=add name \""+scanJson.aps[id][0]+"\" -ap "+id); + getFile(`run?cmd=add name "${scanJson.aps[id][0]}" -ap ${id}`); scanJson.aps[id][1] = scanJson.aps[id][0]; // name = SSID - nameJson.push([scanJson.aps[id][5],scanJson.aps[id][6],scanJson.aps[id][0],"",scanJson.aps[id][2],false]); + nameJson.push([scanJson.aps[id][5], scanJson.aps[id][6], scanJson.aps[id][0], "", scanJson.aps[id][2], false]); drawScan(); break; case 1: - getFile("run?cmd=add name \""+scanJson.stations[id][0]+"\" station "+id); - scanJson.stations[id][2] = "device_"+nameJson.length; // name = device_ - nameJson.push([scanJson.stations[id][0],scanJson.stations[id][3],"device_"+nameJson.length,scanJson.aps[scanJson.stations[id][5]][5],scanJson.stations[id][1],false]); + getFile(`run?cmd=add name "${scanJson.stations[id][0]}" station ${id}`); + scanJson.stations[id][2] = `device_${nameJson.length}`; // name = device_ + nameJson.push([scanJson.stations[id][0], scanJson.stations[id][3], `device_${nameJson.length}`, scanJson.aps[scanJson.stations[id][5]][5], scanJson.stations[id][1], false]); drawScan(); break; case 2: - getFile("run?cmd=add name device_"+nameJson.length+" -m 00:00:00:00:00:00 -ch 1"); - nameJson.push(["00:00:00:00:00:00","","device_"+nameJson.length,"",1,false]); + getFile(`run?cmd=add name device_${nameJson.length} -m 00:00:00:00:00:00 -ch 1`); + nameJson.push(["00:00:00:00:00:00", "", `device_${nameJson.length}`, "", 1, false]); drawNames(); } - + drawNames(); } -function selectAll(type,select){ - switch(type){ +const selectAll = (type, select) => { + switch(type) { case 0: - getFile("run?cmd="+(select ? "":"de")+"select aps"); - for(var i=0;i { + item[7] = select; + return item + }) drawScan(); break; case 1: - getFile("run?cmd="+(select ? "":"de")+"select stations"); - for(var i=0;i { + item[7] = select; + return item + }) drawScan(); break; case 2: - getFile("run?cmd="+(select ? "":"de")+"select names"); - for(var i=0;i { + item[5] = select; + return item + }) drawNames(); } } \ No newline at end of file diff --git a/web_interface/js/settings.js b/web_interface/js/settings.js index 5605283..ccb97f0 100644 --- a/web_interface/js/settings.js +++ b/web_interface/js/settings.js @@ -1,16 +1,18 @@ -var settingsJson = {}; +let settingsJson = {}; -function load(){ - getFile("settings.json",function(res){ +const load = () => { + getFile("settings.json", res => { settingsJson = JSON.parse(res); draw(); }); } -function draw(){ - var html = ""; +const draw = () => { + let html = ""; + for (var key in settingsJson) { key = esc(key); + if (settingsJson.hasOwnProperty(key)) { html += "
" + "
" @@ -39,13 +41,11 @@ function draw(){ getE("settingsList").innerHTML = html; } -function save(key, value){ - if(key){ +const save = (key, value) => { + if (key) { settingsJson[key] = value; - getFile("run?cmd=set "+key+" \""+value+"\""); - }else{ - getFile("run?cmd=save settings",function(res){ - load(); - }); + getFile(`run?cmd=set ${key} "${value}"`); + } else { + getFile("run?cmd=save settings", load); } } \ No newline at end of file diff --git a/web_interface/js/site.js b/web_interface/js/site.js index 54665e7..00b552a 100644 --- a/web_interface/js/site.js +++ b/web_interface/js/site.js @@ -1,118 +1,113 @@ -var langJson = {}; +let langJson = {}; -function getE(name){ - return document.getElementById(name); -} +const getE = (name) => document.getElementById(name); -function esc(str) { - if(str){ +const esc = str => { + if (str) { return str.toString() - .replace(/&/g, '&') - .replace(//g, '>') - .replace(/\"/g, '"') - .replace(/\'/g, ''') - .replace(/\//g, '/'); + .replace(/&/g, "&") + .replace(//g, ">") + .replace(/\"/g, """) + .replace(/\'/g, "'") + .replace(/\//g, "/"); } + return ""; } -function convertLineBreaks(str){ - if(str){ +const convertLineBreaks = str => { + if (str) { str = str.toString(); - str = str.replace(/(?:\r\n|\r|\n)/g,'
'); + str = str.replace(/(?:\r\n|\r|\n)/g, '
'); return str; } + return ""; } -function showMessage(msg, closeAfter){ - var elmt = getE("error"); - elmt.innerHTML = esc(msg)+"x"; - - elmt.classList.remove('hide'); - elmt.classList.add('show'); +const showMessage = (msg, closeAfter) => { + const elmt = getE("error"); + elmt.innerHTML = `${esc(msg)}x`; + + elmt.classList.remove("hide"); + elmt.classList.add("show"); if(closeAfter !== undefined){ - setTimeout(closeMessage(),closeAfter); + setTimeout(closeMessage, closeAfter); } } -function closeMessage(){ - var elmt = getE("error"); +const closeMessage = () => { + const elmt = getE("error"); + elmt.innerHTML = ""; - elmt.classList.remove('show'); - elmt.classList.add('hide'); + elmt.classList.remove("show"); + elmt.classList.add("hide"); } -function getFile(adr, callback, timeout, method, onTimeout, onError){ +const getFile = ( + adr, + callback = () => undefined, + timeout = 8000, + method = "GET", + onTimeout = showMessage(`ERROR: timeout loading file ${adr}`), + onError = showMessage(`ERROR: loading file: ${adr}`) +) => { /* fallback stuff */ if(adr === undefined) return; - if(callback === undefined) callback = function(){}; - if(timeout === undefined) timeout = 8000; - if(method === undefined) method = "GET"; - if(onTimeout === undefined) { - onTimeout = function(){ - showMessage("ERROR: timeout loading file "+adr); - }; - } - if(onError === undefined){ - onError = function(){ - showMessage("ERROR: loading file: "+adr); - }; - } - + /* create request */ - var request = new XMLHttpRequest(); - + const request = new XMLHttpRequest(); + /* set parameter for request */ request.open(method, encodeURI(adr), true); request.timeout = timeout; request.ontimeout = onTimeout; - request.onerror = onError; + request.onerror = onError; request.overrideMimeType("application/json"); - - request.onreadystatechange = function() { - if(this.readyState == 4){ - if(this.status == 200){ - callback(this.responseText); - } + + request.onreadystatechange = () => { + if (this.readyState == 4 && this.status == 200) { + callback(this.responseText); } }; - + /* send request */ request.send(); - + console.log(adr); } -function lang(key){ - return convertLineBreaks(esc(langJson[key])); -} +const lang = key => convertLineBreaks(esc(langJson[key])); -function parseLang(fileStr){ +const parseLang = fileStr => { langJson = JSON.parse(fileStr); - if(langJson["lang"] != "en"){// no need to update the HTML - var elements = document.querySelectorAll("[data-translate]"); - for (i = 0; i < elements.length; i++) { - var element = elements[i]; - element.innerHTML = lang(element.getAttribute("data-translate")); - } + + if (langJson["lang"] !== "en") { + // no need to update the HTML + const elements = document.querySelectorAll("[data-translate]"); + + [...elements].forEach(item => { + item.innerHTML = lang(element.getAttribute("data-translate")); + }) } - document.querySelector('html').setAttribute("lang", langJson["lang"] ); + + document.querySelector('html').setAttribute("lang", langJson["lang"]); + if(typeof load !== 'undefined') load(); } -function loadLang(){ - var language = "default"; //navigator.language.slice(0, 2); - getFile("lang/" + language + ".lang", - parseLang, +const loadLang = () => { + const language = "default"; //navigator.language.slice(0, 2); + const langFunc = () => getFile("lang/en.lang", parseLang); + + getFile( + `lang/${language}.lang`, + parseLang, 2000, "GET", - function(){ - getFile("lang/en.lang", parseLang); - }, function(){ - getFile("lang/en.lang", parseLang); - } + langFunc, + langFunc ); } diff --git a/web_interface/js/ssids.js b/web_interface/js/ssids.js index dd2ac32..0d44be1 100644 --- a/web_interface/js/ssids.js +++ b/web_interface/js/ssids.js @@ -1,105 +1,111 @@ -var ssidJson = {"random":false,"ssids":[]}; - -function load(){ - getFile("run?cmd=save ssids", function(){ - getFile("ssids.json",function(res){ +let ssidJson = { + "random": false, + "ssids": [] +}; + +const load = () => { + getFile("run?cmd=save ssids", () => + getFile("ssids.json", res => { ssidJson = JSON.parse(res); draw(); - }); - }); + }) + ); } -function draw(){ - var html; - - html = "" - + "" - + "" - + "" - + "" - + "" - + ""; - - for(var i=0;i"+i+"" // ID - + ""+esc(ssidJson.ssids[i][0].substring(0,ssidJson.ssids[i][2]))+"" // SSID - + ""+(ssidJson.ssids[i][1] ? "🔒" : "-")+"" // Enc - + "" // Save - + "" // Remove - + ""; - } - - getE("randomBtn").innerHTML = ssidJson.random ? lang("disable_random") : lang("enable_random"); - +const draw = () => { + let html = ` + + + + + + + + `; + + ssidJson.ssids.map((item, i) => { + html += ` + + ${i} + ${esc(ssidJson.ssids[i][0].substring(0, ssidJson.ssids[i][2]))} + ${ssidJson.ssids[i][1] ? "🔒" : "-"} + + + + + + + + `; + }) + + getE("randomBtn").innerHTML = lang(ssidJson.random ? "disable_random" : "enable_random"); getE("ssidTable").innerHTML = html; } -function remove(id){ +const remove = id => { ssidJson.ssids.splice(id, 1); - getFile("run?cmd=remove ssid "+id); + getFile(`run?cmd=remove ssid ${id}`); draw(); } -function add(){ - var ssidStr = getE("ssid").value; - var wpa2 = getE("enc").checked; - var clones = getE("ssidNum").value; - var force = getE("overwrite").checked; - - if(ssidStr.length > 0){ - var cmdStr = "add ssid \""+ssidStr+"\""+(force ? " -f":" ")+" -cl "+clones; - if(wpa2) cmdStr += " -wpa2"; - - getFile("run?cmd="+cmdStr); - - for(var i=0;i= 60) ssidJson.ssids.splice(0,1); - ssidJson.ssids.push([ssidStr,wpa2]); +const add = () => { + const ssidStr = getE("ssid").value; + + if (ssidStr.length > 0) { + const wpa2 = getE("enc").checked; + const clones = getE("ssidNum").value; + const force = getE("overwrite").checked; + + const cmdStr = `add ssid "${ssidStr}" ${force ? "-f" : ""} -cl ${clones} ${wpa2 ? -wpa2 : ""}`; + + getFile(`run?cmd=${cmdStr}`); + + for (let i = 0; i < clones; i++) { + if (ssidJson.ssids.length >= 60) ssidJson.ssids.splice(0,1); + ssidJson.ssids.push([ssidStr, wpa2]); } - + draw(); } } -function enableRandom(){ - if(ssidJson.random){ - getFile("run?cmd=disable random",function(){ - load(); - }); - }else{ - getFile("run?cmd=enable random "+getE("interval").value,function(){ - load(); - }); +const enableRandom = () => { + if (ssidJson.random) { + getFile("run?cmd=disable random", load); + } else { + getFile(`run?cmd=enable random ${getE("interval").value}`, load); } - + } -function disableRandom(){ - +const disableRandom = () => { + } -function addSelected(){ - getFile("run?cmd=add ssid -s"+(getE("overwrite").checked ? " -f":"")); +const addSelected = () => { + getFile(`run?cmd=add ssid -s ${getE("overwrite").checked ? "-f":""}`); } -function changeEnc(id){ +const changeEnc = id => { ssidJson.ssids[id][1] = !ssidJson.ssids[id][1]; + draw(); save(id); } -function removeAll(){ +const removeAll = () => { ssidJson.ssids = []; + getFile("run?cmd=remove ssids"); draw(); } -function save(id){ - var name = getE("ssid_"+id).innerHTML.replace("
","").substring(0,32); - var wpa2 = ssidJson.ssids[id][1]; - ssidJson.ssids[id] = [name,wpa2]; - - getFile("run?cmd=replace ssid "+id+" -n \""+name+"\" "+(wpa2 ? "-wpa2" : "")); +const save = id => { + const name = getE(`ssid_${id}`).innerHTML.replace("
", "").substring(0, 32); + const wpa2 = ssidJson.ssids[id][1]; + ssidJson.ssids[id] = [name, wpa2]; + + getFile(`run?cmd=replace ssid ${id} -n "${name}" ${wpa2 ? "-wpa2" : ""}`); }