diff --git a/lib/call-session.js b/lib/call-session.js index 4b41305..8310482 100644 --- a/lib/call-session.js +++ b/lib/call-session.js @@ -273,12 +273,20 @@ class CallSession extends Emitter { } if (this.req.canceled) throw new Error('call canceled'); + const {gateway} = this.req.locals; // now send the INVITE in towards the feature servers debug(`sending INVITE to ${proxy} with ${uri}`); const {uas, uac} = await this.srf.createB2BUA(this.req, this.res, uri, { proxy, headers, + // passing gateway outbound auth that sbc-inbound can send RE-INVITE with authentication process on UAS side + ...(gateway.register_username && gateway.register_password && { + auth: { + username: gateway.register_username, + password: gateway.register_password + } + }), responseHeaders, proxyRequestHeaders: [ 'all', diff --git a/lib/db-utils.js b/lib/db-utils.js index 5f2d415..03986dd 100644 --- a/lib/db-utils.js +++ b/lib/db-utils.js @@ -7,7 +7,8 @@ const sqlSelectSPForAccount = 'SELECT service_provider_sid FROM accounts WHERE a const sqlSelectAllCarriersForAccountByRealm = `SELECT sg.sip_gateway_sid, sg.voip_carrier_sid, vc.name, vc.account_sid, -vc.application_sid, sg.inbound, sg.outbound, sg.is_active, sg.ipv4, sg.netmask, sg.pad_crypto +vc.application_sid, sg.inbound, sg.outbound, sg.is_active, sg.ipv4, sg.netmask, sg.pad_crypto, +vc.register_username, vc.register_password FROM sip_gateways sg, voip_carriers vc, accounts acc WHERE acc.sip_realm = ? AND vc.account_sid = acc.account_sid @@ -17,7 +18,8 @@ AND sg.voip_carrier_sid = vc.voip_carrier_sid`; const sqlSelectAllCarriersForSPByRealm = `SELECT sg.sip_gateway_sid, sg.voip_carrier_sid, vc.name, vc.account_sid, -vc.application_sid, sg.inbound, sg.outbound, sg.is_active, sg.ipv4, sg.netmask, sg.pad_crypto +vc.application_sid, sg.inbound, sg.outbound, sg.is_active, sg.ipv4, sg.netmask, sg.pad_crypto, +vc.register_username, vc.register_password FROM sip_gateways sg, voip_carriers vc, accounts acc WHERE acc.sip_realm = ? AND vc.service_provider_sid = acc.service_provider_sid @@ -28,7 +30,8 @@ AND sg.voip_carrier_sid = vc.voip_carrier_sid`; const sqlSelectAllGatewaysForSP = `SELECT sg.sip_gateway_sid, sg.voip_carrier_sid, vc.name, vc.service_provider_sid, -vc.account_sid, vc.application_sid, sg.inbound, sg.outbound, sg.is_active, sg.ipv4, sg.netmask, sg.pad_crypto +vc.account_sid, vc.application_sid, sg.inbound, sg.outbound, sg.is_active, sg.ipv4, sg.netmask, sg.pad_crypto, +vc.register_username, vc.register_password FROM sip_gateways sg, voip_carriers vc WHERE sg.voip_carrier_sid = vc.voip_carrier_sid AND vc.service_provider_sid IS NOT NULL @@ -57,7 +60,8 @@ AND outbound = 1`; const sqlSelectCarrierRequiringRegistration = ` SELECT sg.sip_gateway_sid, sg.voip_carrier_sid, vc.name, vc.service_provider_sid, vc.account_sid, -vc.application_sid, sg.inbound, sg.outbound, sg.is_active, sg.ipv4, sg.netmask, sg.pad_crypto +vc.application_sid, sg.inbound, sg.outbound, sg.is_active, sg.ipv4, sg.netmask, sg.pad_crypto, +vc.register_username, vc.register_password FROM sip_gateways sg, voip_carriers vc WHERE sg.voip_carrier_sid = vc.voip_carrier_sid AND vc.requires_register = 1 @@ -77,7 +81,8 @@ AND ( const sqlSelectGatewaysByVoipCarrierSids = ` SELECT sg.sip_gateway_sid, sg.voip_carrier_sid, vc.name, vc.service_provider_sid, -vc.account_sid, vc.application_sid, sg.inbound, sg.outbound, sg.is_active, sg.ipv4, sg.netmask, sg.pad_crypto +vc.account_sid, vc.application_sid, sg.inbound, sg.outbound, sg.is_active, sg.ipv4, sg.netmask, sg.pad_crypto, +vc.register_username, vc.register_password FROM sip_gateways sg, voip_carriers vc WHERE sg.voip_carrier_sid IN (?) AND sg.voip_carrier_sid = vc.voip_carrier_sid