├── .dockerignore ├── .github └── workflows │ └── main.yml ├── .gitignore ├── Procfile ├── README.md ├── fly.toml ├── index.js ├── package-lock.json ├── package.json └── public └── index.html /.dockerignore: -------------------------------------------------------------------------------- 1 | # flyctl launch added from .gitignore 2 | # Logs 3 | **/logs 4 | **/*.log 5 | **/npm-debug.log* 6 | 7 | # Runtime data 8 | **/pids 9 | **/*.pid 10 | **/*.seed 11 | 12 | # Directory for instrumented libs generated by jscoverage/JSCover 13 | **/lib-cov 14 | 15 | # Coverage directory used by tools like istanbul 16 | **/coverage 17 | 18 | # Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) 19 | **/.grunt 20 | 21 | # node-waf configuration 22 | **/.lock-wscript 23 | 24 | # Compiled binary addons (http://nodejs.org/api/addons.html) 25 | **/build/Release 26 | 27 | # Dependency directory 28 | **/node_modules 29 | 30 | # Optional npm cache directory 31 | **/.npm 32 | 33 | # Optional REPL history 34 | **/.node_repl_history 35 | 36 | # flyctl launch added from .idea/.gitignore 37 | # Default ignored files 38 | .idea/shelf 39 | .idea/workspace.xml 40 | # Editor-based HTTP Client requests 41 | .idea/httpRequests 42 | # Datasource local storage ignored files 43 | .idea/dataSources 44 | .idea/dataSources.local.xml 45 | -------------------------------------------------------------------------------- /.github/workflows/main.yml: -------------------------------------------------------------------------------- 1 | name: Fly Deploy 2 | on: 3 | push: 4 | branches: 5 | - master 6 | concurrency: fly-deployment 7 | env: 8 | FLY_API_TOKEN: ${{ secrets.FLY_API_TOKEN }} 9 | jobs: 10 | deploy: 11 | name: Deploy app 12 | runs-on: ubuntu-latest 13 | steps: 14 | - uses: actions/checkout@v2 15 | - uses: superfly/flyctl-actions/setup-flyctl@master 16 | - run: flyctl deploy 17 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | npm-debug.log* 5 | 6 | # Runtime data 7 | pids 8 | *.pid 9 | *.seed 10 | 11 | # Directory for instrumented libs generated by jscoverage/JSCover 12 | lib-cov 13 | 14 | # Coverage directory used by tools like istanbul 15 | coverage 16 | 17 | # Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) 18 | .grunt 19 | 20 | # node-waf configuration 21 | .lock-wscript 22 | 23 | # Compiled binary addons (http://nodejs.org/api/addons.html) 24 | build/Release 25 | 26 | # Dependency directory 27 | node_modules 28 | 29 | # Optional npm cache directory 30 | .npm 31 | 32 | # Optional REPL history 33 | .node_repl_history 34 | -------------------------------------------------------------------------------- /Procfile: -------------------------------------------------------------------------------- 1 | web: node index.js 2 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | Website that shows if your server IP is blocked or not. 2 | 3 | http://ismyserverblocked.com/ 4 | -------------------------------------------------------------------------------- /fly.toml: -------------------------------------------------------------------------------- 1 | # fly.toml file generated for blockedservers on 2022-11-28T15:06:58+11:00 2 | 3 | app = "blockedservers" 4 | kill_signal = "SIGINT" 5 | kill_timeout = 5 6 | processes = [] 7 | 8 | [build] 9 | builder = "paketobuildpacks/builder:base" 10 | 11 | [env] 12 | PORT = "8080" 13 | 14 | [experimental] 15 | allowed_public_ports = [] 16 | auto_rollback = true 17 | 18 | [[services]] 19 | http_checks = [] 20 | internal_port = 8080 21 | processes = ["app"] 22 | protocol = "tcp" 23 | script_checks = [] 24 | [services.concurrency] 25 | hard_limit = 25 26 | soft_limit = 20 27 | type = "connections" 28 | 29 | [[services.ports]] 30 | force_https = true 31 | handlers = ["http"] 32 | port = 80 33 | 34 | [[services.ports]] 35 | handlers = ["tls", "http"] 36 | port = 443 37 | 38 | [[services.tcp_checks]] 39 | grace_period = "1s" 40 | interval = "15s" 41 | restart_limit = 0 42 | timeout = "2s" 43 | -------------------------------------------------------------------------------- /index.js: -------------------------------------------------------------------------------- 1 | const crypto = require('crypto'), 2 | http = require('http'), 3 | path = require('path'), 4 | jethro = require('jethro'), 5 | bodyParser = require('body-parser'), 6 | express = require('express'), 7 | app = express(), 8 | mongoose = require('mongoose'); 9 | mc = require('minecraft-protocol'); 10 | McChat = require('prismarine-chat')('1.16'); 11 | 12 | function log(severity, message, service) { 13 | if (!service) service = "app"; 14 | jethro(severity, service, message); 15 | } 16 | 17 | function sha1(str) { 18 | return crypto.createHash('sha1').update(str).digest('hex'); 19 | } 20 | 21 | const Server = mongoose.model('Server', { 22 | _id: String, 23 | hostname: String, 24 | currentlyBlocked: Boolean, 25 | hostnameFound: Boolean, 26 | lastBlocked: Date 27 | }), 28 | IPHash = mongoose.model('IPHash', { 29 | _id: String, 30 | hostname: String 31 | }); 32 | 33 | app.use(jethro.express); 34 | app.use(bodyParser.urlencoded({extended: true})); 35 | app.use(bodyParser.json()); 36 | 37 | app.use(express.static(path.join(__dirname, 'public'))); 38 | 39 | app.get('/count', function (req, res) { 40 | IPHash.count({}, function (err, count) { 41 | if (err) { 42 | res.status(500).json({ 43 | success: false, 44 | message: "Database error!" 45 | }).end(); 46 | log('error', err, "mongoose"); 47 | } 48 | 49 | res.status(200).json({ 50 | success: true, 51 | count: count 52 | }).end(); 53 | }) 54 | }); 55 | 56 | app.get('/check', function (req, res) { 57 | res.status(400).json({ 58 | success: false, 59 | message: "Missing query!" 60 | }).end(); 61 | }); 62 | 63 | function validateQuery(server) { 64 | if (!/^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)(\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3})$|^((([a-zA-Z0-9\*]|[a-zA-Z0-9][a-zA-Z0-9\-]*[a-zA-Z0-9])\.)*([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9\-]*[A-Za-z0-9]))$/.test(server.toLowerCase())) { 65 | return { 66 | success: false, 67 | message: "Invalid query!" 68 | } 69 | } 70 | return null; 71 | } 72 | 73 | async function doCheck(server) { 74 | const validation = validateQuery(server); 75 | if (validation) { 76 | return validation; 77 | } 78 | 79 | const ipSplit = server.toLowerCase().split("."); 80 | let isIp = ipSplit.length === 4; 81 | let smallIp, starIp; 82 | let otherStars = []; 83 | if (isIp) { 84 | ipSplit.map(function (part) { 85 | try { 86 | Number(part); 87 | } catch (ex) { 88 | isIp = false; 89 | } 90 | }); 91 | } 92 | if (!isIp && ipSplit.length >= 2) { 93 | smallIp = ipSplit[ipSplit.length - 2] + "." + ipSplit[ipSplit.length - 1]; 94 | starIp = "*." + ipSplit[ipSplit.length - 2] + "." + ipSplit[ipSplit.length - 1]; 95 | while (ipSplit.length > 3) { 96 | ipSplit[0] = "*"; 97 | otherStars.push(ipSplit.join(".")) 98 | ipSplit.shift() 99 | } 100 | } 101 | await IPHash.findOneAndUpdate({ 102 | _id: sha1(server.toLowerCase()) 103 | }, { 104 | hostname: server.toLowerCase() 105 | }, {upsert: true}); 106 | if (smallIp != null) { 107 | await IPHash.findOneAndUpdate({ 108 | _id: sha1(smallIp.toLowerCase()) 109 | }, { 110 | hostname: smallIp.toLowerCase() 111 | }, {upsert: true}); 112 | await IPHash.findOneAndUpdate({ 113 | _id: sha1(starIp.toLowerCase()) 114 | }, { 115 | hostname: starIp.toLowerCase() 116 | }, {upsert: true}); 117 | await Promise.all(otherStars.map(async function (star) { 118 | await IPHash.findOneAndUpdate({ 119 | _id: sha1(star.toLowerCase()) 120 | }, { 121 | hostname: star.toLowerCase() 122 | }, {upsert: true}); 123 | })); 124 | } 125 | const query = (smallIp == null ? {_id: sha1(server.toLowerCase())} : {$or: [{_id: sha1(server.toLowerCase())}, {_id: sha1(smallIp)}, {_id: sha1(starIp)}]}); 126 | const serverDoc = await Server.findOne(query) 127 | if (serverDoc === null) { 128 | return { 129 | success: true, 130 | blocked: false, 131 | lastBlocked: null 132 | } 133 | } 134 | 135 | if (serverDoc.hostname == null) { 136 | const hashDoc = await IPHash.findOne({_id: serverDoc._id}) 137 | serverDoc.hostname = (hashDoc == null || hashDoc.hostname == null ? server.toLowerCase() : hashDoc.hostname); 138 | serverDoc.hostnameFound = true; 139 | await serverDoc.save(); 140 | } 141 | 142 | return { 143 | success: true, 144 | blocked: serverDoc.currentlyBlocked, 145 | lastBlocked: serverDoc.lastBlocked 146 | } 147 | } 148 | 149 | async function doPing(server) { 150 | const validation = validateQuery(server); 151 | if (validation) { 152 | return validation; 153 | } 154 | return new Promise(resolve => { 155 | const client = mc.createClient({ 156 | host: server, 157 | username: "BlockedServers", // some random exisiting account 158 | profilesFolder: false 159 | }); 160 | // disconnect packet, assume we got kicked for not auth'd 161 | client.on('disconnect', (packet) => { 162 | client.end(); 163 | var reason = packet.reason; 164 | try { 165 | reason = new McChat(JSON.parse(packet.reason)).toString() 166 | } catch (e) { 167 | // ignored 168 | } 169 | resolve({ 170 | success: true, 171 | offlineMode: false, 172 | reason: reason 173 | }); 174 | }); 175 | // login success -> offline server 176 | client.on('success', (packet) => { 177 | client.end(); 178 | resolve({ 179 | success: true, 180 | offlineMode: true 181 | }); 182 | }); 183 | // error? -> error 184 | client.on('error', (error) => { 185 | resolve({ 186 | success: false, 187 | error: error 188 | }) 189 | }); 190 | client.on('end', (error) => { 191 | resolve({ 192 | success: false, 193 | error: error 194 | }) 195 | }); 196 | }); 197 | } 198 | 199 | async function doHashLookup(hash) { 200 | const hashDoc = await IPHash.findOne({_id: hash.toLowerCase()}) 201 | if(hashDoc == null || hashDoc.hostname == null) return {success: true, hostname: null} 202 | return {success: true, hostname: hashDoc.hostname.toLowerCase(), server: await doCheck(hashDoc.hostname)} 203 | } 204 | 205 | app.get('/check/:query', async function (req, res) { 206 | res.json(await doCheck(req.params.query)) 207 | }); 208 | 209 | app.post('/check-bulk', async function (req, res) { 210 | res.json(await Promise.all(req.body.map(async server => { 211 | return {input: server, result: await doCheck(server)}; 212 | }))) 213 | }) 214 | 215 | app.get('/ping/:query', async function (req, res) { 216 | res.json(await doPing(req.params.query)) 217 | }); 218 | 219 | app.get('/lookup/:hash', async function (req, res) { 220 | res.json(await doHashLookup(req.params.hash)) 221 | }); 222 | 223 | app.post('/lookup-bulk', async function (req, res) { 224 | res.json(await Promise.all(req.body.map(async hash => { 225 | return {input: hash, result: await doHashLookup(hash)}; 226 | }))) 227 | }); 228 | 229 | mongoose.connect(process.env.MONGO_URL || 'mongodb://localhost/test', function (err) { 230 | if (err) { 231 | console.log(err); 232 | process.exit(1); 233 | } 234 | }); 235 | const db = mongoose.connection; 236 | db.on('error', console.error.bind(console, 'connection error:')); 237 | db.once('open', function () { 238 | http.createServer(app).listen(process.env.PORT || 3000, process.env.HOST || "0.0.0.0"); 239 | log("debug", "Hello FLY?", "express") 240 | log("debug", "Spawned Express on " + (process.env.HOST || "0.0.0.0") + ":" + (process.env.PORT || 3000), "express"); 241 | }); 242 | -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "blockedmc-website", 3 | "version": "1.0.0", 4 | "lockfileVersion": 1, 5 | "requires": true, 6 | "dependencies": { 7 | "@azure/msal-node": { 8 | "version": "1.14.6", 9 | "resolved": "https://registry.npmjs.org/@azure/msal-node/-/msal-node-1.14.6.tgz", 10 | "integrity": "sha512-em/qqFL5tLMxMPl9vormAs13OgZpmQoJbiQ/GlWr+BA77eCLoL+Ehr5xRHowYo+LFe5b+p+PJVkRvT+mLvOkwA==", 11 | "requires": { 12 | "@azure/msal-common": "^9.0.2", 13 | "jsonwebtoken": "^9.0.0", 14 | "uuid": "^8.3.0" 15 | }, 16 | "dependencies": { 17 | "@azure/msal-common": { 18 | "version": "9.0.2", 19 | "resolved": "https://registry.npmjs.org/@azure/msal-common/-/msal-common-9.0.2.tgz", 20 | "integrity": "sha512-qzwxuF8kZAp+rNUactMCgJh8fblq9D4lSqrrIxMDzLjgSZtjN32ix7r/HBe8QdOr76II9SVVPcMkX4sPzPfQ7w==" 21 | }, 22 | "jsonwebtoken": { 23 | "version": "9.0.0", 24 | "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.0.tgz", 25 | "integrity": "sha512-tuGfYXxkQGDPnLJ7SibiQgVgeDgfbPq2k2ICcbgqW8WxWLBAxKQM/ZCu/IT8SOSwmaYl4dpTFCW5xZv7YbbWUw==", 26 | "requires": { 27 | "jws": "^3.2.2", 28 | "lodash": "^4.17.21", 29 | "ms": "^2.1.1", 30 | "semver": "^7.3.8" 31 | } 32 | }, 33 | "ms": { 34 | "version": "2.1.3", 35 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", 36 | "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" 37 | }, 38 | "semver": { 39 | "version": "7.3.8", 40 | "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", 41 | "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", 42 | "requires": { 43 | "lru-cache": "^6.0.0" 44 | } 45 | } 46 | } 47 | }, 48 | "@types/bson": { 49 | "version": "4.0.5", 50 | "resolved": "https://registry.npmjs.org/@types/bson/-/bson-4.0.5.tgz", 51 | "integrity": "sha512-vVLwMUqhYJSQ/WKcE60eFqcyuWse5fGH+NMAXHuKrUAPoryq3ATxk5o4bgYNtg5aOM4APVg7Hnb3ASqUYG0PKg==", 52 | "requires": { 53 | "@types/node": "*" 54 | } 55 | }, 56 | "@types/mongodb": { 57 | "version": "3.6.20", 58 | "resolved": "https://registry.npmjs.org/@types/mongodb/-/mongodb-3.6.20.tgz", 59 | "integrity": "sha512-WcdpPJCakFzcWWD9juKoZbRtQxKIMYF/JIAM4JrNHrMcnJL6/a2NWjXxW7fo9hxboxxkg+icff8d7+WIEvKgYQ==", 60 | "requires": { 61 | "@types/bson": "*", 62 | "@types/node": "*" 63 | } 64 | }, 65 | "@types/node": { 66 | "version": "18.11.18", 67 | "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.18.tgz", 68 | "integrity": "sha512-DHQpWGjyQKSHj3ebjFI/wRKcqQcdR+MoFBygntYOZytCqNfkd2ZC4ARDJ2DQqhjH5p85Nnd3jhUJIXrszFX/JA==" 69 | }, 70 | "@xboxreplay/errors": { 71 | "version": "0.1.0", 72 | "resolved": "https://registry.npmjs.org/@xboxreplay/errors/-/errors-0.1.0.tgz", 73 | "integrity": "sha512-Tgz1d/OIPDWPeyOvuL5+aai5VCcqObhPnlI3skQuf80GVF3k1I0lPCnGC+8Cm5PV9aLBT5m8qPcJoIUQ2U4y9g==" 74 | }, 75 | "@xboxreplay/xboxlive-auth": { 76 | "version": "3.3.3", 77 | "resolved": "https://registry.npmjs.org/@xboxreplay/xboxlive-auth/-/xboxlive-auth-3.3.3.tgz", 78 | "integrity": "sha512-j0AU8pW10LM8O68CTZ5QHnvOjSsnPICy0oQcP7zyM7eWkDQ/InkiQiirQKsPn1XRYDl4ccNu0WM582s3UKwcBg==", 79 | "requires": { 80 | "@xboxreplay/errors": "^0.1.0", 81 | "axios": "^0.21.1" 82 | } 83 | }, 84 | "accepts": { 85 | "version": "1.3.8", 86 | "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", 87 | "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", 88 | "requires": { 89 | "mime-types": "~2.1.34", 90 | "negotiator": "0.6.3" 91 | } 92 | }, 93 | "aes-js": { 94 | "version": "3.1.2", 95 | "resolved": "https://registry.npmjs.org/aes-js/-/aes-js-3.1.2.tgz", 96 | "integrity": "sha512-e5pEa2kBnBOgR4Y/p20pskXI74UEz7de8ZGVo58asOtvSVG5YAbJeELPZxOmt+Bnz3rX753YKhfIn4X4l1PPRQ==" 97 | }, 98 | "ajv": { 99 | "version": "6.12.6", 100 | "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", 101 | "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", 102 | "requires": { 103 | "fast-deep-equal": "^3.1.1", 104 | "fast-json-stable-stringify": "^2.0.0", 105 | "json-schema-traverse": "^0.4.1", 106 | "uri-js": "^4.2.2" 107 | } 108 | }, 109 | "array-flatten": { 110 | "version": "1.1.1", 111 | "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", 112 | "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==" 113 | }, 114 | "asn1": { 115 | "version": "0.2.3", 116 | "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz", 117 | "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=" 118 | }, 119 | "axios": { 120 | "version": "0.21.4", 121 | "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz", 122 | "integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==", 123 | "requires": { 124 | "follow-redirects": "^1.14.0" 125 | } 126 | }, 127 | "bl": { 128 | "version": "2.2.1", 129 | "resolved": "https://registry.npmjs.org/bl/-/bl-2.2.1.tgz", 130 | "integrity": "sha512-6Pesp1w0DEX1N550i/uGV/TqucVL4AM/pgThFSN/Qq9si1/DF9aIHs1BxD8V/QU0HoeHO6cQRTAuYnLPKq1e4g==", 131 | "requires": { 132 | "readable-stream": "^2.3.5", 133 | "safe-buffer": "^5.1.1" 134 | }, 135 | "dependencies": { 136 | "readable-stream": { 137 | "version": "2.3.7", 138 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", 139 | "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", 140 | "requires": { 141 | "core-util-is": "~1.0.0", 142 | "inherits": "~2.0.3", 143 | "isarray": "~1.0.0", 144 | "process-nextick-args": "~2.0.0", 145 | "safe-buffer": "~5.1.1", 146 | "string_decoder": "~1.1.1", 147 | "util-deprecate": "~1.0.1" 148 | } 149 | }, 150 | "string_decoder": { 151 | "version": "1.1.1", 152 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", 153 | "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", 154 | "requires": { 155 | "safe-buffer": "~5.1.0" 156 | } 157 | } 158 | } 159 | }, 160 | "bluebird": { 161 | "version": "3.5.1", 162 | "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.1.tgz", 163 | "integrity": "sha512-MKiLiV+I1AA596t9w1sQJ8jkiSr5+ZKi0WKrYGUn6d1Fx+Ij4tIj+m2WMQSGczs5jZVxV339chE8iwk6F64wjA==" 164 | }, 165 | "body-parser": { 166 | "version": "1.20.1", 167 | "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", 168 | "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==", 169 | "requires": { 170 | "bytes": "3.1.2", 171 | "content-type": "~1.0.4", 172 | "debug": "2.6.9", 173 | "depd": "2.0.0", 174 | "destroy": "1.2.0", 175 | "http-errors": "2.0.0", 176 | "iconv-lite": "0.4.24", 177 | "on-finished": "2.4.1", 178 | "qs": "6.11.0", 179 | "raw-body": "2.5.1", 180 | "type-is": "~1.6.18", 181 | "unpipe": "1.0.0" 182 | } 183 | }, 184 | "bson": { 185 | "version": "1.1.6", 186 | "resolved": "https://registry.npmjs.org/bson/-/bson-1.1.6.tgz", 187 | "integrity": "sha512-EvVNVeGo4tHxwi8L6bPj3y3itEvStdwvvlojVxxbyYfoaxJ6keLgrTuKdyfEAszFK+H3olzBuafE0yoh0D1gdg==" 188 | }, 189 | "buffer-equal": { 190 | "version": "1.0.0", 191 | "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-1.0.0.tgz", 192 | "integrity": "sha1-WWFrSYME1Var1GaWayLu2j7KX74=" 193 | }, 194 | "buffer-equal-constant-time": { 195 | "version": "1.0.1", 196 | "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", 197 | "integrity": "sha1-+OcRMvf/5uAaXJaXpMbz5I1cyBk=" 198 | }, 199 | "bytes": { 200 | "version": "3.1.2", 201 | "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", 202 | "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==" 203 | }, 204 | "call-bind": { 205 | "version": "1.0.2", 206 | "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", 207 | "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", 208 | "requires": { 209 | "function-bind": "^1.1.1", 210 | "get-intrinsic": "^1.0.2" 211 | } 212 | }, 213 | "colour": { 214 | "version": "0.7.1", 215 | "resolved": "https://registry.npmjs.org/colour/-/colour-0.7.1.tgz", 216 | "integrity": "sha1-nLFpkX7F0SwHNtPoaFdG3xyt93g=" 217 | }, 218 | "commander": { 219 | "version": "2.20.3", 220 | "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", 221 | "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" 222 | }, 223 | "content-disposition": { 224 | "version": "0.5.4", 225 | "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", 226 | "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", 227 | "requires": { 228 | "safe-buffer": "5.2.1" 229 | }, 230 | "dependencies": { 231 | "safe-buffer": { 232 | "version": "5.2.1", 233 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", 234 | "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" 235 | } 236 | } 237 | }, 238 | "content-type": { 239 | "version": "1.0.4", 240 | "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", 241 | "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==" 242 | }, 243 | "cookie": { 244 | "version": "0.5.0", 245 | "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", 246 | "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==" 247 | }, 248 | "cookie-signature": { 249 | "version": "1.0.6", 250 | "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", 251 | "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==" 252 | }, 253 | "core-util-is": { 254 | "version": "1.0.3", 255 | "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", 256 | "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" 257 | }, 258 | "debug": { 259 | "version": "2.6.9", 260 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", 261 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", 262 | "requires": { 263 | "ms": "2.0.0" 264 | } 265 | }, 266 | "denque": { 267 | "version": "1.5.1", 268 | "resolved": "https://registry.npmjs.org/denque/-/denque-1.5.1.tgz", 269 | "integrity": "sha512-XwE+iZ4D6ZUB7mfYRMb5wByE8L74HCn30FBN7sWnXksWc1LO1bPDl67pBR9o/kC4z/xSNAwkMYcGgqDV3BE3Hw==" 270 | }, 271 | "depd": { 272 | "version": "2.0.0", 273 | "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", 274 | "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==" 275 | }, 276 | "destroy": { 277 | "version": "1.2.0", 278 | "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", 279 | "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==" 280 | }, 281 | "discontinuous-range": { 282 | "version": "1.0.0", 283 | "resolved": "https://registry.npmjs.org/discontinuous-range/-/discontinuous-range-1.0.0.tgz", 284 | "integrity": "sha1-44Mx8IRLukm5qctxx3FYWqsbxlo=" 285 | }, 286 | "ecdsa-sig-formatter": { 287 | "version": "1.0.11", 288 | "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", 289 | "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", 290 | "requires": { 291 | "safe-buffer": "^5.0.1" 292 | } 293 | }, 294 | "ee-first": { 295 | "version": "1.1.1", 296 | "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", 297 | "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" 298 | }, 299 | "encodeurl": { 300 | "version": "1.0.2", 301 | "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", 302 | "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==" 303 | }, 304 | "endian-toggle": { 305 | "version": "0.0.0", 306 | "resolved": "https://registry.npmjs.org/endian-toggle/-/endian-toggle-0.0.0.tgz", 307 | "integrity": "sha1-5cx1eLEDLW7gHq/Nc3ZdsNtNwKY=" 308 | }, 309 | "escape-html": { 310 | "version": "1.0.3", 311 | "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", 312 | "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" 313 | }, 314 | "etag": { 315 | "version": "1.8.1", 316 | "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", 317 | "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==" 318 | }, 319 | "eventemitter3": { 320 | "version": "1.2.0", 321 | "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-1.2.0.tgz", 322 | "integrity": "sha1-HIaZHYFq0eUEdQ5zh0Ik7PO+xQg=" 323 | }, 324 | "express": { 325 | "version": "4.18.2", 326 | "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz", 327 | "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==", 328 | "requires": { 329 | "accepts": "~1.3.8", 330 | "array-flatten": "1.1.1", 331 | "body-parser": "1.20.1", 332 | "content-disposition": "0.5.4", 333 | "content-type": "~1.0.4", 334 | "cookie": "0.5.0", 335 | "cookie-signature": "1.0.6", 336 | "debug": "2.6.9", 337 | "depd": "2.0.0", 338 | "encodeurl": "~1.0.2", 339 | "escape-html": "~1.0.3", 340 | "etag": "~1.8.1", 341 | "finalhandler": "1.2.0", 342 | "fresh": "0.5.2", 343 | "http-errors": "2.0.0", 344 | "merge-descriptors": "1.0.1", 345 | "methods": "~1.1.2", 346 | "on-finished": "2.4.1", 347 | "parseurl": "~1.3.3", 348 | "path-to-regexp": "0.1.7", 349 | "proxy-addr": "~2.0.7", 350 | "qs": "6.11.0", 351 | "range-parser": "~1.2.1", 352 | "safe-buffer": "5.2.1", 353 | "send": "0.18.0", 354 | "serve-static": "1.15.0", 355 | "setprototypeof": "1.2.0", 356 | "statuses": "2.0.1", 357 | "type-is": "~1.6.18", 358 | "utils-merge": "1.0.1", 359 | "vary": "~1.1.2" 360 | }, 361 | "dependencies": { 362 | "safe-buffer": { 363 | "version": "5.2.1", 364 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", 365 | "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" 366 | } 367 | } 368 | }, 369 | "fast-deep-equal": { 370 | "version": "3.1.3", 371 | "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", 372 | "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" 373 | }, 374 | "fast-json-stable-stringify": { 375 | "version": "2.1.0", 376 | "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", 377 | "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" 378 | }, 379 | "finalhandler": { 380 | "version": "1.2.0", 381 | "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", 382 | "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", 383 | "requires": { 384 | "debug": "2.6.9", 385 | "encodeurl": "~1.0.2", 386 | "escape-html": "~1.0.3", 387 | "on-finished": "2.4.1", 388 | "parseurl": "~1.3.3", 389 | "statuses": "2.0.1", 390 | "unpipe": "~1.0.0" 391 | } 392 | }, 393 | "follow-redirects": { 394 | "version": "1.14.8", 395 | "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.8.tgz", 396 | "integrity": "sha512-1x0S9UVJHsQprFcEC/qnNzBLcIxsjAV905f/UkQxbclCsoTWlacCNOpQa/anodLl2uaEKFhfWOvM2Qg77+15zA==" 397 | }, 398 | "forwarded": { 399 | "version": "0.2.0", 400 | "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", 401 | "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==" 402 | }, 403 | "fresh": { 404 | "version": "0.5.2", 405 | "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", 406 | "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==" 407 | }, 408 | "function-bind": { 409 | "version": "1.1.1", 410 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", 411 | "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" 412 | }, 413 | "get-intrinsic": { 414 | "version": "1.1.3", 415 | "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.3.tgz", 416 | "integrity": "sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==", 417 | "requires": { 418 | "function-bind": "^1.1.1", 419 | "has": "^1.0.3", 420 | "has-symbols": "^1.0.3" 421 | } 422 | }, 423 | "has": { 424 | "version": "1.0.3", 425 | "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", 426 | "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", 427 | "requires": { 428 | "function-bind": "^1.1.1" 429 | } 430 | }, 431 | "has-symbols": { 432 | "version": "1.0.3", 433 | "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", 434 | "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==" 435 | }, 436 | "http-errors": { 437 | "version": "2.0.0", 438 | "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", 439 | "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", 440 | "requires": { 441 | "depd": "2.0.0", 442 | "inherits": "2.0.4", 443 | "setprototypeof": "1.2.0", 444 | "statuses": "2.0.1", 445 | "toidentifier": "1.0.1" 446 | }, 447 | "dependencies": { 448 | "inherits": { 449 | "version": "2.0.4", 450 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 451 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" 452 | } 453 | } 454 | }, 455 | "iconv-lite": { 456 | "version": "0.4.24", 457 | "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", 458 | "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", 459 | "requires": { 460 | "safer-buffer": ">= 2.1.2 < 3" 461 | } 462 | }, 463 | "inherits": { 464 | "version": "2.0.3", 465 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", 466 | "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" 467 | }, 468 | "ipaddr.js": { 469 | "version": "1.9.1", 470 | "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", 471 | "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==" 472 | }, 473 | "isarray": { 474 | "version": "1.0.0", 475 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", 476 | "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" 477 | }, 478 | "jethro": { 479 | "version": "2.7.1", 480 | "resolved": "https://registry.npmjs.org/jethro/-/jethro-2.7.1.tgz", 481 | "integrity": "sha1-Pt7ugEPmacYapnkYyxh6wg0Ullo=", 482 | "requires": { 483 | "colour": "^0.7.1", 484 | "eventemitter3": "^1.1.1", 485 | "moment": "^2.11.2", 486 | "stripcolorcodes": "^0.1.0" 487 | } 488 | }, 489 | "json-schema-traverse": { 490 | "version": "0.4.1", 491 | "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", 492 | "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" 493 | }, 494 | "jwa": { 495 | "version": "1.4.1", 496 | "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz", 497 | "integrity": "sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==", 498 | "requires": { 499 | "buffer-equal-constant-time": "1.0.1", 500 | "ecdsa-sig-formatter": "1.0.11", 501 | "safe-buffer": "^5.0.1" 502 | } 503 | }, 504 | "jws": { 505 | "version": "3.2.2", 506 | "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz", 507 | "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==", 508 | "requires": { 509 | "jwa": "^1.4.1", 510 | "safe-buffer": "^5.0.1" 511 | } 512 | }, 513 | "kareem": { 514 | "version": "2.3.2", 515 | "resolved": "https://registry.npmjs.org/kareem/-/kareem-2.3.2.tgz", 516 | "integrity": "sha512-STHz9P7X2L4Kwn72fA4rGyqyXdmrMSdxqHx9IXon/FXluXieaFA6KJ2upcHAHxQPQ0LeM/OjLrhFxifHewOALQ==" 517 | }, 518 | "lodash": { 519 | "version": "4.17.21", 520 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", 521 | "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" 522 | }, 523 | "lodash.get": { 524 | "version": "4.4.2", 525 | "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", 526 | "integrity": "sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=" 527 | }, 528 | "lodash.merge": { 529 | "version": "4.6.2", 530 | "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", 531 | "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==" 532 | }, 533 | "lodash.reduce": { 534 | "version": "4.6.0", 535 | "resolved": "https://registry.npmjs.org/lodash.reduce/-/lodash.reduce-4.6.0.tgz", 536 | "integrity": "sha1-8atrg5KZrUj3hKu/R2WW8DuRTTs=" 537 | }, 538 | "lru-cache": { 539 | "version": "6.0.0", 540 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", 541 | "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", 542 | "requires": { 543 | "yallist": "^4.0.0" 544 | } 545 | }, 546 | "macaddress": { 547 | "version": "0.5.2", 548 | "resolved": "https://registry.npmjs.org/macaddress/-/macaddress-0.5.2.tgz", 549 | "integrity": "sha512-cYYBbT3b84hTEHssWE6OmsuqF/NiLXE2RGK9Sc9SwwE9kMoKrbaUAJtKs6ucd0FFgZjXE1Wm3hoGEEYas0N6EA==" 550 | }, 551 | "media-typer": { 552 | "version": "0.3.0", 553 | "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", 554 | "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==" 555 | }, 556 | "memory-pager": { 557 | "version": "1.5.0", 558 | "resolved": "https://registry.npmjs.org/memory-pager/-/memory-pager-1.5.0.tgz", 559 | "integrity": "sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg==", 560 | "optional": true 561 | }, 562 | "merge-descriptors": { 563 | "version": "1.0.1", 564 | "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", 565 | "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==" 566 | }, 567 | "methods": { 568 | "version": "1.1.2", 569 | "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", 570 | "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==" 571 | }, 572 | "mime": { 573 | "version": "1.6.0", 574 | "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", 575 | "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" 576 | }, 577 | "mime-db": { 578 | "version": "1.52.0", 579 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", 580 | "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==" 581 | }, 582 | "mime-types": { 583 | "version": "2.1.35", 584 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", 585 | "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", 586 | "requires": { 587 | "mime-db": "1.52.0" 588 | } 589 | }, 590 | "minecraft-data": { 591 | "version": "2.95.0", 592 | "resolved": "https://registry.npmjs.org/minecraft-data/-/minecraft-data-2.95.0.tgz", 593 | "integrity": "sha512-e/WgRMU86diPtuqYJncmiAszpy8LmNjMb+raEwGFY0+eFi84WcinXyts7Lcuvj/lTYvX5tuQ1wFMjOpLwdTk+w==" 594 | }, 595 | "minecraft-folder-path": { 596 | "version": "1.2.0", 597 | "resolved": "https://registry.npmjs.org/minecraft-folder-path/-/minecraft-folder-path-1.2.0.tgz", 598 | "integrity": "sha512-qaUSbKWoOsH9brn0JQuBhxNAzTDMwrOXorwuRxdJKKKDYvZhtml+6GVCUrY5HRiEsieBEjCUnhVpDuQiKsiFaw==" 599 | }, 600 | "minecraft-protocol": { 601 | "version": "1.26.5", 602 | "resolved": "https://registry.npmjs.org/minecraft-protocol/-/minecraft-protocol-1.26.5.tgz", 603 | "integrity": "sha512-PKYUeyG+mb4MkwWbX4XrQ5SG5B4PDE6XF3Fm+z1iRwGck23DFVV3hxRHkUqBUxe0TxKrOXKGzhvT+vn541QHOw==", 604 | "requires": { 605 | "@azure/msal-node": "^1.0.0-beta.3", 606 | "@xboxreplay/xboxlive-auth": "^3.3.3", 607 | "aes-js": "^3.1.2", 608 | "buffer-equal": "^1.0.0", 609 | "debug": "^4.1.0", 610 | "endian-toggle": "^0.0.0", 611 | "lodash.get": "^4.1.2", 612 | "lodash.merge": "^4.3.0", 613 | "minecraft-data": "^2.85.1", 614 | "minecraft-folder-path": "^1.1.0", 615 | "node-fetch": "^2.6.1", 616 | "node-rsa": "^0.4.2", 617 | "prismarine-nbt": "^1.3.0", 618 | "protodef": "^1.8.0", 619 | "readable-stream": "^3.0.6", 620 | "uuid-1345": "^1.0.1", 621 | "yggdrasil": "^1.4.0" 622 | }, 623 | "dependencies": { 624 | "debug": { 625 | "version": "4.3.2", 626 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", 627 | "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", 628 | "requires": { 629 | "ms": "2.1.2" 630 | } 631 | }, 632 | "ms": { 633 | "version": "2.1.2", 634 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 635 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" 636 | } 637 | } 638 | }, 639 | "mojangson": { 640 | "version": "2.0.2", 641 | "resolved": "https://registry.npmjs.org/mojangson/-/mojangson-2.0.2.tgz", 642 | "integrity": "sha512-iGPRE1Ez+W+42Dt4Ao91c9VVs+FmuRUlAFDef76xRX3mbZrTNuezDtFI0PbfYqheg/B0fSiq0Q0V1emZNt37cw==", 643 | "requires": { 644 | "nearley": "^2.19.5" 645 | } 646 | }, 647 | "moment": { 648 | "version": "2.29.4", 649 | "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz", 650 | "integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==" 651 | }, 652 | "mongodb": { 653 | "version": "3.7.3", 654 | "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-3.7.3.tgz", 655 | "integrity": "sha512-Psm+g3/wHXhjBEktkxXsFMZvd3nemI0r3IPsE0bU+4//PnvNWKkzhZcEsbPcYiWqe8XqXJJEg4Tgtr7Raw67Yw==", 656 | "requires": { 657 | "bl": "^2.2.1", 658 | "bson": "^1.1.4", 659 | "denque": "^1.4.1", 660 | "optional-require": "^1.1.8", 661 | "safe-buffer": "^5.1.2", 662 | "saslprep": "^1.0.0" 663 | }, 664 | "dependencies": { 665 | "optional-require": { 666 | "version": "1.1.8", 667 | "resolved": "https://registry.npmjs.org/optional-require/-/optional-require-1.1.8.tgz", 668 | "integrity": "sha512-jq83qaUb0wNg9Krv1c5OQ+58EK+vHde6aBPzLvPPqJm89UQWsvSuFy9X/OSNJnFeSOKo7btE0n8Nl2+nE+z5nA==", 669 | "requires": { 670 | "require-at": "^1.0.6" 671 | } 672 | } 673 | } 674 | }, 675 | "mongoose": { 676 | "version": "5.13.15", 677 | "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-5.13.15.tgz", 678 | "integrity": "sha512-cxp1Gbb8yUWkaEbajdhspSaKzAvsIvOtRlYD87GN/P2QEUhpd6bIvebi36T6M0tIVAMauNaK9SPA055N3PwF8Q==", 679 | "requires": { 680 | "@types/bson": "1.x || 4.0.x", 681 | "@types/mongodb": "^3.5.27", 682 | "bson": "^1.1.4", 683 | "kareem": "2.3.2", 684 | "mongodb": "3.7.3", 685 | "mongoose-legacy-pluralize": "1.0.2", 686 | "mpath": "0.8.4", 687 | "mquery": "3.2.5", 688 | "ms": "2.1.2", 689 | "optional-require": "1.0.x", 690 | "regexp-clone": "1.0.0", 691 | "safe-buffer": "5.2.1", 692 | "sift": "13.5.2", 693 | "sliced": "1.0.1" 694 | }, 695 | "dependencies": { 696 | "ms": { 697 | "version": "2.1.2", 698 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 699 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" 700 | }, 701 | "safe-buffer": { 702 | "version": "5.2.1", 703 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", 704 | "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" 705 | } 706 | } 707 | }, 708 | "mongoose-legacy-pluralize": { 709 | "version": "1.0.2", 710 | "resolved": "https://registry.npmjs.org/mongoose-legacy-pluralize/-/mongoose-legacy-pluralize-1.0.2.tgz", 711 | "integrity": "sha512-Yo/7qQU4/EyIS8YDFSeenIvXxZN+ld7YdV9LqFVQJzTLye8unujAWPZ4NWKfFA+RNjh+wvTWKY9Z3E5XM6ZZiQ==" 712 | }, 713 | "moo": { 714 | "version": "0.5.1", 715 | "resolved": "https://registry.npmjs.org/moo/-/moo-0.5.1.tgz", 716 | "integrity": "sha512-I1mnb5xn4fO80BH9BLcF0yLypy2UKl+Cb01Fu0hJRkJjlCRtxZMWkTdAtDd5ZqCOxtCkhmRwyI57vWT+1iZ67w==" 717 | }, 718 | "mpath": { 719 | "version": "0.8.4", 720 | "resolved": "https://registry.npmjs.org/mpath/-/mpath-0.8.4.tgz", 721 | "integrity": "sha512-DTxNZomBcTWlrMW76jy1wvV37X/cNNxPW1y2Jzd4DZkAaC5ZGsm8bfGfNOthcDuRJujXLqiuS6o3Tpy0JEoh7g==" 722 | }, 723 | "mquery": { 724 | "version": "3.2.5", 725 | "resolved": "https://registry.npmjs.org/mquery/-/mquery-3.2.5.tgz", 726 | "integrity": "sha512-VjOKHHgU84wij7IUoZzFRU07IAxd5kWJaDmyUzQlbjHjyoeK5TNeeo8ZsFDtTYnSgpW6n/nMNIHvE3u8Lbrf4A==", 727 | "requires": { 728 | "bluebird": "3.5.1", 729 | "debug": "3.1.0", 730 | "regexp-clone": "^1.0.0", 731 | "safe-buffer": "5.1.2", 732 | "sliced": "1.0.1" 733 | }, 734 | "dependencies": { 735 | "debug": { 736 | "version": "3.1.0", 737 | "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", 738 | "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", 739 | "requires": { 740 | "ms": "2.0.0" 741 | } 742 | } 743 | } 744 | }, 745 | "ms": { 746 | "version": "2.0.0", 747 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 748 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" 749 | }, 750 | "nearley": { 751 | "version": "2.20.1", 752 | "resolved": "https://registry.npmjs.org/nearley/-/nearley-2.20.1.tgz", 753 | "integrity": "sha512-+Mc8UaAebFzgV+KpI5n7DasuuQCHA89dmwm7JXw3TV43ukfNQ9DnBH3Mdb2g/I4Fdxc26pwimBWvjIw0UAILSQ==", 754 | "requires": { 755 | "commander": "^2.19.0", 756 | "moo": "^0.5.0", 757 | "railroad-diagrams": "^1.0.0", 758 | "randexp": "0.4.6" 759 | } 760 | }, 761 | "negotiator": { 762 | "version": "0.6.3", 763 | "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", 764 | "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==" 765 | }, 766 | "node-fetch": { 767 | "version": "2.6.7", 768 | "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", 769 | "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", 770 | "requires": { 771 | "whatwg-url": "^5.0.0" 772 | } 773 | }, 774 | "node-rsa": { 775 | "version": "0.4.2", 776 | "resolved": "https://registry.npmjs.org/node-rsa/-/node-rsa-0.4.2.tgz", 777 | "integrity": "sha1-1jkXKewWqDDtWjgEKzFX0tXXJTA=", 778 | "requires": { 779 | "asn1": "0.2.3" 780 | } 781 | }, 782 | "object-inspect": { 783 | "version": "1.12.2", 784 | "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz", 785 | "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==" 786 | }, 787 | "on-finished": { 788 | "version": "2.4.1", 789 | "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", 790 | "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", 791 | "requires": { 792 | "ee-first": "1.1.1" 793 | } 794 | }, 795 | "optional-require": { 796 | "version": "1.0.3", 797 | "resolved": "https://registry.npmjs.org/optional-require/-/optional-require-1.0.3.tgz", 798 | "integrity": "sha512-RV2Zp2MY2aeYK5G+B/Sps8lW5NHAzE5QClbFP15j+PWmP+T9PxlJXBOOLoSAdgwFvS4t0aMR4vpedMkbHfh0nA==" 799 | }, 800 | "parseurl": { 801 | "version": "1.3.3", 802 | "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", 803 | "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" 804 | }, 805 | "path-to-regexp": { 806 | "version": "0.1.7", 807 | "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", 808 | "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==" 809 | }, 810 | "prismarine-chat": { 811 | "version": "1.3.3", 812 | "resolved": "https://registry.npmjs.org/prismarine-chat/-/prismarine-chat-1.3.3.tgz", 813 | "integrity": "sha512-+J74KqO3ckrIeZh6M2yM6zFhJrP3a0fxYnE6R/DJo1Tl0ruOP/vHBBZASyqBRplWlWIQettH5YkmnwkM1V4WgA==", 814 | "requires": { 815 | "minecraft-data": "^2.62.1", 816 | "mojangson": "^2.0.1", 817 | "prismarine-item": "^1.10.0", 818 | "prismarine-nbt": "^1.6.0", 819 | "sprintf-js": "^1.1.2" 820 | } 821 | }, 822 | "prismarine-item": { 823 | "version": "1.11.0", 824 | "resolved": "https://registry.npmjs.org/prismarine-item/-/prismarine-item-1.11.0.tgz", 825 | "integrity": "sha512-AyXYaGK6nEFwUwiQ3c9hrrSyA6DuViLLpPtAqnTgn7HtPx+dhyLuU7EsxZss/vbyTuKIWNdwEGXidPZ01Euj4w==", 826 | "requires": { 827 | "prismarine-nbt": "^1.4.0" 828 | } 829 | }, 830 | "prismarine-nbt": { 831 | "version": "1.6.0", 832 | "resolved": "https://registry.npmjs.org/prismarine-nbt/-/prismarine-nbt-1.6.0.tgz", 833 | "integrity": "sha512-h0ECvIjjwjMOtsmHxHc8hNY7kzktnKqKXmOHF0AkmH7OjkcHNAFsWRiZNvfc76rOhNonRutHvTVAlh/eLtK0oA==", 834 | "requires": { 835 | "protodef": "^1.9.0" 836 | } 837 | }, 838 | "process-nextick-args": { 839 | "version": "2.0.1", 840 | "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", 841 | "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" 842 | }, 843 | "protodef": { 844 | "version": "1.14.0", 845 | "resolved": "https://registry.npmjs.org/protodef/-/protodef-1.14.0.tgz", 846 | "integrity": "sha512-rL1WRlBC8LbAgBTa401eHMqnkX6zy1pHgS4kTSJVJ8rwP/AgVuWijGE3S3XHRkRjB/+4U1jMTqRdmtGdIqVOKQ==", 847 | "requires": { 848 | "lodash.get": "^4.4.2", 849 | "lodash.reduce": "^4.6.0", 850 | "protodef-validator": "^1.3.0", 851 | "readable-stream": "^3.0.3" 852 | } 853 | }, 854 | "protodef-validator": { 855 | "version": "1.3.1", 856 | "resolved": "https://registry.npmjs.org/protodef-validator/-/protodef-validator-1.3.1.tgz", 857 | "integrity": "sha512-lZ5FWKZYR9xOjpMw1+EfZRfCjzNRQWPq+Dk+jki47Sikl2EeWEPnTfnJERwnU/EwFq6us+0zqHHzSsmLeYX+Lg==", 858 | "requires": { 859 | "ajv": "^6.5.4" 860 | } 861 | }, 862 | "proxy-addr": { 863 | "version": "2.0.7", 864 | "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", 865 | "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", 866 | "requires": { 867 | "forwarded": "0.2.0", 868 | "ipaddr.js": "1.9.1" 869 | } 870 | }, 871 | "punycode": { 872 | "version": "2.1.1", 873 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", 874 | "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" 875 | }, 876 | "qs": { 877 | "version": "6.11.0", 878 | "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", 879 | "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", 880 | "requires": { 881 | "side-channel": "^1.0.4" 882 | } 883 | }, 884 | "railroad-diagrams": { 885 | "version": "1.0.0", 886 | "resolved": "https://registry.npmjs.org/railroad-diagrams/-/railroad-diagrams-1.0.0.tgz", 887 | "integrity": "sha1-635iZ1SN3t+4mcG5Dlc3RVnN234=" 888 | }, 889 | "randexp": { 890 | "version": "0.4.6", 891 | "resolved": "https://registry.npmjs.org/randexp/-/randexp-0.4.6.tgz", 892 | "integrity": "sha512-80WNmd9DA0tmZrw9qQa62GPPWfuXJknrmVmLcxvq4uZBdYqb1wYoKTmnlGUchvVWe0XiLupYkBoXVOxz3C8DYQ==", 893 | "requires": { 894 | "discontinuous-range": "1.0.0", 895 | "ret": "~0.1.10" 896 | } 897 | }, 898 | "range-parser": { 899 | "version": "1.2.1", 900 | "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", 901 | "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" 902 | }, 903 | "raw-body": { 904 | "version": "2.5.1", 905 | "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", 906 | "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", 907 | "requires": { 908 | "bytes": "3.1.2", 909 | "http-errors": "2.0.0", 910 | "iconv-lite": "0.4.24", 911 | "unpipe": "1.0.0" 912 | } 913 | }, 914 | "readable-stream": { 915 | "version": "3.6.0", 916 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", 917 | "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", 918 | "requires": { 919 | "inherits": "^2.0.3", 920 | "string_decoder": "^1.1.1", 921 | "util-deprecate": "^1.0.1" 922 | } 923 | }, 924 | "regexp-clone": { 925 | "version": "1.0.0", 926 | "resolved": "https://registry.npmjs.org/regexp-clone/-/regexp-clone-1.0.0.tgz", 927 | "integrity": "sha512-TuAasHQNamyyJ2hb97IuBEif4qBHGjPHBS64sZwytpLEqtBQ1gPJTnOaQ6qmpET16cK14kkjbazl6+p0RRv0yw==" 928 | }, 929 | "require-at": { 930 | "version": "1.0.6", 931 | "resolved": "https://registry.npmjs.org/require-at/-/require-at-1.0.6.tgz", 932 | "integrity": "sha512-7i1auJbMUrXEAZCOQ0VNJgmcT2VOKPRl2YGJwgpHpC9CE91Mv4/4UYIUm4chGJaI381ZDq1JUicFii64Hapd8g==" 933 | }, 934 | "ret": { 935 | "version": "0.1.15", 936 | "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", 937 | "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==" 938 | }, 939 | "safe-buffer": { 940 | "version": "5.1.2", 941 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", 942 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" 943 | }, 944 | "safer-buffer": { 945 | "version": "2.1.2", 946 | "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", 947 | "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" 948 | }, 949 | "saslprep": { 950 | "version": "1.0.3", 951 | "resolved": "https://registry.npmjs.org/saslprep/-/saslprep-1.0.3.tgz", 952 | "integrity": "sha512-/MY/PEMbk2SuY5sScONwhUDsV2p77Znkb/q3nSVstq/yQzYJOH/Azh29p9oJLsl3LnQwSvZDKagDGBsBwSooag==", 953 | "optional": true, 954 | "requires": { 955 | "sparse-bitfield": "^3.0.3" 956 | } 957 | }, 958 | "send": { 959 | "version": "0.18.0", 960 | "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", 961 | "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", 962 | "requires": { 963 | "debug": "2.6.9", 964 | "depd": "2.0.0", 965 | "destroy": "1.2.0", 966 | "encodeurl": "~1.0.2", 967 | "escape-html": "~1.0.3", 968 | "etag": "~1.8.1", 969 | "fresh": "0.5.2", 970 | "http-errors": "2.0.0", 971 | "mime": "1.6.0", 972 | "ms": "2.1.3", 973 | "on-finished": "2.4.1", 974 | "range-parser": "~1.2.1", 975 | "statuses": "2.0.1" 976 | }, 977 | "dependencies": { 978 | "ms": { 979 | "version": "2.1.3", 980 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", 981 | "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" 982 | } 983 | } 984 | }, 985 | "serve-static": { 986 | "version": "1.15.0", 987 | "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", 988 | "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", 989 | "requires": { 990 | "encodeurl": "~1.0.2", 991 | "escape-html": "~1.0.3", 992 | "parseurl": "~1.3.3", 993 | "send": "0.18.0" 994 | } 995 | }, 996 | "setprototypeof": { 997 | "version": "1.2.0", 998 | "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", 999 | "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" 1000 | }, 1001 | "side-channel": { 1002 | "version": "1.0.4", 1003 | "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", 1004 | "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", 1005 | "requires": { 1006 | "call-bind": "^1.0.0", 1007 | "get-intrinsic": "^1.0.2", 1008 | "object-inspect": "^1.9.0" 1009 | } 1010 | }, 1011 | "sift": { 1012 | "version": "13.5.2", 1013 | "resolved": "https://registry.npmjs.org/sift/-/sift-13.5.2.tgz", 1014 | "integrity": "sha512-+gxdEOMA2J+AI+fVsCqeNn7Tgx3M9ZN9jdi95939l1IJ8cZsqS8sqpJyOkic2SJk+1+98Uwryt/gL6XDaV+UZA==" 1015 | }, 1016 | "sliced": { 1017 | "version": "1.0.1", 1018 | "resolved": "https://registry.npmjs.org/sliced/-/sliced-1.0.1.tgz", 1019 | "integrity": "sha512-VZBmZP8WU3sMOZm1bdgTadsQbcscK0UM8oKxKVBs4XAhUo2Xxzm/OFMGBkPusxw9xL3Uy8LrzEqGqJhclsr0yA==" 1020 | }, 1021 | "sparse-bitfield": { 1022 | "version": "3.0.3", 1023 | "resolved": "https://registry.npmjs.org/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz", 1024 | "integrity": "sha512-kvzhi7vqKTfkh0PZU+2D2PIllw2ymqJKujUcyPMd9Y75Nv4nPbGJZXNhxsgdQab2BmlDct1YnfQCguEvHr7VsQ==", 1025 | "optional": true, 1026 | "requires": { 1027 | "memory-pager": "^1.0.2" 1028 | } 1029 | }, 1030 | "sprintf-js": { 1031 | "version": "1.1.2", 1032 | "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.2.tgz", 1033 | "integrity": "sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug==" 1034 | }, 1035 | "statuses": { 1036 | "version": "2.0.1", 1037 | "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", 1038 | "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==" 1039 | }, 1040 | "string_decoder": { 1041 | "version": "1.3.0", 1042 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", 1043 | "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", 1044 | "requires": { 1045 | "safe-buffer": "~5.2.0" 1046 | }, 1047 | "dependencies": { 1048 | "safe-buffer": { 1049 | "version": "5.2.1", 1050 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", 1051 | "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" 1052 | } 1053 | } 1054 | }, 1055 | "stripcolorcodes": { 1056 | "version": "0.1.0", 1057 | "resolved": "https://registry.npmjs.org/stripcolorcodes/-/stripcolorcodes-0.1.0.tgz", 1058 | "integrity": "sha1-Hkuhuf74zC8PcFvaK9mds7ylXIA=" 1059 | }, 1060 | "toidentifier": { 1061 | "version": "1.0.1", 1062 | "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", 1063 | "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==" 1064 | }, 1065 | "tr46": { 1066 | "version": "0.0.3", 1067 | "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", 1068 | "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=" 1069 | }, 1070 | "type-is": { 1071 | "version": "1.6.18", 1072 | "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", 1073 | "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", 1074 | "requires": { 1075 | "media-typer": "0.3.0", 1076 | "mime-types": "~2.1.24" 1077 | } 1078 | }, 1079 | "unpipe": { 1080 | "version": "1.0.0", 1081 | "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", 1082 | "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==" 1083 | }, 1084 | "uri-js": { 1085 | "version": "4.4.1", 1086 | "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", 1087 | "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", 1088 | "requires": { 1089 | "punycode": "^2.1.0" 1090 | } 1091 | }, 1092 | "util-deprecate": { 1093 | "version": "1.0.2", 1094 | "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", 1095 | "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" 1096 | }, 1097 | "utils-merge": { 1098 | "version": "1.0.1", 1099 | "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", 1100 | "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==" 1101 | }, 1102 | "uuid": { 1103 | "version": "8.3.2", 1104 | "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", 1105 | "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==" 1106 | }, 1107 | "uuid-1345": { 1108 | "version": "1.0.2", 1109 | "resolved": "https://registry.npmjs.org/uuid-1345/-/uuid-1345-1.0.2.tgz", 1110 | "integrity": "sha512-bA5zYZui+3nwAc0s3VdGQGBfbVsJLVX7Np7ch2aqcEWFi5lsAEcmO3+lx3djM1npgpZI8KY2FITZ2uYTnYUYyw==", 1111 | "requires": { 1112 | "macaddress": "^0.5.1" 1113 | } 1114 | }, 1115 | "vary": { 1116 | "version": "1.1.2", 1117 | "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", 1118 | "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==" 1119 | }, 1120 | "webidl-conversions": { 1121 | "version": "3.0.1", 1122 | "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", 1123 | "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=" 1124 | }, 1125 | "whatwg-url": { 1126 | "version": "5.0.0", 1127 | "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", 1128 | "integrity": "sha1-lmRU6HZUYuN2RNNib2dCzotwll0=", 1129 | "requires": { 1130 | "tr46": "~0.0.3", 1131 | "webidl-conversions": "^3.0.0" 1132 | } 1133 | }, 1134 | "yallist": { 1135 | "version": "4.0.0", 1136 | "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", 1137 | "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" 1138 | }, 1139 | "yggdrasil": { 1140 | "version": "1.6.1", 1141 | "resolved": "https://registry.npmjs.org/yggdrasil/-/yggdrasil-1.6.1.tgz", 1142 | "integrity": "sha512-6rUJ0A7YNVNd1K+8EvmVUc+l8CbhW7VKnN747BrC+YCukZj9C5rNsGxIZGf4MwxMHFDy/YNY++Gqf0VUxKy2ww==", 1143 | "requires": { 1144 | "node-fetch": "^2.6.1", 1145 | "uuid": "^8.2.0" 1146 | } 1147 | } 1148 | } 1149 | } 1150 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "blockedmc-website", 3 | "version": "1.0.0", 4 | "description": "", 5 | "main": "index.js", 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1" 8 | }, 9 | "repository": { 10 | "type": "git", 11 | "url": "git+https://github.com/BlockedServersMC/Website.git" 12 | }, 13 | "author": "", 14 | "license": "ISC", 15 | "bugs": { 16 | "url": "https://github.com/BlockedServersMC/Website/issues" 17 | }, 18 | "homepage": "https://github.com/BlockedServersMC/Website#readme", 19 | "dependencies": { 20 | "body-parser": "^1.20.1", 21 | "express": "^4.18.2", 22 | "jethro": "^2.7.1", 23 | "minecraft-data": "^2.95.0", 24 | "minecraft-protocol": "^1.26.5", 25 | "mojangson": "^2.0.2", 26 | "mongoose": "^5.13.15", 27 | "prismarine-chat": "^1.3.3" 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /public/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | Is My Server Blocked? 4 | 5 | 6 | 7 | 8 | 9 | 14 |
15 |
16 |
17 |
18 |

As of today (1-May-2016), Mojang has introduced code that blocks client access to multiplayer servers that are breaking the EULA to the vanilla client. 19 |

20 | So I have created this website with the help of @xBytezz to let server owners search their IP hash to check for blacklist status. Just type in your IP and it will search for you. 21 |

22 | We have also created a twitter bot you can follow over at @BlockedServers which will post updates as they happen. 23 |

24 | Much love - @minecoder 25 |
26 | The source of this website is on Github and we currently hold some hashes in the database! 27 |

28 |
29 |
30 |
31 |
32 | search 33 | 34 | 35 |
36 |
37 |
38 |
39 |
40 | Please search IP's in the field above! 41 |
42 |
43 |
44 |
45 | 46 | 47 | 121 | 122 | 123 | --------------------------------------------------------------------------------