Andrew Boyson / web

Dependents:   oldheating gps motorhome heating

Revision:
103:91194cc19bbb
Parent:
96:eb2eb75bad0f
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/net/web-net6-script.inc	Sat Apr 27 09:25:28 2019 +0000
@@ -0,0 +1,111 @@
+"//Net6 script\n"
+"'use strict';\n"
+"\n"
+"let arp             = '';\n"
+"let dns             = '';\n"
+"let hopLimit        = '';\n"
+"let managed         = false;\n"
+"let other           = false;\n"
+"let routerMac       = '';\n"
+"let prefixLength    = '';\n"
+"let prefixL         = false;\n"
+"let prefixA         = false;\n"
+"let prefixLimit     = '';\n"
+"let prefixPreferred = '';\n"
+"let prefix          = '';\n"
+"let dnsLife         = '';\n"
+"let dnsIp           = '';\n"
+"let ndpLease        = '';\n"
+"let ndpElapsed      = '';\n"
+"let slaac           = '';\n"
+"let mtu             = '';\n"
+"\n"
+"function parseArpLine(line)\n"
+"{\n"
+"    if (line.length == 0) return;\n"
+"    let minutes  = parseInt(line.substr(0, 8), 16) / 1000 / 60;\n"
+"    arp += Math.floor(minutes).toString().padStart(4, ' ');\n"
+"    arp += ' ';\n"
+"    arp += Net.makeIp6(line.substr(8, 32)).padEnd(40, ' ');\n"
+"    arp += ' ';\n"
+"    arp += Net.makeMac(line.substr(40, 12));\n"
+"    arp += '\\r\\n';\n"
+"}\n"
+"function parseDnsLine(line)\n"
+"{\n"
+"    if (line.length == 0) return;\n"
+"    let minutes  = parseInt(line.substr(0, 8), 16) / 1000 / 60;\n"
+"    dns += Math.floor(minutes).toString().padStart(4, ' ');\n"
+"    dns += ' ';\n"
+"    dns += Net.makeIp6(line.substr(8, 32)).padEnd(40, ' ');\n"
+"    dns += ' ';\n"
+"    dns += line.substr(40, 1);\n"
+"    dns += ' ';\n"
+"    dns += line.substr(41);\n"
+"    dns += '\\r\\n';\n"
+"}\n"
+"function parseArpLines(text)\n"
+"{\n"
+"    arp = '';\n"
+"    text.split('\\n').forEach(parseArpLine);\n"
+"}\n"
+"function parseDnsLines(text)\n"
+"{\n"
+"    dns = '';\n"
+"    text.split('\\n').forEach(parseDnsLine);\n"
+"}\n"
+"function parseGenLines(text)\n"
+"{\n"
+"    let lines = text.split('\\n');\n"
+"    \n"
+"    hopLimit        =     parseInt(lines[ 1], 16);\n"
+"    managed         = Net.hexToBit(lines[ 0],  0);\n"
+"    other           = Net.hexToBit(lines[ 0],  1);\n"
+"    routerMac       = Net.makeMac (lines[ 2], 16);\n"
+"    prefixLength    =     parseInt(lines[ 3], 16);\n"
+"    prefixL         = Net.hexToBit(lines[ 0],  2);\n"
+"    prefixA         = Net.hexToBit(lines[ 0],  3);\n"
+"    prefixLimit     =     parseInt(lines[ 4], 16);\n"
+"    prefixPreferred =     parseInt(lines[ 5], 16);\n"
+"    prefix          = Net.makeIp6 (lines[ 6]    );\n"
+"    dnsLife         =     parseInt(lines[ 7], 16);\n"
+"    dnsIp           = Net.makeIp6 (lines[ 8]    );\n"
+"    ndpLease        =     parseInt(lines[ 9], 16);\n"
+"    ndpElapsed      =     parseInt(lines[10], 16);\n"
+"    slaac           = Net.makeIp6 (lines[11]    );\n"
+"    mtu             =     parseInt(lines[12], 16);\n"
+"}\n"
+"function parse()\n"
+"{\n"
+"    let topics = Ajax.response.split('\\f');\n"
+"    parseGenLines(topics[0]);\n"
+"    parseArpLines(topics[1]);\n"
+"    parseDnsLines(topics[2]);\n"
+"}\n"
+"function display()\n"
+"{\n"
+"    let elem;\n"
+"    \n"
+"    elem = Ajax.getElementOrNull('ajax-arp'             ); if (elem) elem.textContent = arp;\n"
+"    elem = Ajax.getElementOrNull('ajax-dns'             ); if (elem) elem.textContent = dns;\n"
+"    elem = Ajax.getElementOrNull('ajax-hop-limit'       ); if (elem) elem.textContent = hopLimit;\n"
+"    elem = Ajax.getElementOrNull('ajax-managed'         ); if (elem) elem.setAttribute('dir', managed ? 'rtl' : 'ltr');\n"
+"    elem = Ajax.getElementOrNull('ajax-other'           ); if (elem) elem.setAttribute('dir', other   ? 'rtl' : 'ltr');\n"
+"    elem = Ajax.getElementOrNull('ajax-router-mac'      ); if (elem) elem.textContent = routerMac;\n"
+"    elem = Ajax.getElementOrNull('ajax-prefix-length'   ); if (elem) elem.textContent = prefixLength;\n"
+"    elem = Ajax.getElementOrNull('ajax-prefix-l'        ); if (elem) elem.setAttribute('dir', prefixL ? 'rtl' : 'ltr');\n"
+"    elem = Ajax.getElementOrNull('ajax-prefix-a'        ); if (elem) elem.setAttribute('dir', prefixA ? 'rtl' : 'ltr');\n"
+"    elem = Ajax.getElementOrNull('ajax-prefix-limit'    ); if (elem) elem.textContent = prefixLimit;\n"
+"    elem = Ajax.getElementOrNull('ajax-prefix-preferred'); if (elem) elem.textContent = prefixPreferred;\n"
+"    elem = Ajax.getElementOrNull('ajax-prefix'          ); if (elem) elem.textContent = prefix;\n"
+"    elem = Ajax.getElementOrNull('ajax-dns-life'        ); if (elem) elem.textContent = dnsLife;\n"
+"    elem = Ajax.getElementOrNull('ajax-dns-ip'          ); if (elem) elem.textContent = dnsIp;\n"
+"    elem = Ajax.getElementOrNull('ajax-ndp-lease'       ); if (elem) elem.textContent = ndpLease;\n"
+"    elem = Ajax.getElementOrNull('ajax-ndp-elapsed'     ); if (elem) elem.textContent = ndpElapsed;\n"
+"    elem = Ajax.getElementOrNull('ajax-slaac'           ); if (elem) elem.textContent = slaac;\n"
+"    elem = Ajax.getElementOrNull('ajax-mtu'             ); if (elem) elem.textContent = mtu;\n"
+"}\n"
+"\n"
+"Ajax.server     = '/net6-ajax';\n"
+"Ajax.onResponse = function() { parse(); display(); };\n"
+"Ajax.init();"
\ No newline at end of file