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/' 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 diff --git a/helpers.js b/helpers.js index d7dcc01..8868088 100644 --- a/helpers.js +++ b/helpers.js @@ -1,14 +1,13 @@ -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 - 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/mailer.js b/mailer.js index 57385e9..292772b 100644 --- a/mailer.js +++ b/mailer.js @@ -1,7 +1,7 @@ -let nodemailer = require('nodemailer'), - config = require('./config.json'); +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 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/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 3286cd2..c094931 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'); diff --git a/server.js b/server.js index 42f3053..93b04f2 100644 --- a/server.js +++ b/server.js @@ -1,25 +1,19 @@ -////////////////////////////////////////////////////////////////// -/// /// -/// 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(); +const testing_env = process.env.NODE_ENV !== "production" -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(); +const server_debugger = new debug('Server'); -let server_debugger = new debug('Server'); - -server_debugger.log('Importing routes'); +server_debugger.log('Importing routes'); // API routes const ROUTES = { ACCOUNT: require('./routes/account'), @@ -118,20 +112,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); }); 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;