mirror of
https://github.com/KevinMidboe/Arduino.git
synced 2026-02-07 08:45:30 +00:00
Init commit with many years of arduino sketches and projects. I dont know if the esp8266 includes much, but there are also libraries. I hope they dont have crazy automatic versioning through the Arduino IDE.
This commit is contained in:
41
enp8266/esp8266_deauther-master/web_interface/js/attack.js
Executable file
41
enp8266/esp8266_deauther-master/web_interface/js/attack.js
Executable file
@@ -0,0 +1,41 @@
|
||||
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]+"");
|
||||
}
|
||||
|
||||
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();
|
||||
});
|
||||
}
|
||||
|
||||
function load(){
|
||||
getFile("attack.json",function(response){
|
||||
attackJSON = JSON.parse(response);
|
||||
draw();
|
||||
});
|
||||
}
|
||||
262
enp8266/esp8266_deauther-master/web_interface/js/scan.js
Executable file
262
enp8266/esp8266_deauther-master/web_interface/js/scan.js
Executable file
@@ -0,0 +1,262 @@
|
||||
var nameJson = [];
|
||||
var scanJson = {aps:[],stations:[]};
|
||||
|
||||
function drawScan(){
|
||||
var html;
|
||||
var selected;
|
||||
var width;
|
||||
var color;
|
||||
var macVendor;
|
||||
|
||||
// Access Points
|
||||
getE("apNum").innerHTML = scanJson.aps.length;
|
||||
html = "<tr>"
|
||||
+ "<th class='id'></th>"
|
||||
+ "<th class='ssid'>SSID</th>"
|
||||
+ "<th class='name'>Name</th>"
|
||||
+ "<th class='ch'>Ch</th>"
|
||||
+ "<th class='rssi'>RSSI</th>"
|
||||
+ "<th class='enc'>Enc</th>"
|
||||
+ "<th class='lock'></th>"
|
||||
+ "<th class='mac'>MAC</th>"
|
||||
+ "<th class='vendor'>Vendor</th>"
|
||||
+ "<th class='selectColumn'></th>"
|
||||
+ "<th class='remove'></th>"
|
||||
+ "</tr>";
|
||||
|
||||
for(var i=0;i<scanJson.aps.length;i++){
|
||||
selected = scanJson.aps[i][scanJson.aps[i].length-1];
|
||||
width = parseInt(scanJson.aps[i][3]) + 130;
|
||||
|
||||
if(width < 50) color = "meter_red";
|
||||
else if(width < 70) color = "meter_orange";
|
||||
else color = "meter_green";
|
||||
|
||||
html += (selected ? "<tr class='selected'>" : "<tr>")
|
||||
+ "<td class='id'>"+i+"</td>" // ID
|
||||
+ "<td class='ssid'>"+esc(scanJson.aps[i][0])+"</td>" // SSID
|
||||
+ "<td class='name'>"+(scanJson.aps[i][1].length > 0 ? esc(scanJson.aps[i][1]) : "<button onclick='add(0,"+i+")'>"+lang("add")+"</button>")+"</td>" // Name
|
||||
+ "<td class='ch'>"+esc(scanJson.aps[i][2])+"</td>" // Ch
|
||||
// RSSI
|
||||
+ "<td class='rssi'><div class='meter_background'> <div class='meter_forground "+color+"' style='width: "+width+"%;'><div class='meter_value'>" + scanJson.aps[i][3] + "</div></div> </div></td>"
|
||||
+ "<td class='enc'>"+esc(scanJson.aps[i][4])+"</td>" // ENC
|
||||
+ "<td class='lock'>"+(scanJson.aps[i][4] == "-" ? "":"🔒")+"</td>" // Lock Emoji
|
||||
+ "<td class='mac'>"+esc(scanJson.aps[i][5])+"</td>" // MAC
|
||||
+ "<td class='vendor'>"+esc(scanJson.aps[i][6])+"</td>" // Vendor
|
||||
// Select
|
||||
+ "<td class='selectColumn'><label class='checkBoxContainer'><input type='checkbox' "+(selected ? "checked" : "")+" onclick='selectRow(0,"+i+","+(selected ? "false" : "true")+")'><span class='checkmark'></span></label></td>"
|
||||
+ "<td class='remove'><button class='red' onclick='remove(0,"+i+")'>X</button></td>" // Remove
|
||||
+ "</tr>";
|
||||
}
|
||||
|
||||
getE("apTable").innerHTML = html;
|
||||
|
||||
// Stations
|
||||
getE("stNum").innerHTML = scanJson.stations.length;
|
||||
html = "<tr>"
|
||||
+ "<th class='id'></th>"
|
||||
+ "<th class='vendor'>Vendor</th>"
|
||||
+ "<th class='mac'>MAC</th>"
|
||||
+ "<th class='ch'>Ch</th>"
|
||||
+ "<th class='name'>Name</th>"
|
||||
+ "<th class='pkts'>Pkts</th>"
|
||||
+ "<th class='ap'>AP</th>"
|
||||
+ "<th class='lastseen'>Last seen</th>"
|
||||
+ "<th class='selectColumn'></th>"
|
||||
+ "<th class='remove'></th>"
|
||||
+ "</tr>";
|
||||
|
||||
for(var i=0;i<scanJson.stations.length;i++){
|
||||
selected = scanJson.stations[i][scanJson.stations[i].length-1];
|
||||
ap = "";
|
||||
if(scanJson.stations[i][5] >= 0)
|
||||
ap = esc(scanJson.aps[scanJson.stations[i][5]][0]);
|
||||
|
||||
html += (selected ? "<tr class='selected'>" : "<tr>")
|
||||
+ "<td class='id'>"+i+"</td>" // ID
|
||||
+ "<td class='vendor'>"+esc(scanJson.stations[i][3])+"</td>" // Vendor
|
||||
+ "<td class='mac'>"+esc(scanJson.stations[i][0])+"</td>" // MAC
|
||||
+ "<td class='ch'>"+esc(scanJson.stations[i][1])+"</td>" // Ch
|
||||
+ "<td class='name'>"+(scanJson.stations[i][2].length > 0 ? esc(scanJson.stations[i][2]) : "<button onclick='add(1,"+i+")'>"+lang("add")+"</button>")+"</td>" // Name
|
||||
+ "<td class='pkts'>"+esc(scanJson.stations[i][4])+"</td>" // Pkts
|
||||
+ "<td class='ap'>"+ap+"</td>" // AP
|
||||
+ "<td class='lastseen'>"+esc(scanJson.stations[i][6])+"</td>" // Last seen
|
||||
// Select
|
||||
+ "<td class='selectColumn'><label class='checkBoxContainer'><input type='checkbox' "+(selected ? "checked" : "")+" onclick='selectRow(1,"+i+","+(selected ? "false" : "true")+")'><span class='checkmark'></span></label></td>"
|
||||
+ "<td class='remove'><button class='red' onclick='remove(1,"+i+")'>X</button></td>" // Remove
|
||||
+ "</tr>";
|
||||
}
|
||||
|
||||
getE("stTable").innerHTML = html;
|
||||
}
|
||||
|
||||
function drawNames(){
|
||||
var html;
|
||||
var selected;
|
||||
|
||||
// Names
|
||||
getE("nNum").innerHTML = nameJson.length;
|
||||
html = "<tr>"
|
||||
+ "<th class='id'></th>"
|
||||
+ "<th class='mac'>MAC</th>"
|
||||
+ "<th class='vendor'>Vendor</th>"
|
||||
+ "<th class='name'>Name</th>"
|
||||
+ "<th class='ap'>AP-BSSID</th>"
|
||||
+ "<th class='ch'>Ch</th>"
|
||||
+ "<th class='save'></th>"
|
||||
+ "<th class='selectColumn'></th>"
|
||||
+ "<th class='remove'></th>"
|
||||
+ "</tr>";
|
||||
|
||||
for(var i=0;i<nameJson.length;i++){
|
||||
selected = nameJson[i][nameJson[i].length-1];
|
||||
|
||||
html += (selected ? "<tr class='selected'>" : "<tr>")
|
||||
+ "<td class='id'>"+i+"</td>" // ID
|
||||
+ "<td class='mac' contentEditable='true' id='name_"+i+"_mac'>"+esc(nameJson[i][0])+"</td>" // MAC
|
||||
+ "<td class='vendor'>"+esc(nameJson[i][1])+"</td>" // Vendor
|
||||
+ "<td class='name' contentEditable='true' id='name_"+i+"_name'>"+esc(nameJson[i][2].substring(0,16))+"</td>" // Name
|
||||
+ "<td class='ap' contentEditable='true' id='name_"+i+"_apbssid'>"+esc(nameJson[i][3])+"</td>" // AP-BSSID
|
||||
+ "<td class='ch' contentEditable='true' id='name_"+i+"_ch'>"+esc(nameJson[i][4])+"</td>" // Ch
|
||||
+ "<td class='save'><button class='green' onclick='save("+i+")'>"+lang("save")+"</button></td>" // Save
|
||||
// Select
|
||||
+ "<td class='selectColumn'><label class='checkBoxContainer'><input type='checkbox' "+(selected ? "checked" : "")+" onclick='selectRow(2,"+i+","+(selected ? "false" : "true")+")'><span class='checkmark'></span></label></td>"
|
||||
+ "<td class='remove'><button class='red' onclick='remove(2,"+i+")'>X</button></td>" // Remove
|
||||
+ "</tr>";
|
||||
}
|
||||
|
||||
getE("nTable").innerHTML = html;
|
||||
}
|
||||
|
||||
function scan(type){
|
||||
var cmdStr = "scan "
|
||||
+ (type == 0 ? "aps " : "stations -t "+getE("scanTime").value+"s")
|
||||
+ " -ch "+getE("ch").options[getE("ch").selectedIndex].value;
|
||||
getFile("run?cmd="+cmdStr);
|
||||
}
|
||||
|
||||
function load(){
|
||||
// APs and Stations
|
||||
getFile("run?cmd=save scan", function(){
|
||||
getFile("scan.json",function(res){
|
||||
scanJson = JSON.parse(res);
|
||||
drawScan();
|
||||
});
|
||||
});
|
||||
// Names
|
||||
getFile("run?cmd=save names", function(){
|
||||
getFile("names.json",function(res){
|
||||
nameJson = JSON.parse(res);
|
||||
drawNames();
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
function selectRow(type,id,selected){
|
||||
switch(type){
|
||||
case 0:
|
||||
scanJson.aps[id][7] = selected;
|
||||
drawScan();
|
||||
getFile("run?cmd="+(selected ? "":"de")+"select ap "+id);
|
||||
break;
|
||||
case 1:
|
||||
scanJson.stations[id][7] = selected;
|
||||
drawScan();
|
||||
getFile("run?cmd="+(selected ? "":"de")+"select station "+id);
|
||||
break;
|
||||
case 2:
|
||||
save(id);
|
||||
nameJson[id][5] = selected;
|
||||
drawNames();
|
||||
getFile("run?cmd="+(selected ? "":"de")+"select name "+id);
|
||||
}
|
||||
}
|
||||
|
||||
function remove(type,id){
|
||||
switch(type){
|
||||
case 0:
|
||||
scanJson.aps.splice(id, 1);
|
||||
drawScan();
|
||||
getFile("run?cmd=remove ap "+id);
|
||||
break;
|
||||
case 1:
|
||||
scanJson.stations.splice(id, 1);
|
||||
drawScan();
|
||||
getFile("run?cmd=remove station "+id);
|
||||
break;
|
||||
case 2:
|
||||
nameJson.splice(id, 1);
|
||||
drawNames();
|
||||
getFile("run?cmd=remove name "+id);
|
||||
}
|
||||
}
|
||||
|
||||
function save(id){
|
||||
var mac = getE("name_"+id+"_mac").innerHTML.replace("<br>","");
|
||||
var name = getE("name_"+id+"_name").innerHTML.replace("<br>","");
|
||||
var apbssid = getE("name_"+id+"_apbssid").innerHTML.replace("<br>","");
|
||||
var ch = getE("name_"+id+"_ch").innerHTML.replace("<br>","");
|
||||
var 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;
|
||||
}
|
||||
|
||||
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){
|
||||
if(nameJson.length >= 25){
|
||||
showMessage("Device Name List is full!");
|
||||
return;
|
||||
}
|
||||
|
||||
switch(type){
|
||||
case 0:
|
||||
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]);
|
||||
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]);
|
||||
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]);
|
||||
drawNames();
|
||||
}
|
||||
|
||||
drawNames();
|
||||
}
|
||||
|
||||
function selectAll(type,select){
|
||||
switch(type){
|
||||
case 0:
|
||||
getFile("run?cmd="+(select ? "":"de")+"select aps");
|
||||
for(var i=0;i<scanJson.aps.length;i++) scanJson.aps[i][7] = select;
|
||||
drawScan();
|
||||
break;
|
||||
case 1:
|
||||
getFile("run?cmd="+(select ? "":"de")+"select stations");
|
||||
for(var i=0;i<scanJson.stations.length;i++) scanJson.stations[i][7] = select;
|
||||
drawScan();
|
||||
break;
|
||||
case 2:
|
||||
getFile("run?cmd="+(select ? "":"de")+"select names");
|
||||
for(var i=0;i<nameJson.length;i++) nameJson[i][5] = select;
|
||||
drawNames();
|
||||
}
|
||||
}
|
||||
51
enp8266/esp8266_deauther-master/web_interface/js/settings.js
Executable file
51
enp8266/esp8266_deauther-master/web_interface/js/settings.js
Executable file
@@ -0,0 +1,51 @@
|
||||
var settingsJson = {};
|
||||
|
||||
function load(){
|
||||
getFile("settings.json",function(res){
|
||||
settingsJson = JSON.parse(res);
|
||||
draw();
|
||||
});
|
||||
}
|
||||
|
||||
function draw(){
|
||||
var html = "";
|
||||
for (var key in settingsJson) {
|
||||
key = esc(key);
|
||||
if (settingsJson.hasOwnProperty(key)) {
|
||||
html += "<div class='row'>"
|
||||
+ "<div class='col-6'>"
|
||||
+ "<label class='settingName "+(typeof settingsJson[key] == "boolean" ? "labelFix":"")+"' for='"+key+"'>"+key+":</label>"
|
||||
+ "</div>"
|
||||
+ "<div class='col-6'>";
|
||||
|
||||
if(typeof settingsJson[key] == "boolean"){
|
||||
html += "<label class='checkBoxContainer'><input type='checkbox' name='"+key+"' "+(settingsJson[key] ? "checked" : "")+" onchange='save(\""+key+"\",!settingsJson[\""+key+"\"])'><span class='checkmark'></span></label>";
|
||||
}else if(typeof settingsJson[key] == "number"){
|
||||
html += "<input type='number' name='"+key+"' value="+settingsJson[key]+" onchange='save(\""+key+"\",parseInt(this.value))'>";
|
||||
}else if(typeof settingsJson[key] == "string"){
|
||||
html += "<input type='text' name='"+key+"' value="+settingsJson[key]+" "+(key=="version"?"readonly":"")+" onchange='save(\""+key+"\",this.value)'>";
|
||||
}
|
||||
|
||||
html += "</div>"
|
||||
+ "</div>"
|
||||
+ "<div class='row'>"
|
||||
+ "<div class='col-12'>"
|
||||
+ "<p>"+lang("setting_"+key)+"</p>"
|
||||
+ "<hr>"
|
||||
+ "</div>"
|
||||
+ "</div>";
|
||||
}
|
||||
}
|
||||
getE("settingsList").innerHTML = html;
|
||||
}
|
||||
|
||||
function save(key, value){
|
||||
if(key){
|
||||
settingsJson[key] = value;
|
||||
getFile("run?cmd=set "+key+" \""+value+"\"");
|
||||
}else{
|
||||
getFile("run?cmd=save settings",function(res){
|
||||
load();
|
||||
});
|
||||
}
|
||||
}
|
||||
118
enp8266/esp8266_deauther-master/web_interface/js/site.js
Executable file
118
enp8266/esp8266_deauther-master/web_interface/js/site.js
Executable file
@@ -0,0 +1,118 @@
|
||||
var langJson = {};
|
||||
|
||||
function getE(name){
|
||||
return document.getElementById(name);
|
||||
}
|
||||
|
||||
function esc(str) {
|
||||
if(str){
|
||||
return str.toString()
|
||||
.replace(/&/g, '&')
|
||||
.replace(/</g, '<')
|
||||
.replace(/>/g, '>')
|
||||
.replace(/\"/g, '"')
|
||||
.replace(/\'/g, ''')
|
||||
.replace(/\//g, '/');
|
||||
}
|
||||
return "";
|
||||
}
|
||||
|
||||
function convertLineBreaks(str){
|
||||
if(str){
|
||||
str = str.toString();
|
||||
str = str.replace(/(?:\r\n|\r|\n)/g,'<br>');
|
||||
return str;
|
||||
}
|
||||
return "";
|
||||
}
|
||||
|
||||
function showMessage(msg, closeAfter){
|
||||
var elmt = getE("error");
|
||||
elmt.innerHTML = esc(msg)+"<a onclick='closeMessage()' id='closeError'>x</a>";
|
||||
|
||||
elmt.classList.remove('hide');
|
||||
elmt.classList.add('show');
|
||||
|
||||
if(closeAfter !== undefined){
|
||||
setTimeout(closeMessage(),closeAfter);
|
||||
}
|
||||
}
|
||||
|
||||
function closeMessage(){
|
||||
var elmt = getE("error");
|
||||
elmt.innerHTML = "";
|
||||
elmt.classList.remove('show');
|
||||
elmt.classList.add('hide');
|
||||
}
|
||||
|
||||
function getFile(adr, callback, timeout, method, onTimeout, onError){
|
||||
/* 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();
|
||||
|
||||
/* set parameter for request */
|
||||
request.open(method, encodeURI(adr), true);
|
||||
request.timeout = timeout;
|
||||
request.ontimeout = onTimeout;
|
||||
request.onerror = onError;
|
||||
request.overrideMimeType("application/json");
|
||||
|
||||
request.onreadystatechange = function() {
|
||||
if(this.readyState == 4){
|
||||
if(this.status == 200){
|
||||
callback(this.responseText);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
/* send request */
|
||||
request.send();
|
||||
|
||||
console.log(adr);
|
||||
}
|
||||
|
||||
function lang(key){
|
||||
return convertLineBreaks(esc(langJson[key]));
|
||||
}
|
||||
|
||||
function 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"));
|
||||
}
|
||||
}
|
||||
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,
|
||||
2000,
|
||||
"GET",
|
||||
function(){
|
||||
getFile("lang/en.lang", parseLang);
|
||||
}, function(){
|
||||
getFile("lang/en.lang", parseLang);
|
||||
}
|
||||
);
|
||||
}
|
||||
105
enp8266/esp8266_deauther-master/web_interface/js/ssids.js
Executable file
105
enp8266/esp8266_deauther-master/web_interface/js/ssids.js
Executable file
@@ -0,0 +1,105 @@
|
||||
var ssidJson = {"random":false,"ssids":[]};
|
||||
|
||||
function load(){
|
||||
getFile("run?cmd=save ssids", function(){
|
||||
getFile("ssids.json",function(res){
|
||||
ssidJson = JSON.parse(res);
|
||||
draw();
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
function draw(){
|
||||
var html;
|
||||
|
||||
html = "<tr>"
|
||||
+ "<th class='id'></th>"
|
||||
+ "<th class='ssid'></th>"
|
||||
+ "<th class='lock'></th>"
|
||||
+ "<th class='save'></th>"
|
||||
+ "<th class='remove'></th>"
|
||||
+ "</tr>";
|
||||
|
||||
for(var i=0;i<ssidJson.ssids.length;i++){
|
||||
html += "<tr>"
|
||||
+ "<td class='id'>"+i+"</td>" // ID
|
||||
+ "<td class='ssid' contenteditable='true' id='ssid_"+i+"'>"+esc(ssidJson.ssids[i][0].substring(0,ssidJson.ssids[i][2]))+"</td>" // SSID
|
||||
+ "<td class='lock clickable' onclick='changeEnc("+i+")' id='enc_"+i+"'>"+(ssidJson.ssids[i][1] ? "🔒" : "-")+"</td>" // Enc
|
||||
+ "<td class='save'><button class='green' onclick='save("+i+")'>"+lang("save")+"</button></td>" // Save
|
||||
+ "<td class='remove'><button class='red' onclick='remove("+i+")'>X</button></td>" // Remove
|
||||
+ "</tr>";
|
||||
}
|
||||
|
||||
getE("randomBtn").innerHTML = ssidJson.random ? lang("disable_random") : lang("enable_random");
|
||||
|
||||
getE("ssidTable").innerHTML = html;
|
||||
}
|
||||
|
||||
function remove(id){
|
||||
ssidJson.ssids.splice(id, 1);
|
||||
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<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();
|
||||
});
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
function disableRandom(){
|
||||
|
||||
}
|
||||
|
||||
function addSelected(){
|
||||
getFile("run?cmd=add ssid -s"+(getE("overwrite").checked ? " -f":""));
|
||||
}
|
||||
|
||||
function changeEnc(id){
|
||||
ssidJson.ssids[id][1] = !ssidJson.ssids[id][1];
|
||||
draw();
|
||||
save(id);
|
||||
}
|
||||
|
||||
function removeAll(){
|
||||
ssidJson.ssids = [];
|
||||
getFile("run?cmd=remove ssids");
|
||||
draw();
|
||||
}
|
||||
|
||||
function save(id){
|
||||
var name = getE("ssid_"+id).innerHTML.replace("<br>","").substring(0,32);
|
||||
var wpa2 = ssidJson.ssids[id][1];
|
||||
ssidJson.ssids[id] = [name,wpa2];
|
||||
|
||||
getFile("run?cmd=replace ssid "+id+" -n \""+name+"\" "+(wpa2 ? "-wpa2" : ""));
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user