@babblevoice/babble-drachtio-callmanager 2.2.1 → 2.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/call.js +46 -7
- package/package.json +1 -1
- package/test/interface/call.js +1 -1
package/lib/call.js
CHANGED
|
@@ -5,13 +5,40 @@ const dns = require( "node:dns" )
|
|
|
5
5
|
|
|
6
6
|
const projectrtp = require( "@babblevoice/projectrtp" ).projectrtp
|
|
7
7
|
|
|
8
|
-
const parseuri = require( "drachtio-srf" ).parseUri
|
|
9
8
|
const sdpgen = require( "./sdp.js" )
|
|
10
9
|
const callstore = require( "./store.js" )
|
|
11
10
|
|
|
12
11
|
const sipauth = require( "@babblevoice/babble-drachtio-auth" )
|
|
13
12
|
|
|
14
13
|
const ipv6regex = /^(?:(?:[a-fA-F\d]{1,4}:){7}(?:[a-fA-F\d]{1,4}|:)|(?:[a-fA-F\d]{1,4}:){6}(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:\\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}|:[a-fA-F\d]{1,4}|:)|(?:[a-fA-F\d]{1,4}:){5}(?::(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:\\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}|(?::[a-fA-F\d]{1,4}){1,2}|:)|(?:[a-fA-F\d]{1,4}:){4}(?:(?::[a-fA-F\d]{1,4}){0,1}:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:\\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}|(?::[a-fA-F\d]{1,4}){1,3}|:)|(?:[a-fA-F\d]{1,4}:){3}(?:(?::[a-fA-F\d]{1,4}){0,2}:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:\\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}|(?::[a-fA-F\d]{1,4}){1,4}|:)|(?:[a-fA-F\d]{1,4}:){2}(?:(?::[a-fA-F\d]{1,4}){0,3}:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:\\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}|(?::[a-fA-F\d]{1,4}){1,5}|:)|(?:[a-fA-F\d]{1,4}:){1}(?:(?::[a-fA-F\d]{1,4}){0,4}:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:\\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}|(?::[a-fA-F\d]{1,4}){1,6}|:)|(?::(?:(?::[a-fA-F\d]{1,4}){0,5}:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:\\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}|(?::[a-fA-F\d]{1,4}){1,7}|:)))(?:%[0-9a-zA-Z]{1,})?$/gm
|
|
14
|
+
const parseurire = /^(sips?):(?:([^\s>:@]+)(?::([^\s@>]+))?@)?([\w\-.]+)(?::(\d+))?((?:;[^\s=?>;]+(?:=[^\s?;]+)?)*)(?:\?(([^\s&=>]+=[^\s&=>]+)(&[^\s&=>]+=[^\s&=>]+)*))?$/
|
|
15
|
+
const parseuriparamsre = /([^;=]+)(=([^;=]+))?/g
|
|
16
|
+
const parseuriheadersre = /[^&=]+=[^&=]+/g
|
|
17
|
+
|
|
18
|
+
function parseuri( s ) {
|
|
19
|
+
if( "object" === typeof s )
|
|
20
|
+
return s
|
|
21
|
+
|
|
22
|
+
const r = parseurire.exec( s )
|
|
23
|
+
|
|
24
|
+
if( r ) {
|
|
25
|
+
return {
|
|
26
|
+
schema: r[ 1 ],
|
|
27
|
+
user: r[ 2 ],
|
|
28
|
+
password: r[ 3 ],
|
|
29
|
+
host: r[ 4 ],
|
|
30
|
+
port: +r[ 5 ],
|
|
31
|
+
params: (r[ 6 ].match( parseuriparamsre ) || [] )
|
|
32
|
+
.map( function( s ) { return s.split( "=" ) } )
|
|
33
|
+
.reduce(function(params, x) { params[x[0]]=x[1] || null; return params }, {} ),
|
|
34
|
+
headers: ( ( r[ 7 ] || "" ).match( parseuriheadersre ) || [])
|
|
35
|
+
.map(function(s){ return s.split( "=") } )
|
|
36
|
+
.reduce(function(params, x) { params[ x[ 0 ] ] = x[ 1 ]; return params }, {} )
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
return {}
|
|
41
|
+
}
|
|
15
42
|
|
|
16
43
|
/*
|
|
17
44
|
Enum for different reasons for hangup.
|
|
@@ -446,10 +473,25 @@ class call {
|
|
|
446
473
|
return parsed
|
|
447
474
|
}
|
|
448
475
|
|
|
476
|
+
#fixparseduriobj( parsed ) {
|
|
477
|
+
|
|
478
|
+
if( !parsed ) parsed = {}
|
|
479
|
+
if( !parsed.uri && parsed.user && parsed.host ) parsed.uri = parsed.user + "@" + parsed.host
|
|
480
|
+
if( parsed.uri && !parsed.user && !parsed.host ) parsed = parseuri( parsed.uri )
|
|
481
|
+
|
|
482
|
+
let parseduri = parseuri( parsed.uri )
|
|
483
|
+
|
|
484
|
+
if( !parseduri ) parseduri = { "user": parsed.user, "host": parsed.host }
|
|
485
|
+
if( !parsed.params ) parsed.params = {}
|
|
486
|
+
|
|
487
|
+
return parsed
|
|
488
|
+
}
|
|
489
|
+
|
|
449
490
|
/**
|
|
450
491
|
*
|
|
451
492
|
* @returns { object }
|
|
452
493
|
*/
|
|
494
|
+
// eslint-disable-next-line complexity
|
|
453
495
|
#getremoteuas() {
|
|
454
496
|
/* uas - inbound */
|
|
455
497
|
let parsed
|
|
@@ -466,16 +508,13 @@ class call {
|
|
|
466
508
|
parsed = this.#getremotefromheaders()
|
|
467
509
|
}
|
|
468
510
|
|
|
469
|
-
|
|
470
|
-
let parseduri = parseuri( parsed.uri )
|
|
471
|
-
if( !parseduri ) parseduri = { "user": parsed.user, "host": parsed.host }
|
|
472
|
-
if( !parsed.params ) parsed.params = {}
|
|
511
|
+
parsed = this.#fixparseduriobj( parsed )
|
|
473
512
|
|
|
474
513
|
return {
|
|
475
514
|
"name": this._remote.name?this._remote.name:( !parsed.name?"":parsed.name.replace( /['"]+/g, "" ) ),
|
|
476
515
|
"uri": parsed.uri,
|
|
477
|
-
"user": this._remote.id?this._remote.id:(
|
|
478
|
-
"host":
|
|
516
|
+
"user": this._remote.id?this._remote.id:(parsed.user),
|
|
517
|
+
"host": parsed.host,
|
|
479
518
|
"privacy": "true" === parsed.params.privacy,
|
|
480
519
|
"type": "callerid"
|
|
481
520
|
}
|
package/package.json
CHANGED
package/test/interface/call.js
CHANGED