Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Admin panel Incomplete #13

Merged
merged 10 commits into from
Nov 24, 2020
2 changes: 1 addition & 1 deletion .eslintrc.json
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,6 @@
},
"rules": {},
"ignorePatterns": [
"src/assets/**/*"
"src/user/assets/**/*"
]
}
1 change: 0 additions & 1 deletion src/config.js → config.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
module.exports = Object.freeze({
root: __dirname,
sessionSecret: process.env.SESSION_SECRET || 'secret',
supportedVideoFormats: ['mp4', 'mkv', 'avi'],
});
49 changes: 32 additions & 17 deletions server.js
Original file line number Diff line number Diff line change
@@ -1,14 +1,15 @@
const {networkInterfaces} = require('os');
const path = require('path');

const yargs = require('yargs/yargs');
const {hideBin} = require('yargs/helpers');
require('dotenv').config();

const userSettings = require(__dirname + '/src/user-settings');
// const argv = parseArgs(process.argv.slice(2));
global.__config = require(__dirname + '/config');
const config = global.__config;

const nets = networkInterfaces();
const settings = require(config.root + '/src/settings');
const startServer = require(config.root + '/src/utility/startServer.js');
// const argv = parseArgs(process.argv.slice(2));

const argv = yargs(hideBin(process.argv))
.scriptName('media-server')
Expand All @@ -29,23 +30,37 @@ const argv = yargs(hideBin(process.argv))
type: 'number',
description: 'the port to run server on',
});
yargs.option('gui', {
alias: 'g',
type: 'boolean',
description: 'open gui mode for configuring settings',
});
})
.alias('h', 'help')
.version(false).argv;

Object.assign(userSettings, argv);
const app = require(path.join(__dirname, 'src', 'index.js'));
Object.assign(settings, argv);

console.log(process.argv.slice(2).length && settings.location == undefined);
if (process.argv.slice(2).length === 0 && settings.location == undefined) {
argv.g = true;
}

const PORT = argv.port || process.env.PORT || 3000;

app.listen(PORT, () => {
console.log('server is up');
for (const name of Object.keys(nets)) {
for (const net of nets[name]) {
// skip over non-ipv4 and internal (i.e. 127.0.0.1) addresses
if (net.family === 'IPv4' && !net.internal) {
console.log('listening at http://' + net.address + ':' + PORT);
}
}
}
});
if (argv.g) {
const admin = require(config.root + '/src/admin/index.js');
const adminServer = admin.listen(parseInt(PORT) + 1, 'localhost', () => {
console.log('admin server is up');
console.log(
'listening at http://' +
adminServer.address().address +
':' +
adminServer.address().port,
);
});
admin.on('close', () => {});
} else {
const app = require(config.root + '/src/user/index.js');
startServer(app, PORT);
}
3 changes: 3 additions & 0 deletions src/admin/admin-session-config.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
module.exports = {
sessionSecret: process.env.ADMIN_SESSION_SECRET || 'secr3t',
};
34 changes: 34 additions & 0 deletions src/admin/index.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
const config = global.__config;

const express = require('express');
const session = require('express-session');
const startServer = require(config.root + '/src/utility/startServer');
const FileStore = require('session-file-store')(session);

const adminSessionConfig = require(config.root +
'/src/admin/admin-session-config');

const app = express();

app.use(express.json());
app.use(express.urlencoded({extended: true}));
app.use(
session({
secret: [adminSessionConfig.sessionSecret],
resave: false,
saveUninitialized: true,
cookie: {
maxAge: 30 * 24 * 60 * 60 * 1000, // milliseconds in 30 days
},
store: new FileStore(),
}),
);

app.get('/start', (req, res) => {
delete require.cache[require.resolve(config.root + '/src/user/index.js')];
const app = require(config.root + '/src/user/index.js');
startServer(app, adminSessionConfig.port);
res.send('Done');
});

module.exports = app;
10 changes: 0 additions & 10 deletions src/routes/api/index.js

This file was deleted.

5 changes: 0 additions & 5 deletions src/services/index.js

This file was deleted.

1 change: 1 addition & 0 deletions src/user-settings.js → src/settings.js
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
module.exports = {
location: process.env.LOCATION,
port: process.env.PORT,
};
File renamed without changes.
22 changes: 12 additions & 10 deletions src/index.js → src/user/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,12 @@ const mustacheExpress = require('mustache-express');
const FileStore = require('session-file-store')(session);
const favicon = require('serve-favicon');

const config = require(__dirname + '/config');
const apiRouter = require(config.root + '/routes/api');
const contentRouter = require(config.root + '/routes/content');
const userSettings = require(config.root + '/user-settings');
const config = global.__config;
const apiRouter = require(config.root + '/src/user/routes/api');
const contentRouter = require(config.root + '/src/user/routes/content');
const settings = require(config.root + '/src/settings');
const userSessionConfig = require(config.root +
'/src/user/user-session-config');

const app = express();

