Compare commits

...
1 Commits
2 changed files with 26 additions and 1 deletions
+8 -1
View File
@@ -136,7 +136,14 @@ class CallSession extends Emitter {
proxy,
headers,
responseHeaders,
proxyRequestHeaders: ['all', '-Authorization', '-Max-Forwards', '-Record-Route', '-Session-Expires', 'Min-SE'],
proxyRequestHeaders: [
'all',
'-Authorization',
'-Max-Forwards',
'-Record-Route',
'-Session-Expires',
'-X-Forwarded-For'
],
proxyResponseHeaders: ['all'],
localSdpB: response.sdp,
localSdpA: async(sdp, res) => {
+18
View File
@@ -73,6 +73,24 @@ module.exports = function(srf, logger) {
const initLocals = (req, res, next) => {
req.locals = req.locals || {};
/* check if forwarded by a proxy that applied an X-Forwarded-For Header */
if (req.has('X-Forwarded-For')) {
const arr = /^([^:]*)(?::(.*))?$/.exec(req.get('X-Forwarded-For'));
if (arr) {
const original_source_address = arr[1];
const original_source_port = arr[2] || req.source_port;
logger({
callId: req.get('Call-ID'),
original_source_address,
original_source_port,
proxy_source_address: req.source_address,
proxy_source_port: req.source_port
}, 'overwriting source address and port for proxied SIP INVITE');
req.source_address = original_source_address;
req.source_port = original_source_port;
}
}
req.locals.cdr = initCdr(req);
const callId = req.get('Call-ID');
req.on('cancel', () => {