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-net6-script.js	Tue Apr 30 12:45:08 2019 +0000
@@ -0,0 +1,111 @@
+//Net6 script
+'use strict';
+
+let arp             = '';
+let dns             = '';
+let hopLimit        = '';
+let managed         = false;
+let other           = false;
+let routerMac       = '';
+let prefixLength    = '';
+let prefixL         = false;
+let prefixA         = false;
+let prefixLimit     = '';
+let prefixPreferred = '';
+let prefix          = '';
+let dnsLife         = '';
+let dnsIp           = '';
+let ndpLease        = '';
+let ndpElapsed      = '';
+let slaac           = '';
+let mtu             = '';
+
+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.makeIp6(line.substr(8, 32)).padEnd(40, ' ');
+    arp += ' ';
+    arp += Net.makeMac(line.substr(40, 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.makeIp6(line.substr(8, 32)).padEnd(40, ' ');
+    dns += ' ';
+    dns += line.substr(40, 1);
+    dns += ' ';
+    dns += line.substr(41);
+    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');
+    
+    hopLimit        =     parseInt(lines[ 1], 16);
+    managed         = Net.hexToBit(lines[ 0],  0);
+    other           = Net.hexToBit(lines[ 0],  1);
+    routerMac       = Net.makeMac (lines[ 2], 16);
+    prefixLength    =     parseInt(lines[ 3], 16);
+    prefixL         = Net.hexToBit(lines[ 0],  2);
+    prefixA         = Net.hexToBit(lines[ 0],  3);
+    prefixLimit     =     parseInt(lines[ 4], 16);
+    prefixPreferred =     parseInt(lines[ 5], 16);
+    prefix          = Net.makeIp6 (lines[ 6]    );
+    dnsLife         =     parseInt(lines[ 7], 16);
+    dnsIp           = Net.makeIp6 (lines[ 8]    );
+    ndpLease        =     parseInt(lines[ 9], 16);
+    ndpElapsed      =     parseInt(lines[10], 16);
+    slaac           = Net.makeIp6 (lines[11]    );
+    mtu             =     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-arp'             ); if (elem) elem.textContent = arp;
+    elem = Ajax.getElementOrNull('ajax-dns'             ); if (elem) elem.textContent = dns;
+    elem = Ajax.getElementOrNull('ajax-hop-limit'       ); if (elem) elem.textContent = hopLimit;
+    elem = Ajax.getElementOrNull('ajax-managed'         ); if (elem) elem.setAttribute('dir', managed ? 'rtl' : 'ltr');
+    elem = Ajax.getElementOrNull('ajax-other'           ); if (elem) elem.setAttribute('dir', other   ? 'rtl' : 'ltr');
+    elem = Ajax.getElementOrNull('ajax-router-mac'      ); if (elem) elem.textContent = routerMac;
+    elem = Ajax.getElementOrNull('ajax-prefix-length'   ); if (elem) elem.textContent = prefixLength;
+    elem = Ajax.getElementOrNull('ajax-prefix-l'        ); if (elem) elem.setAttribute('dir', prefixL ? 'rtl' : 'ltr');
+    elem = Ajax.getElementOrNull('ajax-prefix-a'        ); if (elem) elem.setAttribute('dir', prefixA ? 'rtl' : 'ltr');
+    elem = Ajax.getElementOrNull('ajax-prefix-limit'    ); if (elem) elem.textContent = prefixLimit;
+    elem = Ajax.getElementOrNull('ajax-prefix-preferred'); if (elem) elem.textContent = prefixPreferred;
+    elem = Ajax.getElementOrNull('ajax-prefix'          ); if (elem) elem.textContent = prefix;
+    elem = Ajax.getElementOrNull('ajax-dns-life'        ); if (elem) elem.textContent = dnsLife;
+    elem = Ajax.getElementOrNull('ajax-dns-ip'          ); if (elem) elem.textContent = dnsIp;
+    elem = Ajax.getElementOrNull('ajax-ndp-lease'       ); if (elem) elem.textContent = ndpLease;
+    elem = Ajax.getElementOrNull('ajax-ndp-elapsed'     ); if (elem) elem.textContent = ndpElapsed;
+    elem = Ajax.getElementOrNull('ajax-slaac'           ); if (elem) elem.textContent = slaac;
+    elem = Ajax.getElementOrNull('ajax-mtu'             ); if (elem) elem.textContent = mtu;
+}
+
+Ajax.server     = '/net6-ajax';
+Ajax.onResponse = function() { parse(); display(); };
+Ajax.init();
\ No newline at end of file