From 32beb3274d928af4df2415bc11b09846581a2a13 Mon Sep 17 00:00:00 2001 From: andreluis034 Date: Mon, 5 Mar 2018 10:27:54 +0000 Subject: [PATCH 1/8] refactor config file and db.js --- db.js | 24 +++++++++++++++--------- example.config.json | 11 +++++++++-- 2 files changed, 24 insertions(+), 11 deletions(-) diff --git a/db.js b/db.js index 9939491..d6b0208 100644 --- a/db.js +++ b/db.js @@ -1,13 +1,19 @@ -let mongoist = require('mongoist'), - config = require('./config.json'), - user_database_name = 'nintendo_acts', - user_database_collection_name = 'users', - user_database, user_collection; +const mongoist = require('mongoist'); +const config = require('./config.json'); +const user_database_collection_name = 'users'; +const database = config.mongo.database +const hostname = config.mongo.hostname +const port = config.mongo.port +const auth = config.mongo.authentication -let username = config.mongo.nintendo_acts.username; -let password = config.mongo.nintendo_acts.password; -let hostname = config.mongo.nintendo_acts.hostname; -let connection_string = 'mongodb://' + username + ':' + password + '@' + hostname + '/' + user_database_name + '?authSource=admin'; +let connection_string = ''; + +if(config.mongo.use_authentication) { + connection_string = `mongodb://${auth.username}:${auth.password}@${hostname}:${port}/\ + ${user_database_name}?authSource=${auth.authentication_database}` +}else { + connection_string = `mongodb://${hostname}:${port}/${user_database_name}` +} user_database = mongoist(connection_string); user_collection = user_database.collection(user_database_collection_name); diff --git a/example.config.json b/example.config.json index 4a8ed22..1acce34 100644 --- a/example.config.json +++ b/example.config.json @@ -4,10 +4,17 @@ "password": "password" }, "mongo": { - "database_name": { + "database": "foo", + "hostname": "localhost", + "port": 27017, + "use_authentication": true, + "authentication": { "username": "username", "password": "password", - "hostname": "localhost" + "authentication_database": "admin" } + }, + "http": { + "port": 8080 } } \ No newline at end of file From d585ea23c0298a560b88068f4b8e66a44de115a7 Mon Sep 17 00:00:00 2001 From: andreluis034 Date: Mon, 5 Mar 2018 10:31:25 +0000 Subject: [PATCH 2/8] use http port from config --- server.js | 39 ++++++++++++++++----------------------- 1 file changed, 16 insertions(+), 23 deletions(-) diff --git a/server.js b/server.js index 42f3053..8ce5647 100644 --- a/server.js +++ b/server.js @@ -1,23 +1,16 @@ -////////////////////////////////////////////////////////////////// -/// /// -/// Dependencies /// -/// /// -////////////////////////////////////////////////////////////////// +const path = require('path'); +const express = require('express'); +const subdomain = require('express-subdomain'); +const table = require('cli-table'); +const colors = require('colors'); +const morgan = require('morgan'); +const XMLMiddleware = require('./xml-middleware'); +const debug = require('./debugger'); +const config = require('./config.json') +const app = express(); +const router = express.Router(); -let port = 8080, - debug = require('./debugger'), - path = require('path'), - express = require('express'), - subdomain = require('express-subdomain'), - table = require('cli-table'), - XMLMiddleware = require('./xml-middleware'), - colors = require('colors'), - morgan = require('morgan'), - app = express(), - testing_env = true, - router = express.Router(); - -let server_debugger = new debug('Server'); +const server_debugger = new debug('Server'); server_debugger.log('Importing routes'); // API routes @@ -118,20 +111,20 @@ router.use((error, request, response) => { server_debugger.log('Starting server'); // Starts the server -app.listen(port, () => { +app.listen(config.http.port, () => { let route_table = new table({ head: ["Method", "Path"] }), routes = getRoutes(app._router.stack); - + routes.forEach(route => { let obj = {}; obj[route.method] = route.path; route_table.push(obj) }); - + console.log(route_table.toString()); - server_debugger.log('Started '.green + 'on port '.blue + new String(port).yellow); + server_debugger.log('Started '.green + 'on port '.blue + new String(config.http.port).yellow); }); From 4f660d251b55bffac5c27901ff112c30ca7a9144 Mon Sep 17 00:00:00 2001 From: andreluis034 Date: Mon, 5 Mar 2018 10:34:07 +0000 Subject: [PATCH 3/8] const usage --- helpers.js | 12 ++++++------ mailer.js | 4 ++-- xml-middleware.js | 3 +-- 3 files changed, 9 insertions(+), 10 deletions(-) diff --git a/helpers.js b/helpers.js index d7dcc01..6608ac0 100644 --- a/helpers.js +++ b/helpers.js @@ -1,9 +1,9 @@ -let constants = require('./constants'), - database = require('./db'), - pythonStruct = require('python-struct'), - bcrypt = require('bcryptjs'), - randtoken = require('rand-token'), - crypto = require('crypto'); +const pythonStruct = require('python-struct'); +const bcrypt = require('bcryptjs'); +const randtoken = require('rand-token'); +const crypto = require('crypto'); +const constants = require('./constants'); +const database = require('./db'); async function generatePID() { // Quick, dirty fix for PIDs diff --git a/mailer.js b/mailer.js index 57385e9..98210fe 100644 --- a/mailer.js +++ b/mailer.js @@ -1,5 +1,5 @@ -let nodemailer = require('nodemailer'), - config = require('./config.json'); +const nodemailer = require('nodemailer'); +const config = require('./config.json'); let transporter = nodemailer.createTransport({ service: 'gmail', diff --git a/xml-middleware.js b/xml-middleware.js index ca54ffe..f1e6e01 100644 --- a/xml-middleware.js +++ b/xml-middleware.js @@ -1,5 +1,4 @@ -let http = require('http'), - XML = require('pixl-xml'); +const XML = require('pixl-xml'); module.exports = middleware; From 658affee84885903c563af9df4c68106e5184bd4 Mon Sep 17 00:00:00 2001 From: andreluis034 Date: Mon, 5 Mar 2018 10:40:30 +0000 Subject: [PATCH 4/8] remove unnecessary modules from constatns.js --- constants.js | 5 ----- 1 file changed, 5 deletions(-) diff --git a/constants.js b/constants.js index ec636c3..eb5a83c 100644 --- a/constants.js +++ b/constants.js @@ -1,8 +1,3 @@ -const ENV = process.env.NODE_ENV || 'dev'; - -let fs = require('fs'), - path = require('path'); - module.exports = { URL_ENDPOINTS: { mii: 'http://mii-secure.account.riiu.net/' From 1ef4459e5c6c598ead5d8f6ad6c64ef4fe73f9e0 Mon Sep 17 00:00:00 2001 From: andreluis034 Date: Mon, 5 Mar 2018 10:41:08 +0000 Subject: [PATCH 5/8] set node env from npm --- package.json | 3 ++- server.js | 1 + 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/package.json b/package.json index 8453e0f..e1a64bd 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,8 @@ "main": "server.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1", - "start": "node server.js" + "start": "NODE_ENV=production node server.js", + "start:dev": "NODE_ENV=development node server.js" }, "author": "", "license": "ISC", diff --git a/server.js b/server.js index 8ce5647..097d5d9 100644 --- a/server.js +++ b/server.js @@ -9,6 +9,7 @@ const debug = require('./debugger'); const config = require('./config.json') const app = express(); const router = express.Router(); +const test_env = process.env.NODE_ENV !== "production" const server_debugger = new debug('Server'); From 0fbc0d7ae6bd9f48db7d4123a4fca989c9a0e6a4 Mon Sep 17 00:00:00 2001 From: andreluis034 Date: Mon, 5 Mar 2018 10:56:17 +0000 Subject: [PATCH 6/8] change declarations in routes libraries and remove unsued libs --- helpers.js | 8 +++----- routes/account/index.js | 8 ++++---- routes/admin/index.js | 12 ++++++------ routes/content/index.js | 15 +++++++-------- routes/devices/index.js | 15 +++++++-------- routes/oauth20/index.js | 15 +++++++-------- routes/people/index.js | 28 ++++++++++++++-------------- routes/provider/index.js | 20 +++++--------------- routes/root/index.js | 6 +++--- routes/support/index.js | 16 ++++++++-------- 10 files changed, 64 insertions(+), 79 deletions(-) diff --git a/helpers.js b/helpers.js index 6608ac0..8868088 100644 --- a/helpers.js +++ b/helpers.js @@ -7,8 +7,7 @@ const database = require('./db'); async function generatePID() { // Quick, dirty fix for PIDs - let pid = Math.floor(Math.random() * (4294967295 - 1000000000) + 1000000000); - + const pid = Math.floor(Math.random() * (4294967295 - 1000000000) + 1000000000); let does_pid_inuse = await database.user_collection.findOne({ pid: pid }); @@ -31,8 +30,7 @@ function generateRandID(length = 10) { } async function generateEmailToken() { - let token = randtoken.generate(32); - + const token = randtoken.generate(32); let user = await database.user_collection.findOne({ 'sensitive.email_confirms.token': token }); @@ -45,7 +43,7 @@ async function generateEmailToken() { } async function generateEmailCode() { - let code = generateRandID(6); + const code = generateRandID(6); let user = await database.user_collection.findOne({ 'sensitive.email_confirms.code': code diff --git a/routes/account/index.js b/routes/account/index.js index 7241118..0aedca2 100644 --- a/routes/account/index.js +++ b/routes/account/index.js @@ -1,7 +1,7 @@ -let routes = require('express').Router(), - database = require('../../db'), - debug = require('../../debugger'), - route_debugger = new debug('Account Route'); +const routes = require('express').Router(); +const database = require('../../db'); +const debug = require('../../debugger'); +const route_debugger = new debug('Account Route'); route_debugger.success('Loading \'account\' API routes'); /** diff --git a/routes/admin/index.js b/routes/admin/index.js index 2ef318c..b83220f 100644 --- a/routes/admin/index.js +++ b/routes/admin/index.js @@ -1,9 +1,9 @@ -let routes = require('express').Router(), - json2xml = require('json2xml'), - database = require('../../db'), - constants = require('../../constants'), - debug = require('../../debugger'), - route_debugger = new debug('Admin Route'); +const routes = require('express').Router(); +const json2xml = require('json2xml'); +const database = require('../../db'); +const constants = require('../../constants'); +const debug = require('../../debugger'); +const route_debugger = new debug('Admin Route'); route_debugger.success('Loading \'admin\' API routes'); diff --git a/routes/content/index.js b/routes/content/index.js index 20c5ec6..7e61d4b 100644 --- a/routes/content/index.js +++ b/routes/content/index.js @@ -1,11 +1,10 @@ -let routes = require('express').Router(), - path = require('path'), - helpers = require('../../helpers'), - constants = require('../../constants'), - fs = require('fs-extra'), - json2xml = require('json2xml'), - debug = require('../../debugger'), - route_debugger = new debug('Content Route'); +const routes = require('express').Router(); +const path = require('path'); +const constants = require('../../constants'); +const fs = require('fs-extra'); +const json2xml = require('json2xml'); +const debug = require('../../debugger'); +const route_debugger = new debug('Content Route'); route_debugger.success('Loading \'content\' API routes'); diff --git a/routes/devices/index.js b/routes/devices/index.js index b90bbf5..bc29ae7 100644 --- a/routes/devices/index.js +++ b/routes/devices/index.js @@ -1,11 +1,10 @@ -let routes = require('express').Router(), - path = require('path'), - helpers = require('../../helpers'), - constants = require('../../constants'), - fs = require('fs-extra'), - json2xml = require('json2xml'), - debug = require('../../debugger'), - route_debugger = new debug('Devices Route'); +const routes = require('express').Router(); +const path = require('path'); +const fs = require('fs-extra'); +const json2xml = require('json2xml'); +const debug = require('../../debugger'); +const constants = require('../../constants'); +const route_debugger = new debug('Devices Route'); route_debugger.success('Loading \'devices\' API routes'); diff --git a/routes/oauth20/index.js b/routes/oauth20/index.js index e85c3e7..efab084 100644 --- a/routes/oauth20/index.js +++ b/routes/oauth20/index.js @@ -1,11 +1,10 @@ -let routes = require('express').Router(), - json2xml = require('json2xml'), - bcrypt = require('bcryptjs'), - database = require('../../db'), - helpers = require('../../helpers'), - constants = require('../../constants'), - debug = require('../../debugger'), - route_debugger = new debug('oAuth Route'.green); +const routes = require('express').Router(); +const json2xml = require('json2xml'); +const bcrypt = require('bcryptjs'); +const database = require('../../db'); +const helpers = require('../../helpers'); +const debug = require('../../debugger'); +const route_debugger = new debug('oAuth Route'.green); route_debugger.log('Loading \'oauth20\' API routes'); diff --git a/routes/people/index.js b/routes/people/index.js index d3280ec..6750c6f 100644 --- a/routes/people/index.js +++ b/routes/people/index.js @@ -1,17 +1,17 @@ -let routes = require('express').Router(), - helpers = require('../../helpers'), - constants = require('../../constants'), - database = require('../../db'), - mailer = require('../../mailer'), - RateLimit = require('express-rate-limit'), - json2xml = require('json2xml'), - bcrypt = require('bcryptjs'), - moment = require('moment'), - moment_timezone = require('moment-timezone'), - puid = require('puid'), - fs = require('fs-extra'), - debug = require('../../debugger'), - route_debugger = new debug('People Route'.green); +const routes = require('express').Router(); +const RateLimit = require('express-rate-limit'); +const json2xml = require('json2xml'); +const bcrypt = require('bcryptjs'); +const moment = require('moment'); +const moment_timezone = require('moment-timezone'); +const puid = require('puid'); +const fs = require('fs-extra'); +const helpers = require('../../helpers'); +const constants = require('../../constants'); +const database = require('../../db'); +const mailer = require('../../mailer'); +const debug = require('../../debugger'); +const route_debugger = new debug('People Route'.green); route_debugger.log('Loading \'people\' API routes'); diff --git a/routes/provider/index.js b/routes/provider/index.js index eb4a402..3da28bb 100644 --- a/routes/provider/index.js +++ b/routes/provider/index.js @@ -1,18 +1,8 @@ -let routes = require('express').Router(), - helpers = require('../../helpers'), - constants = require('../../constants'), - database = require('../../db'), - mailer = require('../../mailer'), - RateLimit = require('express-rate-limit'), - randtoken = require('rand-token'), - json2xml = require('json2xml'), - bcrypt = require('bcryptjs'), - moment = require('moment'), - moment_timezone = require('moment-timezone'), - puid = require('puid'), - fs = require('fs-extra'), - debug = require('../../debugger'), - route_debugger = new debug('Provider Route'.green); +const routes = require('express').Router(); +const RateLimit = require('express-rate-limit'); +const json2xml = require('json2xml'); +const debug = require('../../debugger'); +const route_debugger = new debug('Provider Route'.green); route_debugger.log('Loading \'provider\' API routes'); diff --git a/routes/root/index.js b/routes/root/index.js index 7a4b255..8fd8596 100644 --- a/routes/root/index.js +++ b/routes/root/index.js @@ -1,6 +1,6 @@ -let routes = require('express').Router(), - debug = require('../../debugger'), - route_debugger = new debug('Root/Misc Route'.green); +const routes = require('express').Router(); +const debug = require('../../debugger'); +const route_debugger = new debug('Root/Misc Route'.green); route_debugger.log('Loading \'root/misc\' API routes'); diff --git a/routes/support/index.js b/routes/support/index.js index a9e14cc..6d20493 100644 --- a/routes/support/index.js +++ b/routes/support/index.js @@ -1,11 +1,11 @@ -let routes = require('express').Router(), - helpers = require('../../helpers'), - constants = require('../../constants'), - database = require('../../db'), - dns = require('dns'), - json2xml = require('json2xml'), - debug = require('../../debugger'), - route_debugger = new debug('Support Route'.green); +const dns = require('dns'); +const routes = require('express').Router(); +const helpers = require('../../helpers'); +const constants = require('../../constants'); +const database = require('../../db'); +const json2xml = require('json2xml'); +const debug = require('../../debugger'); +const route_debugger = new debug('Support Route'.green); route_debugger.log('Loading \'support\' API routes'); From 490c3d88915e4c09e58af36abecc013cbf4e09b7 Mon Sep 17 00:00:00 2001 From: andreluis034 Date: Mon, 5 Mar 2018 11:00:01 +0000 Subject: [PATCH 7/8] get source email address from config file --- mailer.js | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/mailer.js b/mailer.js index 98210fe..292772b 100644 --- a/mailer.js +++ b/mailer.js @@ -1,7 +1,7 @@ const nodemailer = require('nodemailer'); const config = require('./config.json'); -let transporter = nodemailer.createTransport({ +const transporter = nodemailer.createTransport({ service: 'gmail', auth: { user: config.email.address, @@ -9,9 +9,15 @@ let transporter = nodemailer.createTransport({ } }); +/** + * Sends an email with the specified subject and message to an email address + * @param {String} email the destination email address + * @param {String} subject The Subject of the email + * @param {String} message The body of the email + */ function send(email, subject = 'No email subject provided', message = 'No email body provided') { let options = { - from: 'pretendonetwork@gmail.com', + from: config.email.address, to: email, subject: subject, html: message From 0373697901186b1bf9efa01b89e6a5fb056d6295 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Brand=C3=A3o?= Date: Mon, 5 Mar 2018 13:56:00 +0000 Subject: [PATCH 8/8] Fix typo in environment variable --- server.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/server.js b/server.js index 097d5d9..93b04f2 100644 --- a/server.js +++ b/server.js @@ -9,11 +9,11 @@ const debug = require('./debugger'); const config = require('./config.json') const app = express(); const router = express.Router(); -const test_env = process.env.NODE_ENV !== "production" +const testing_env = process.env.NODE_ENV !== "production" const server_debugger = new debug('Server'); -server_debugger.log('Importing routes'); +server_debugger.log('Importing routes'); // API routes const ROUTES = { ACCOUNT: require('./routes/account'),