parent
fb5a91a010
commit
225047e24f
|
@ -5,7 +5,7 @@
|
|||
"env": {
|
||||
"es6": true,
|
||||
"node": true,
|
||||
"browser": false // do we need this?
|
||||
"browser": false // do we need this? none of this code will ever run on a browswer
|
||||
},
|
||||
"rules": {
|
||||
// disallow use of unary operators, ++ and --
|
||||
|
|
|
@ -1,11 +1,10 @@
|
|||
const path = require('path');
|
||||
const fs = require('fs');
|
||||
const { execSync } = require('child_process');
|
||||
const log4js = require('log4js');
|
||||
const config = require('../config');
|
||||
|
||||
// eslint-disable-next-line no-unused-vars
|
||||
let models;
|
||||
let logger;
|
||||
const logger = log4js.getLogger('default');
|
||||
|
||||
let totalStorageUsed;
|
||||
|
||||
|
@ -120,19 +119,13 @@ async function getTotalStorageUsed() {
|
|||
return totalStorageUsed;
|
||||
}
|
||||
|
||||
module.exports = (_models, _logger) => {
|
||||
models = _models;
|
||||
logger = _logger;
|
||||
setInterval(updateTotalStorageUsed, 120000);
|
||||
|
||||
// Update the used storage every 120 seconds
|
||||
setInterval(updateTotalStorageUsed, 120000);
|
||||
|
||||
return {
|
||||
initializeStorage,
|
||||
mkDirByPathSync,
|
||||
writeFileSync,
|
||||
moveUploadedFile,
|
||||
updateTotalStorageUsed,
|
||||
getTotalStorageUsed,
|
||||
};
|
||||
module.exports = {
|
||||
initializeStorage,
|
||||
mkDirByPathSync,
|
||||
writeFileSync,
|
||||
moveUploadedFile,
|
||||
updateTotalStorageUsed,
|
||||
getTotalStorageUsed,
|
||||
};
|
||||
|
|
|
@ -20,32 +20,7 @@ async function validateDatabase(db, logger) {
|
|||
}
|
||||
}
|
||||
|
||||
module.exports = async (logger) => {
|
||||
let db;
|
||||
module.exports = async () => ({
|
||||
models: {},
|
||||
|
||||
try {
|
||||
db = await open({
|
||||
filename: config.databaseFile,
|
||||
driver: sqlite3.Database,
|
||||
mode: sqlite3.OPEN_READWRITE,
|
||||
});
|
||||
} catch (exception) {
|
||||
logger.error(exception);
|
||||
process.exit();
|
||||
}
|
||||
|
||||
// I'm not sure we _really_ need to wait for this, since it'll exit the application if it's
|
||||
// invalid anyway.
|
||||
|
||||
await validateDatabase(db, logger);
|
||||
|
||||
return {
|
||||
models: {
|
||||
drivesModel: require('./drives')(db),
|
||||
users: require('./users')(db),
|
||||
|
||||
// TODO remove access to DB queries from non models
|
||||
__db: db, // to be removed when db queries are removed from outside models.
|
||||
},
|
||||
};
|
||||
};
|
||||
});
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
const router = require('express').Router();
|
||||
const controllers = require('../../controllers');
|
||||
|
||||
function runAsyncWrapper(callback) {
|
||||
return function wrapper(req, res, next) {
|
||||
|
@ -7,12 +8,6 @@ function runAsyncWrapper(callback) {
|
|||
};
|
||||
}
|
||||
|
||||
/* eslint-disable no-unused-vars */
|
||||
let models;
|
||||
let controllers;
|
||||
let logger;
|
||||
/* eslint-enable no-unused-vars */
|
||||
|
||||
// probs should put middleware somewhere else
|
||||
router.use(async (req, res, next) => {
|
||||
const currentAdmin = await controllers.admin.isCurrentUserAdmin(true, req);
|
||||
|
@ -85,6 +80,7 @@ router.get('/device/:dongle_id/ignore/:ignore_uploads', runAsyncWrapper(async (r
|
|||
return req.status(400).json({ error: true, msg: 'MISSING DATA', status: 400 });
|
||||
}
|
||||
|
||||
// TODO make this cleaner
|
||||
let isIgnored = null;
|
||||
switch (ignoreUploads) {
|
||||
case 'true':
|
||||
|
@ -107,10 +103,4 @@ router.get('/device/:dongle_id/athena/reboot', runAsyncWrapper(async (req, res)
|
|||
res.send('ok');
|
||||
}));
|
||||
|
||||
module.exports = (_models, _controllers, _logger) => {
|
||||
models = _models;
|
||||
controllers = _controllers;
|
||||
logger = _logger;
|
||||
|
||||
return router;
|
||||
};
|
||||
module.exports = router;
|
||||
|
|
|
@ -2,8 +2,8 @@
|
|||
module.exports = (_models, _controllers, _logger) => ({
|
||||
useradmin: require('./useradmin')(_models, _controllers, _logger),
|
||||
api: require('./api')(_models, _controllers, _logger),
|
||||
useradminapi: require('./userAdminApi')(_models, _controllers, _logger),
|
||||
admin: require('./administration/adminApi')(_models, _controllers, _logger),
|
||||
useradminapi: require('./userAdminApi'),
|
||||
admin: require('./administration/adminApi'),
|
||||
realtime: require('./api/realtime'),
|
||||
|
||||
deviceApi: require('./api/devices'),
|
||||
|
|
|
@ -3,6 +3,7 @@ const router = require('express').Router();
|
|||
const bodyParser = require('body-parser');
|
||||
const cookieParser = require('cookie-parser');
|
||||
const config = require('../config');
|
||||
const controllers = require('../controllers');
|
||||
|
||||
// TODO Remove this, pending on removing all auth logic from routes
|
||||
router.use(cookieParser());
|
||||
|
@ -16,7 +17,6 @@ function runAsyncWrapper(callback) {
|
|||
|
||||
/* eslint-disable no-unused-vars */
|
||||
let models;
|
||||
let controllers;
|
||||
let logger;
|
||||
/* eslint-enable no-unused-vars */
|
||||
|
||||
|
@ -35,9 +35,10 @@ router.get('/retropilot/0/useradmin/signout', runAsyncWrapper(async (req, res) =
|
|||
}));
|
||||
|
||||
router.get('/retropilot/0/useradmin', runAsyncWrapper(async (req, res) => {
|
||||
const accounts = await models.__db.get('SELECT COUNT(*) AS num FROM accounts');
|
||||
const devices = await models.__db.get('SELECT COUNT(*) AS num FROM devices');
|
||||
const drives = await models.__db.get('SELECT COUNT(*) AS num FROM drives');
|
||||
// TODO pull these values from db
|
||||
const accounts = 0;
|
||||
const devices = 0;
|
||||
const drives = 0;
|
||||
|
||||
return res.status(200).send({
|
||||
success: true,
|
||||
|
|
19
server.js
19
server.js
|
@ -7,6 +7,8 @@ const https = require('https');
|
|||
const express = require('express');
|
||||
const cors = require('cors');
|
||||
const rateLimit = require('express-rate-limit');
|
||||
const cookieParser = require('cookie-parser');
|
||||
const storageController = require('./controllers/storage');
|
||||
|
||||
log4js.configure({
|
||||
appenders: { logfile: { type: 'file', filename: 'server.log' }, out: { type: 'console' } /* {type: "file", filename: "server1.log"} */ },
|
||||
|
@ -18,13 +20,11 @@ const logger = log4js.getLogger('default');
|
|||
global.__basedir = __dirname;
|
||||
|
||||
/* eslint-disable no-unused-vars */
|
||||
const cookieParser = require('cookie-parser');
|
||||
const webWebsocket = require('./websocket/web');
|
||||
const athena = require('./websocket/athena');
|
||||
let routers = require('./routes');
|
||||
const routers = require('./routes');
|
||||
const orm = require('./models/index.model');
|
||||
let controllers = require('./controllers');
|
||||
let models = require('./models/index');
|
||||
const controllers = require('./controllers');
|
||||
const router = require('./routes/api/realtime');
|
||||
/* eslint-enable no-unused-vars */
|
||||
|
||||
|
@ -40,8 +40,6 @@ function runAsyncWrapper(callback) {
|
|||
const web = async () => {
|
||||
const app = express();
|
||||
|
||||
models = await models(logger).models;
|
||||
|
||||
app.use((req, res, next) => {
|
||||
// TODO: can we use config.baseUrl here?
|
||||
res.header('Access-Control-Allow-Origin', 'http://localhost:3000');
|
||||
|
@ -50,12 +48,9 @@ const web = async () => {
|
|||
next();
|
||||
});
|
||||
|
||||
controllers = await controllers(models, logger);
|
||||
storageController.initializeStorage();
|
||||
await storageController.updateTotalStorageUsed();
|
||||
|
||||
controllers.storage.initializeStorage();
|
||||
await controllers.storage.updateTotalStorageUsed();
|
||||
|
||||
routers = routers(models, controllers, logger);
|
||||
app.use(routers.api);
|
||||
app.use(routers.useradmin);
|
||||
app.use(routers.authenticationApi);
|
||||
|
@ -107,6 +102,8 @@ const web = async () => {
|
|||
res.status(404);
|
||||
res.send('Not Implemented');
|
||||
}));
|
||||
|
||||
return app;
|
||||
};
|
||||
|
||||
lockfile.lock('retropilot_server', { realpath: false, stale: 30000, update: 2000 })
|
||||
|
|
Loading…
Reference in New Issue