2023-02-13 02:16:46 +01:00
|
|
|
console.log('Executing startup jobs...');
|
|
|
|
|
|
|
|
const fs = require('fs');
|
2023-02-18 16:03:27 +01:00
|
|
|
const crc32 = require('crc-32');
|
2023-02-25 07:32:11 +01:00
|
|
|
const glob = require('glob');
|
|
|
|
const { exec } = require('child_process');
|
2023-02-13 02:16:46 +01:00
|
|
|
|
|
|
|
const hrt = () => {
|
|
|
|
let hr = process.hrtime();
|
|
|
|
return hr[0] + hr[1] / 1000000;
|
|
|
|
}
|
|
|
|
|
2023-02-18 16:29:32 +01:00
|
|
|
// load dotenv
|
|
|
|
let dotpath = (process.env.APP_DEBUG == 'true') ? '.env.debug' : '.env.prod';
|
|
|
|
if (!fs.existsSync(dotpath)) dotpath = '.env';
|
|
|
|
require('dotenv').config({
|
|
|
|
path: dotpath
|
|
|
|
});
|
|
|
|
|
2023-02-19 03:32:08 +01:00
|
|
|
// load debug
|
|
|
|
if (process.env.APP_DEBUG) {
|
|
|
|
process.env.DEBUG = '*/*';
|
|
|
|
}
|
|
|
|
|
2023-02-18 16:29:32 +01:00
|
|
|
// load key
|
|
|
|
if (!process.env.APP_KEY)
|
|
|
|
throw new Error('APP_KEY is not set.')
|
2023-02-13 02:16:46 +01:00
|
|
|
|
2023-02-25 07:32:11 +01:00
|
|
|
// import gpg keys
|
|
|
|
glob('data/userdata/*_gpgkey', async (err, files) => {
|
|
|
|
if (err) {
|
|
|
|
console.error(err);
|
|
|
|
process.exit(-1);
|
|
|
|
}
|
|
|
|
files.filter(
|
|
|
|
file => {
|
|
|
|
return !file.startsWith('.')
|
|
|
|
}
|
|
|
|
).forEach(file => {
|
|
|
|
exec('gpg --import ' + file, (err, stdout, stderr) => {
|
|
|
|
if (err) {
|
|
|
|
console.error(`Errors while importing ${file}: ${err}`);
|
|
|
|
process.exit(-1);
|
|
|
|
}
|
|
|
|
console.log(`Imported ${file} key`);
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
|
|
|
});
|
|
|
|
|
2023-02-18 16:29:32 +01:00
|
|
|
// TODO: perhaps a better approach to storing it????
|
|
|
|
// ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
|
|
|
|
process.env.APP_KEY = Buffer.from(process.env.APP_KEY, 'base64').toString('ascii');
|
2023-02-13 02:16:46 +01:00
|
|
|
|
2023-02-19 03:32:08 +01:00
|
|
|
console.log('Using a key with CRC32: ' + crc32.str(process.env.APP_KEY).toString(16));
|
2023-02-13 02:16:46 +01:00
|
|
|
|
2023-02-18 16:29:32 +01:00
|
|
|
async function startup() {
|
|
|
|
let t1 = hrt();
|
2023-02-18 16:03:27 +01:00
|
|
|
|
2023-02-13 02:16:46 +01:00
|
|
|
await require('./helpers').ViewLoader.preload();
|
|
|
|
console.log('Views compiled in ' + (hrt() - t1) + ' ms');
|
|
|
|
|
|
|
|
console.log('Finished in ' + (hrt() - t1) + " ms");
|
|
|
|
}
|
|
|
|
|
2023-02-18 16:29:32 +01:00
|
|
|
module.exports = startup();
|