From 554cdbcacf132c6d54d6ac5964fc6f27dc7e74e2 Mon Sep 17 00:00:00 2001 From: Quan HL Date: Wed, 7 Jun 2023 15:16:06 +0700 Subject: [PATCH 1/3] feat: sentinel configuration --- app.js | 30 ++++++++++++++++++++++++++++-- package-lock.json | 12 ++++++------ 2 files changed, 34 insertions(+), 8 deletions(-) diff --git a/app.js b/app.js index cf20e51..d52382a 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_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_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'); +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 = new Srf('sbc-outbound'); const CIDRMatcher = require('cidr-matcher'); @@ -62,7 +88,7 @@ const { decrKey, retrieveSet, isMemberOfSet -} = 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); diff --git a/package-lock.json b/package-lock.json index 6c8c8ee..fbc4f72 100644 --- a/package-lock.json +++ b/package-lock.json @@ -622,9 +622,9 @@ } }, "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" @@ -5328,9 +5328,9 @@ } }, "@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==", "requires": { "debug": "^4.3.4", "ioredis": "^5.3.2" From 337c24df4125655418f97c290e7dd6051cf6256f Mon Sep 17 00:00:00 2001 From: Quan HL Date: Wed, 7 Jun 2023 20:42:26 +0700 Subject: [PATCH 2/3] update --- app.js | 2 +- package-lock.json | 2 +- package.json | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/app.js b/app.js index d52382a..5147727 100644 --- a/app.js +++ b/app.js @@ -88,7 +88,7 @@ const { decrKey, retrieveSet, isMemberOfSet -} = require('@jambonz/realtimedb-helpers')(JAMBONES_REDIS_SENTINELS ?? { +} = require('@jambonz/realtimedb-helpers')(JAMBONES_REDIS_SENTINELS || { host: process.env.JAMBONES_REDIS_HOST, port: process.env.JAMBONES_REDIS_PORT || 6379 }, logger); diff --git a/package-lock.json b/package-lock.json index fbc4f72..8777125 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12,7 +12,7 @@ "@jambonz/db-helpers": "^0.9.0", "@jambonz/http-health-check": "^0.0.1", "@jambonz/mw-registrar": "0.2.2", - "@jambonz/realtimedb-helpers": "^0.8.1", + "@jambonz/realtimedb-helpers": "^0.8.6", "@jambonz/rtpengine-utils": "^0.4.3", "@jambonz/siprec-client-utils": "^0.2.5", "@jambonz/stats-collector": "^0.1.8", diff --git a/package.json b/package.json index 658d10b..74659c4 100644 --- a/package.json +++ b/package.json @@ -28,7 +28,7 @@ }, "dependencies": { "@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/mw-registrar": "0.2.2", "@jambonz/rtpengine-utils": "^0.4.3", From db38269a775934d52ea38c19b1e92eb66f89e862 Mon Sep 17 00:00:00 2001 From: Quan HL Date: Wed, 7 Jun 2023 21:13:08 +0700 Subject: [PATCH 3/3] fix --- app.js | 7 +--- lib/middleware.js | 4 +- package-lock.json | 95 +++++------------------------------------------ package.json | 2 +- 4 files changed, 14 insertions(+), 94 deletions(-) diff --git a/app.js b/app.js index 5147727..d8ae5fd 100644 --- a/app.js +++ b/app.js @@ -87,7 +87,7 @@ const { incrKey, decrKey, retrieveSet, - isMemberOfSet + isMemberOfSet, } = require('@jambonz/realtimedb-helpers')(JAMBONES_REDIS_SENTINELS || { host: process.env.JAMBONES_REDIS_HOST, port: process.env.JAMBONES_REDIS_PORT || 6379 @@ -128,10 +128,7 @@ srf.locals = {...srf.locals, isMemberOfSet } }; -const {initLocals, checkLimits, route} = require('./lib/middleware')(srf, logger, { - host: process.env.JAMBONES_REDIS_HOST, - port: process.env.JAMBONES_REDIS_PORT || 6379 -}); +const {initLocals, checkLimits, route} = require('./lib/middleware')(srf, logger, redisClient); const ngProtocol = process.env.JAMBONES_NG_PROTOCOL || 'udp'; const ngPort = process.env.RTPENGINE_PORT || ('udp' === ngProtocol ? 22222 : 8080); const {getRtpEngine, setRtpEngines} = require('@jambonz/rtpengine-utils')([], logger, { diff --git a/lib/middleware.js b/lib/middleware.js index 0fe6724..bdd72a2 100644 --- a/lib/middleware.js +++ b/lib/middleware.js @@ -4,10 +4,10 @@ const Registrar = require('@jambonz/mw-registrar'); const {selectHostPort, nudgeCallCounts} = require('./utils'); const FS_UUID_SET_NAME = 'fsUUIDs'; -module.exports = (srf, logger, opts) => { +module.exports = (srf, logger, redisClient) => { const {incrKey, decrKey, isMemberOfSet} = srf.locals.realtimeDbHelpers; const {stats} = srf.locals; - const registrar = new Registrar(opts); + const registrar = new Registrar(logger, redisClient); const { lookupAccountCapacitiesBySid, lookupAccountBySid, diff --git a/package-lock.json b/package-lock.json index 8777125..21b06b1 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,7 +11,7 @@ "dependencies": { "@jambonz/db-helpers": "^0.9.0", "@jambonz/http-health-check": "^0.0.1", - "@jambonz/mw-registrar": "0.2.2", + "@jambonz/mw-registrar": "0.2.4", "@jambonz/realtimedb-helpers": "^0.8.6", "@jambonz/rtpengine-utils": "^0.4.3", "@jambonz/siprec-client-utils": "^0.2.5", @@ -601,24 +601,11 @@ } }, "node_modules/@jambonz/mw-registrar": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/@jambonz/mw-registrar/-/mw-registrar-0.2.2.tgz", - "integrity": "sha512-CG0MUVRZZ+tBgB5kvjn5IS1R/OdNV5PpAsxCKE0ehe6XVJ1ap4ch9hSZmEh2q7qPnWu8sR451peF33dnoSeaPA==", + "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": { @@ -3801,29 +3788,6 @@ "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": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/redis-errors/-/redis-errors-1.2.0.tgz", @@ -3843,14 +3807,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", @@ -5310,21 +5266,11 @@ } }, "@jambonz/mw-registrar": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/@jambonz/mw-registrar/-/mw-registrar-0.2.2.tgz", - "integrity": "sha512-CG0MUVRZZ+tBgB5kvjn5IS1R/OdNV5PpAsxCKE0ehe6XVJ1ap4ch9hSZmEh2q7qPnWu8sR451peF33dnoSeaPA==", + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/@jambonz/mw-registrar/-/mw-registrar-0.2.4.tgz", + "integrity": "sha512-GHRlvHsDvwfQfqOUKh4Emt+CvoiODQ+Tny5zg8ZT5q5yz77qy3XIfOF072xO9gDSPrXjn0rH13W3iIKtNzcOIA==", "requires": { - "@jambonz/promisify-redis": "^0.0.6", - "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" + "debug": "^4.3.1" } }, "@jambonz/realtimedb-helpers": { @@ -7754,29 +7700,6 @@ "resolved": "https://registry.npmjs.org/real-require/-/real-require-0.1.0.tgz", "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": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/redis-errors/-/redis-errors-1.2.0.tgz", diff --git a/package.json b/package.json index 74659c4..05ecfda 100644 --- a/package.json +++ b/package.json @@ -30,7 +30,7 @@ "@jambonz/db-helpers": "^0.9.0", "@jambonz/realtimedb-helpers": "^0.8.6", "@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/siprec-client-utils": "^0.2.5", "@jambonz/stats-collector": "^0.1.8",