Expand All @@ -20,7 +22,7 @@ app.use(express.json());
app.use(express.urlencoded({extended: true}));
app.use(
session({
secret: [config.sessionSecret],
secret: [userSessionConfig.sessionSecret],
resave: false,
saveUninitialized: true,
cookie: {
Expand All @@ -30,19 +32,19 @@ app.use(
}),
);

app.use(favicon(config.root + '/public/favicon.ico'));
app.use(favicon(config.root + '/src/user/public/favicon.ico'));

app.get('/', (req, res) => {
res.redirect('/content');
});

if (userSettings.verbose == 1) morganBody(app, {logAllReqHeader: false});
if (userSettings.verbose >= 2) morganBody(app, {logAllReqHeader: true});
if (settings.verbose == 1) morganBody(app, {logAllReqHeader: false});
if (settings.verbose >= 2) morganBody(app, {logAllReqHeader: true});
app.use('/api', apiRouter);
app.use('/content', contentRouter);

const content = userSettings.location;
const content = settings.location;
app.use('/public', express.static(content));
app.use('/static', express.static(config.root + '/assets'));
app.use('/static', express.static(config.root + 'src/user/assets'));

module.exports = app;
File renamed without changes.
11 changes: 11 additions & 0 deletions src/user/routes/api/index.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
const express = require('express');
const config = global.__config;
const root = config.root;

// eslint-disable-next-line new-cap
const router = express.Router();

router.use('/video', require(root + '/src/user/routes/api/video'));
router.use(require(root + '/src/user/routes/api/info'));

module.exports = router;
File renamed without changes.
5 changes: 3 additions & 2 deletions src/routes/api/video.js → src/user/routes/api/video.js
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
const express = require('express');
const {StatusCodes} = require('http-status-codes');

const root = require(__dirname + '/../../config').root;
const utility = require(root + '/utility');
const config = global.__config;
const root = config.root;
const utility = require(root + '/src/utility');

// eslint-disable-next-line new-cap
const router = express.Router();
Expand Down
8 changes: 4 additions & 4 deletions src/routes/content.js → src/user/routes/content.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,14 @@ const path = require('path');
const express = require('express');
const serveIndex = require('serve-index');

const config = require(__dirname + '/../config');
const services = require(config.root + '/services');
const userSettings = require(config.root + '/user-settings');
const config = global.__config;
const services = require(config.root + '/src/user/services');
const settings = require(config.root + '/src/settings');

// eslint-disable-next-line new-cap
const router = express.Router();

const content = userSettings.location;
const content = settings.location;
const supportedVideoFormatsReg = services.video.supportedVideoFormatsReg;

router.get(
Expand Down
6 changes: 6 additions & 0 deletions src/user/services/index.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
const config = global.__config;
const root = config.root;
const customRequireDirectory = require(root +
'/src/utility/customRequireDirectory');

module.exports = customRequireDirectory(__dirname);
2 changes: 1 addition & 1 deletion src/services/video.js → src/user/services/video.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
const fs = require('fs');

const config = require(__dirname + '/../config');
const config = global.__config;

const supportedVideoFormatsReg = new RegExp(
'\\.' + '(' + config.supportedVideoFormats.join('|') + ')' + '$',
Expand Down
3 changes: 3 additions & 0 deletions src/user/user-session-config.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
module.exports = Object.freeze({
sessionSecret: process.env.USER_SESSION_SECRET || 'secret',
});
File renamed without changes.
6 changes: 4 additions & 2 deletions src/utility/index.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
const root = require(__dirname + '/../config').root;
const config = global.__config;
const root = config.root;

const customRequireDirectory = require(root +
'/utility/customRequireDirectory');
'/src/utility/customRequireDirectory');

module.exports = customRequireDirectory(__dirname);
5 changes: 3 additions & 2 deletions src/utility/request-util/index.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
const root = require(__dirname + '/../../config').root;
const config = global.__config;
const root = config.root;
const customRequireDirectory = require(root +
'/utility/customRequireDirectory');
'/src/utility/customRequireDirectory');

module.exports = customRequireDirectory(__dirname);
5 changes: 3 additions & 2 deletions src/utility/response-util/index.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
const root = require(__dirname + '/../../config').root;
const config = global.__config;
const root = config.root;
const customRequireDirectory = require(root +
'/utility/customRequireDirectory');
'/src/utility/customRequireDirectory');

module.exports = customRequireDirectory(__dirname);
15 changes: 15 additions & 0 deletions src/utility/startServer.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
module.exports = function(app, port) {
const {networkInterfaces} = require('os');
const nets = networkInterfaces();
app.listen(port, () => {
console.log('server is up');
for (const name of Object.keys(nets)) {
for (const net of nets[name]) {
// skip over non-ipv4 and internal (i.e. 127.0.0.1) addresses
if (net.family === 'IPv4' && !net.internal) {
console.log('listening at http://' + net.address + ':' + port);
}
}
}
});
};