Andrew Boyson / web

Dependents:   oldheating gps motorhome heating

net/http-net6-script.inc

Committer:
andrewboyson
Date:
2019-04-11
Revision:
89:615fb951df69
Parent:
88:2857259fc2b4
Child:
96:eb2eb75bad0f

File content as of revision 89:615fb951df69:

"'use strict';\n"
"\n"
"var response        = '';\n"
"var headers         = '';\n"
"var arp             = '';\n"
"var dns             = '';\n"
"var hopLimit        = '';\n"
"var managed         = false;\n"
"var other           = false;\n"
"var routerMac       = '';\n"
"var prefixLength    = '';\n"
"var prefixL         = false;\n"
"var prefixA         = false;\n"
"var prefixLimit     = '';\n"
"var prefixPreferred = '';\n"
"var prefix          = '';\n"
"var dnsLife         = '';\n"
"var dnsIp           = '';\n"
"var ndpLease        = '';\n"
"var ndpElapsed      = '';\n"
"var slaac           = '';\n"
"var mtu             = '';\n"
"\n"
"function hexToBit(text, iBit)\n"
"{\n"
"   var value = parseInt(text, 16);\n"
"   value >>= iBit;\n"
"   return value & 1;\n"
"}\n"
"function makeIpWord(text)\n"
"{\n"
"    var word = parseInt(text, 16);\n"
"    if (word === 0) return '';\n"
"    return word.toString(16);\n"
"}\n"
"function makeIp(text)\n"
"{\n"
"    text = text.toLowerCase();\n"
"    var result = '';\n"
"    result += makeIpWord(text.substr( 0, 4));\n"
"    result += ':';\n"
"    result += makeIpWord(text.substr( 4, 4));\n"
"    result += ':';\n"
"    result += makeIpWord(text.substr( 8, 4));\n"
"    result += ':';\n"
"    result += makeIpWord(text.substr(12, 4));\n"
"    result += ':';\n"
"    result += makeIpWord(text.substr(16, 4));\n"
"    result += ':';\n"
"    result += makeIpWord(text.substr(20, 4));\n"
"    result += ':';\n"
"    result += makeIpWord(text.substr(24, 4));\n"
"    result += ':';\n"
"    result += makeIpWord(text.substr(28, 4));\n"
"    return result;\n"
"}\n"
"function makeMac(text)\n"
"{\n"
"    text = text.toLowerCase();\n"
"    var result = '';\n"
"    result += text.substr( 0, 2);\n"
"    result += ':';\n"
"    result += text.substr( 2, 2);\n"
"    result += ':';\n"
"    result += text.substr( 4, 2);\n"
"    result += ':';\n"
"    result += text.substr( 6, 2);\n"
"    result += ':';\n"
"    result += text.substr( 8, 2);\n"
"    result += ':';\n"
"    result += text.substr(10, 2);\n"
"    return result;\n"
"}\n"
"function parseArpLine(line)\n"
"{\n"
"    if (line.length == 0) return;\n"
"    var minutes  = parseInt(line.substr(0, 8), 16) / 1000 / 60;\n"
"    arp += Math.floor(minutes).toString().padStart(4, ' ');\n"
"    arp += ' ';\n"
"    arp += makeIp(line.substr(8, 32)).padEnd(40, ' ');\n"
"    arp += ' ';\n"
"    arp += makeMac(line.substr(40, 12));\n"
"    arp += '\\r\\n';\n"
"}\n"
"function parseDnsLine(line)\n"
"{\n"
"    if (line.length == 0) return;\n"
"    var minutes  = parseInt(line.substr(0, 8), 16) / 1000 / 60;\n"
"    dns += Math.floor(minutes).toString().padStart(4, ' ');\n"
"    dns += ' ';\n"
"    dns += makeIp(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"
"    var lines = text.split('\\n');\n"
"    \n"
"    hopLimit        = parseInt(lines[ 1], 16);\n"
"    managed         = hexToBit(lines[ 0],  0);\n"
"    other           = hexToBit(lines[ 0],  1);\n"
"    routerMac       = makeMac (lines[ 2], 16);\n"
"    prefixLength    = parseInt(lines[ 3], 16);\n"
"    prefixL         = hexToBit(lines[ 0],  2);\n"
"    prefixA         = hexToBit(lines[ 0],  3);\n"
"    prefixLimit     = parseInt(lines[ 4], 16);\n"
"    prefixPreferred = parseInt(lines[ 5], 16);\n"
"    prefix          = makeIp  (lines[ 6]    );\n"
"    dnsLife         = parseInt(lines[ 7], 16);\n"
"    dnsIp           = makeIp  (lines[ 8]    );\n"
"    ndpLease        = parseInt(lines[ 9], 16);\n"
"    ndpElapsed      = parseInt(lines[10], 16);\n"
"    slaac           = makeIp  (lines[11]    );\n"
"    mtu             = parseInt(lines[12], 16);\n"
"}\n"
"function parseAjax()\n"
"{\n"
"    var topics = response.split('\\f');\n"
"    parseGenLines(topics[0]);\n"
"    parseArpLines(topics[1]);\n"
"    parseDnsLines(topics[2]);\n"
"}\n"
"function displayGeneral()\n"
"{\n"
"    var elem;\n"
"    \n"
"    elem = document.getElementById('ajax-response'        ); if (elem) elem.textContent = response;\n"
"    elem = document.getElementById('ajax-headers'         ); if (elem) elem.textContent = headers;\n"
"    elem = document.getElementById('ajax-arp'             ); if (elem) elem.textContent = arp;\n"
"    elem = document.getElementById('ajax-dns'             ); if (elem) elem.textContent = dns;\n"
"    elem = document.getElementById('ajax-hop-limit'       ); if (elem) elem.textContent = hopLimit;\n"
"    elem = document.getElementById('ajax-managed'         ); if (elem) elem.setAttribute('dir', managed ? 'rtl' : 'ltr');\n"
"    elem = document.getElementById('ajax-other'           ); if (elem) elem.setAttribute('dir', other   ? 'rtl' : 'ltr');\n"
"    elem = document.getElementById('ajax-router-mac'      ); if (elem) elem.textContent = routerMac;\n"
"    elem = document.getElementById('ajax-prefix-length'   ); if (elem) elem.textContent = prefixLength;\n"
"    elem = document.getElementById('ajax-prefix-l'        ); if (elem) elem.setAttribute('dir', prefixL ? 'rtl' : 'ltr');\n"
"    elem = document.getElementById('ajax-prefix-a'        ); if (elem) elem.setAttribute('dir', prefixA ? 'rtl' : 'ltr');\n"
"    elem = document.getElementById('ajax-prefix-limit'    ); if (elem) elem.textContent = prefixLimit;\n"
"    elem = document.getElementById('ajax-prefix-preferred'); if (elem) elem.textContent = prefixPreferred;\n"
"    elem = document.getElementById('ajax-prefix'          ); if (elem) elem.textContent = prefix;\n"
"    elem = document.getElementById('ajax-dns-life'        ); if (elem) elem.textContent = dnsLife;\n"
"    elem = document.getElementById('ajax-dns-ip'          ); if (elem) elem.textContent = dnsIp;\n"
"    elem = document.getElementById('ajax-ndp-lease'       ); if (elem) elem.textContent = ndpLease;\n"
"    elem = document.getElementById('ajax-ndp-elapsed'     ); if (elem) elem.textContent = ndpElapsed;\n"
"    elem = document.getElementById('ajax-slaac'           ); if (elem) elem.textContent = slaac;\n"
"    elem = document.getElementById('ajax-mtu'             ); if (elem) elem.textContent = mtu;\n"
"}\n"
"\n"
"var ajax;\n"
"function AjaxRequest(request) //Used by this script and from HTML page\n"
"{\n"
"   ajax=new XMLHttpRequest();\n"
"   ajax.onreadystatechange=handleAjaxResponse;\n"
"   if (request) ajax.open('GET', '/net6-ajax' + '?' + request, true);\n"
"   else         ajax.open('GET', '/net6-ajax'                , true);\n"
"   ajax.send();\n"
"}\n"
"function requestAjax() //Used in this script\n"
"{\n"
"   AjaxRequest('');\n"
"}\n"
"\n"
"function handleAjaxResponse()\n"
"{\n"
"   if (ajax.readyState==4 && ajax.status==200)\n"
"   {\n"
"       response = ajax.responseText;\n"
"       headers  = ajax.getAllResponseHeaders();\n"
"       parseAjax();\n"
"       displayGeneral();\n"
"   }\n"
"}\n"
"\n"
"function init()\n"
"{\n"
"    setInterval(requestAjax, 10000);\n"
"    requestAjax();\n"
"}\n"
"if (document.readyState === 'loading') document.addEventListener('DOMContentLoaded', init ); // Loading hasn't finished yet\n"
"else                                                                                 init(); //`DOMContentLoaded` has already fired\n"
""