diff --git a/app.js b/app.js index f0af701..d075f80 100644 --- a/app.js +++ b/app.js @@ -3,12 +3,38 @@ 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'); +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_HOST, 'missing DRACHTIO_HOST env var'); assert.ok(process.env.DRACHTIO_PORT, 'missing DRACHTIO_PORT env var'); assert.ok(process.env.DRACHTIO_SECRET, 'missing DRACHTIO_SECRET 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 logger = require('pino')({ level: process.env.JAMBONES_LOGLEVEL || 'info' }); const Srf = require('drachtio-srf'); const srf = new Srf(); @@ -47,6 +73,7 @@ const { }); const { + client, addKey, addKeyNx, retrieveKey, @@ -54,7 +81,7 @@ const { removeFromSet, isMemberOfSet, retrieveSet -} = require('@jambonz/realtimedb-helpers')({ +} = require('@jambonz/realtimedb-helpers')(JAMBONES_REDIS_SENTINELS || { host: process.env.JAMBONES_REDIS_HOST, port: process.env.JAMBONES_REDIS_PORT || 6379 }, logger); @@ -66,10 +93,7 @@ srf.locals = { logger, stats, addToSet, removeFromSet, isMemberOfSet, retrieveSet, - registrar: new Registrar(logger, { - host: process.env.JAMBONES_REDIS_HOST, - port: process.env.JAMBONES_REDIS_PORT || 6379 - }), + registrar: new Registrar(logger, client), dbHelpers: { lookupAuthHook, lookupAllVoipCarriers, diff --git a/package-lock.json b/package-lock.json index 2571bf7..a75daf0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,8 +11,8 @@ "dependencies": { "@jambonz/db-helpers": "^0.9.0", "@jambonz/http-authenticator": "^0.2.2", - "@jambonz/mw-registrar": "^0.2.3", - "@jambonz/realtimedb-helpers": "^0.8.1", + "@jambonz/mw-registrar": "^0.2.4", + "@jambonz/realtimedb-helpers": "^0.8.6", "@jambonz/stats-collector": "^0.1.8", "@jambonz/time-series": "^0.2.5", "debug": "^4.3.4", @@ -653,30 +653,17 @@ } }, "node_modules/@jambonz/mw-registrar": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/@jambonz/mw-registrar/-/mw-registrar-0.2.3.tgz", - "integrity": "sha512-M8jwV1uVrzumrmcHz0s82B6mrRnh4ODN66nT7wcgFk3EKRJTEsylMG7KmtnurHP1eWkeBbnVUDg6qC6iJqctuw==", + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/@jambonz/mw-registrar/-/mw-registrar-0.2.4.tgz", + "integrity": "sha512-GHRlvHsDvwfQfqOUKh4Emt+CvoiODQ+Tny5zg8ZT5q5yz77qy3XIfOF072xO9gDSPrXjn0rH13W3iIKtNzcOIA==", "dependencies": { - "@jambonz/promisify-redis": "^0.0.6", - "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" + "debug": "^4.3.1" } }, "node_modules/@jambonz/realtimedb-helpers": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/@jambonz/realtimedb-helpers/-/realtimedb-helpers-0.8.1.tgz", - "integrity": "sha512-SkF5+raJdSfzAdg82jvbQp11ioXrt1Dn456Urf/01y/Zp8jbAZKbiztxoh13lZ5Dvo6XjOuWNJVZQIIYVy0+aA==", + "version": "0.8.6", + "resolved": "https://registry.npmjs.org/@jambonz/realtimedb-helpers/-/realtimedb-helpers-0.8.6.tgz", + "integrity": "sha512-ODKVVat2VAQheY13DjiAxiBBOmffMoeu3xviTjsTODr3ySZkqQZvSWU7N80pAIZvoiWG1UUEy9yI8D8mE4Jgiw==", "dependencies": { "debug": "^4.3.4", "ioredis": "^5.3.2" @@ -3615,29 +3602,6 @@ "resolved": "https://registry.npmjs.org/quick-format-unescaped/-/quick-format-unescaped-4.0.4.tgz", "integrity": "sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg==" }, - "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": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/redis-errors/-/redis-errors-1.2.0.tgz", @@ -3657,14 +3621,6 @@ "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": { "version": "1.4.3", "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz", diff --git a/package.json b/package.json index 25d45d2..447238d 100644 --- a/package.json +++ b/package.json @@ -29,8 +29,8 @@ "dependencies": { "@jambonz/db-helpers": "^0.9.0", "@jambonz/http-authenticator": "^0.2.2", - "@jambonz/mw-registrar": "^0.2.3", - "@jambonz/realtimedb-helpers": "^0.8.1", + "@jambonz/mw-registrar": "^0.2.4", + "@jambonz/realtimedb-helpers": "^0.8.6", "@jambonz/stats-collector": "^0.1.8", "@jambonz/time-series": "^0.2.5", "debug": "^4.3.4",