mirror of
https://github.com/jambonz/sbc-outbound.git
synced 2025-12-19 04:27:45 +00:00
removed config in favor of env vars
This commit is contained in:
57
app.js
57
app.js
@@ -1,42 +1,59 @@
|
||||
const assert = require('assert');
|
||||
assert.ok(process.env.JAMBONES_MYSQL_HOST &&
|
||||
process.env.JAMBONES_MYSQL_USER &&
|
||||
process.env.JAMBONES_MYSQL_PASSWORD &&
|
||||
process.env.JAMBONES_MYSQL_DATABASE, 'missing JAMBONES_MYSQL_XXX env vars');
|
||||
assert.ok(process.env.JAMBONES_REDIS_HOST, 'missing JAMBONES_REDIS_HOST env var');
|
||||
assert.ok(process.env.DRACHTIO_PORT || process.env.DRACHTIO_HOST, 'missing DRACHTIO_PORT env var');
|
||||
assert.ok(process.env.DRACHTIO_SECRET, 'missing DRACHTIO_SECRET env var');
|
||||
assert.ok(process.env.JAMBONES_RTPENGINES, 'missing JAMBONES_RTPENGINES env var');
|
||||
|
||||
const Srf = require('drachtio-srf');
|
||||
const srf = new Srf();
|
||||
const config = require('config');
|
||||
const logger = require('pino')(config.get('logging'));
|
||||
const opts = Object.assign({
|
||||
timestamp: () => {return `, "time": "${new Date().toISOString()}"`;}
|
||||
}, {level: process.env.JAMBONES_LOGLEVEL || 'info'});
|
||||
const logger = require('pino')(opts);
|
||||
const {route, setLogger} = require('./lib/middleware');
|
||||
const CallSession = require('./lib/call-session');
|
||||
const {performLcr} = require('jambonz-db-helpers')(config.get('mysql'), logger);
|
||||
const {performLcr} = require('jambonz-db-helpers')({
|
||||
host: process.env.JAMBONES_MYSQL_HOST,
|
||||
user: process.env.JAMBONES_MYSQL_USER,
|
||||
password: process.env.JAMBONES_MYSQL_PASSWORD,
|
||||
database: process.env.JAMBONES_MYSQL_DATABASE,
|
||||
connectionLimit: process.env.JAMBONES_MYSQL_CONNECTION_LIMIT || 10
|
||||
}, logger);
|
||||
srf.locals.dbHelpers = {performLcr};
|
||||
const debug = require('debug')('jambonz:sbc-outbound');
|
||||
debug(typeof performLcr);
|
||||
|
||||
// disable logging in test mode
|
||||
if (process.env.NODE_ENV === 'test') {
|
||||
const noop = () => {};
|
||||
logger.info = logger.debug = noop;
|
||||
logger.child = () => {return {info: noop, error: noop, debug: noop};};
|
||||
}
|
||||
// parse rtpengines
|
||||
srf.locals.rtpEngines = process.env.JAMBONES_RTPENGINES
|
||||
.split(',')
|
||||
.map((hp) => {
|
||||
const arr = /^(.*):(.*)$/.exec(hp.trim());
|
||||
if (arr) return {host: arr[1], port: parseInt(arr[2])};
|
||||
});
|
||||
assert.ok(srf.locals.rtpEngines.length > 0, 'JAMBONES_RTPENGINES must be an array host:port addresses');
|
||||
|
||||
// config dictates whether to use outbound or inbound connections
|
||||
if (config.has('drachtio.host')) {
|
||||
srf.connect(config.get('drachtio'));
|
||||
if (process.env.DRACHTIO_HOST) {
|
||||
srf.connect({host: process.env.DRACHTIO_HOST, port: process.env.DRACHTIO_PORT, secret: process.env.DRACHTIO_SECRET });
|
||||
srf.on('connect', (err, hp) => {
|
||||
debug(`connected to drachtio at ${hp}`);
|
||||
logger.info(`connected to drachtio listening on ${hp}`);
|
||||
});
|
||||
}
|
||||
else {
|
||||
logger.info(`listening for drachtio server traffic on ${JSON.stringify(config.get('drachtio'))}`);
|
||||
srf.listen(config.get('drachtio'));
|
||||
srf.listen({host: process.env.DRACHTIO_PORT, secret: process.env.DRACHTIO_SECRET});
|
||||
}
|
||||
if (process.env.NODE_ENV === 'test') {
|
||||
srf.on('error', (err) => {
|
||||
logger.error(err, 'Error connecting to drachtio');
|
||||
logger.info(err, 'Error connecting to drachtio');
|
||||
});
|
||||
}
|
||||
|
||||
srf.use('invite', [setLogger(logger), route(config.get('redis'))]);
|
||||
srf.use('invite', [setLogger(logger), route({
|
||||
host: process.env.JAMBONES_REDIS_HOST,
|
||||
port: process.env.JAMBONES_REDIS_PORT || 6379
|
||||
})]);
|
||||
srf.invite((req, res) => {
|
||||
debug('got invite');
|
||||
const session = new CallSession(logger, req, res);
|
||||
session.connect();
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user