2017-10-14 23:31:44 -04:00
|
|
|
const express = require('express');
|
|
|
|
const path = require('path');
|
|
|
|
const favicon = require('serve-favicon');
|
|
|
|
const cookieParser = require('cookie-parser');
|
2017-10-15 16:32:49 -04:00
|
|
|
const helmet = require('helmet');
|
2023-04-07 19:51:34 +08:00
|
|
|
const compression = require('compression');
|
2023-05-07 15:23:46 +02:00
|
|
|
const sessionParser = require('./routes/session_parser');
|
2021-11-18 21:35:23 +01:00
|
|
|
const utils = require('./services/utils');
|
2023-05-07 15:23:46 +02:00
|
|
|
|
2018-08-01 09:26:02 +02:00
|
|
|
require('./services/handlers');
|
2022-01-10 17:09:20 +01:00
|
|
|
require('./becca/becca_loader');
|
2017-10-14 23:31:44 -04:00
|
|
|
|
|
|
|
const app = express();
|
|
|
|
|
|
|
|
// view engine setup
|
|
|
|
app.set('views', path.join(__dirname, 'views'));
|
|
|
|
app.set('view engine', 'ejs');
|
|
|
|
|
2022-08-22 19:29:58 +02:00
|
|
|
if (!utils.isElectron()) {
|
|
|
|
app.use(compression()); // HTTP compression
|
|
|
|
}
|
2022-08-20 17:30:35 -04:00
|
|
|
|
2018-10-14 11:31:23 +02:00
|
|
|
app.use(helmet({
|
2022-01-12 19:32:23 +01:00
|
|
|
hidePoweredBy: false, // errors out in electron
|
2022-05-18 22:56:29 +02:00
|
|
|
contentSecurityPolicy: false,
|
|
|
|
crossOriginEmbedderPolicy: false
|
2018-10-14 11:31:23 +02:00
|
|
|
}));
|
2017-10-24 22:04:52 -04:00
|
|
|
|
2022-01-12 19:32:23 +01:00
|
|
|
app.use(express.text({limit: '500mb'}));
|
|
|
|
app.use(express.json({limit: '500mb'}));
|
2022-02-18 22:34:46 +01:00
|
|
|
app.use(express.raw({limit: '500mb'}));
|
2022-01-12 19:32:23 +01:00
|
|
|
app.use(express.urlencoded({extended: false}));
|
2017-10-14 23:31:44 -04:00
|
|
|
app.use(cookieParser());
|
2022-10-26 23:50:54 +02:00
|
|
|
app.use(express.static(path.join(__dirname, 'public/root')));
|
2022-12-02 22:06:18 +01:00
|
|
|
app.use(`/manifest.webmanifest`, express.static(path.join(__dirname, 'public/manifest.webmanifest')));
|
|
|
|
app.use(`/robots.txt`, express.static(path.join(__dirname, 'public/robots.txt')));
|
2017-11-30 23:50:42 -05:00
|
|
|
app.use(sessionParser);
|
2022-12-21 15:19:05 +01:00
|
|
|
app.use(favicon(`${__dirname}/../images/app-icons/win/icon.ico`));
|
2017-10-14 23:31:44 -04:00
|
|
|
|
2023-05-07 15:23:46 +02:00
|
|
|
require('./routes/assets').register(app);
|
2017-11-03 23:00:35 -04:00
|
|
|
require('./routes/routes').register(app);
|
2019-01-27 12:28:20 +01:00
|
|
|
require('./routes/custom').register(app);
|
2023-05-07 15:23:46 +02:00
|
|
|
require('./routes/error_handlers').register(app);
|
2017-10-14 23:31:44 -04:00
|
|
|
|
2017-10-28 12:23:11 -04:00
|
|
|
// triggers sync timer
|
2017-10-21 21:10:33 -04:00
|
|
|
require('./services/sync');
|
|
|
|
|
2017-10-28 12:23:11 -04:00
|
|
|
// triggers backup timer
|
|
|
|
require('./services/backup');
|
|
|
|
|
2017-12-14 22:16:26 -05:00
|
|
|
// trigger consistency checks timer
|
|
|
|
require('./services/consistency_checks');
|
|
|
|
|
2018-03-02 20:56:58 -05:00
|
|
|
require('./services/scheduler');
|
|
|
|
|
2021-11-18 21:35:23 +01:00
|
|
|
if (utils.isElectron()) {
|
|
|
|
require('@electron/remote/main').initialize();
|
|
|
|
}
|
2021-11-16 22:43:08 +01:00
|
|
|
|
2023-05-07 15:23:46 +02:00
|
|
|
module.exports = app;
|