Andrew Boyson / web

Dependents:   oldheating gps motorhome heating

Committer:
andrewboyson
Date:
Sun Jan 10 11:53:12 2021 +0000
Revision:
147:ea6f647725a1
Parent:
146:6bc151bd7063
Added ability for the user to resolve a name.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
andrewboyson 96:eb2eb75bad0f 1 "//Net class\n"
andrewboyson 96:eb2eb75bad0f 2 "'use strict';\n"
andrewboyson 96:eb2eb75bad0f 3 "\n"
andrewboyson 146:6bc151bd7063 4 "//Private variables\n"
andrewboyson 146:6bc151bd7063 5 "let netMacXhr_ = null;\n"
andrewboyson 146:6bc151bd7063 6 "let netMacToFetch_ = '';\n"
andrewboyson 146:6bc151bd7063 7 "\n"
andrewboyson 96:eb2eb75bad0f 8 "class Net\n"
andrewboyson 96:eb2eb75bad0f 9 "{\n"
andrewboyson 146:6bc151bd7063 10 " //Public functions\n"
andrewboyson 146:6bc151bd7063 11 " static addVendorToLocalStorage(mac)\n"
andrewboyson 146:6bc151bd7063 12 " {\n"
andrewboyson 146:6bc151bd7063 13 " if (netMacXhr_ && netMacXhr_.readyState != 4) return; //Do nothing if there is an ongoing request\n"
andrewboyson 146:6bc151bd7063 14 " netMacToFetch_ = mac;\n"
andrewboyson 146:6bc151bd7063 15 " netMacXhr_ = new XMLHttpRequest();\n"
andrewboyson 146:6bc151bd7063 16 " netMacXhr_.onreadystatechange = function()\n"
andrewboyson 146:6bc151bd7063 17 " {\n"
andrewboyson 146:6bc151bd7063 18 " if (netMacXhr_.readyState == 4)\n"
andrewboyson 146:6bc151bd7063 19 " {\n"
andrewboyson 146:6bc151bd7063 20 " if (netMacXhr_.status == 200)\n"
andrewboyson 146:6bc151bd7063 21 " {\n"
andrewboyson 146:6bc151bd7063 22 " if (netMacXhr_.responseText == '')\n"
andrewboyson 146:6bc151bd7063 23 " {\n"
andrewboyson 146:6bc151bd7063 24 " localStorage.setItem(netMacToFetch_, 'Empty vendor');\n"
andrewboyson 146:6bc151bd7063 25 " }\n"
andrewboyson 146:6bc151bd7063 26 " else\n"
andrewboyson 146:6bc151bd7063 27 " {\n"
andrewboyson 146:6bc151bd7063 28 " localStorage.setItem(netMacToFetch_, netMacXhr_.responseText);\n"
andrewboyson 146:6bc151bd7063 29 " }\n"
andrewboyson 146:6bc151bd7063 30 " }\n"
andrewboyson 146:6bc151bd7063 31 " else\n"
andrewboyson 146:6bc151bd7063 32 " {\n"
andrewboyson 146:6bc151bd7063 33 " localStorage.setItem(netMacToFetch_, netMacXhr_.status);\n"
andrewboyson 146:6bc151bd7063 34 " }\n"
andrewboyson 146:6bc151bd7063 35 " }\n"
andrewboyson 146:6bc151bd7063 36 " };\n"
andrewboyson 146:6bc151bd7063 37 " netMacXhr_.open('GET', 'https://api.macaddress.io/v1?apiKey=at_dzgreB2SuPBDdy5mwTvivH3R3cvkH&search=' + netMacToFetch_, true);\n"
andrewboyson 146:6bc151bd7063 38 " netMacXhr_.send();\n"
andrewboyson 146:6bc151bd7063 39 " }\n"
andrewboyson 146:6bc151bd7063 40 " static getVendorFromLocalStorage(mac)\n"
andrewboyson 146:6bc151bd7063 41 " {\n"
andrewboyson 147:ea6f647725a1 42 " if (mac[1] === '2' ||\n"
andrewboyson 147:ea6f647725a1 43 " mac[1] === '6' ||\n"
andrewboyson 147:ea6f647725a1 44 " mac[1] === 'a' ||\n"
andrewboyson 147:ea6f647725a1 45 " mac[1] === 'A' ||\n"
andrewboyson 147:ea6f647725a1 46 " mac[1] === 'e' ||\n"
andrewboyson 147:ea6f647725a1 47 " mac[1] === 'E' ) return '(Locally administered)';\n"
andrewboyson 147:ea6f647725a1 48 " \n"
andrewboyson 146:6bc151bd7063 49 " return localStorage.getItem(mac);\n"
andrewboyson 146:6bc151bd7063 50 " }\n"
andrewboyson 146:6bc151bd7063 51 " static clearVendorsFromLocalStorage()\n"
andrewboyson 146:6bc151bd7063 52 " {\n"
andrewboyson 146:6bc151bd7063 53 " localStorage.clear();\n"
andrewboyson 146:6bc151bd7063 54 " }\n"
andrewboyson 96:eb2eb75bad0f 55 " static makeIp4(text)\n"
andrewboyson 96:eb2eb75bad0f 56 " {\n"
andrewboyson 96:eb2eb75bad0f 57 " let result = '';\n"
andrewboyson 96:eb2eb75bad0f 58 " result += parseInt(text.substr(6, 2), 16).toString();\n"
andrewboyson 96:eb2eb75bad0f 59 " result += '.';\n"
andrewboyson 96:eb2eb75bad0f 60 " result += parseInt(text.substr(4, 2), 16).toString();\n"
andrewboyson 96:eb2eb75bad0f 61 " result += '.';\n"
andrewboyson 96:eb2eb75bad0f 62 " result += parseInt(text.substr(2, 2), 16).toString();\n"
andrewboyson 96:eb2eb75bad0f 63 " result += '.';\n"
andrewboyson 96:eb2eb75bad0f 64 " result += parseInt(text.substr(0, 2), 16).toString();\n"
andrewboyson 96:eb2eb75bad0f 65 " return result;\n"
andrewboyson 96:eb2eb75bad0f 66 " }\n"
andrewboyson 145:d2bd78be00b2 67 " static makeIp4Rev(text)\n"
andrewboyson 145:d2bd78be00b2 68 " {\n"
andrewboyson 145:d2bd78be00b2 69 " let result = '';\n"
andrewboyson 145:d2bd78be00b2 70 " result += parseInt(text.substr(0, 2), 16).toString();\n"
andrewboyson 145:d2bd78be00b2 71 " result += '.';\n"
andrewboyson 145:d2bd78be00b2 72 " result += parseInt(text.substr(2, 2), 16).toString();\n"
andrewboyson 145:d2bd78be00b2 73 " result += '.';\n"
andrewboyson 145:d2bd78be00b2 74 " result += parseInt(text.substr(4, 2), 16).toString();\n"
andrewboyson 145:d2bd78be00b2 75 " result += '.';\n"
andrewboyson 145:d2bd78be00b2 76 " result += parseInt(text.substr(6, 2), 16).toString();\n"
andrewboyson 145:d2bd78be00b2 77 " return result;\n"
andrewboyson 145:d2bd78be00b2 78 " }\n"
andrewboyson 96:eb2eb75bad0f 79 " static makeMac(text)\n"
andrewboyson 96:eb2eb75bad0f 80 " {\n"
andrewboyson 96:eb2eb75bad0f 81 " text = text.toLowerCase();\n"
andrewboyson 96:eb2eb75bad0f 82 " let result = '';\n"
andrewboyson 96:eb2eb75bad0f 83 " result += text.substr( 0, 2);\n"
andrewboyson 96:eb2eb75bad0f 84 " result += ':';\n"
andrewboyson 96:eb2eb75bad0f 85 " result += text.substr( 2, 2);\n"
andrewboyson 96:eb2eb75bad0f 86 " result += ':';\n"
andrewboyson 96:eb2eb75bad0f 87 " result += text.substr( 4, 2);\n"
andrewboyson 96:eb2eb75bad0f 88 " result += ':';\n"
andrewboyson 96:eb2eb75bad0f 89 " result += text.substr( 6, 2);\n"
andrewboyson 96:eb2eb75bad0f 90 " result += ':';\n"
andrewboyson 96:eb2eb75bad0f 91 " result += text.substr( 8, 2);\n"
andrewboyson 96:eb2eb75bad0f 92 " result += ':';\n"
andrewboyson 96:eb2eb75bad0f 93 " result += text.substr(10, 2);\n"
andrewboyson 96:eb2eb75bad0f 94 " return result;\n"
andrewboyson 96:eb2eb75bad0f 95 " }\n"
andrewboyson 96:eb2eb75bad0f 96 "\n"
andrewboyson 96:eb2eb75bad0f 97 " static hexToBit(text, iBit)\n"
andrewboyson 96:eb2eb75bad0f 98 " {\n"
andrewboyson 96:eb2eb75bad0f 99 " let value = parseInt(text, 16);\n"
andrewboyson 96:eb2eb75bad0f 100 " value >>= iBit;\n"
andrewboyson 96:eb2eb75bad0f 101 " return value & 1;\n"
andrewboyson 96:eb2eb75bad0f 102 " }\n"
andrewboyson 96:eb2eb75bad0f 103 " static makeIp6(text)\n"
andrewboyson 96:eb2eb75bad0f 104 " {\n"
andrewboyson 96:eb2eb75bad0f 105 " function makeWord(text)\n"
andrewboyson 96:eb2eb75bad0f 106 " {\n"
andrewboyson 96:eb2eb75bad0f 107 " let word = parseInt(text, 16);\n"
andrewboyson 96:eb2eb75bad0f 108 " if (word === 0) return '';\n"
andrewboyson 96:eb2eb75bad0f 109 " return word.toString(16);\n"
andrewboyson 96:eb2eb75bad0f 110 " }\n"
andrewboyson 96:eb2eb75bad0f 111 " text = text.toLowerCase();\n"
andrewboyson 96:eb2eb75bad0f 112 " let result = '';\n"
andrewboyson 96:eb2eb75bad0f 113 " result += makeWord(text.substr( 0, 4));\n"
andrewboyson 96:eb2eb75bad0f 114 " result += ':';\n"
andrewboyson 96:eb2eb75bad0f 115 " result += makeWord(text.substr( 4, 4));\n"
andrewboyson 96:eb2eb75bad0f 116 " result += ':';\n"
andrewboyson 96:eb2eb75bad0f 117 " result += makeWord(text.substr( 8, 4));\n"
andrewboyson 96:eb2eb75bad0f 118 " result += ':';\n"
andrewboyson 96:eb2eb75bad0f 119 " result += makeWord(text.substr(12, 4));\n"
andrewboyson 96:eb2eb75bad0f 120 " result += ':';\n"
andrewboyson 96:eb2eb75bad0f 121 " result += makeWord(text.substr(16, 4));\n"
andrewboyson 96:eb2eb75bad0f 122 " result += ':';\n"
andrewboyson 96:eb2eb75bad0f 123 " result += makeWord(text.substr(20, 4));\n"
andrewboyson 96:eb2eb75bad0f 124 " result += ':';\n"
andrewboyson 96:eb2eb75bad0f 125 " result += makeWord(text.substr(24, 4));\n"
andrewboyson 96:eb2eb75bad0f 126 " result += ':';\n"
andrewboyson 96:eb2eb75bad0f 127 " result += makeWord(text.substr(28, 4));\n"
andrewboyson 96:eb2eb75bad0f 128 " return result;\n"
andrewboyson 96:eb2eb75bad0f 129 " }\n"
andrewboyson 96:eb2eb75bad0f 130 "}"