java script: addButtons(); function currentBand() { $("#dhcp_mask").show(); $("#dhcp_dns").show(); $.ajax({ type: "GET", async: true, url: '/api/device/signal', error: function (request, status, error) { alert("Signal Error:" + request.status + "\n" + "message:" + request.responseText + "\n" + "error:" + error); }, success: function (data) { vars = ['rssi', 'rsrp', 'rsrq', 'sinr', 'dlbandwidth', 'ulbandwidth', 'band', 'cell_id', 'plmn', 'earfcn']; for (i = 0; i < vars.length; i++) { window[vars[i]] = extractXML(vars[i], data); $('#' + vars[i]).html(window[vars[i]]); } hex = Number(cell_id).toString(16); hex2 = hex.substring(0, hex.length - 2); enbid = parseInt(hex2, 16).toString(); $('#enbid').html(enbid); if (plmn == '22201') { plmn = '2221'; } if (plmn == '22299') { plmn = '22288'; } if ((plmn == '22250') && (enbid.length == 6)) { plmn = '22288'; } link_lte = "https://lteitaly.it/internal/map.php#bts=" + plmn + "." + enbid; $("#lteitaly").attr("href", link_lte); } }); $.ajax({ type: "GET", async: true, url: '/api/net/net-mode', error: function (request, status, error) { alert("Signal Error:" + request.status + "\n" + "message:" + request.responseText + "\n" + "error:" + error); }, success: function (data) { lteband = extractXML('LTEBand', data); $('#allowed').html(_4GType(lteband)); } }); $.ajax({ type: "GET", async: true, url: '/api/dhcp/settings', error: function (request, status, error) { alert("DHCP Error:" + request.status + "\n" + "message:" + request.responseText + "\n" + "error:" + error); }, success: function (data) { vars = ['DhcpIPAddress', 'DhcpLanNetmask', 'DhcpStatus', 'DhcpStartIPAddress', 'DhcpEndIPAddress', 'DhcpLeaseTime', 'DnsStatus', 'PrimaryDns', 'SecondaryDns']; for (i = 0; i < vars.length; i++) { window[vars[i]] = extractXML(vars[i], data); $('#' + vars[i]).html(window[vars[i]]); } } }); } function extractXML(tag, data) { try { return data.split("</" + tag + ">")[0].split("<" + tag + ">")[1]; } catch (err) { return err.message; } } function _4GType(data) { if ((data == '20880800C5') || (data == '20000800C5')) return "AUTO"; data_out = ""; if ((parseInt(data, 16) & 0x1) == 0x1) { data_out = "B1+"; } if ((parseInt(data, 16) & 0x4) == 0x4) { data_out += "B3+"; } if ((parseInt(data, 16) & 0x40) == 0x40) { data_out += "B7+"; } if ((parseInt(data, 16) & 0x80000) == 0x80000) { data_out += "B20"; } data_out = data_out.replace(/\++$/, ""); return data_out; } function ltebandselection() { if (arguments.length == 0) { var band = prompt("Please input desirable LTE band number, separated by + char (example 1+3+20). If you want to use every supported bands, write 'AUTO'.", "AUTO"); if (band == null || band === "") { return; } } else var band = arguments[0]; var bs = band.split("+"); var ltesum = 0; if (band.toUpperCase() === "AUTO") { ltesum = "7FFFFFFFFFFFFFFF"; } else { for (var i = 0; i < bs.length; i++) { ltesum = ltesum + Math.pow(2, parseInt(bs[i]) - 1); } ltesum = ltesum.toString(16); console.log("LTEBand:" + ltesum); } $.ajax({ type: "GET", async: true, url: '/html/home.html', error: function (request, status, error) { alert("Token Error:" + request.status + "\n" + "message:" + request.responseText + "\n" + "error:" + error); }, success: function (data) { var datas = data.split('name="csrf_token" content="'); var token = datas[datas.length - 1].split('"')[0]; setTimeout(function () { $.ajax({ type: "POST", async: true, url: '/api/net/net-mode', headers: { '__RequestVerificationToken': token }, contentType: 'application/xml', data: '<request><NetworkMode>03</NetworkMode><NetworkBand>3FFFFFFF</NetworkBand><LTEBand>' + ltesum + '</LTEBand></request>', success: function (nd) { $("#band").html("<span style=\"color:green;\">OK</span>"); }, error: function (request, status, error) { alert("Net Mode Error:" + request.status + "\n" + "message:" + request.responseText + "\n" + "error:" + error); } }); }, 2000); } }); } function dhcpSelection() { if (arguments.length == 0) { var ipAddress = prompt("Please input end IP dhcp address. If you want to use default IP, write '192.168.8.200'.", "192.168.8.200"); } else var ipAddress = arguments[0]; if (!isIPV4Checked(ipAddress)) { var newIpAddess = "192.168.8.200"; } else newIpAddess = ipAddress; $.ajax({ type: "GET", async: true, url: '/html/home.html', error: function (request, status, error) { alert("Token Error:" + request.status + "\n" + "message:" + request.responseText + "\n" + "error:" + error); }, success: function (data) { var datas = data.split('name="csrf_token" content="'); var token = datas[datas.length - 1].split('"')[0]; setTimeout(function () { $.ajax({ type: "POST", async: true, url: '/api/dhcp/settings', headers: { '__RequestVerificationToken': token }, contentType: 'application/xml', data: '<request><DnsStatus>1</DnsStatus><DhcpStartIPAddress>192.168.8.100</DhcpStartIPAddress><DhcpIPAddress>192.168.8.1</DhcpIPAddress><accessipaddress></accessipaddress><homeurl>hi.link</homeurl><DhcpStatus>1</DhcpStatus><DhcpLanNetmask>255.255.255.0</DhcpLanNetmask><SecondaryDns>192.168.8.1</SecondaryDns><PrimaryDns>192.168.8.1</PrimaryDns><DhcpEndIPAddress>' + newIpAddess + '</DhcpEndIPAddress><DhcpLeaseTime>86400</DhcpLeaseTime></request>', success: function (nd) { $("#DhcpEndIPAddress").html("<span style=\"color:green;\">OK</span>"); }, error: function (request, status, error) { alert("DHCP Error:" + request.status + "\n" + "message:" + request.responseText + "\n" + "error:" + error); } }); }, 2000); } }); } function dhcpAllSelection() { var dhcpIPAddress = "192.168.8.1"; var dhcpLanNetmask = "255.255.255.0"; var dhcpStartIPAddress = "192.168.8.100"; var dhcpEndIPAddress = "192.168.8.200"; var primaryDns = "192.168.8.1"; var secondaryDns = "192.168.8.1"; if (arguments.length == 0) { var ipAddresses = prompt("Please input dhcp addresses using delimiter # (dhcpIPAddress#dhcpLanNetmask#dhcpStartIPAddress#dhcpEndIPAddress#primaryDns#secondaryDns). If you want to use default IPs, write 'AUTO'.", "AUTO"); } else var ipAddresses = arguments[0]; if (ipAddresses.toUpperCase() === "AUTO") { return; } else { var newIpAddresses = ipAddresses.split("#"); if (validateIPAddress(newIpAddresses[0]) && validateIPAddress(newIpAddresses[1]) && validateIPAddress(newIpAddresses[2]) && validateIPAddress(newIpAddresses[3]) && validateIPAddress(newIpAddresses[4]) && validateIPAddress(newIpAddresses[5])) { dhcpIPAddress = newIpAddresses[0]; dhcpLanNetmask = newIpAddresses[1]; dhcpStartIPAddress = newIpAddresses[2]; dhcpEndIPAddress = newIpAddresses[3]; primaryDns = newIpAddresses[4]; secondaryDns = newIpAddresses[5]; } } $.ajax({ type: "GET", async: true, url: '/html/home.html', error: function (request, status, error) { alert("Token Error:" + request.status + "\n" + "message:" + request.responseText + "\n" + "error:" + error); }, success: function (data) { var datas = data.split('name="csrf_token" content="'); var token = datas[datas.length - 1].split('"')[0]; setTimeout(function () { $.ajax({ type: "POST", async: true, url: '/api/dhcp/settings', headers: { '__RequestVerificationToken': token }, contentType: 'application/xml', data: '<request><DnsStatus>1</DnsStatus><DhcpStartIPAddress>' + dhcpStartIPAddress + '</DhcpStartIPAddress><DhcpIPAddress>' + dhcpIPAddress + '</DhcpIPAddress><accessipaddress></accessipaddress><homeurl>hi.link</homeurl><DhcpStatus>1</DhcpStatus><DhcpLanNetmask>' + dhcpLanNetmask + '</DhcpLanNetmask><SecondaryDns>' + secondaryDns + '</SecondaryDns><PrimaryDns>' + primaryDns + '</PrimaryDns><DhcpEndIPAddress>' + dhcpEndIPAddress + '</DhcpEndIPAddress><DhcpLeaseTime>86400</DhcpLeaseTime></request>', success: function (nd) { $("#DhcpEndIPAddress").html("<span style=\"color:green;\">OK</span>"); }, error: function (request, status, error) { alert("DHCP Error:" + request.status + "\n" + "message:" + request.responseText + "\n" + "error:" + error); } }); }, 2000); } }); } function validateIPAddress(ipAddress) { if (/^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/.test(ipAddress)) { return true; } return false; } function isIPV4Checked(entry) { if (validateIPAddress(entry)) { var blocks = entry.split("."); if (blocks.length === 4) { return blocks.every(function (block) { return isNumeric(block) && parseInt(block, 10) >= 0 && parseInt(block, 10) <= 255; }); } } return false; } function isNumeric(num) { return !isNaN(num) } window.setInterval(currentBand, 5000); function addButtons() { $("body").prepend("<style> .val{color:red;} .tab{border-width:2px;border: dashed red;border-collapse:collapse;border-spacing:0;} </style> <table style=\"width:100%;\" class=\"tab\"> <tr> <td class=\"tab\"> <div style=\"padding-left:20px;margin:0 auto;left:0;\"> <a style=\"font-size:1.4em;margin-right:30px;color:#04a;\" onclick=\"ltebandselection()\">BANDS</a> </div> </td> <td class=\"tab\"> <div style=\"display:inline;\"> RSRP:<span class=\"val\" id=\"rsrp\">0</span> RSSI:<span class=\"val\" id=\"rssi\">0</span> SINR:<span class=\"val\" id=\"sinr\">0</span> ENB ID:<a id=\"lteitaly\" target=\"lteitaly\" href\"#\"><span class=\"val\" style=\"font-weight:bold;text-decoration:underline;\" id=\"enbid\">0</span></a> CELL ID:<span class=\"val\" id=\"cell_id\">0</span> BAND:<span class=\"val\" id=\"band\">0</span>(<span class=\"val\" id=\"dlbandwidth\">0</span>/<span class=\"val\" id=\"ulbandwidth\">0</span>) EARFCN:<span class=\"val\" id=\"earfcn\">0</span> SET:<span class=\"val\" id=\"allowed\">0</span> </div> </td> </tr> <tr> <td class=\"tab\"> <div style=\"padding-left:20px;margin:0 auto;left:0;\"> <a style=\"font-size:1.4em;margin-right:30px;color:#04a;\" onclick=\"dhcpSelection()\">1. DHCP (END)</a> <br> <a style=\"font-size:1.4em;margin-right:30px;color:#04a;\" onclick=\"dhcpAllSelection()\">2. DHCP (ALL)</a> </div> </td> <td class=\"tab\"> <div style=\"display:inline;\"> DhcpStatus:<span class=\"val\" id=\"DhcpStatus\">0</span> DhcpIPAddress:<span class=\"val\" id=\"DhcpIPAddress\">0</span> DhcpLanNetmask:<span class=\"val\" id=\"DhcpLanNetmask\">0</span> DhcpStartIPAddress:<span class=\"val\" id=\"DhcpStartIPAddress\">0</span> DhcpEndIPAddress:<span class=\"val\" id=\"DhcpEndIPAddress\">0</span> <br> DnsStatus:<span class=\"val\" id=\"DnsStatus\">0</span> PrimaryDns:<span class=\"val\" id=\"PrimaryDns\">0</span> SecondaryDns:<span class=\"val\" id=\"SecondaryDns\">0</span> DhcpLeaseTime:<span class=\"val\" id=\"DhcpLeaseTime\">0</span> </td> </tr> </table>"); }