Andrew Boyson / web

Dependents:   oldheating gps motorhome heating

net/web-net6-script.inc

Committer:
andrewboyson
Date:
2019-04-27
Revision:
103:91194cc19bbb
Parent:
net/http-net6-script.inc@ 96:eb2eb75bad0f

File content as of revision 103:91194cc19bbb:

"//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();"