This commit is contained in:
RedDucks 2018-02-21 22:39:26 -05:00
commit 80fff6f406
6 changed files with 61 additions and 63 deletions

View file

@ -0,0 +1,4 @@
@echo off
echo Launching Super Mario Maker NEX server....
node nex_server.js
pause

View file

@ -1,3 +0,0 @@
{
"lockfileVersion": 1
}

View file

@ -1,4 +0,0 @@
@echo off
echo Launching game server....
node server.js
pause

View file

@ -1,34 +0,0 @@
//////////////////////////////////////////////////////////////////
/// ///
/// Game Server Template ///
/// ///
//////////////////////////////////////////////////////////////////
/////////////Packets are only received; nothing is done with them./////////////
///////////// In order to read the data, they must be decrypted. /////////////
///////////// This is done on a per-game basis. /////////////
//Game server metadata
//Put things such as port and game name here
let port = 88888,
gamename = 'game',
//don't mess with these two variables
dgram = require('dgram');
server = dgram.createSocket('udp4');
function asciiToHex(packet){
let buf = Buffer.from(packet,'ascii');
return buf.toString('hex');
}
server.on('listening', function () {
var address = server.address();
console.log(gamename + ' server listening on ' + address.address + ":" + address.port);
});
server.on('message', function (message, remote) {
console.log(remote.address + ':' + remote.port +' - ' + asciiToHex(message));
});
server.bind(port, '0.0.0.0');

View file

@ -14,17 +14,13 @@ let routes = require('express').Router(),
//The game ips and ports are stored here. When the game tries to access its specific server, it will be given the respecive ip and port.
let gamePort = {
supermariomaker: {
ip: '10.0.0.57',
friends: {
ip: '10.0.0.225',
port: '1300'
},
mariokart8: {
ip: '10.0.0.57',
supermariomaker: {
ip: '10.0.0.225',
port: '1301'
},
supersmashbroswiiu: {
ip: '10.0.0.57',
port: '1302'
}
}
@ -60,24 +56,20 @@ routes.get('/nex_token/@me', async (request, response) => {
let ip = null;
let port = null;
console.log(request.headers['X-Nintendo-Title-ID']);
console.log(request.query.game_server_id);
switch(request.headers['X-Nintendo-Title-ID']){
case '000500001018DC00':
ip = gamePort.supermariomaker.ip;
port = gamePort.supermariomaker.port;
switch(request.query.game_server_id){
case '00003200':
ip = gamePort.friends.ip;
port = gamePort.friends.port;
break;
case 'mariomakereur':
ip = gamePort.supermariomaker.ip;
port = gamePort.supermariomaker.port;
break;
case 'mariomakerjpn':
case '1018DB00':
ip = gamePort.supermariomaker.ip;
port = gamePort.supermariomaker.port;
break;
default:
ip = '10.0.0.57';
port = '1300';
ip = null;
port = null;
break;
}
@ -86,8 +78,8 @@ routes.get('/nex_token/@me', async (request, response) => {
errors: {
error: {
cause: 'No game server',
code: '8068000B',
message: 'Authentication::UnderMaintenance (No server found)'
code: '9999',
message: 'No server found'
}
}
}

View file

@ -1,6 +1,7 @@
let routes = require('express').Router(),
helpers = require('../../helpers'),
constants = require('../../constants'),
database = require('../../db'),
dns = require('dns'),
json2xml = require('json2xml');
@ -91,4 +92,46 @@ routes.post('/validate/email', async (request, response) => {
});
/**
* [PUT]
* Replacement for: https://account.nintendo.net/v1/api/support/email_confirmation/:USERPID/:CONFIRMCODE
* Description: Confirms an email
*/
routes.put('/email_confirmation/:pid/:code', async (request, response) => {
response.set('Content-Type', 'text/xml');
response.set('Server', 'Nintendo 3DS (http)');
response.set('X-Nintendo-Date', new Date().getTime());
let user = await helpers.getUser(request.params.pid);
if (!user) {
let error = {
errors: {
error: {
cause: 'no user found',
code: '9999',
message: 'Bad pid received; pid: ' + request.params.pid
}
}
}
return response.send(json2xml(error));
}
if(user.sensitive.email_confims.code == request.params.code){
database.user_collection.update(user._id, {$set:{'address[0].validated':'Y'}});
}else{
let error = {
errors: {
error: {
cause: 'Bad code',
code: '9999',
message: 'Bad code received; code: ' + request.params.code
}
}
}
return response.send(json2xml(error));
}
});
module.exports = routes;