modified some config stuff
This commit is contained in:
parent
505400d1f4
commit
7e0dd27b78
5 changed files with 97 additions and 15 deletions
|
@ -1,15 +1,15 @@
|
||||||
{
|
{
|
||||||
"server": {
|
"server": {
|
||||||
"listen": "0.0.0.0",
|
"listen": "0.0.0.0",
|
||||||
"port": 3000,
|
"port": 3000
|
||||||
"timestamp": "DD.MM.YYYY HH:mm:ss:SS"
|
|
||||||
},
|
},
|
||||||
"cache": {
|
"cache": {
|
||||||
"active": false,
|
"active": false,
|
||||||
"lifetime": 15
|
"lifetime": 15
|
||||||
},
|
},
|
||||||
"log": {
|
"log": {
|
||||||
"level": "debug"
|
"level": "debug",
|
||||||
|
"format": "DD.MM.YYYY HH:mm:ss:SS"
|
||||||
},
|
},
|
||||||
"osc": {
|
"osc": {
|
||||||
"host": "192.168.1.24",
|
"host": "192.168.1.24",
|
||||||
|
|
|
@ -1,4 +1,3 @@
|
||||||
const logger = require('./logger.js');
|
|
||||||
const cache = require('./cache.js');
|
const cache = require('./cache.js');
|
||||||
const commands = require('./commands.js');
|
const commands = require('./commands.js');
|
||||||
const os = require('os');
|
const os = require('os');
|
||||||
|
|
|
@ -1,4 +1,3 @@
|
||||||
const config = require('../config.json');
|
|
||||||
const moment = require('moment');
|
const moment = require('moment');
|
||||||
|
|
||||||
// constants
|
// constants
|
||||||
|
@ -11,9 +10,26 @@ const LOGLEVEL_INFO = 1;
|
||||||
const LOGLEVEL_WARNING = 2;
|
const LOGLEVEL_WARNING = 2;
|
||||||
const LOGLEVEL_ERROR = 3;
|
const LOGLEVEL_ERROR = 3;
|
||||||
|
|
||||||
// set loglevel on 'require'
|
var loglevel = getLogLevel();
|
||||||
const loglevel = function () {
|
var timestamp = getTimestamp();
|
||||||
switch (config.log.level) {
|
|
||||||
|
function initialize() {
|
||||||
|
return new Promise((resolve, reject) => {
|
||||||
|
if (global.config == undefined) {
|
||||||
|
reject('could not initialize logger, config is undefined');
|
||||||
|
}
|
||||||
|
loglevel = getLogLevel();
|
||||||
|
timestamp = getTimestamp();
|
||||||
|
resolve();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
// get the loglevel
|
||||||
|
function getLogLevel() {
|
||||||
|
if (global.config?.log?.level == undefined) {
|
||||||
|
return LOGLEVEL_INFO;
|
||||||
|
}
|
||||||
|
switch (global.config.log.level) {
|
||||||
case LOG_PREFIX_DEBUG:
|
case LOG_PREFIX_DEBUG:
|
||||||
case LOGLEVEL_DEBUG:
|
case LOGLEVEL_DEBUG:
|
||||||
return LOGLEVEL_DEBUG;
|
return LOGLEVEL_DEBUG;
|
||||||
|
@ -29,7 +45,15 @@ const loglevel = function () {
|
||||||
default:
|
default:
|
||||||
return LOGLEVEL_INFO;
|
return LOGLEVEL_INFO;
|
||||||
}
|
}
|
||||||
}();
|
}
|
||||||
|
|
||||||
|
// get the timestamp format
|
||||||
|
function getTimestamp() {
|
||||||
|
if (global.config?.log?.format != undefined) {
|
||||||
|
return global.config.log.format;
|
||||||
|
}
|
||||||
|
return "DD.MM.YYYY HH:mm:ss:SS";
|
||||||
|
}
|
||||||
|
|
||||||
// log a http request - response object
|
// log a http request - response object
|
||||||
function http(object) {
|
function http(object) {
|
||||||
|
@ -109,12 +133,13 @@ function trace(message, prefix) {
|
||||||
default:
|
default:
|
||||||
print = console.log;
|
print = console.log;
|
||||||
}
|
}
|
||||||
message = moment().format(config.server.timestamp) + ' | ' + prefix + ' > ' + message;
|
message = moment().format(timestamp) + ' | ' + prefix + ' > ' + message;
|
||||||
print(message);
|
print(message);
|
||||||
}
|
}
|
||||||
|
|
||||||
// exports
|
// exports
|
||||||
module.exports = {
|
module.exports = {
|
||||||
|
initialize,
|
||||||
info,
|
info,
|
||||||
warn,
|
warn,
|
||||||
debug,
|
debug,
|
||||||
|
|
35
libs/util.js
35
libs/util.js
|
@ -1,4 +1,6 @@
|
||||||
const logger = require('./logger.js');
|
const logger = require('./logger.js');
|
||||||
|
const realpath = require('fs/promises').realpath;
|
||||||
|
const stat = require('fs/promises').stat;
|
||||||
const http = require('http');
|
const http = require('http');
|
||||||
const { HTTP_GET, HTTP_POST } = require('./constants.js');
|
const { HTTP_GET, HTTP_POST } = require('./constants.js');
|
||||||
|
|
||||||
|
@ -79,11 +81,42 @@ function sortById(array) {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function fileExists(file) {
|
||||||
|
return new Promise((resolve, reject) => {
|
||||||
|
if (file == undefined) {
|
||||||
|
reject('can not check the existence of an undefined file');
|
||||||
|
}
|
||||||
|
resolvePath(file)
|
||||||
|
.then((path) => {
|
||||||
|
stat(path)
|
||||||
|
.then((stats) => {
|
||||||
|
resolve({path, stats});
|
||||||
|
})
|
||||||
|
})
|
||||||
|
.catch(reject);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function resolvePath(file) {
|
||||||
|
return new Promise((resolve, reject) => {
|
||||||
|
if (file == undefined) {
|
||||||
|
reject('can not resolve a path to an undefined file');
|
||||||
|
}
|
||||||
|
realpath(file)
|
||||||
|
.then(resolve)
|
||||||
|
.catch((err) => {
|
||||||
|
reject('resolving path \'' + file + '\' encountered an error >>> ' + err);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
timeDiff,
|
timeDiff,
|
||||||
clone,
|
clone,
|
||||||
httpGET,
|
httpGET,
|
||||||
httpPOST,
|
httpPOST,
|
||||||
toHex,
|
toHex,
|
||||||
sortById
|
sortById,
|
||||||
|
fileExists,
|
||||||
|
resolvePath
|
||||||
}
|
}
|
29
pbc.js
29
pbc.js
|
@ -1,12 +1,37 @@
|
||||||
const logger = require('./libs/logger.js');
|
const logger = require('./libs/logger.js');
|
||||||
const api = require('./libs/api.js');
|
const api = require('./libs/api.js');
|
||||||
const server = require('./libs/server.js')
|
const server = require('./libs/server.js')
|
||||||
|
const util = require('./libs/util.js');
|
||||||
const packageJSON = require('./package.json');
|
const packageJSON = require('./package.json');
|
||||||
|
|
||||||
|
const INTERRUPTS = ['SIGINT', 'SIGTERM'];
|
||||||
|
|
||||||
|
global.config = process.argv[2] || __dirname + '/config.json';
|
||||||
|
|
||||||
|
handleInterrupts();
|
||||||
|
|
||||||
|
util.fileExists(config)
|
||||||
|
.then((result) => {
|
||||||
|
global.config = require(result.path);
|
||||||
|
global.config.path = result.path;
|
||||||
|
})
|
||||||
|
.then(logger.initialize)
|
||||||
|
.then(() => {
|
||||||
logger.info("launching " + packageJSON.name + " " + packageJSON.version);
|
logger.info("launching " + packageJSON.name + " " + packageJSON.version);
|
||||||
api.setupEndpoints()
|
})
|
||||||
|
.then(api.setupEndpoints)
|
||||||
.then(server.start)
|
.then(server.start)
|
||||||
.catch(function (err) {
|
.catch((err) => {
|
||||||
logger.error(err);
|
logger.error(err);
|
||||||
process.exit(1);
|
process.exit(1);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
function handleInterrupts() {
|
||||||
|
for (var index = 0; index < INTERRUPTS.length; index++) {
|
||||||
|
process.once(INTERRUPTS[index], (code) => {
|
||||||
|
watchers.stop()
|
||||||
|
.then(exit(code))
|
||||||
|
.catch(exit(code));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in a new issue