58 lines
1.4 KiB
JavaScript
58 lines
1.4 KiB
JavaScript
'use strict';
|
|
const config = require('./config');
|
|
const app = require('./lib/endpoints');
|
|
const https = require('https');
|
|
const fs = require('fs');
|
|
|
|
/**
|
|
* Naming:
|
|
* sid: Group of files
|
|
* key: File
|
|
* fid: {sid}++{key}
|
|
*/
|
|
|
|
let server;
|
|
if(config.port) {
|
|
// HTTP Server
|
|
server = app.listen(config.port, config.iface, () => {
|
|
console.log(`PsiTransfer listening on http://${config.iface}:${config.port}`);
|
|
});
|
|
}
|
|
|
|
let httpsServer;
|
|
if(config.sslPort && config.sslKeyFile && config.sslCertFile) {
|
|
// HTTPS Server
|
|
const sslOpts = {
|
|
key: fs.readFileSync(config.sslKeyFile),
|
|
cert: fs.readFileSync(config.sslCertFile)
|
|
};
|
|
httpsServer = https.createServer(sslOpts, app)
|
|
.listen(config.sslPort, config.iface, () => {
|
|
console.log(`PsiTransfer listening on https://${config.iface}:${config.sslPort}`);
|
|
});
|
|
}
|
|
|
|
|
|
// graceful shutdown
|
|
function shutdown() {
|
|
console.log('PsiTransfer shutting down...');
|
|
if(server) {
|
|
server.close(() => {
|
|
server = false;
|
|
if(!server && !httpsServer) process.exit(0);
|
|
});
|
|
}
|
|
if(httpsServer) {
|
|
httpsServer.close(() => {
|
|
httpsServer = false;
|
|
if(!server && !httpsServer) process.exit(0);
|
|
});
|
|
}
|
|
setTimeout(function() {
|
|
console.log('Could not close connections in time, forcefully shutting down');
|
|
process.exit(1);
|
|
}, 60 * 1000);
|
|
}
|
|
process.on('SIGTERM', shutdown);
|
|
process.on('SIGINT', shutdown);
|