diff --git a/app.js b/app.js index 6999000..894f57b 100644 --- a/app.js +++ b/app.js @@ -4,12 +4,14 @@ // licensed separately, each folder contains a license file where a // different license applies. -console.log(`Initialising OwlBoard`) -const mode = process.env.NODE_ENV || "development" +/* global process */ + +console.log('Initialising OwlBoard') +const mode = process.env.NODE_ENV || 'development' // External Requires -const express = require('express'); -const app = express(); +const express = require('express') +const app = express() // Middleware const compression = require('compression') @@ -17,80 +19,80 @@ const rateLimit = require('express-rate-limit') const authenticate= require('./src/middlewares/auth.middlewares') // Internal Requires -const log = require('./src/utils/log.utils'); // Log Helper -const version = require('./src/configs/version.configs'); // Version Strings -const listRtr = require('./src/routes/list.routes'); // /list endpoints -const ldbRtr = require('./src/routes/ldb.routes'); // /ldb endpoints -const kubeRtr = require('./src/routes/kube.routes'); // /kube endpoints -const findRtr = require('./src/routes/find.routes'); // /find endpoints -const issueRtr = require('./src/routes/issue.routes'); // /issue endpoints -const statRtr = require('./src/routes/stats.routes'); // /stat endpoints -const regRtr = require('./src/routes/registration.routes'); // /registration endpoints -const pisRtr = require('./src/routes/pis.routes'); // /pis endpoints +const log = require('./src/utils/log.utils') // Log Helper +const version = require('./src/configs/version.configs') // Version Strings +const listRtr = require('./src/routes/list.routes') // /list endpoints +const ldbRtr = require('./src/routes/ldb.routes') // /ldb endpoints +const kubeRtr = require('./src/routes/kube.routes') // /kube endpoints +const findRtr = require('./src/routes/find.routes') // /find endpoints +const issueRtr = require('./src/routes/issue.routes') // /issue endpoints +const statRtr = require('./src/routes/stats.routes') // /stat endpoints +const regRtr = require('./src/routes/registration.routes') // /registration endpoints +const pisRtr = require('./src/routes/pis.routes') // /pis endpoints // Set Server Configurations -const srvListen = process.env.OWL_SRV_LISTEN || "0.0.0.0" +const srvListen = process.env.OWL_SRV_LISTEN || '0.0.0.0' const srvPort = process.env.OWL_SRV_PORT || 8460 const limiter = rateLimit({ - windowMs: 15 * (60 * 1000), // 15 minutes - max: 100, // Limit each IP to 100 requests per `window` (here, per 15 minutes) - standardHeaders: true, // Return rate limit info in the `RateLimit-*` headers - legacyHeaders: true, // Disable the `X-RateLimit-*` headers + windowMs: 15 * (60 * 1000), // 15 minutes + max: 100, // Limit each IP to 100 requests per `window` (here, per 15 minutes) + standardHeaders: true, // Return rate limit info in the `RateLimit-*` headers + legacyHeaders: true, // Disable the `X-RateLimit-*` headers }) // Print version number: -log.out(`app: Starting OwlBoard in ${mode} mode`, "init") -log.out(`app: Starting OwlBoard - Backend Version: ${version.app} - API versions: ${version.api}`, "init"); +log.out(`app: Starting OwlBoard in ${mode} mode`, 'init') +log.out(`app: Starting OwlBoard - Backend Version: ${version.app} - API versions: ${version.api}`, 'init') // Test for required vars: - // const varTest = require('./src/utils/varTest.utils'); - // var startTest = await varTest.varTest(); - //console.log("Required Vars Missing:", startTest.missing_required); - //console.log("Desired Vars Missing:", startTest.missing_desired); - // if startTest.pass == false - // console.log("Unable to start, missing required vars") - // exit app +// const varTest = require('./src/utils/varTest.utils'); +// var startTest = await varTest.varTest(); +//console.log("Required Vars Missing:", startTest.missing_required); +//console.log("Desired Vars Missing:", startTest.missing_desired); +// if startTest.pass == false +// console.log("Unable to start, missing required vars") +// exit app // Express Error Handling: app.use((err, req, res, next) => { - const statusCode = err.statuscode || 500; - console.error(err.message, err.stack); - res.status(statusCode).json({'message': err.message}); - return; -}); + const statusCode = err.statuscode || 500 + console.error(err.message, err.stack) + res.status(statusCode).json({'message': err.message}) + return +}) // Global Middleware: -app.use(express.json()); //JSON Parsing for POST Requests +app.use(express.json()) //JSON Parsing for POST Requests app.use(compression()) // Compress API Data if supported by client app.use(limiter) // Unauthenticated Routes -app.use('/api/v1/list', listRtr); -app.use('/api/v1/ldb', ldbRtr); -app.use('/api/v1/kube', kubeRtr); -app.use('/api/v1/find', findRtr); -app.use('/api/v1/issue', issueRtr); -app.use('/api/v1/stats', statRtr); -app.use('/api/v1/register', regRtr); +app.use('/api/v1/list', listRtr) +app.use('/api/v1/ldb', ldbRtr) +app.use('/api/v1/kube', kubeRtr) +app.use('/api/v1/find', findRtr) +app.use('/api/v1/issue', issueRtr) +app.use('/api/v1/stats', statRtr) +app.use('/api/v1/register', regRtr) // Authented Routes -app.use('/api/v1/ldbs', authenticate, (req, res) => res.status(501).json({status: "Not Implemented", message: "This feature is not yet implemented due to upstream issues"})) +app.use('/api/v1/ldbs', authenticate, (req, res) => res.status(501).json({status: 'Not Implemented', message: 'This feature is not yet implemented due to upstream issues'})) app.use('/api/v1/pis', authenticate, pisRtr) -app.use('/api/v1/auth/test', authenticate, (req, res) => res.status(200).json({status: "ok", message: "Authentication successful"})) // Returns 401 if auth failed, 200 if successful. +app.use('/api/v1/auth/test', authenticate, (req, res) => res.status(200).json({status: 'ok', message: 'Authentication successful'})) // Returns 401 if auth failed, 200 if successful. // Number of proxies: app.set('trust proxy', 4) -mode === "development" +mode === 'development' ? app.get('/api/v1/ip', (req, res) => res.send(req.ip)) : null // Start Express app.listen(srvPort, srvListen, (error) =>{ if(!error) { - log.out(`app.listen: Listening on http://${srvListen}:${srvPort}`, "init"); - log.out("app.listen: State - alive", "init") + log.out(`app.listen: Listening on http://${srvListen}:${srvPort}`, 'init') + log.out('app.listen: State - alive', 'init') } else { - log.out(`app.listen: Error occurred, server can't start ${error}`, "err"); + log.out(`app.listen: Error occurred, server can't start ${error}`, 'err') } -}); \ No newline at end of file +}) \ No newline at end of file diff --git a/src/configs/errorCodes.configs.js b/src/configs/errorCodes.configs.js index 0e4b6a4..9b51e0d 100644 --- a/src/configs/errorCodes.configs.js +++ b/src/configs/errorCodes.configs.js @@ -1,10 +1,10 @@ module.exports = statusCodes = { - 700: "no authentication attempt", - 701: "invalid credentials", - 702: "domain not whitelisted", - 703: "registration request not found, maybe expired", - 800: "location code not found", - 801: "unable to fetch location data", - 900: "invalid request format", - 950: "upstream server error", + 700: 'no authentication attempt', + 701: 'invalid credentials', + 702: 'domain not whitelisted', + 703: 'registration request not found, maybe expired', + 800: 'location code not found', + 801: 'unable to fetch location data', + 900: 'invalid request format', + 950: 'upstream server error', } diff --git a/src/controllers/find.controllers.js b/src/controllers/find.controllers.js index a426ee6..67ce93d 100644 --- a/src/controllers/find.controllers.js +++ b/src/controllers/find.controllers.js @@ -1,58 +1,58 @@ -const find = require('../services/find.services'); +const find = require('../services/find.services') async function findName(req, res, next){ - try { - var id = req.params.id - res.json(await find.name(id)) - } catch (err) { - console.error(`Unknown Error`, err.message); - next(err); - } + try { + var id = req.params.id + res.json(await find.name(id)) + } catch (err) { + console.error('Unknown Error', err.message) + next(err) + } } async function findCrs(req, res, next){ - try { - var id = req.params.id - res.json(await find.crs(id)) - } catch (err) { - console.error(`Unknown Error`, err.message); - next(err); - } + try { + var id = req.params.id + res.json(await find.crs(id)) + } catch (err) { + console.error('Unknown Error', err.message) + next(err) + } } async function findNlc(req, res, next){ - try { - var id = req.params.id - res.json(await find.nlc(id)) - } catch (err) { - console.error(`Unknown Error`, err.message); - next(err); - } + try { + var id = req.params.id + res.json(await find.nlc(id)) + } catch (err) { + console.error('Unknown Error', err.message) + next(err) + } } async function findTiploc(req, res, next){ - try { - var id = req.params.id - res.json(await find.tiploc(id)) - } catch (err) { - console.error(`Unknown Error`, err.message); - next(err); - } + try { + var id = req.params.id + res.json(await find.tiploc(id)) + } catch (err) { + console.error('Unknown Error', err.message) + next(err) + } } async function findStanox(req, res, next){ - try { - var id = req.params.id - res.json(await find.stanox(id)) - } catch (err) { - console.error(`Unknown Error`, err.message); - next(err); - } + try { + var id = req.params.id + res.json(await find.stanox(id)) + } catch (err) { + console.error('Unknown Error', err.message) + next(err) + } } module.exports = { - findName, - findCrs, - findNlc, - findTiploc, - findStanox + findName, + findCrs, + findNlc, + findTiploc, + findStanox } \ No newline at end of file diff --git a/src/controllers/issue.controllers.js b/src/controllers/issue.controllers.js index b8c0431..38c7506 100644 --- a/src/controllers/issue.controllers.js +++ b/src/controllers/issue.controllers.js @@ -1,14 +1,14 @@ -const issue = require('../services/issue.services'); +const issue = require('../services/issue.services') async function post(req, res, next){ - try { - res.json(await issue.processor(req.body)) - } catch (err) { - console.error(`Controller Error`, err.message); - next(err); - } + try { + res.json(await issue.processor(req.body)) + } catch (err) { + console.error('Controller Error', err.message) + next(err) + } } module.exports = { - post + post } \ No newline at end of file diff --git a/src/controllers/kube.controllers.js b/src/controllers/kube.controllers.js index 6d983cb..29cd19d 100644 --- a/src/controllers/kube.controllers.js +++ b/src/controllers/kube.controllers.js @@ -1,35 +1,35 @@ -const kube = require('../services/kube.services'); +const kube = require('../services/kube.services') async function getAlive(req, res, next){ - try { - var state = kube.getAlive() - res.status((await state).code).send((await state).state) - } catch (err) { - res.status("503").send({state: "error"}) - } + try { + var state = kube.getAlive() + res.status((await state).code).send((await state).state) + } catch (err) { + res.status('503').send({state: 'error'}) + } } async function getReady(req, res, next){ - try { - res.json(await kube.getReady(req.body)) - } catch (err) { - console.error(`Unknown Error`, err.message); - next(err); - } + try { + res.json(await kube.getReady(req.body)) + } catch (err) { + console.error('Unknown Error', err.message) + next(err) + } } async function getTime(req, res, next){ - try { - res.json(await kube.getTime(req.body)) - } catch (err) { - console.error(`Unknown Error`, err.message); - err.status = 503 - next(err); - } + try { + res.json(await kube.getTime(req.body)) + } catch (err) { + console.error('Unknown Error', err.message) + err.status = 503 + next(err) + } } module.exports = { - getAlive, - getReady, - getTime + getAlive, + getReady, + getTime } \ No newline at end of file diff --git a/src/controllers/ldb.controllers.js b/src/controllers/ldb.controllers.js index 019cc95..a407031 100644 --- a/src/controllers/ldb.controllers.js +++ b/src/controllers/ldb.controllers.js @@ -1,16 +1,16 @@ -const ldb = require('../services/ldb.services'); +const ldb = require('../services/ldb.services') async function get(req, res, next){ - try { - var id = req.params.id - res.json(await ldb.get(id)) - } catch (err) { - console.error(`Unknown Error`, err.message); - err.status = 500 - next(err); - } + try { + var id = req.params.id + res.json(await ldb.get(id)) + } catch (err) { + console.error('Unknown Error', err.message) + err.status = 500 + next(err) + } } module.exports = { - get + get } \ No newline at end of file diff --git a/src/controllers/ldbs.controllers copy.js b/src/controllers/ldbs.controllers copy.js index aa652c6..b86da6c 100644 --- a/src/controllers/ldbs.controllers copy.js +++ b/src/controllers/ldbs.controllers copy.js @@ -1,16 +1,16 @@ -const ldb = require('../services/ldb.services'); +const ldb = require('../services/ldb.services') async function get(req, res, next){ - try { - var id = req.params.id - res.json(await ldb.get(id, true)) - } catch (err) { - console.error(`Unknown Error`, err.message); - err.status = 500 - next(err); - } + try { + var id = req.params.id + res.json(await ldb.get(id, true)) + } catch (err) { + console.error('Unknown Error', err.message) + err.status = 500 + next(err) + } } module.exports = { - get + get } \ No newline at end of file diff --git a/src/controllers/list.controllers.js b/src/controllers/list.controllers.js index 1a59b3b..2f27205 100644 --- a/src/controllers/list.controllers.js +++ b/src/controllers/list.controllers.js @@ -1,37 +1,37 @@ -const list = require('../services/list.services'); +const list = require('../services/list.services') async function getStations(req, res, next){ - try { - res.json(await list.getStations(req.body)) - } catch (err) { - console.error(`Controller Error`, err.message); - err.status = 500 - next(err); - } + try { + res.json(await list.getStations(req.body)) + } catch (err) { + console.error('Controller Error', err.message) + err.status = 500 + next(err) + } } async function getCorpus(req, res, next){ - try { - res.json(await list.getCorpus(req.body)) - } catch (err) { - console.error(`Controller Error`, err.message); - err.status = 500 - next(err); - } + try { + res.json(await list.getCorpus(req.body)) + } catch (err) { + console.error('Controller Error', err.message) + err.status = 500 + next(err) + } } async function hits(req, res, next) { - try { - res.json(await list.hits()) - } catch (err) { - console.error(`Controller Error`, err); - err.status = 500 - next(err); - } + try { + res.json(await list.hits()) + } catch (err) { + console.error('Controller Error', err) + err.status = 500 + next(err) + } } module.exports = { - getStations, - getCorpus, - hits + getStations, + getCorpus, + hits } \ No newline at end of file diff --git a/src/controllers/pis.controllers.js b/src/controllers/pis.controllers.js index 3971837..8f373d0 100644 --- a/src/controllers/pis.controllers.js +++ b/src/controllers/pis.controllers.js @@ -1,17 +1,17 @@ -const pis = require('../services/pis.services'); +const pis = require('../services/pis.services') async function byOrigDest(req, res, next){ - try { - let start = req.params.start - let end = req.params.end - res.json(await pis.findPisByOrigDest(start,end)) - } catch (err) { - console.error(`Unknown Error`, err.message); - next(err); - } + try { + let start = req.params.start + let end = req.params.end + res.json(await pis.findPisByOrigDest(start,end)) + } catch (err) { + console.error('Unknown Error', err.message) + next(err) + } } module.exports = { - byOrigDest + byOrigDest } \ No newline at end of file diff --git a/src/controllers/registration.controllers.js b/src/controllers/registration.controllers.js index 9253c3f..2a29ecf 100644 --- a/src/controllers/registration.controllers.js +++ b/src/controllers/registration.controllers.js @@ -1,26 +1,26 @@ -const reg = require('../services/registration.services'); +const reg = require('../services/registration.services') async function register(req, res, next) { - try { - let response = await reg.regUser(req.body) - res.status(response.status).json(response) - } catch (err) { - console.error(`Controller Error`, err.message) - next(err) - } + try { + let response = await reg.regUser(req.body) + res.status(response.status).json(response) + } catch (err) { + console.error('Controller Error', err.message) + next(err) + } } async function request(req, res, next) { - try { - let response = await reg.createRegKey(req.body) - res.status(response.status).json(response) - } catch (err) { - console.error(err) - next(err) - } + try { + let response = await reg.createRegKey(req.body) + res.status(response.status).json(response) + } catch (err) { + console.error(err) + next(err) + } } module.exports = { - register, - request + register, + request } \ No newline at end of file diff --git a/src/controllers/stats.controllers.js b/src/controllers/stats.controllers.js index daabff5..1eaf886 100644 --- a/src/controllers/stats.controllers.js +++ b/src/controllers/stats.controllers.js @@ -1,15 +1,15 @@ -const stat = require('../services/stats.services'); +const stat = require('../services/stats.services') async function get(req, res, next) { - try { - res.json(await stat.hits()) - } catch (err) { - console.error(`Controller Error`, err); - err.status = 500 - next(err); - } + try { + res.json(await stat.hits()) + } catch (err) { + console.error('Controller Error', err) + err.status = 500 + next(err) + } } module.exports = { - get + get } \ No newline at end of file diff --git a/src/middlewares/auth.middlewares.js b/src/middlewares/auth.middlewares.js index 23f02c3..e402f5a 100644 --- a/src/middlewares/auth.middlewares.js +++ b/src/middlewares/auth.middlewares.js @@ -2,26 +2,26 @@ const utils = require('../utils/auth.utils') const log = require('../utils/log.utils') module.exports = async function authCheck(req, res, next) { - log.out(`authMiddlewares: Checking authentication`, "dbug") - try { - var uuid = req.headers.uuid - } catch(err) { - log.out(`authMiddlewares: No authentication attempted`, "dbug") - err.status = 401 - return next(err) - } - try { - var result = await utils.isAuthed(uuid) || false - if (!result) { - const err = new Error("Unauthorised"); - err.status = 401 - log.out(`authMiddlewares: Authentication attempted with incorrect key`, "warn") - return next(err) - } else { - log.out(`authMiddlewares: User authenticated`, "dbug") - return next() - } - } catch(err) { - return next(err) + log.out('authMiddlewares: Checking authentication', 'dbug') + try { + var uuid = req.headers.uuid + } catch(err) { + log.out('authMiddlewares: No authentication attempted', 'dbug') + err.status = 401 + return next(err) + } + try { + var result = await utils.isAuthed(uuid) || false + if (!result) { + const err = new Error('Unauthorised') + err.status = 401 + log.out('authMiddlewares: Authentication attempted with incorrect key', 'warn') + return next(err) + } else { + log.out('authMiddlewares: User authenticated', 'dbug') + return next() } + } catch(err) { + return next(err) + } } \ No newline at end of file diff --git a/src/middlewares/requireJson.middlewares.js b/src/middlewares/requireJson.middlewares.js index 1b43ab5..738d43d 100644 --- a/src/middlewares/requireJson.middlewares.js +++ b/src/middlewares/requireJson.middlewares.js @@ -1,12 +1,12 @@ const log = require('../utils/log.utils') module.exports = async function requireJson(req, res, next) { - if (req.headers['content-type'] !== 'application/json') { - log.out(`requireJson.middlewares: Bad Request: Not in JSON format`) - res.status(400).send({status: 400, message: "Server requires JSON"}) - } else { - next() - } + if (req.headers['content-type'] !== 'application/json') { + log.out('requireJson.middlewares: Bad Request: Not in JSON format') + res.status(400).send({status: 400, message: 'Server requires JSON'}) + } else { + next() + } } // Possibly want to check the req type? \ No newline at end of file diff --git a/src/routes/find.routes.js b/src/routes/find.routes.js index 53009f6..1ce1c14 100644 --- a/src/routes/find.routes.js +++ b/src/routes/find.routes.js @@ -1,6 +1,6 @@ -const express = require('express'); -const router = express.Router(); -const findController = require('../controllers/find.controllers'); +const express = require('express') +const router = express.Router() +const findController = require('../controllers/find.controllers') /* GET programming languages. */ //router.get('/', programmingLanguagesController.get); @@ -14,10 +14,10 @@ const findController = require('../controllers/find.controllers'); /* DELETE programming language */ //router.delete('/:id', programmingLanguagesController.remove); -router.get('/name/:id', findController.findName); -router.get('/crs/:id', findController.findCrs); -router.get('/nlc/:id', findController.findNlc); -router.get('/tiploc/:id', findController.findTiploc); -router.get('/stanox/:id', findController.findStanox); +router.get('/name/:id', findController.findName) +router.get('/crs/:id', findController.findCrs) +router.get('/nlc/:id', findController.findNlc) +router.get('/tiploc/:id', findController.findTiploc) +router.get('/stanox/:id', findController.findStanox) -module.exports = router; \ No newline at end of file +module.exports = router \ No newline at end of file diff --git a/src/routes/issue.routes.js b/src/routes/issue.routes.js index 00b8d19..d3c98a5 100644 --- a/src/routes/issue.routes.js +++ b/src/routes/issue.routes.js @@ -1,7 +1,7 @@ -const express = require('express'); -const router = express.Router(); -const issueController = require('../controllers/issue.controllers'); +const express = require('express') +const router = express.Router() +const issueController = require('../controllers/issue.controllers') -router.post('/', issueController.post); +router.post('/', issueController.post) -module.exports = router; \ No newline at end of file +module.exports = router \ No newline at end of file diff --git a/src/routes/kube.routes.js b/src/routes/kube.routes.js index e42abc1..b7bbca2 100644 --- a/src/routes/kube.routes.js +++ b/src/routes/kube.routes.js @@ -1,9 +1,9 @@ -const express = require('express'); -const router = express.Router(); -const kubeController = require('../controllers/kube.controllers'); +const express = require('express') +const router = express.Router() +const kubeController = require('../controllers/kube.controllers') -router.get('/alive', kubeController.getAlive); -router.get('/ready', kubeController.getReady); -router.get('/time', kubeController.getTime); +router.get('/alive', kubeController.getAlive) +router.get('/ready', kubeController.getReady) +router.get('/time', kubeController.getTime) module.exports = router \ No newline at end of file diff --git a/src/routes/ldb.routes.js b/src/routes/ldb.routes.js index 591bd45..c58f12b 100644 --- a/src/routes/ldb.routes.js +++ b/src/routes/ldb.routes.js @@ -1,6 +1,6 @@ -const express = require('express'); -const router = express.Router(); -const ldbController = require('../controllers/ldb.controllers'); +const express = require('express') +const router = express.Router() +const ldbController = require('../controllers/ldb.controllers') /* GET programming languages. */ //router.get('/', programmingLanguagesController.get); @@ -14,6 +14,6 @@ const ldbController = require('../controllers/ldb.controllers'); /* DELETE programming language */ //router.delete('/:id', programmingLanguagesController.remove); -router.get('/:id', ldbController.get); +router.get('/:id', ldbController.get) -module.exports = router; \ No newline at end of file +module.exports = router \ No newline at end of file diff --git a/src/routes/ldbs.routes.js b/src/routes/ldbs.routes.js index 2727ba0..0a0fe2e 100644 --- a/src/routes/ldbs.routes.js +++ b/src/routes/ldbs.routes.js @@ -1,6 +1,6 @@ -const express = require('express'); -const router = express.Router(); -const ldbsController = require('../controllers/ldbs.controllers'); +const express = require('express') +const router = express.Router() +const ldbsController = require('../controllers/ldbs.controllers') /* GET programming languages. */ //router.get('/', programmingLanguagesController.get); @@ -14,6 +14,6 @@ const ldbsController = require('../controllers/ldbs.controllers'); /* DELETE programming language */ //router.delete('/:id', programmingLanguagesController.remove); -router.get('/:id', ldbsController.get); +router.get('/:id', ldbsController.get) -module.exports = router; \ No newline at end of file +module.exports = router \ No newline at end of file diff --git a/src/routes/list.routes.js b/src/routes/list.routes.js index f49d13d..ccbc43f 100644 --- a/src/routes/list.routes.js +++ b/src/routes/list.routes.js @@ -1,6 +1,6 @@ -const express = require('express'); -const router = express.Router(); -const listController = require('../controllers/list.controllers'); +const express = require('express') +const router = express.Router() +const listController = require('../controllers/list.controllers') /* GET programming languages. */ //router.get('/', programmingLanguagesController.get); @@ -14,7 +14,7 @@ const listController = require('../controllers/list.controllers'); /* DELETE programming language */ //router.delete('/:id', programmingLanguagesController.remove); -router.get('/stations', listController.getStations); -router.get('/corpus', listController.getCorpus); +router.get('/stations', listController.getStations) +router.get('/corpus', listController.getCorpus) -module.exports = router; \ No newline at end of file +module.exports = router \ No newline at end of file diff --git a/src/routes/pis.routes.js b/src/routes/pis.routes.js index 70fa609..bda25c8 100644 --- a/src/routes/pis.routes.js +++ b/src/routes/pis.routes.js @@ -1,7 +1,7 @@ -const express = require('express'); -const router = express.Router(); -const pisController = require('../controllers/pis.controllers'); +const express = require('express') +const router = express.Router() +const pisController = require('../controllers/pis.controllers') -router.get('/origdest/:start/:end', pisController.byOrigDest); +router.get('/origdest/:start/:end', pisController.byOrigDest) -module.exports = router; \ No newline at end of file +module.exports = router \ No newline at end of file diff --git a/src/routes/registration.routes.js b/src/routes/registration.routes.js index afee9cd..a59bb7b 100644 --- a/src/routes/registration.routes.js +++ b/src/routes/registration.routes.js @@ -1,8 +1,8 @@ -const express = require('express'); -const router = express.Router(); -const regController = require('../controllers/registration.controllers'); +const express = require('express') +const router = express.Router() +const regController = require('../controllers/registration.controllers') -router.post('/request', regController.request); +router.post('/request', regController.request) router.post('/register', regController.register) -module.exports = router; \ No newline at end of file +module.exports = router \ No newline at end of file diff --git a/src/routes/stats.routes.js b/src/routes/stats.routes.js index ae46cbc..d7f6791 100644 --- a/src/routes/stats.routes.js +++ b/src/routes/stats.routes.js @@ -1,8 +1,8 @@ -const express = require('express'); -const router = express.Router(); -const statsController = require('../controllers/stats.controllers'); +const express = require('express') +const router = express.Router() +const statsController = require('../controllers/stats.controllers') -router.get('/', statsController.get); +router.get('/', statsController.get) -module.exports = router; \ No newline at end of file +module.exports = router \ No newline at end of file diff --git a/src/services/dbAccess.services.js b/src/services/dbAccess.services.js index 68f57d0..ad44dd4 100644 --- a/src/services/dbAccess.services.js +++ b/src/services/dbAccess.services.js @@ -1,14 +1,10 @@ +/* global process */ const log = require('../utils/log.utils') // Log Helper -// eslint-disable-next-line no-undef const dbUser = process.env.OWL_DB_USER || 'owl' -// eslint-disable-next-line no-undef const dbPass = process.env.OWL_DB_PASS || 'twittwoo' -// eslint-disable-next-line no-undef const dbName = process.env.OWL_DB_NAME || 'owlboard' -// eslint-disable-next-line no-undef const dbPort = process.env.OWL_DB_PORT || 27017 -// eslint-disable-next-line no-undef const dbHost = process.env.OWL_DB_HOST || 'localhost' const uri = `mongodb://${dbUser}:${dbPass}@${dbHost}:${dbPort}` diff --git a/src/services/find.services.js b/src/services/find.services.js index e2c6349..90c59f7 100644 --- a/src/services/find.services.js +++ b/src/services/find.services.js @@ -1,59 +1,59 @@ // Parse and return a find request -const log = require('../utils/log.utils'); // Log Helper -const db = require('../services/dbAccess.services'); +const log = require('../utils/log.utils') // Log Helper +const db = require('../services/dbAccess.services') const san = require('../utils/sanitizer.utils') // DB Query: query(collection, query) // Define collection as all queries are for the "corpus" collection. -const col = "corpus" +const col = 'corpus' async function name(id){ - log.out(`findServices.name: Finding station name: ${id}`, "info") - var name = san.cleanApiEndpointTxt(id.toUpperCase()) - query = {NLCDESC: name} - //var data = await db.query(col,query) - return await db.query(col,query) + log.out(`findServices.name: Finding station name: ${id}`, 'info') + var name = san.cleanApiEndpointTxt(id.toUpperCase()) + let query = {NLCDESC: name} + //var data = await db.query(col,query) + return await db.query(col,query) } async function crs(id){ - log.out(`findServices.crs: Finding crs: ${id}`, "info") - var crs = san.cleanApiEndpointTxt(id.toUpperCase()) - query = {'3ALPHA': crs} - //var data = await db.query(col,query) - return await db.query(col,query) + log.out(`findServices.crs: Finding crs: ${id}`, 'info') + var crs = san.cleanApiEndpointTxt(id.toUpperCase()) + let query = {'3ALPHA': crs} + //var data = await db.query(col,query) + return await db.query(col,query) } async function nlc(id){ - log.out(`findServices.nlc: Finding nlc: ${id}`, "info") - var nlc = san.cleanApiEndpointNum(id) - query = {NLC: parseInt(nlc)} - log.out(`findServices.nlc: NLC Converted to int: ${query}`, "info") - //var data = await db.query(col,query) - return await db.query(col,query) + log.out(`findServices.nlc: Finding nlc: ${id}`, 'info') + var nlc = san.cleanApiEndpointNum(id) + let query = {NLC: parseInt(nlc)} + log.out(`findServices.nlc: NLC Converted to int: ${query}`, 'info') + //var data = await db.query(col,query) + return await db.query(col,query) } async function tiploc(id){ - log.out(`findServices.tiploc: Finding tiploc: ${id}`, "info") - var tiploc = san.cleanApiEndpointTxt(id.toUpperCase()) - query = {TIPLOC: tiploc} - //var data = await db.query(col,query) - return await db.query(col,query) + log.out(`findServices.tiploc: Finding tiploc: ${id}`, 'info') + var tiploc = san.cleanApiEndpointTxt(id.toUpperCase()) + let query = {TIPLOC: tiploc} + //var data = await db.query(col,query) + return await db.query(col,query) } async function stanox(id){ - log.out(`findServices.stanox: Finding stanox: ${id}`, "info") - var stanox = san.cleanApiEndpointNum(id) - query = {STANOX: String(stanox)} - //var data = await db.query(col,query) - return await db.query(col,query) + log.out(`findServices.stanox: Finding stanox: ${id}`, 'info') + var stanox = san.cleanApiEndpointNum(id) + let query = {STANOX: String(stanox)} + //var data = await db.query(col,query) + return await db.query(col,query) } module.exports = { - name, - crs, - nlc, - tiploc, - stanox + name, + crs, + nlc, + tiploc, + stanox } \ No newline at end of file diff --git a/src/services/issue.services.js b/src/services/issue.services.js index c6d5669..a9523ed 100644 --- a/src/services/issue.services.js +++ b/src/services/issue.services.js @@ -1,33 +1,35 @@ +/* eslint-disable no-useless-escape */ +/* global process */ const axios = require('axios') const log = require('../utils/log.utils') async function processor(data) { - log.out(`issueService.processor: Issue received`, "info") - let out = {} - out.title = data.subject.replace(/<[^>]+>|[\*\$]/g, ''); - out.body = data.msg.replace(/<[^>]+>|[\*\$]/g, '') - return await sendToGitea(out); + log.out('issueService.processor: Issue received', 'info') + let out = {} + out.title = data.subject.replace(/<[^>]+>|[\*\$]/g, '') + out.body = data.msg.replace(/<[^>]+>|[\*\$]/g, '') + return await sendToGitea(out) } async function sendToGitea(body) { - let key = process.env.OWL_GIT_ISSUEBOT - let url = process.env.OWL_GIT_APIENDPOINT - let opts = { - headers: { - Authorization: key - } - } - var res = await axios.post(url, body, opts) - // Need to read the output from the POST and pass the result upwards to the client. - if (res.status == 201) { - log.out("issueService.sendToGitea: Issue sent to Gitea", "info") - return {status: res.status,message:"issue created"} - } else { - log.out(`issueService.sendToGitea: Failed to send issue to Gitea: ${res.body}`, "err") - return {status: res.status,message:"issue not created"} + let key = process.env.OWL_GIT_ISSUEBOT + let url = process.env.OWL_GIT_APIENDPOINT + let opts = { + headers: { + Authorization: key } + } + var res = await axios.post(url, body, opts) + // Need to read the output from the POST and pass the result upwards to the client. + if (res.status == 201) { + log.out('issueService.sendToGitea: Issue sent to Gitea', 'info') + return {status: res.status,message:'issue created'} + } else { + log.out(`issueService.sendToGitea: Failed to send issue to Gitea: ${res.body}`, 'err') + return {status: res.status,message:'issue not created'} + } } module.exports = { - processor + processor } \ No newline at end of file diff --git a/src/services/kube.services.js b/src/services/kube.services.js index ec2c2f9..f09d9f7 100644 --- a/src/services/kube.services.js +++ b/src/services/kube.services.js @@ -2,27 +2,27 @@ const testing = require('../services/mail.services') const log = require('../utils/log.utils') async function getAlive(){ - log.out(`kubeServices.getAlive: alive hook checked`, "info") - return {code: 200, state: {state: "alive",noise: "twit-twoo"}} + log.out('kubeServices.getAlive: alive hook checked', 'info') + return {code: 200, state: {state: 'alive',noise: 'twit-twoo'}} } async function getReady(){ - log.out(`kubeServices.getReady: ready hook checked`, "info") - testing.send({ - to: "fred@fjla.uk", - subject: "OwlBoard Test", - txt: "This is a test message from OwlBoard (testing)" - }); - return "not_implemented"; -}; + log.out('kubeServices.getReady: ready hook checked', 'info') + testing.send({ + to: 'fred@fjla.uk', + subject: 'OwlBoard Test', + txt: 'This is a test message from OwlBoard (testing)' + }) + return 'not_implemented' +} async function getTime(){ - var now = new Date() - return {responseGenerated: now} + var now = new Date() + return {responseGenerated: now} } module.exports = { - getAlive, - getReady, - getTime + getAlive, + getReady, + getTime } \ No newline at end of file diff --git a/src/services/ldb.services.js b/src/services/ldb.services.js index 357e95f..a6fa02a 100644 --- a/src/services/ldb.services.js +++ b/src/services/ldb.services.js @@ -1,6 +1,7 @@ +/* global process */ // Parse and return an LDB Request -const log = require('../utils/log.utils'); // Log Helper +const log = require('../utils/log.utils') // Log Helper const ldb = require('ldbs-json') const util = require('../utils/ldb.utils') const san = require('../utils/sanitizer.utils') @@ -10,57 +11,57 @@ const ldbKey = process.env.OWL_LDB_KEY const ldbsvKey = process.env.OWL_LDB_SVKEY async function get(id, staff=false){ - const cleanId = san.cleanApiEndpointTxt(id); - const obj = await util.checkCrs(cleanId); - try { - const crs = obj[0]['3ALPHA']; - log.out(`ldbService.get: Determined CRS for lookup to be: ${crs}`, "info"); - if (staff) { - const data = arrDepBoardStaff(crs) - db.increment("ldbsvws") - return await data - } else { - const data = arrDepBoard(crs); - db.increment("ldbws"); - return await data - } - } catch (err) { - log.out(`ldbService.get: Error, Unable to find CRS: ${err}`, "info") - return {ERROR:'NOT_FOUND',description:'The entered station was not found. Please check and try again.'}; + const cleanId = san.cleanApiEndpointTxt(id) + const obj = await util.checkCrs(cleanId) + try { + const crs = obj[0]['3ALPHA'] + log.out(`ldbService.get: Determined CRS for lookup to be: ${crs}`, 'info') + if (staff) { + const data = arrDepBoardStaff(crs) + db.increment('ldbsvws') + return await data + } else { + const data = arrDepBoard(crs) + db.increment('ldbws') + return await data } + } catch (err) { + log.out(`ldbService.get: Error, Unable to find CRS: ${err}`, 'info') + return {ERROR:'NOT_FOUND',description:'The entered station was not found. Please check and try again.'} + } } async function arrDepBoard(CRS){ - log.out(`ldbService.arrDepBoard: Trying to fetch ArrDep Board for ${CRS}`, "info") - try { - const options = { - numRows: 10, - crs: CRS.toUpperCase() - } - const api = new ldb(ldbKey,false) - return await api.call("GetArrDepBoardWithDetails", options, false, false) - } catch (err) { - log.out(`ldbService.arrDepBoard: Lookup Failed for: ${CRS}`, "warn") - return {GetStationBoardResult: "not available", Reason: `The CRS code ${CRS} is not valid`, Why: `Sometimes a station will have more than one CRS - for example Filton Abbey Wood has FIT and FAW however schedules are only available when looking up with FIT - this is how the National Rail Enquiries systems work.`}; + log.out(`ldbService.arrDepBoard: Trying to fetch ArrDep Board for ${CRS}`, 'info') + try { + const options = { + numRows: 10, + crs: CRS.toUpperCase() } + const api = new ldb(ldbKey,false) + return await api.call('GetArrDepBoardWithDetails', options, false, false) + } catch (err) { + log.out(`ldbService.arrDepBoard: Lookup Failed for: ${CRS}`, 'warn') + return {GetStationBoardResult: 'not available', Reason: `The CRS code ${CRS} is not valid`, Why: 'Sometimes a station will have more than one CRS - for example Filton Abbey Wood has FIT and FAW however schedules are only available when looking up with FIT - this is how the National Rail Enquiries systems work.'} + } } async function arrDepBoardStaff(CRS) { - log.out(`ldbService.arrDepBoardStaff: Trying to fetch ArrDep Board for ${CRS}`, "dbug") - try { - const options = { - numRows: 25, - crs: CRS.toUpperCase(), - getNonPassengerServices: true - } - const api = new ldb(ldbsvKey,true) - return await api.call("GetArrDepBoardWithDetails", options, false, false) - } catch (err) { - log.out(`ldbService.arrDepBoardStaff: Lookup Failed for: ${CRS}, "warn`) - return {GetStationBoardResult: "not available", Reason: `The CRS code ${CRS} is not valid`, Why: `Sometimes a station will have more than one CRS - for example Filton Abbey Wood has FIT and FAW however schedules are only available when looking up with FIT - this is how the National Rail Enquiries systems work.`}; + log.out(`ldbService.arrDepBoardStaff: Trying to fetch ArrDep Board for ${CRS}`, 'dbug') + try { + const options = { + numRows: 25, + crs: CRS.toUpperCase(), + getNonPassengerServices: true } + const api = new ldb(ldbsvKey,true) + return await api.call('GetArrDepBoardWithDetails', options, false, false) + } catch (err) { + log.out(`ldbService.arrDepBoardStaff: Lookup Failed for: ${CRS}, "warn`) + return {GetStationBoardResult: 'not available', Reason: `The CRS code ${CRS} is not valid`, Why: 'Sometimes a station will have more than one CRS - for example Filton Abbey Wood has FIT and FAW however schedules are only available when looking up with FIT - this is how the National Rail Enquiries systems work.'} + } } module.exports = { - get + get } \ No newline at end of file diff --git a/src/services/list.services.js b/src/services/list.services.js index 89b9036..30fadb7 100644 --- a/src/services/list.services.js +++ b/src/services/list.services.js @@ -1,20 +1,19 @@ -const log = require('../utils/log.utils'); // Log Helper +const log = require('../utils/log.utils') // Log Helper const db = require('../services/dbAccess.services') -const os = require('os') async function getStations(){ - var out = db.query("stations") - log.out(`listServices.getStations: Fetching stations list`, "info") - return await out; + var out = db.query('stations') + log.out('listServices.getStations: Fetching stations list', 'info') + return await out } async function getCorpus(){ - var out = db.query("corpus") - log.out(`listServices.getCorpus: Fetching CORPUS list`, "info") - return await out; + var out = db.query('corpus') + log.out('listServices.getCorpus: Fetching CORPUS list', 'info') + return await out } module.exports = { - getStations, - getCorpus + getStations, + getCorpus } \ No newline at end of file diff --git a/src/services/mail.services.js b/src/services/mail.services.js index debbef4..7495ea8 100644 --- a/src/services/mail.services.js +++ b/src/services/mail.services.js @@ -1,3 +1,4 @@ +/* global process */ const log = require('../utils/log.utils') const mail = require('nodemailer') //>> Probs wrong diff --git a/src/services/registration.services.js b/src/services/registration.services.js index 306ae29..fd362ee 100644 --- a/src/services/registration.services.js +++ b/src/services/registration.services.js @@ -18,6 +18,7 @@ async function createRegKey(body) { if (!message) { const err = new Error('Message generation error') log.out('registerServices.createRegKey: Error generating registration email', 'err') + log.out(err, 'err') return 500 } if (await mail.send(message) == true) { diff --git a/src/utils/ldb.utils.js b/src/utils/ldb.utils.js index fa6882d..446e473 100644 --- a/src/utils/ldb.utils.js +++ b/src/utils/ldb.utils.js @@ -1,49 +1,49 @@ -const log = require('../utils/log.utils'); // Log Helper +const log = require('../utils/log.utils') // Log Helper const db = require('../services/dbAccess.services') // DB Access const san = require('../utils/sanitizer.utils') // Sanitiser async function checkCrs(input){ - var INPUT = input.toUpperCase() - log.out(`ldbUtils.checkCrs: Building database query to find: '${INPUT}'`, "info") - var query = { - '$or':[ - {'3ALPHA':INPUT}, - {'TIPLOC':INPUT}, - {'STANOX':INPUT} - ] - }; - var result = await db.query("stations", query) - log.out(`ldbUtils.checkCrs: Query results: ${JSON.stringify(result)}`, "dbug") - return result + var INPUT = input.toUpperCase() + log.out(`ldbUtils.checkCrs: Building database query to find: '${INPUT}'`, 'info') + var query = { + '$or':[ + {'3ALPHA':INPUT}, + {'TIPLOC':INPUT}, + {'STANOX':INPUT} + ] + } + var result = await db.query('stations', query) + log.out(`ldbUtils.checkCrs: Query results: ${JSON.stringify(result)}`, 'dbug') + return result } async function cleanMessages(input){ // Needs to be moved to the frontend `ensureArray() func` - var out = [] - if (typeof input.message == "string") { - out.push(await san.cleanNrcc(input.message)) - } else if (typeof input.message == "object") { - for(var i = 0; i < input.message.length; i++) { - out.push(await san.cleanNrcc(input.message[i])) - } + var out = [] + if (typeof input.message == 'string') { + out.push(await san.cleanNrcc(input.message)) + } else if (typeof input.message == 'object') { + for(var i = 0; i < input.message.length; i++) { + out.push(await san.cleanNrcc(input.message[i])) } - return out; + } + return out } // Accepts an object but not an Array and returns it wrapped in an array. async function cleanServices(input){ // Need to triple check but I don't think this is used anymore. - var out = [] - if (!Array.isArray(input)) { - log.out(`ldbUtils.cleanServices: Transforming input: ${input}`, "depr") - out.push(input) - log.out(`ldbUtils.cleanServices: Returning output: ${out}`, "depr") - return out; - } else { - return input; - } + var out = [] + if (!Array.isArray(input)) { + log.out(`ldbUtils.cleanServices: Transforming input: ${input}`, 'depr') + out.push(input) + log.out(`ldbUtils.cleanServices: Returning output: ${out}`, 'depr') + return out + } else { + return input + } } module.exports = { - checkCrs, - cleanMessages, - cleanServices + checkCrs, + cleanMessages, + cleanServices } \ No newline at end of file diff --git a/src/utils/log.utils.js b/src/utils/log.utils.js index 988f99e..04a6025 100644 --- a/src/utils/log.utils.js +++ b/src/utils/log.utils.js @@ -1,16 +1,17 @@ -const environment = process.env.NODE_ENV; +/* global process */ +const environment = process.env.NODE_ENV -const hideInProduction = ["info", "dbug"] +const hideInProduction = ['info', 'dbug'] async function out(msg, level = 'othr') { - if (environment === "production" && hideInProduction.includes(level.toLowerCase())) { - return; - } else { - const time = new Date().toISOString(); - console.log(`${time} - ${level.toUpperCase()} - ${msg}`); - } + if (environment === 'production' && hideInProduction.includes(level.toLowerCase())) { + return + } else { + const time = new Date().toISOString() + console.log(`${time} - ${level.toUpperCase()} - ${msg}`) + } } module.exports = { - out + out } \ No newline at end of file diff --git a/src/utils/sanitizer.utils.js b/src/utils/sanitizer.utils.js index ea238bf..ad5ee4a 100644 --- a/src/utils/sanitizer.utils.js +++ b/src/utils/sanitizer.utils.js @@ -1,12 +1,12 @@ //const clean = require('string-sanitizer-fix'); -const log = require('../utils/log.utils'); +const log = require('../utils/log.utils') function removeNonAlphanumeric(inputString) { // Should be able to replace sanitizer module - return inputString.replace(/[^a-zA-Z0-9]/g, ''); + return inputString.replace(/[^a-zA-Z0-9]/g, '') } function removeNonAlpha(inputString) { // Should be able to replace sanitizer module - return inputString.replace(/[^a-zA-Z]/g, ''); + return inputString.replace(/[^a-zA-Z]/g, '') } const cleanApiEndpointTxt = removeNonAlpha @@ -30,20 +30,20 @@ function cleanApiEndpointNum(input) { } */ function cleanNrcc(input) { // Remove newlines and then

