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 };