Andrew Boyson / web

Dependents:   oldheating gps motorhome heating

base/net/web-net6-script.inc

Committer:
andrewboyson
Date:
2020-12-23
Revision:
142:b472ba95b018
Parent:
136:be1d42268b5d
Child:
144:7106252b7abf

File content as of revision 142:b472ba95b018:

"//Net6 script\n"
"'use strict';\n"
"\n"
"let arp             = '';\n"
"let dns             = '';\n"
"\n"
"let hopLimit        = '';\n"
"let mtu             = '';\n"
"let managed         = false;\n"
"let other           = false;\n"
"let routerMac       = '';\n"
"let dnsLife         = '';\n"
"let dnsIp           = '';\n"
"let ndpLease        = '';\n"
"let ndpElapsed      = '';\n"
"let slaac           = '';\n"
"\n"
"let uniquePrefixLength    = '';\n"
"let uniquePrefixL         = false;\n"
"let uniquePrefixA         = false;\n"
"let uniquePrefixLimit     = '';\n"
"let uniquePrefixPreferred = '';\n"
"let uniquePrefix          = '';\n"
"let globalPrefixLength    = '';\n"
"let globalPrefixL         = false;\n"
"let globalPrefixA         = false;\n"
"let globalPrefixLimit     = '';\n"
"let globalPrefixPreferred = '';\n"
"let globalPrefix          = '';\n"
"\n"
"function parseArpLine(line)\n"
"{\n"
"    if (line.length == 0) return;\n"
"    let fields = line.split('\\t');\n"
"    \n"
"    arp += parseInt(fields[0], 16).toString().padStart(2, ' ');\n"
"    \n"
"    let minutes  = parseInt(fields[1], 16) / 1000 / 60;\n"
"    arp += Math.floor(minutes).toString().padStart(4, ' ');\n"
"    arp += ' ';\n"
"    \n"
"    arp += Net.makeIp6(fields[2]).padEnd(40, ' ');\n"
"    arp += ' ';\n"
"    \n"
"    arp += Net.makeMac(fields[3]);\n"
"    arp += '\\r\\n';\n"
"}\n"
"function parseDnsLine(line)\n"
"{\n"
"    if (line.length == 0) return;\n"
"    let fields = line.split('\\t');\n"
"    \n"
"    dns += parseInt(fields[0], 16).toString().padStart(2, ' ');\n"
"    let minutes  = parseInt(fields[1], 16) / 1000 / 60;\n"
"    dns += Math.floor(minutes).toString().padStart(4, ' ');\n"
"    dns += ' ';\n"
"    dns += Net.makeIp6(fields[2]).padEnd(40, ' ');\n"
"    dns += ' ';\n"
"    dns += fields[3];\n"
"    dns += ' ';\n"
"    dns += fields[4];\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"
"    slaac                 = Net.makeIp6 (lines[ 0]    );\n"
"    \n"
"    hopLimit              =     parseInt(lines[ 1], 16);\n"
"    mtu                   =     parseInt(lines[ 2], 16);\n"
"    managed               = Net.hexToBit(lines[ 3],  0);\n"
"    other                 = Net.hexToBit(lines[ 3],  1);\n"
"    routerMac             = Net.makeMac (lines[ 4], 16);\n"
"    ndpLease              =     parseInt(lines[ 5], 16);\n"
"    ndpElapsed            =     parseInt(lines[ 6], 16);\n"
"    \n"
"    dnsIp                 = Net.makeIp6 (lines[ 7]    );\n"
"    dnsLife               =     parseInt(lines[ 8], 16);\n"
"    \n"
"    uniquePrefixL         = Net.hexToBit(lines[ 9],  0);\n"
"    uniquePrefixA         = Net.hexToBit(lines[ 9],  1);\n"
"    uniquePrefixLength    =     parseInt(lines[10], 16);\n"
"    uniquePrefix          = Net.makeIp6 (lines[11]    );\n"
"    uniquePrefixLimit     =     parseInt(lines[12], 16);\n"
"    uniquePrefixPreferred =     parseInt(lines[13], 16);\n"
"    \n"
"    globalPrefixL         = Net.hexToBit(lines[14],  0);\n"
"    globalPrefixA         = Net.hexToBit(lines[14],  1);\n"
"    globalPrefixLength    =     parseInt(lines[15], 16);\n"
"    globalPrefix          = Net.makeIp6 (lines[16]    );\n"
"    globalPrefixLimit     =     parseInt(lines[17], 16);\n"
"    globalPrefixPreferred =     parseInt(lines[18], 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-slaac'           ); if (elem) elem.textContent = slaac;\n"
"    elem = Ajax.getElementOrNull('ajax-hop-limit'       ); if (elem) elem.textContent = hopLimit;\n"
"    elem = Ajax.getElementOrNull('ajax-mtu'             ); if (elem) elem.textContent = mtu;\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-ndp-lease'       ); if (elem) elem.textContent = ndpLease;\n"
"    elem = Ajax.getElementOrNull('ajax-ndp-elapsed'     ); if (elem) elem.textContent = ndpElapsed;\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"
"    \n"
"    elem = Ajax.getElementOrNull('ajax-unique-prefix-l'        ); if (elem) elem.setAttribute('dir', uniquePrefixL ? 'rtl' : 'ltr');\n"
"    elem = Ajax.getElementOrNull('ajax-unique-prefix-a'        ); if (elem) elem.setAttribute('dir', uniquePrefixA ? 'rtl' : 'ltr');\n"
"    elem = Ajax.getElementOrNull('ajax-unique-prefix-length'   ); if (elem) elem.textContent = uniquePrefixLength;\n"
"    elem = Ajax.getElementOrNull('ajax-unique-prefix'          ); if (elem) elem.textContent = uniquePrefix;\n"
"    elem = Ajax.getElementOrNull('ajax-unique-prefix-limit'    ); if (elem) elem.textContent = uniquePrefixLimit;\n"
"    elem = Ajax.getElementOrNull('ajax-unique-prefix-preferred'); if (elem) elem.textContent = uniquePrefixPreferred;\n"
"    \n"
"    elem = Ajax.getElementOrNull('ajax-global-prefix-l'        ); if (elem) elem.setAttribute('dir', globalPrefixL ? 'rtl' : 'ltr');\n"
"    elem = Ajax.getElementOrNull('ajax-global-prefix-a'        ); if (elem) elem.setAttribute('dir', globalPrefixA ? 'rtl' : 'ltr');\n"
"    elem = Ajax.getElementOrNull('ajax-global-prefix-length'   ); if (elem) elem.textContent = globalPrefixLength;\n"
"    elem = Ajax.getElementOrNull('ajax-global-prefix'          ); if (elem) elem.textContent = globalPrefix;\n"
"    elem = Ajax.getElementOrNull('ajax-global-prefix-limit'    ); if (elem) elem.textContent = globalPrefixLimit;\n"
"    elem = Ajax.getElementOrNull('ajax-global-prefix-preferred'); if (elem) elem.textContent = globalPrefixPreferred;\n"
"}\n"
"\n"
"Ajax.server     = '/net6-ajax';\n"
"Ajax.onResponse = function() { parse(); display(); };\n"
"Ajax.init();"