tags from input - const cleanInput = input.replace(/[\n\r]/g, '').replace(/<\/?p[^>]*>/g, ''); - return cleanInput; - } + const cleanInput = input.replace(/[\n\r]/g, '').replace(/<\/?p[^>]*>/g, '') + return cleanInput +} async function getDomainFromEmail(mail) { // Needs testing - split = mail.split("@") - return split[1] + let split = mail.split('@') + return split[1] } module.exports = { - cleanApiEndpointTxt, - cleanApiEndpointNum, - removeNonAlpha, - removeNonAlphanumeric, - cleanNrcc, - getDomainFromEmail, + cleanApiEndpointTxt, + cleanApiEndpointNum, + removeNonAlpha, + removeNonAlphanumeric, + cleanNrcc, + getDomainFromEmail, } \ No newline at end of file diff --git a/src/utils/timeConvert.utils.js b/src/utils/timeConvert.utils.js index 852b60d..88cfd38 100644 --- a/src/utils/timeConvert.utils.js +++ b/src/utils/timeConvert.utils.js @@ -1,15 +1,15 @@ function unixLocal(unix) { - var jsTime = unix*1000 - var dt = new Date(jsTime) - return dt.toLocaleString() + var jsTime = unix*1000 + var dt = new Date(jsTime) + return dt.toLocaleString() } function jsUnix(js) { - var preRound = js / 1000 - return Math.round(preRound) + var preRound = js / 1000 + return Math.round(preRound) } module.exports = { - unixLocal, - jsUnix, + unixLocal, + jsUnix, } \ No newline at end of file diff --git a/src/utils/varTest.utils.js b/src/utils/varTest.utils.js index 66c8e99..e6d0b29 100644 --- a/src/utils/varTest.utils.js +++ b/src/utils/varTest.utils.js @@ -1,27 +1,28 @@ +/* global process */ // Checks that all required environment variables are present. // Returns True or False and offers an object detailing what is missing. async function varTest(){ - var required = { - OWL_LDB_KEY: process.env.OWL_LDB_KEY, - OWL_LDB_CORPUSUSER: process.env.OWL_LDB_CORPUSUSER, - OWL_LDB_CORPUSPASS: process.env.OWL_LDB_CORPUSPASS, - OWL_NOT_USED: process.env.OWL_NOT_USED - } - var desired = { - OWL_DB_PASS: process.env.OWL_DB_PASS - } - // DO NOT LOG CREDENTIALS!!! + var required = { + OWL_LDB_KEY: process.env.OWL_LDB_KEY, + OWL_LDB_CORPUSUSER: process.env.OWL_LDB_CORPUSUSER, + OWL_LDB_CORPUSPASS: process.env.OWL_LDB_CORPUSPASS, + OWL_NOT_USED: process.env.OWL_NOT_USED + } + var desired = { + OWL_DB_PASS: process.env.OWL_DB_PASS + } + // DO NOT LOG CREDENTIALS!!! - // Test that each of required is NOT undefined. - // var pass = true if all okay, false if not. - // Append any missing values to missing_required = [] - // Test that each of desired is NOT undefined. - // Append any missing values to missing_desired = [] + // Test that each of required is NOT undefined. + // var pass = true if all okay, false if not. + // Append any missing values to missing_required = [] + // Test that each of desired is NOT undefined. + // Append any missing values to missing_desired = [] - // Return : {pass: $pass, missong_required = $missing_required, missing_desired = $missing_desired} + // Return : {pass: $pass, missong_required = $missing_required, missing_desired = $missing_desired} } module.exports = { - varTest + varTest } \ No newline at end of file