mirror of
https://github.com/PretendoNetwork/account.git
synced 2024-06-01 03:28:07 -04:00
Large restructure
Restructured the codebase a bit. No big changes really. Need to handle registration sessions better
This commit is contained in:
parent
f447d44921
commit
18b96b06c5
|
@ -43,13 +43,13 @@ prompt.get(properties, function (error, { username, email, password }) {
|
|||
offset: -14400
|
||||
},
|
||||
mii: {
|
||||
name: 'UserMii',
|
||||
name: 'bella',
|
||||
primary: true,
|
||||
data: 'AwAAQIhluwTgxEAA2NlGWQOzuI0n2QAAAEBsAG8AZwBpAG4AdABlAHMAdAAAAEBAAAAhAQJoRBgmNEYUgRIXaA0AACkAUkhQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMw7', // hardcoded for now. currently testing
|
||||
id: util.generateRandomInt(10),
|
||||
hash: miiHash,
|
||||
image_url: 'https://mii-secure.account.nintendo.net/2rtgf01lztoqo_standard.tga',
|
||||
image_id: util.generateRandomInt(10)
|
||||
data: 'AwAAQOlVognnx0GC2X0LLQOzuI0n2QAAAUBiAGUAbABsAGEAAABFAAAAAAAAAEBAEgCBAQRoQxggNEYUgRIXaA0AACkDUkhQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP6G', // hardcoded for now. currently testing
|
||||
id: 1330180812,
|
||||
hash: '1o54mkuuxfg8t',
|
||||
image_url: 'https://mii-secure.account.nintendo.net/1o54mkuuxfg8t_standard.tga',
|
||||
image_id: 1330180887
|
||||
},
|
||||
flags: {
|
||||
active: true,
|
||||
|
|
150
package-lock.json
generated
150
package-lock.json
generated
|
@ -154,12 +154,12 @@
|
|||
}
|
||||
},
|
||||
"bcrypt": {
|
||||
"version": "3.0.7",
|
||||
"resolved": "https://registry.npmjs.org/bcrypt/-/bcrypt-3.0.7.tgz",
|
||||
"integrity": "sha512-K5UglF9VQvBMHl/1elNyyFvAfOY9Bj+rpKrCSR9sFwcW8FywAYJSRwTURNej5TaAK2TEJkcJ6r6lh1YPmspx5Q==",
|
||||
"version": "5.0.0",
|
||||
"resolved": "https://registry.npmjs.org/bcrypt/-/bcrypt-5.0.0.tgz",
|
||||
"integrity": "sha512-jB0yCBl4W/kVHM2whjfyqnxTmOHkCX4kHEa5nYKSoGeYe8YrjTYTc87/6bwt1g8cmV0QrbhKriETg9jWtcREhg==",
|
||||
"requires": {
|
||||
"nan": "2.14.0",
|
||||
"node-pre-gyp": "0.13.0"
|
||||
"node-addon-api": "^3.0.0",
|
||||
"node-pre-gyp": "0.15.0"
|
||||
}
|
||||
},
|
||||
"bluebird": {
|
||||
|
@ -204,9 +204,9 @@
|
|||
"integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg=="
|
||||
},
|
||||
"chownr": {
|
||||
"version": "1.1.3",
|
||||
"resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.3.tgz",
|
||||
"integrity": "sha512-i70fVHhmV3DtTl6nqvZOnIjbY0Pe4kAUjwHj8z0zAdgBtYrJyYwLKCCuRBQ5ppkyL0AkN7HKRnETdmdp1zqNXw=="
|
||||
"version": "1.1.4",
|
||||
"resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz",
|
||||
"integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg=="
|
||||
},
|
||||
"code-point-at": {
|
||||
"version": "1.1.0",
|
||||
|
@ -356,33 +356,6 @@
|
|||
"vary": "~1.1.2"
|
||||
}
|
||||
},
|
||||
"express-session": {
|
||||
"version": "1.17.0",
|
||||
"resolved": "https://registry.npmjs.org/express-session/-/express-session-1.17.0.tgz",
|
||||
"integrity": "sha512-t4oX2z7uoSqATbMfsxWMbNjAL0T5zpvcJCk3Z9wnPPN7ibddhnmDZXHfEcoBMG2ojKXZoCyPMc5FbtK+G7SoDg==",
|
||||
"requires": {
|
||||
"cookie": "0.4.0",
|
||||
"cookie-signature": "1.0.6",
|
||||
"debug": "2.6.9",
|
||||
"depd": "~2.0.0",
|
||||
"on-headers": "~1.0.2",
|
||||
"parseurl": "~1.3.3",
|
||||
"safe-buffer": "5.2.0",
|
||||
"uid-safe": "~2.1.5"
|
||||
},
|
||||
"dependencies": {
|
||||
"depd": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
|
||||
"integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw=="
|
||||
},
|
||||
"safe-buffer": {
|
||||
"version": "5.2.0",
|
||||
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.0.tgz",
|
||||
"integrity": "sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg=="
|
||||
}
|
||||
}
|
||||
},
|
||||
"express-subdomain": {
|
||||
"version": "1.0.5",
|
||||
"resolved": "https://registry.npmjs.org/express-subdomain/-/express-subdomain-1.0.5.tgz",
|
||||
|
@ -526,9 +499,9 @@
|
|||
"integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4="
|
||||
},
|
||||
"ini": {
|
||||
"version": "1.3.5",
|
||||
"resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz",
|
||||
"integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw=="
|
||||
"version": "1.3.8",
|
||||
"resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz",
|
||||
"integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew=="
|
||||
},
|
||||
"ipaddr.js": {
|
||||
"version": "1.9.0",
|
||||
|
@ -624,9 +597,9 @@
|
|||
}
|
||||
},
|
||||
"minimist": {
|
||||
"version": "0.0.8",
|
||||
"resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",
|
||||
"integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0="
|
||||
"version": "1.2.5",
|
||||
"resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz",
|
||||
"integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw=="
|
||||
},
|
||||
"minipass": {
|
||||
"version": "2.9.0",
|
||||
|
@ -646,11 +619,11 @@
|
|||
}
|
||||
},
|
||||
"mkdirp": {
|
||||
"version": "0.5.1",
|
||||
"resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz",
|
||||
"integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=",
|
||||
"version": "0.5.5",
|
||||
"resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz",
|
||||
"integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==",
|
||||
"requires": {
|
||||
"minimist": "0.0.8"
|
||||
"minimist": "^1.2.5"
|
||||
}
|
||||
},
|
||||
"moment": {
|
||||
|
@ -765,20 +738,15 @@
|
|||
"resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz",
|
||||
"integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA=="
|
||||
},
|
||||
"nan": {
|
||||
"version": "2.14.0",
|
||||
"resolved": "https://registry.npmjs.org/nan/-/nan-2.14.0.tgz",
|
||||
"integrity": "sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg=="
|
||||
},
|
||||
"ncp": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/ncp/-/ncp-1.0.1.tgz",
|
||||
"integrity": "sha1-0VNn5cuHQyuhF9K/gP30Wuz7QkY="
|
||||
},
|
||||
"needle": {
|
||||
"version": "2.4.0",
|
||||
"resolved": "https://registry.npmjs.org/needle/-/needle-2.4.0.tgz",
|
||||
"integrity": "sha512-4Hnwzr3mi5L97hMYeNl8wRW/Onhy4nUKR/lVemJ8gJedxxUyBLm9kkrDColJvoSfwi0jCNhD+xCdOtiGDQiRZg==",
|
||||
"version": "2.6.0",
|
||||
"resolved": "https://registry.npmjs.org/needle/-/needle-2.6.0.tgz",
|
||||
"integrity": "sha512-KKYdza4heMsEfSWD7VPUIz3zX2XDwOyX2d+geb4vrERZMT5RMU6ujjaD+I5Yr54uZxQ2w6XRTAhHBbSCyovZBg==",
|
||||
"requires": {
|
||||
"debug": "^3.2.6",
|
||||
"iconv-lite": "^0.4.4",
|
||||
|
@ -786,17 +754,17 @@
|
|||
},
|
||||
"dependencies": {
|
||||
"debug": {
|
||||
"version": "3.2.6",
|
||||
"resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz",
|
||||
"integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==",
|
||||
"version": "3.2.7",
|
||||
"resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
|
||||
"integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
|
||||
"requires": {
|
||||
"ms": "^2.1.1"
|
||||
}
|
||||
},
|
||||
"ms": {
|
||||
"version": "2.1.2",
|
||||
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
|
||||
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
|
||||
"version": "2.1.3",
|
||||
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
|
||||
"integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@ -805,21 +773,26 @@
|
|||
"resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz",
|
||||
"integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw=="
|
||||
},
|
||||
"node-addon-api": {
|
||||
"version": "3.1.0",
|
||||
"resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.1.0.tgz",
|
||||
"integrity": "sha512-flmrDNB06LIl5lywUz7YlNGZH/5p0M7W28k8hzd9Lshtdh1wshD2Y+U4h9LD6KObOy1f+fEVdgprPrEymjM5uw=="
|
||||
},
|
||||
"node-pre-gyp": {
|
||||
"version": "0.13.0",
|
||||
"resolved": "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.13.0.tgz",
|
||||
"integrity": "sha512-Md1D3xnEne8b/HGVQkZZwV27WUi1ZRuZBij24TNaZwUPU3ZAFtvT6xxJGaUVillfmMKnn5oD1HoGsp2Ftik7SQ==",
|
||||
"version": "0.15.0",
|
||||
"resolved": "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.15.0.tgz",
|
||||
"integrity": "sha512-7QcZa8/fpaU/BKenjcaeFF9hLz2+7S9AqyXFhlH/rilsQ/hPZKK32RtR5EQHJElgu+q5RfbJ34KriI79UWaorA==",
|
||||
"requires": {
|
||||
"detect-libc": "^1.0.2",
|
||||
"mkdirp": "^0.5.1",
|
||||
"needle": "^2.2.1",
|
||||
"mkdirp": "^0.5.3",
|
||||
"needle": "^2.5.0",
|
||||
"nopt": "^4.0.1",
|
||||
"npm-packlist": "^1.1.6",
|
||||
"npmlog": "^4.0.2",
|
||||
"rc": "^1.2.7",
|
||||
"rimraf": "^2.6.1",
|
||||
"semver": "^5.3.0",
|
||||
"tar": "^4"
|
||||
"tar": "^4.4.2"
|
||||
}
|
||||
},
|
||||
"node-rsa": {
|
||||
|
@ -836,9 +809,9 @@
|
|||
"integrity": "sha512-g0n4nH1ONGvqYo1v72uSWvF/MRNnnq1LzmSzXb/6EPF3LFb51akOhgG3K2+aETAsJx90/Q5eFNTntu4vBCwyQQ=="
|
||||
},
|
||||
"nopt": {
|
||||
"version": "4.0.1",
|
||||
"resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.1.tgz",
|
||||
"integrity": "sha1-0NRoWv1UFRk8jHUFYC0NF81kR00=",
|
||||
"version": "4.0.3",
|
||||
"resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.3.tgz",
|
||||
"integrity": "sha512-CvaGwVMztSMJLOeXPrez7fyfObdZqNUK1cPAEzLHrTybIua9pMdmmPR5YwtfNftIOMv3DPUhFaxsZMNTQO20Kg==",
|
||||
"requires": {
|
||||
"abbrev": "1",
|
||||
"osenv": "^0.1.4"
|
||||
|
@ -858,12 +831,13 @@
|
|||
"integrity": "sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA=="
|
||||
},
|
||||
"npm-packlist": {
|
||||
"version": "1.4.7",
|
||||
"resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-1.4.7.tgz",
|
||||
"integrity": "sha512-vAj7dIkp5NhieaGZxBJB8fF4R0078rqsmhJcAfXZ6O7JJhjhPK96n5Ry1oZcfLXgfun0GWTZPOxaEyqv8GBykQ==",
|
||||
"version": "1.4.8",
|
||||
"resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-1.4.8.tgz",
|
||||
"integrity": "sha512-5+AZgwru5IevF5ZdnFglB5wNlHG1AOOuw28WhUq8/8emhBmLv6jX5by4WJCh7lW0uSYZYS6DXqIsyZVIXRZU9A==",
|
||||
"requires": {
|
||||
"ignore-walk": "^3.0.1",
|
||||
"npm-bundled": "^1.0.1"
|
||||
"npm-bundled": "^1.0.1",
|
||||
"npm-normalize-package-bin": "^1.0.1"
|
||||
}
|
||||
},
|
||||
"npmlog": {
|
||||
|
@ -984,11 +958,6 @@
|
|||
"resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz",
|
||||
"integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ=="
|
||||
},
|
||||
"random-bytes": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/random-bytes/-/random-bytes-1.0.0.tgz",
|
||||
"integrity": "sha1-T2ih3Arli9P7lYSMMDJNt11kNgs="
|
||||
},
|
||||
"range-parser": {
|
||||
"version": "1.2.1",
|
||||
"resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
|
||||
|
@ -1014,13 +983,6 @@
|
|||
"ini": "~1.3.0",
|
||||
"minimist": "^1.2.0",
|
||||
"strip-json-comments": "~2.0.1"
|
||||
},
|
||||
"dependencies": {
|
||||
"minimist": {
|
||||
"version": "1.2.0",
|
||||
"resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
|
||||
"integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ="
|
||||
}
|
||||
}
|
||||
},
|
||||
"read": {
|
||||
|
@ -1032,9 +994,9 @@
|
|||
}
|
||||
},
|
||||
"readable-stream": {
|
||||
"version": "2.3.6",
|
||||
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
|
||||
"integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
|
||||
"version": "2.3.7",
|
||||
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz",
|
||||
"integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
|
||||
"requires": {
|
||||
"core-util-is": "~1.0.0",
|
||||
"inherits": "~2.0.3",
|
||||
|
@ -1160,9 +1122,9 @@
|
|||
"integrity": "sha512-oqD7PMJ+uO6jV9EQCl0LrRw1OwsiPsiFQR5AR30heR+4Dl7jBBbDLnNvWiak20tzZlSE1H7RB30SX/1j/YYT7g=="
|
||||
},
|
||||
"signal-exit": {
|
||||
"version": "3.0.2",
|
||||
"resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz",
|
||||
"integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0="
|
||||
"version": "3.0.3",
|
||||
"resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz",
|
||||
"integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA=="
|
||||
},
|
||||
"sliced": {
|
||||
"version": "1.0.1",
|
||||
|
@ -1247,14 +1209,6 @@
|
|||
"mime-types": "~2.1.24"
|
||||
}
|
||||
},
|
||||
"uid-safe": {
|
||||
"version": "2.1.5",
|
||||
"resolved": "https://registry.npmjs.org/uid-safe/-/uid-safe-2.1.5.tgz",
|
||||
"integrity": "sha512-KPHm4VL5dDXKz01UuEd88Df+KzynaohSL9fBh096KWAxSKZQDI2uBrVqtvRM4rwrIrRRKsdLNML/lnaaVSRioA==",
|
||||
"requires": {
|
||||
"random-bytes": "~1.0.0"
|
||||
}
|
||||
},
|
||||
"universalify": {
|
||||
"version": "0.1.2",
|
||||
"resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz",
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
"name": "account",
|
||||
"version": "1.0.0",
|
||||
"description": "",
|
||||
"main": "./src/server",
|
||||
"main": "./src/server.js",
|
||||
"scripts": {
|
||||
"lint": "./node_modules/.bin/eslint .",
|
||||
"start": "node .",
|
||||
|
@ -20,10 +20,9 @@
|
|||
},
|
||||
"homepage": "https://github.com/PretendoNetwork/account#readme",
|
||||
"dependencies": {
|
||||
"bcrypt": "^3.0.7",
|
||||
"bcrypt": "^5.0.0",
|
||||
"colors": "^1.4.0",
|
||||
"express": "^4.17.1",
|
||||
"express-session": "^1.17.0",
|
||||
"express-subdomain": "^1.0.5",
|
||||
"fs-extra": "^8.1.0",
|
||||
"moment": "^2.24.0",
|
||||
|
|
|
@ -4,13 +4,15 @@ const express = require('express');
|
|||
const morgan = require('morgan');
|
||||
const xmlparser = require('./middleware/xml-parser');
|
||||
const database = require('./database');
|
||||
const util = require('./util');
|
||||
const logger = require('../logger');
|
||||
const config = require('./config.json');
|
||||
|
||||
const { http: { port } } = config;
|
||||
const app = express();
|
||||
|
||||
const account = require('./services/account');
|
||||
const accountWiiU = require('./services/wiiu');
|
||||
//const account3DS = require('./services/3ds');
|
||||
|
||||
// START APPLICATION
|
||||
app.set('etag', false);
|
||||
|
@ -26,22 +28,35 @@ app.use(express.urlencoded({
|
|||
app.use(xmlparser);
|
||||
|
||||
// import the servers into one
|
||||
app.use(account);
|
||||
app.use(accountWiiU);
|
||||
//app.use(account3DS);
|
||||
|
||||
// 404 handler
|
||||
logger.info('Creating 404 status handler');
|
||||
app.use((request, response) => {
|
||||
const fullUrl = util.fullUrl(request);
|
||||
const deviceId = request.headers['X-Nintendo-Device-ID'] || 'Unknown';
|
||||
|
||||
logger.warn(`HTTP 404 at ${fullUrl} from ${deviceId}`);
|
||||
|
||||
response.status(404);
|
||||
response.send();
|
||||
response.json({
|
||||
app: 'api',
|
||||
status: 404,
|
||||
error: 'Route not found'
|
||||
});
|
||||
});
|
||||
|
||||
// non-404 error handler
|
||||
logger.info('Creating non-404 status handler');
|
||||
app.use((error, request, response) => {
|
||||
const status = error.status || 500;
|
||||
const fullUrl = util.fullUrl(request);
|
||||
const deviceId = request.headers['X-Nintendo-Device-ID'] || 'Unknown';
|
||||
|
||||
logger.warn(`HTTP ${status} at ${fullUrl} from ${deviceId}: ${error.message}`);
|
||||
|
||||
response.status(status);
|
||||
|
||||
response.json({
|
||||
app: 'api',
|
||||
status,
|
||||
|
|
22
src/services/3ds/index.js
Normal file
22
src/services/3ds/index.js
Normal file
|
@ -0,0 +1,22 @@
|
|||
// handles NASC endpoints
|
||||
|
||||
const express = require('express');
|
||||
const subdomain = require('express-subdomain');
|
||||
const logger = require('../../../logger');
|
||||
const routes = require('./routes');
|
||||
|
||||
// Main router for endpoints
|
||||
const router = express.Router();
|
||||
|
||||
// Router to handle the subdomain restriction
|
||||
const nasc = express.Router();
|
||||
|
||||
// Create subdomains
|
||||
logger.info('[ACCOUNT - 3DS] Creating \'nasc\' subdomain');
|
||||
router.use(subdomain('nasc', nasc));
|
||||
|
||||
// Setup routes
|
||||
logger.info('[ACCOUNT - 3DS] Applying imported routes');
|
||||
nasc.use('/ac', routes.ACCOUNT);
|
||||
|
||||
module.exports = router;
|
0
src/services/3ds/routes/account.js
Normal file
0
src/services/3ds/routes/account.js
Normal file
3
src/services/3ds/routes/index.js
Normal file
3
src/services/3ds/routes/index.js
Normal file
|
@ -0,0 +1,3 @@
|
|||
module.exports = {
|
||||
ACCOUNT: require('./account')
|
||||
};
|
|
@ -1,3 +1,5 @@
|
|||
// handles "account.nintendo.net" endpoints
|
||||
|
||||
const express = require('express');
|
||||
const subdomain = require('express-subdomain');
|
||||
const sessionMiddleware = require('../../middleware/session');
|
||||
|
@ -5,28 +7,29 @@ const pnidMiddleware = require('../../middleware/pnid');
|
|||
const logger = require('../../../logger');
|
||||
const routes = require('./routes');
|
||||
|
||||
// Main router for endpoints
|
||||
const router = express.Router();
|
||||
|
||||
// Router to handle the subdomain restriction
|
||||
const account = express.Router();
|
||||
|
||||
// Create subdomains
|
||||
logger.info('[ACCOUNT] Creating \'account\' subdomain');
|
||||
router.use(subdomain('account', account));
|
||||
|
||||
logger.info('[ACCOUNT] Importing middleware');
|
||||
logger.info('[ACCOUNT - WiiU] Importing middleware');
|
||||
account.use(sessionMiddleware);
|
||||
account.use(pnidMiddleware);
|
||||
|
||||
// Setup routes
|
||||
logger.info('[ACCOUNT] Applying imported routes');
|
||||
logger.info('[ACCOUNT - WiiU] Applying imported routes');
|
||||
account.use('/v1/api/admin', routes.ADMIN);
|
||||
account.use('/v1/api/content', routes.CONTENT);
|
||||
account.use('/v1/api/devices', routes.DEVICES);
|
||||
account.use('/v1/api/miis', routes.MIIS);
|
||||
account.use('/v1/api/oauth20', routes.OAUTH);
|
||||
account.use('/v1/api/people', routes.PEOPLE);
|
||||
account.use('/v1/api/provider', routes.PROVIDER);
|
||||
account.use('/v1/api/support', routes.SUPPORT);
|
||||
|
||||
// Main router for endpoints
|
||||
const router = express.Router();
|
||||
|
||||
// Create subdomains
|
||||
logger.info('[ACCOUNT - WiiU] Creating \'account\' subdomain');
|
||||
router.use(subdomain('account', account));
|
||||
|
||||
module.exports = router;
|
|
@ -2,6 +2,7 @@ module.exports = {
|
|||
ADMIN: require('./admin'),
|
||||
CONTENT: require('./content'),
|
||||
DEVICES: require('./devices'),
|
||||
MIIS: require('./miis'),
|
||||
OAUTH: require('./oauth'),
|
||||
PEOPLE: require('./people'),
|
||||
PROVIDER: require('./provider'),
|
95
src/services/wiiu/routes/miis.js
Normal file
95
src/services/wiiu/routes/miis.js
Normal file
|
@ -0,0 +1,95 @@
|
|||
const router = require('express').Router();
|
||||
const xmlbuilder = require('xmlbuilder');
|
||||
const { PNID } = require('../../../models/pnid');
|
||||
const clientHeaderCheck = require('../../../middleware/client-header');
|
||||
|
||||
/**
|
||||
* [GET]
|
||||
* Replacement for: https://account.nintendo.net/v1/api/miis
|
||||
* Description: Returns a list of NNID miis
|
||||
*/
|
||||
router.get('/', clientHeaderCheck, async (request, response) => {
|
||||
|
||||
const { pids } = request.query;
|
||||
|
||||
const results = await PNID.where('pid', pids);
|
||||
const miis = [];
|
||||
|
||||
// We don't have a Mii renderer yet so hard code the images
|
||||
const hardCodedImages = [
|
||||
{
|
||||
cached_url: 'http://mii-images.cdn.nintendo.net/zcz5c1xf62bb_standard.png',
|
||||
id: 1292086302,
|
||||
url: 'http://mii-images.cdn.nintendo.net/zcz5c1xf62bb_standard.png',
|
||||
type: 'standard'
|
||||
},
|
||||
{
|
||||
cached_url: 'http://mii-images.cdn.nintendo.net/zcz5c1xf62bb_frustrated_face.png',
|
||||
id: 1292086302,
|
||||
url: 'http://mii-images.cdn.nintendo.net/zcz5c1xf62bb_frustrated_face.png',
|
||||
type: 'frustrated_face'
|
||||
},
|
||||
{
|
||||
cached_url: 'http://mii-images.cdn.nintendo.net/zcz5c1xf62bb_happy_face.png',
|
||||
id: 1292086302,
|
||||
url: 'http://mii-images.cdn.nintendo.net/zcz5c1xf62bb_happy_face.png',
|
||||
type: 'happy_face'
|
||||
},
|
||||
{
|
||||
cached_url: 'http://mii-images.cdn.nintendo.net/zcz5c1xf62bb_like_face.png',
|
||||
id: 1292086302,
|
||||
url: 'http://mii-images.cdn.nintendo.net/zcz5c1xf62bb_like_face.png',
|
||||
type: 'like_face'
|
||||
},
|
||||
{
|
||||
cached_url: 'http://mii-images.cdn.nintendo.net/zcz5c1xf62bb_normal_face.png',
|
||||
id: 1292086302,
|
||||
url: 'http://mii-images.cdn.nintendo.net/zcz5c1xf62bb_normal_face.png',
|
||||
type: 'normal_face'
|
||||
},
|
||||
{
|
||||
cached_url: 'http://mii-images.cdn.nintendo.net/zcz5c1xf62bb_puzzled_face.png',
|
||||
id: 1292086302,
|
||||
url: 'http://mii-images.cdn.nintendo.net/zcz5c1xf62bb_puzzled_face.png',
|
||||
type: 'puzzled_face'
|
||||
},
|
||||
{
|
||||
cached_url: 'http://mii-images.cdn.nintendo.net/zcz5c1xf62bb_surprised_face.png',
|
||||
id: 1292086302,
|
||||
url: 'http://mii-images.cdn.nintendo.net/zcz5c1xf62bb_surprised_face.png',
|
||||
type: 'surprised_face'
|
||||
},
|
||||
{
|
||||
cached_url: 'http://mii-images.cdn.nintendo.net/zcz5c1xf62bb_whole_body.png',
|
||||
id: 1292086302,
|
||||
url: 'http://mii-images.cdn.nintendo.net/zcz5c1xf62bb_whole_body.png',
|
||||
type: 'whole_body'
|
||||
}
|
||||
];
|
||||
|
||||
for (const user of results) {
|
||||
const { mii } = user;
|
||||
|
||||
miis.push({
|
||||
data: mii.data.replace(/(\r\n|\n|\r)/gm, ''),
|
||||
id: mii.id,
|
||||
images: {
|
||||
image: hardCodedImages
|
||||
},
|
||||
name: mii.name,
|
||||
pid: user.pid,
|
||||
primary: mii.primary ? 'Y' : 'N',
|
||||
user_id: user.username
|
||||
});
|
||||
}
|
||||
|
||||
//console.log(results[0].mii.data.replace(/(\r\n|\n|\r)/gm, ''));
|
||||
|
||||
response.send(xmlbuilder.create({
|
||||
miis: {
|
||||
mii: miis
|
||||
}
|
||||
}).end());
|
||||
});
|
||||
|
||||
module.exports = router;
|
|
@ -15,6 +15,8 @@ router.get('/service_token/@me', async (request, response) => {
|
|||
const titleId = request.headers['x-nintendo-title-id'];
|
||||
const server = servers.find(({ title_ids }) => title_ids.includes(titleId));
|
||||
|
||||
console.log(titleId);
|
||||
|
||||
if (!server) {
|
||||
return response.send(xmlbuilder.create({
|
||||
errors: {
|
||||
|
@ -28,7 +30,7 @@ router.get('/service_token/@me', async (request, response) => {
|
|||
|
||||
const { name, system } = server;
|
||||
|
||||
const cryptoPath = `${__dirname}/../../../../certs/nex/${name}`;
|
||||
const cryptoPath = `${__dirname}/../../../../certs/service/${name}`;
|
||||
|
||||
if (!fs.pathExistsSync(cryptoPath)) {
|
||||
// Need to generate keys
|
12
src/util.js
12
src/util.js
|
@ -1,6 +1,7 @@
|
|||
const crypto = require('crypto');
|
||||
const NodeRSA = require('node-rsa');
|
||||
const fs = require('fs-extra');
|
||||
const url = require('url');
|
||||
|
||||
function nintendoPasswordHash(password, pid) {
|
||||
const pidBuffer = Buffer.alloc(4);
|
||||
|
@ -163,10 +164,19 @@ function unpackToken(token) {
|
|||
};
|
||||
}
|
||||
|
||||
function fullUrl(request) {
|
||||
return url.format({
|
||||
protocol: request.protocol,
|
||||
host: request.get('host'),
|
||||
pathname: request.originalUrl
|
||||
});
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
nintendoPasswordHash,
|
||||
generateRandomInt,
|
||||
generateToken,
|
||||
decryptToken,
|
||||
unpackToken
|
||||
unpackToken,
|
||||
fullUrl
|
||||
};
|
Loading…
Reference in a new issue