Andrew Boyson / web

Dependents:   oldheating gps motorhome heating

Revision:
110:8ab752842d25
Parent:
103:91194cc19bbb
Child:
136:be1d42268b5d
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/base/net/web-net4-script.js	Tue Apr 30 12:45:08 2019 +0000
@@ -0,0 +1,101 @@
+//Net4 script
+'use strict';
+
+let localIp     = '';
+let domainName  = '';
+let hostName    = '';
+let ntpIp       = '';
+let dnsIp       = '';
+let dhcpIp      = '';
+let routerIp    = '';
+let subnetMask  = '';
+let broadcastIp = '';
+let leaseTime   = '';
+let renewalT1   = '';
+let renewalt2   = '';
+let elapsed     = '';
+let arp         = '';
+let dns         = '';
+
+function parseArpLine(line)
+{
+    if (line.length == 0) return;
+    let minutes  = parseInt(line.substr(0, 8), 16) / 1000 / 60;
+    arp += Math.floor(minutes).toString().padStart(4, ' ');
+    arp += ' ';
+    arp += Net.makeIp4(line.substr(8, 8)).padEnd(15, ' ');
+    arp += ' ';
+    arp += Net.makeMac(line.substr(16, 12));
+    arp += '\r\n';
+}
+function parseDnsLine(line)
+{
+    if (line.length == 0) return;
+    let minutes  = parseInt(line.substr(0, 8), 16) / 1000 / 60;
+    dns += Math.floor(minutes).toString().padStart(4, ' ');
+    dns += ' ';
+    dns += Net.makeIp4(line.substr(8, 8)).padEnd(15, ' ');
+    dns += ' ';
+    dns += line.substr(16, 1);
+    dns += ' ';
+    dns += line.substr(17);
+    dns += '\r\n';
+}
+function parseArpLines(text)
+{
+    arp = '';
+    text.split('\n').forEach(parseArpLine);
+}
+function parseDnsLines(text)
+{
+    dns = '';
+    text.split('\n').forEach(parseDnsLine);
+}
+function parseGenLines(text)
+{
+    let lines = text.split('\n');
+    localIp     = Net.makeIp4(lines[ 0])    ;
+    domainName  =             lines[ 1]     ;
+    hostName    =             lines[ 2]     ;
+    ntpIp       = Net.makeIp4(lines[ 3])    ;
+    dnsIp       = Net.makeIp4(lines[ 4])    ;
+    dhcpIp      = Net.makeIp4(lines[ 5])    ;
+    routerIp    = Net.makeIp4(lines[ 6])    ;
+    subnetMask  = Net.makeIp4(lines[ 7])    ;
+    broadcastIp = Net.makeIp4(lines[ 8])    ;
+    leaseTime   =    parseInt(lines[ 9], 16);
+    renewalT1   =    parseInt(lines[10], 16);
+    renewalt2   =    parseInt(lines[11], 16);
+    elapsed     =    parseInt(lines[12], 16);
+}
+function parse()
+{
+    let topics = Ajax.response.split('\f');
+    parseGenLines(topics[0]);
+    parseArpLines(topics[1]);
+    parseDnsLines(topics[2]);
+}
+function display()
+{
+    let elem;
+
+    elem = Ajax.getElementOrNull('ajax-local-ip'    ); if (elem) elem.textContent = localIp;
+    elem = Ajax.getElementOrNull('ajax-domain-name' ); if (elem) elem.textContent = domainName;
+    elem = Ajax.getElementOrNull('ajax-host-name'   ); if (elem) elem.textContent = hostName;
+    elem = Ajax.getElementOrNull('ajax-ntp-ip'      ); if (elem) elem.textContent = ntpIp;
+    elem = Ajax.getElementOrNull('ajax-dns-ip'      ); if (elem) elem.textContent = dnsIp;
+    elem = Ajax.getElementOrNull('ajax-dhcp-ip'     ); if (elem) elem.textContent = dhcpIp;
+    elem = Ajax.getElementOrNull('ajax-router-ip'   ); if (elem) elem.textContent = routerIp;
+    elem = Ajax.getElementOrNull('ajax-subnet-mask' ); if (elem) elem.textContent = subnetMask;
+    elem = Ajax.getElementOrNull('ajax-broadcast-ip'); if (elem) elem.textContent = broadcastIp;
+    elem = Ajax.getElementOrNull('ajax-lease-time'  ); if (elem) elem.textContent = leaseTime;
+    elem = Ajax.getElementOrNull('ajax-renewal-t1'  ); if (elem) elem.textContent = renewalT1;
+    elem = Ajax.getElementOrNull('ajax-renewal-t2'  ); if (elem) elem.textContent = renewalt2;
+    elem = Ajax.getElementOrNull('ajax-elapsed'     ); if (elem) elem.textContent = elapsed;
+    elem = Ajax.getElementOrNull('ajax-arp'         ); if (elem) elem.textContent = arp;
+    elem = Ajax.getElementOrNull('ajax-dns'         ); if (elem) elem.textContent = dns;
+}
+
+Ajax.server     = '/net4-ajax';
+Ajax.onResponse = function() { parse(); display(); };
+Ajax.init();