'use strict';
var Database = require('../../../models/database');
var SwaggerExpress = require('swagger-express-mw');
var app = require('express')();
module.exports = app; // for testing
var config = {
appRoot: __dirname, // required config
configDir: __dirname + '/config'
};
/**
* Log Function for inter process communication
*/
function LogAtMain(msg) {
process.send('{"logmessage" : "' + msg + '"}');
}
/**
* Start API Logger
*/
// create a rolling file logger based on date/time that fires process events
const opts = {
logDirectory: config.appRoot + "../../../../logs/api", // NOTE: folder must exist and be writable...
fileNamePattern: 'ALARMiator-API-<DATE>.log',
dateFormat: 'YYYY.MM.DD'
};
var logmanager = require('simple-node-logger');
global.logger = logmanager.createRollingFileLogger(opts);
global.logger.setLevel('all');
global.logger.info('API | Started API');
/**
* connect to database
*/
global.appRoot = __dirname + '/../../../';
var coreDb = new Database();
coreDb.openCoreDatabase((successDatabase) => {
if (successDatabase) {
global.coreDb = coreDb.db;
LogAtMain('database started')
global.logger.info('database started');
} else {
LogAtMain('Could not connect to database');
global.logger.error('Could not connect to database');
}
});
/**
* Start Swagger API Service
*/
SwaggerExpress.create(config, function (err, swaggerExpress) {
if (err) { throw err; }
// install middleware
swaggerExpress.register(app);
var port = process.env.PORT || 5010;
app.listen(port);
console.log('PLUGIN | RESTAPI | Rest API running on Port 5010');
LogAtMain('CORE | Rest API running on Port 5010');
// Starting HTTPS
// check if certificate-files exist
const fs = require('fs');
if (
(fs.existsSync('../../certificates/key.pem')) &&
(fs.existsSync('../../certificates/cert.pem'))) {
// Only start SSL Server if pem files are existing
var sslport = 5443;
var https = require('https');
var options = {
key: fs.readFileSync('../../certificates/key.pem'),
cert: fs.readFileSync('../../certificates/cert.pem'),
passphrase: 'ALARMiator'
};
https.createServer(options, app).listen(sslport, function () {
console.log('PLUGIN | RESTAPI | SSL Server started # %s!', sslport);
LogAtMain('SSL Server started # %s!', sslport);
});
} else {
console.log('PLUGIN | RESTAPI | SSL Server NOT started cause if missing certificate files');
LogAtMain('SSL Server NOT started cause of missing certificate files ');
}
});