From aea3033ae05256cbcf3c39cd537f17ef3deecc3d Mon Sep 17 00:00:00 2001 From: Hoan Luu Huu <110280845+xquanluu@users.noreply.github.com> Date: Tue, 14 Nov 2023 03:24:41 +0700 Subject: [PATCH] support PRIVATE_VOIP_NETWORK_CIDR for SDP negotiation (#124) * support PRIVATE_VOIP_NETWORK_CIDR for SDP negotiation * support multi PRIVATE_VOIP_NETWORK_CIDR --- lib/call-session.js | 5 +++-- lib/utils.js | 11 ++++++++++- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/lib/call-session.js b/lib/call-session.js index 412193b..4fffa30 100644 --- a/lib/call-session.js +++ b/lib/call-session.js @@ -6,7 +6,8 @@ const { SdpWantsSDES, nudgeCallCounts, roundTripTime, - parseConnectionIp + parseConnectionIp, + isPrivateVoipNetwork } = require('./utils'); const {forwardInDialogRequests} = require('drachtio-fn-b2b-sugar'); @@ -177,7 +178,7 @@ class CallSession extends Emitter { ...this.rtpEngineOpts.common, ...this.rtpEngineOpts.uac.mediaOpts, 'from-tag': this.rtpEngineOpts.uas.tag, - direction: ['public', 'private'], + direction: [isPrivateVoipNetwork(this.req.source_address) ? 'private' : 'public', 'private'], sdp }; const startAt = process.hrtime(); diff --git a/lib/utils.js b/lib/utils.js index 6dfb849..0a4bcd1 100644 --- a/lib/utils.js +++ b/lib/utils.js @@ -195,6 +195,14 @@ const isMSTeamsCIDR = (ip) => { return matcher.contains(ip); }; +const isPrivateVoipNetwork = (ip) => { + if (process.env.PRIVATE_VOIP_NETWORK_CIDR) { + const matcher = new CIDRMatcher(process.env.PRIVATE_VOIP_NETWORK_CIDR.split(',')); + return matcher.contains(ip); + } + return false; +}; + module.exports = { isWSS, SdpWantsSrtp, @@ -211,5 +219,6 @@ module.exports = { nudgeCallCounts, roundTripTime, parseConnectionIp, - isMSTeamsCIDR + isMSTeamsCIDR, + isPrivateVoipNetwork };