mirror of
https://github.com/jambonz/sbc-outbound.git
synced 2026-10-04 02:04:19 +00:00
@@ -3,12 +3,38 @@ assert.ok(process.env.JAMBONES_MYSQL_HOST &&
|
|||||||
process.env.JAMBONES_MYSQL_USER &&
|
process.env.JAMBONES_MYSQL_USER &&
|
||||||
process.env.JAMBONES_MYSQL_PASSWORD &&
|
process.env.JAMBONES_MYSQL_PASSWORD &&
|
||||||
process.env.JAMBONES_MYSQL_DATABASE, 'missing JAMBONES_MYSQL_XXX env vars');
|
process.env.JAMBONES_MYSQL_DATABASE, 'missing JAMBONES_MYSQL_XXX env vars');
|
||||||
assert.ok(process.env.JAMBONES_REDIS_HOST, 'missing JAMBONES_REDIS_HOST env var');
|
if (process.env.JAMBONES_REDIS_SENTINELS) {
|
||||||
|
assert.ok(process.env.JAMBONES_REDIS_SENTINEL_MASTER_NAME,
|
||||||
|
'missing JAMBONES_REDIS_SENTINEL_MASTER_NAME env var, JAMBONES_REDIS_SENTINEL_PASSWORD env var is optional');
|
||||||
|
} else {
|
||||||
|
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_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.DRACHTIO_SECRET, 'missing DRACHTIO_SECRET env var');
|
||||||
assert.ok(process.env.JAMBONES_NETWORK_CIDR || process.env.K8S, 'missing JAMBONES_NETWORK_CIDR env var');
|
assert.ok(process.env.JAMBONES_NETWORK_CIDR || process.env.K8S, 'missing JAMBONES_NETWORK_CIDR env var');
|
||||||
assert.ok(process.env.JAMBONES_TIME_SERIES_HOST, 'missing JAMBONES_TIME_SERIES_HOST env var');
|
assert.ok(process.env.JAMBONES_TIME_SERIES_HOST, 'missing JAMBONES_TIME_SERIES_HOST env var');
|
||||||
|
|
||||||
|
const JAMBONES_REDIS_SENTINELS = process.env.JAMBONES_REDIS_SENTINELS ? {
|
||||||
|
sentinels: process.env.JAMBONES_REDIS_SENTINELS.split(',').map((sentinel) => {
|
||||||
|
let host, port = 26379;
|
||||||
|
if (sentinel.includes(':')) {
|
||||||
|
const arr = sentinel.split(':');
|
||||||
|
host = arr[0];
|
||||||
|
port = parseInt(arr[1], 10);
|
||||||
|
} else {
|
||||||
|
host = sentinel;
|
||||||
|
}
|
||||||
|
return {host, port};
|
||||||
|
}),
|
||||||
|
name: process.env.JAMBONES_REDIS_SENTINEL_MASTER_NAME,
|
||||||
|
...(process.env.JAMBONES_REDIS_SENTINEL_PASSWORD && {
|
||||||
|
password: process.env.JAMBONES_REDIS_SENTINEL_PASSWORD
|
||||||
|
}),
|
||||||
|
...(process.env.JAMBONES_REDIS_SENTINEL_USERNAME && {
|
||||||
|
username: process.env.JAMBONES_REDIS_SENTINEL_USERNAME
|
||||||
|
})
|
||||||
|
} : null;
|
||||||
|
|
||||||
const Srf = require('drachtio-srf');
|
const Srf = require('drachtio-srf');
|
||||||
const srf = new Srf('sbc-outbound');
|
const srf = new Srf('sbc-outbound');
|
||||||
const CIDRMatcher = require('cidr-matcher');
|
const CIDRMatcher = require('cidr-matcher');
|
||||||
@@ -61,8 +87,8 @@ const {
|
|||||||
incrKey,
|
incrKey,
|
||||||
decrKey,
|
decrKey,
|
||||||
retrieveSet,
|
retrieveSet,
|
||||||
isMemberOfSet
|
isMemberOfSet,
|
||||||
} = require('@jambonz/realtimedb-helpers')({
|
} = require('@jambonz/realtimedb-helpers')(JAMBONES_REDIS_SENTINELS || {
|
||||||
host: process.env.JAMBONES_REDIS_HOST,
|
host: process.env.JAMBONES_REDIS_HOST,
|
||||||
port: process.env.JAMBONES_REDIS_PORT || 6379
|
port: process.env.JAMBONES_REDIS_PORT || 6379
|
||||||
}, logger);
|
}, logger);
|
||||||
@@ -102,10 +128,7 @@ srf.locals = {...srf.locals,
|
|||||||
isMemberOfSet
|
isMemberOfSet
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
const {initLocals, checkLimits, route} = require('./lib/middleware')(srf, logger, {
|
const {initLocals, checkLimits, route} = require('./lib/middleware')(srf, logger, redisClient);
|
||||||
host: process.env.JAMBONES_REDIS_HOST,
|
|
||||||
port: process.env.JAMBONES_REDIS_PORT || 6379
|
|
||||||
});
|
|
||||||
const ngProtocol = process.env.JAMBONES_NG_PROTOCOL || 'udp';
|
const ngProtocol = process.env.JAMBONES_NG_PROTOCOL || 'udp';
|
||||||
const ngPort = process.env.RTPENGINE_PORT || ('udp' === ngProtocol ? 22222 : 8080);
|
const ngPort = process.env.RTPENGINE_PORT || ('udp' === ngProtocol ? 22222 : 8080);
|
||||||
const {getRtpEngine, setRtpEngines} = require('@jambonz/rtpengine-utils')([], logger, {
|
const {getRtpEngine, setRtpEngines} = require('@jambonz/rtpengine-utils')([], logger, {
|
||||||
|
|||||||
+2
-2
@@ -4,10 +4,10 @@ const Registrar = require('@jambonz/mw-registrar');
|
|||||||
const {selectHostPort, nudgeCallCounts} = require('./utils');
|
const {selectHostPort, nudgeCallCounts} = require('./utils');
|
||||||
const FS_UUID_SET_NAME = 'fsUUIDs';
|
const FS_UUID_SET_NAME = 'fsUUIDs';
|
||||||
|
|
||||||
module.exports = (srf, logger, opts) => {
|
module.exports = (srf, logger, redisClient) => {
|
||||||
const {incrKey, decrKey, isMemberOfSet} = srf.locals.realtimeDbHelpers;
|
const {incrKey, decrKey, isMemberOfSet} = srf.locals.realtimeDbHelpers;
|
||||||
const {stats} = srf.locals;
|
const {stats} = srf.locals;
|
||||||
const registrar = new Registrar(opts);
|
const registrar = new Registrar(logger, redisClient);
|
||||||
const {
|
const {
|
||||||
lookupAccountCapacitiesBySid,
|
lookupAccountCapacitiesBySid,
|
||||||
lookupAccountBySid,
|
lookupAccountBySid,
|
||||||
|
|||||||
Generated
+16
-93
@@ -11,8 +11,8 @@
|
|||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@jambonz/db-helpers": "^0.9.0",
|
"@jambonz/db-helpers": "^0.9.0",
|
||||||
"@jambonz/http-health-check": "^0.0.1",
|
"@jambonz/http-health-check": "^0.0.1",
|
||||||
"@jambonz/mw-registrar": "0.2.2",
|
"@jambonz/mw-registrar": "0.2.4",
|
||||||
"@jambonz/realtimedb-helpers": "^0.8.1",
|
"@jambonz/realtimedb-helpers": "^0.8.6",
|
||||||
"@jambonz/rtpengine-utils": "^0.4.3",
|
"@jambonz/rtpengine-utils": "^0.4.3",
|
||||||
"@jambonz/siprec-client-utils": "^0.2.5",
|
"@jambonz/siprec-client-utils": "^0.2.5",
|
||||||
"@jambonz/stats-collector": "^0.1.8",
|
"@jambonz/stats-collector": "^0.1.8",
|
||||||
@@ -601,30 +601,17 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@jambonz/mw-registrar": {
|
"node_modules/@jambonz/mw-registrar": {
|
||||||
"version": "0.2.2",
|
"version": "0.2.4",
|
||||||
"resolved": "https://registry.npmjs.org/@jambonz/mw-registrar/-/mw-registrar-0.2.2.tgz",
|
"resolved": "https://registry.npmjs.org/@jambonz/mw-registrar/-/mw-registrar-0.2.4.tgz",
|
||||||
"integrity": "sha512-CG0MUVRZZ+tBgB5kvjn5IS1R/OdNV5PpAsxCKE0ehe6XVJ1ap4ch9hSZmEh2q7qPnWu8sR451peF33dnoSeaPA==",
|
"integrity": "sha512-GHRlvHsDvwfQfqOUKh4Emt+CvoiODQ+Tny5zg8ZT5q5yz77qy3XIfOF072xO9gDSPrXjn0rH13W3iIKtNzcOIA==",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@jambonz/promisify-redis": "^0.0.6",
|
"debug": "^4.3.1"
|
||||||
"debug": "^4.3.1",
|
|
||||||
"redis": "^3.1.1"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/@jambonz/promisify-redis": {
|
|
||||||
"version": "0.0.6",
|
|
||||||
"resolved": "https://registry.npmjs.org/@jambonz/promisify-redis/-/promisify-redis-0.0.6.tgz",
|
|
||||||
"integrity": "sha512-9KmWV+ODDOPwdqijhgXOXkloGNm7nmCf3ch4D1vN46lh9FQLmnlQmEmBHIFaKB3vAgIgcMzNzcNmY23JGCGguA==",
|
|
||||||
"dependencies": {
|
|
||||||
"redis-commands": "^1.6.0"
|
|
||||||
},
|
|
||||||
"peerDependencies": {
|
|
||||||
"redis": "^3.0.0"
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@jambonz/realtimedb-helpers": {
|
"node_modules/@jambonz/realtimedb-helpers": {
|
||||||
"version": "0.8.1",
|
"version": "0.8.6",
|
||||||
"resolved": "https://registry.npmjs.org/@jambonz/realtimedb-helpers/-/realtimedb-helpers-0.8.1.tgz",
|
"resolved": "https://registry.npmjs.org/@jambonz/realtimedb-helpers/-/realtimedb-helpers-0.8.6.tgz",
|
||||||
"integrity": "sha512-SkF5+raJdSfzAdg82jvbQp11ioXrt1Dn456Urf/01y/Zp8jbAZKbiztxoh13lZ5Dvo6XjOuWNJVZQIIYVy0+aA==",
|
"integrity": "sha512-ODKVVat2VAQheY13DjiAxiBBOmffMoeu3xviTjsTODr3ySZkqQZvSWU7N80pAIZvoiWG1UUEy9yI8D8mE4Jgiw==",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"debug": "^4.3.4",
|
"debug": "^4.3.4",
|
||||||
"ioredis": "^5.3.2"
|
"ioredis": "^5.3.2"
|
||||||
@@ -3801,29 +3788,6 @@
|
|||||||
"node": ">= 12.13.0"
|
"node": ">= 12.13.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/redis": {
|
|
||||||
"version": "3.1.2",
|
|
||||||
"resolved": "https://registry.npmjs.org/redis/-/redis-3.1.2.tgz",
|
|
||||||
"integrity": "sha512-grn5KoZLr/qrRQVwoSkmzdbw6pwF+/rwODtrOr6vuBRiR/f3rjSTGupbF90Zpqm2oenix8Do6RV7pYEkGwlKkw==",
|
|
||||||
"dependencies": {
|
|
||||||
"denque": "^1.5.0",
|
|
||||||
"redis-commands": "^1.7.0",
|
|
||||||
"redis-errors": "^1.2.0",
|
|
||||||
"redis-parser": "^3.0.0"
|
|
||||||
},
|
|
||||||
"engines": {
|
|
||||||
"node": ">=10"
|
|
||||||
},
|
|
||||||
"funding": {
|
|
||||||
"type": "opencollective",
|
|
||||||
"url": "https://opencollective.com/node-redis"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/redis-commands": {
|
|
||||||
"version": "1.7.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/redis-commands/-/redis-commands-1.7.0.tgz",
|
|
||||||
"integrity": "sha512-nJWqw3bTFy21hX/CPKHth6sfhZbdiHP6bTawSgQBlKOVRG7EZkfHbbHwQJnrE4vsQf0CMNE+3gJ4Fmm16vdVlQ=="
|
|
||||||
},
|
|
||||||
"node_modules/redis-errors": {
|
"node_modules/redis-errors": {
|
||||||
"version": "1.2.0",
|
"version": "1.2.0",
|
||||||
"resolved": "https://registry.npmjs.org/redis-errors/-/redis-errors-1.2.0.tgz",
|
"resolved": "https://registry.npmjs.org/redis-errors/-/redis-errors-1.2.0.tgz",
|
||||||
@@ -3843,14 +3807,6 @@
|
|||||||
"node": ">=4"
|
"node": ">=4"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/redis/node_modules/denque": {
|
|
||||||
"version": "1.5.1",
|
|
||||||
"resolved": "https://registry.npmjs.org/denque/-/denque-1.5.1.tgz",
|
|
||||||
"integrity": "sha512-XwE+iZ4D6ZUB7mfYRMb5wByE8L74HCn30FBN7sWnXksWc1LO1bPDl67pBR9o/kC4z/xSNAwkMYcGgqDV3BE3Hw==",
|
|
||||||
"engines": {
|
|
||||||
"node": ">=0.10"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/regexp.prototype.flags": {
|
"node_modules/regexp.prototype.flags": {
|
||||||
"version": "1.4.3",
|
"version": "1.4.3",
|
||||||
"resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz",
|
"resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz",
|
||||||
@@ -5310,27 +5266,17 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"@jambonz/mw-registrar": {
|
"@jambonz/mw-registrar": {
|
||||||
"version": "0.2.2",
|
"version": "0.2.4",
|
||||||
"resolved": "https://registry.npmjs.org/@jambonz/mw-registrar/-/mw-registrar-0.2.2.tgz",
|
"resolved": "https://registry.npmjs.org/@jambonz/mw-registrar/-/mw-registrar-0.2.4.tgz",
|
||||||
"integrity": "sha512-CG0MUVRZZ+tBgB5kvjn5IS1R/OdNV5PpAsxCKE0ehe6XVJ1ap4ch9hSZmEh2q7qPnWu8sR451peF33dnoSeaPA==",
|
"integrity": "sha512-GHRlvHsDvwfQfqOUKh4Emt+CvoiODQ+Tny5zg8ZT5q5yz77qy3XIfOF072xO9gDSPrXjn0rH13W3iIKtNzcOIA==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"@jambonz/promisify-redis": "^0.0.6",
|
"debug": "^4.3.1"
|
||||||
"debug": "^4.3.1",
|
|
||||||
"redis": "^3.1.1"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"@jambonz/promisify-redis": {
|
|
||||||
"version": "0.0.6",
|
|
||||||
"resolved": "https://registry.npmjs.org/@jambonz/promisify-redis/-/promisify-redis-0.0.6.tgz",
|
|
||||||
"integrity": "sha512-9KmWV+ODDOPwdqijhgXOXkloGNm7nmCf3ch4D1vN46lh9FQLmnlQmEmBHIFaKB3vAgIgcMzNzcNmY23JGCGguA==",
|
|
||||||
"requires": {
|
|
||||||
"redis-commands": "^1.6.0"
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"@jambonz/realtimedb-helpers": {
|
"@jambonz/realtimedb-helpers": {
|
||||||
"version": "0.8.1",
|
"version": "0.8.6",
|
||||||
"resolved": "https://registry.npmjs.org/@jambonz/realtimedb-helpers/-/realtimedb-helpers-0.8.1.tgz",
|
"resolved": "https://registry.npmjs.org/@jambonz/realtimedb-helpers/-/realtimedb-helpers-0.8.6.tgz",
|
||||||
"integrity": "sha512-SkF5+raJdSfzAdg82jvbQp11ioXrt1Dn456Urf/01y/Zp8jbAZKbiztxoh13lZ5Dvo6XjOuWNJVZQIIYVy0+aA==",
|
"integrity": "sha512-ODKVVat2VAQheY13DjiAxiBBOmffMoeu3xviTjsTODr3ySZkqQZvSWU7N80pAIZvoiWG1UUEy9yI8D8mE4Jgiw==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"debug": "^4.3.4",
|
"debug": "^4.3.4",
|
||||||
"ioredis": "^5.3.2"
|
"ioredis": "^5.3.2"
|
||||||
@@ -7754,29 +7700,6 @@
|
|||||||
"resolved": "https://registry.npmjs.org/real-require/-/real-require-0.1.0.tgz",
|
"resolved": "https://registry.npmjs.org/real-require/-/real-require-0.1.0.tgz",
|
||||||
"integrity": "sha512-r/H9MzAWtrv8aSVjPCMFpDMl5q66GqtmmRkRjpHTsp4zBAa+snZyiQNlMONiUmEJcsnaw0wCauJ2GWODr/aFkg=="
|
"integrity": "sha512-r/H9MzAWtrv8aSVjPCMFpDMl5q66GqtmmRkRjpHTsp4zBAa+snZyiQNlMONiUmEJcsnaw0wCauJ2GWODr/aFkg=="
|
||||||
},
|
},
|
||||||
"redis": {
|
|
||||||
"version": "3.1.2",
|
|
||||||
"resolved": "https://registry.npmjs.org/redis/-/redis-3.1.2.tgz",
|
|
||||||
"integrity": "sha512-grn5KoZLr/qrRQVwoSkmzdbw6pwF+/rwODtrOr6vuBRiR/f3rjSTGupbF90Zpqm2oenix8Do6RV7pYEkGwlKkw==",
|
|
||||||
"requires": {
|
|
||||||
"denque": "^1.5.0",
|
|
||||||
"redis-commands": "^1.7.0",
|
|
||||||
"redis-errors": "^1.2.0",
|
|
||||||
"redis-parser": "^3.0.0"
|
|
||||||
},
|
|
||||||
"dependencies": {
|
|
||||||
"denque": {
|
|
||||||
"version": "1.5.1",
|
|
||||||
"resolved": "https://registry.npmjs.org/denque/-/denque-1.5.1.tgz",
|
|
||||||
"integrity": "sha512-XwE+iZ4D6ZUB7mfYRMb5wByE8L74HCn30FBN7sWnXksWc1LO1bPDl67pBR9o/kC4z/xSNAwkMYcGgqDV3BE3Hw=="
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"redis-commands": {
|
|
||||||
"version": "1.7.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/redis-commands/-/redis-commands-1.7.0.tgz",
|
|
||||||
"integrity": "sha512-nJWqw3bTFy21hX/CPKHth6sfhZbdiHP6bTawSgQBlKOVRG7EZkfHbbHwQJnrE4vsQf0CMNE+3gJ4Fmm16vdVlQ=="
|
|
||||||
},
|
|
||||||
"redis-errors": {
|
"redis-errors": {
|
||||||
"version": "1.2.0",
|
"version": "1.2.0",
|
||||||
"resolved": "https://registry.npmjs.org/redis-errors/-/redis-errors-1.2.0.tgz",
|
"resolved": "https://registry.npmjs.org/redis-errors/-/redis-errors-1.2.0.tgz",
|
||||||
|
|||||||
+2
-2
@@ -28,9 +28,9 @@
|
|||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@jambonz/db-helpers": "^0.9.0",
|
"@jambonz/db-helpers": "^0.9.0",
|
||||||
"@jambonz/realtimedb-helpers": "^0.8.1",
|
"@jambonz/realtimedb-helpers": "^0.8.6",
|
||||||
"@jambonz/http-health-check": "^0.0.1",
|
"@jambonz/http-health-check": "^0.0.1",
|
||||||
"@jambonz/mw-registrar": "0.2.2",
|
"@jambonz/mw-registrar": "0.2.4",
|
||||||
"@jambonz/rtpengine-utils": "^0.4.3",
|
"@jambonz/rtpengine-utils": "^0.4.3",
|
||||||
"@jambonz/siprec-client-utils": "^0.2.5",
|
"@jambonz/siprec-client-utils": "^0.2.5",
|
||||||
"@jambonz/stats-collector": "^0.1.8",
|
"@jambonz/stats-collector": "^0.1.8",
|
||||||
|
|||||||
Reference in New Issue
Block a user