Common stuff for all my devices' web server pages: css, login, log, ipv4, ipv6, firmware update, clock, reset info etc.

Dependents:   oldheating gps motorhome heating

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers web-net6-script.inc Source File

web-net6-script.inc

00001 "//Net6 script\n"
00002 "'use strict';\n"
00003 "\n"
00004 "let arp             = '';\n"
00005 "\n"
00006 "let hopLimit        = '';\n"
00007 "let mtu             = '';\n"
00008 "let managed         = false;\n"
00009 "let other           = false;\n"
00010 "let routerMac       = '';\n"
00011 "let dnsLife         = '';\n"
00012 "let dnsIp           = '';\n"
00013 "let ndpLease        = '';\n"
00014 "let ndpElapsed      = '';\n"
00015 "let slaac           = '';\n"
00016 "\n"
00017 "let uniquePrefixLength    = '';\n"
00018 "let uniquePrefixL         = false;\n"
00019 "let uniquePrefixA         = false;\n"
00020 "let uniquePrefixLimit     = '';\n"
00021 "let uniquePrefixPreferred = '';\n"
00022 "let uniquePrefix          = '';\n"
00023 "let globalPrefixLength    = '';\n"
00024 "let globalPrefixL         = false;\n"
00025 "let globalPrefixA         = false;\n"
00026 "let globalPrefixLimit     = '';\n"
00027 "let globalPrefixPreferred = '';\n"
00028 "let globalPrefix          = '';\n"
00029 "\n"
00030 "function parseArpLine(line)\n"
00031 "{\n"
00032 "    if (line.length == 0) return;\n"
00033 "    let fields = line.split('\\t');\n"
00034 "    \n"
00035 "    arp += parseInt(fields[0], 16).toString().padStart(2, ' ');\n"
00036 "    \n"
00037 "    let minutes  = parseInt(fields[1], 16) / 1000 / 60;\n"
00038 "    arp += Math.floor(minutes).toString().padStart(4, ' ');\n"
00039 "    \n"
00040 "    arp += ' ';\n"
00041 "    arp += Net.makeIp6(fields[2]).padEnd(40, ' ');\n"
00042 "    \n"
00043 "    arp += ' ';\n"
00044 "    let mac = Net.makeMac(fields[3]);\n"
00045 "    arp += mac;\n"
00046 "    \n"
00047 "    let vendor = Net.getVendorFromLocalStorage(mac);\n"
00048 "    if (vendor)\n"
00049 "    {\n"
00050 "        arp += ' ';\n"
00051 "        arp += vendor;\n"
00052 "    }\n"
00053 "    else\n"
00054 "    {\n"
00055 "        Net.addVendorToLocalStorage(mac);\n"
00056 "    }\n"
00057 "    \n"
00058 "    arp += '\\r\\n';\n"
00059 "}\n"
00060 "function parseArpLines(text)\n"
00061 "{\n"
00062 "    arp = '';\n"
00063 "    text.split('\\n').forEach(parseArpLine);\n"
00064 "}\n"
00065 "function parseGenLines(text)\n"
00066 "{\n"
00067 "    let lines = text.split('\\n');\n"
00068 "    \n"
00069 "    slaac                 = Net.makeIp6 (lines[ 0]    );\n"
00070 "    \n"
00071 "    hopLimit              =     parseInt(lines[ 1], 16);\n"
00072 "    mtu                   =     parseInt(lines[ 2], 16);\n"
00073 "    managed               = Net.hexToBit(lines[ 3],  0);\n"
00074 "    other                 = Net.hexToBit(lines[ 3],  1);\n"
00075 "    routerMac             = Net.makeMac (lines[ 4], 16);\n"
00076 "    ndpLease              =     parseInt(lines[ 5], 16);\n"
00077 "    ndpElapsed            =     parseInt(lines[ 6], 16);\n"
00078 "    \n"
00079 "    dnsIp                 = Net.makeIp6 (lines[ 7]    );\n"
00080 "    dnsLife               =     parseInt(lines[ 8], 16);\n"
00081 "    \n"
00082 "    uniquePrefixL         = Net.hexToBit(lines[ 9],  0);\n"
00083 "    uniquePrefixA         = Net.hexToBit(lines[ 9],  1);\n"
00084 "    uniquePrefixLength    =     parseInt(lines[10], 16);\n"
00085 "    uniquePrefix          = Net.makeIp6 (lines[11]    );\n"
00086 "    uniquePrefixLimit     =     parseInt(lines[12], 16);\n"
00087 "    uniquePrefixPreferred =     parseInt(lines[13], 16);\n"
00088 "    \n"
00089 "    globalPrefixL         = Net.hexToBit(lines[14],  0);\n"
00090 "    globalPrefixA         = Net.hexToBit(lines[14],  1);\n"
00091 "    globalPrefixLength    =     parseInt(lines[15], 16);\n"
00092 "    globalPrefix          = Net.makeIp6 (lines[16]    );\n"
00093 "    globalPrefixLimit     =     parseInt(lines[17], 16);\n"
00094 "    globalPrefixPreferred =     parseInt(lines[18], 16);\n"
00095 "}\n"
00096 "function parse()\n"
00097 "{\n"
00098 "    let topics = Ajax.response.split('\\f');\n"
00099 "    parseGenLines(topics[0]);\n"
00100 "    parseArpLines(topics[1]);\n"
00101 "}\n"
00102 "function display()\n"
00103 "{\n"
00104 "    let elem;\n"
00105 "    \n"
00106 "    elem = Ajax.getElementOrNull('ajax-arp'             ); if (elem) elem.textContent = arp;\n"
00107 "    elem = Ajax.getElementOrNull('ajax-slaac'           ); if (elem) elem.textContent = slaac;\n"
00108 "    elem = Ajax.getElementOrNull('ajax-hop-limit'       ); if (elem) elem.textContent = hopLimit;\n"
00109 "    elem = Ajax.getElementOrNull('ajax-mtu'             ); if (elem) elem.textContent = mtu;\n"
00110 "    elem = Ajax.getElementOrNull('ajax-managed'         ); if (elem) elem.setAttribute('dir', managed ? 'rtl' : 'ltr');\n"
00111 "    elem = Ajax.getElementOrNull('ajax-other'           ); if (elem) elem.setAttribute('dir', other   ? 'rtl' : 'ltr');\n"
00112 "    elem = Ajax.getElementOrNull('ajax-router-mac'      ); if (elem) elem.textContent = routerMac;\n"
00113 "    elem = Ajax.getElementOrNull('ajax-ndp-lease'       ); if (elem) elem.textContent = ndpLease;\n"
00114 "    elem = Ajax.getElementOrNull('ajax-ndp-elapsed'     ); if (elem) elem.textContent = ndpElapsed;\n"
00115 "    elem = Ajax.getElementOrNull('ajax-dns-life'        ); if (elem) elem.textContent = dnsLife;\n"
00116 "    elem = Ajax.getElementOrNull('ajax-dns-ip'          ); if (elem) elem.textContent = dnsIp;\n"
00117 "    \n"
00118 "    elem = Ajax.getElementOrNull('ajax-unique-prefix-l'        ); if (elem) elem.setAttribute('dir', uniquePrefixL ? 'rtl' : 'ltr');\n"
00119 "    elem = Ajax.getElementOrNull('ajax-unique-prefix-a'        ); if (elem) elem.setAttribute('dir', uniquePrefixA ? 'rtl' : 'ltr');\n"
00120 "    elem = Ajax.getElementOrNull('ajax-unique-prefix-length'   ); if (elem) elem.textContent = uniquePrefixLength;\n"
00121 "    elem = Ajax.getElementOrNull('ajax-unique-prefix'          ); if (elem) elem.textContent = uniquePrefix;\n"
00122 "    elem = Ajax.getElementOrNull('ajax-unique-prefix-limit'    ); if (elem) elem.textContent = uniquePrefixLimit;\n"
00123 "    elem = Ajax.getElementOrNull('ajax-unique-prefix-preferred'); if (elem) elem.textContent = uniquePrefixPreferred;\n"
00124 "    \n"
00125 "    elem = Ajax.getElementOrNull('ajax-global-prefix-l'        ); if (elem) elem.setAttribute('dir', globalPrefixL ? 'rtl' : 'ltr');\n"
00126 "    elem = Ajax.getElementOrNull('ajax-global-prefix-a'        ); if (elem) elem.setAttribute('dir', globalPrefixA ? 'rtl' : 'ltr');\n"
00127 "    elem = Ajax.getElementOrNull('ajax-global-prefix-length'   ); if (elem) elem.textContent = globalPrefixLength;\n"
00128 "    elem = Ajax.getElementOrNull('ajax-global-prefix'          ); if (elem) elem.textContent = globalPrefix;\n"
00129 "    elem = Ajax.getElementOrNull('ajax-global-prefix-limit'    ); if (elem) elem.textContent = globalPrefixLimit;\n"
00130 "    elem = Ajax.getElementOrNull('ajax-global-prefix-preferred'); if (elem) elem.textContent = globalPrefixPreferred;\n"
00131 "}\n"
00132 "\n"
00133 "Ajax.server     = '/net6-ajax';\n"
00134 "Ajax.onResponse = function() { parse(); display(); };\n"
00135 "Ajax.init();"