Introduction
Introduction Statistics Contact Development Disclaimer Help
Implement CallToken support, fixes #36 - warvox - VoIP based wardialing tool, f…
Log
Files
Refs
README
---
commit 819317ab5c5cc3ba0ae7cd5e2bd3aa441656b083
parent 30e3eb477e3685c65266c058ce3eaaf1b0bff9f4
Author: HD Moore <[email protected]>
Date: Sun, 28 Feb 2016 18:43:58 -0600
Implement CallToken support, fixes #36
Diffstat:
M lib/warvox/proto/iax2/call.rb | 23 +++++++++++++++++++++--
M lib/warvox/proto/iax2/client.rb | 10 ++++++++--
M lib/warvox/proto/iax2/constants.rb | 15 +++++++++++++--
3 files changed, 42 insertions(+), 6 deletions(-)
---
diff --git a/lib/warvox/proto/iax2/call.rb b/lib/warvox/proto/iax2/call.rb
@@ -19,6 +19,7 @@ class Call
attr_accessor :caller_name
attr_accessor :caller_number
attr_accessor :dtmf
+ attr_accessor :call_token
def initialize(client, src_id)
@@ -36,9 +37,9 @@ class Call
self.busy = false
self.dtmf = ''
+ self.call_token = ''
end
-
def dprint(msg)
self.client.dprint(msg)
end
@@ -59,6 +60,7 @@ class Call
# Register with the IAX endpoint
def register
+
self.client.send_regreq(self)
res = wait_for( IAX_SUBTYPE_REGAUTH, IAX_SUBTYPE_REGREJ )
return if not res
@@ -115,7 +117,24 @@ class Call
def dial(number)
self.client.send_new(self, number)
- res = wait_for(IAX_SUBTYPE_AUTHREQ, IAX_SUBTYPE_ACCEPT)
+ res = wait_for(IAX_SUBTYPE_AUTHREQ, IAX_SUBTYPE_ACCEPT, IAX_SUBTYPE_CALLTO…
+ return if not res
+
+ # Handle CallToken support
+ if res[1] == IAX_SUBTYPE_CALLTOKEN
+ if res[2][IAX_IE_CALL_TOKEN]
+ # Reset sequence numbers
+ self.oseq = self.iseq = 0
+ # Store the CallToken
+ self.call_token = res[2][IAX_IE_CALL_TOKEN]
+ # Restart the call
+ self.client.send_new(self, number)
+ res = wait_for(IAX_SUBTYPE_AUTHREQ, IAX_SUBTYPE_ACCEPT)
+ else
+ dprint("NEW: No CallToken received in CALLTOKEN reply")
+ return
+ end
+ end
return if not res
# Handle authentication if its requested
diff --git a/lib/warvox/proto/iax2/client.rb b/lib/warvox/proto/iax2/client.rb
@@ -158,14 +158,20 @@ class Client
cid = call.caller_number || self.caller_number
cid = number if cid == 'SELF'
-
+ data << create_ie(IAX_IE_PROTO_VERSION, [2].pack("n") )
data << create_ie(IAX_IE_CALLING_NUMBER, cid )
data << create_ie(IAX_IE_CALLING_NAME, call.caller_name || self.caller_nam…
- data << create_ie(IAX_IE_DESIRED_CODEC, [IAX_SUPPORTED_CODECS].pack("N") )
+ data << create_ie(IAX_IE_CALLING_PRESENTATION, [1].pack("C") )
+ data << create_ie(IAX_IE_CALLING_TYPE_NUMBER, [0].pack("C") )
+ data << create_ie(IAX_IE_CALLING_TRANSIT_NETWORK_SELECT, [0].pack("n") )
+ data << create_ie(IAX_IE_DESIRED_CODEC, [IAX_CODEC_G711_MULAW].pack("N") )
data << create_ie(IAX_IE_ACTUAL_CODECS, [IAX_SUPPORTED_CODECS].pack("N") )
data << create_ie(IAX_IE_USERNAME, self.username) if self.username
data << create_ie(IAX_IE_CALLED_NUMBER, number)
data << create_ie(IAX_IE_ORIGINAL_DID, number)
+ data << create_ie(IAX_IE_CPE_ADSI_CAP, [0].pack("n"))
+ data << create_ie(IAX_IE_CALL_TOKEN, call.call_token)
+ data << create_ie(IAX_IE_FIRMWARE_BLOCK, IAX_VENDOR_STRING)
send_data( call, create_pkt( call.scall, call.dcall, call.timestamp, call.…
end
diff --git a/lib/warvox/proto/iax2/constants.rb b/lib/warvox/proto/iax2/constan…
@@ -173,16 +173,24 @@ IAX_IE_CALLING_NUMBER = 2
IAX_IE_AUTH_METHODS = 3
IAX_IE_CALLING_NAME = 4
IAX_IE_USERNAME = 6
-IAX_IE_DESIRED_CODEC = 9
-IAX_IE_ORIGINAL_DID = 10
IAX_IE_ACTUAL_CODECS = 8
+IAX_IE_DESIRED_CODEC = 9
IAX_IE_PROTO_VERSION = 11
+IAX_IE_CPE_ADSI_CAP = 12
+IAX_IE_ORIGINAL_DID = 13
IAX_IE_REG_REFRESH = 19
IAX_IE_CHALLENGE_DATA = 15
IAX_IE_CHALLENGE_RESP = 16
IAX_IE_APPARENT_ADDR = 18
IAX_IE_REGREJ_CAUSE = 22
+IAX_IE_FIRMWARE_BLOCK = 36
+IAX_IE_CALLING_PRESENTATION = 38
+IAX_IE_CALLING_TYPE_NUMBER = 39
+IAX_IE_CALLING_TRANSIT_NETWORK_SELECT = 40
IAX_IE_HANGUP_CAUSE = 42
+IAX_IE_CALL_TOKEN = 54
+
+
=begin
+------+----------------+-------------------------------------------+
@@ -244,6 +252,7 @@ IAX_IE_HANGUP_CAUSE = 42
| | | buffer) |
| 0x33 | RR OOO | Frames received Out of Order |
| 0x34 | OSPTOKEN | OSP Token Block |
+ | 0x54 | CALL TOKEN | Call Token
+------+----------------+-------------------------------------------+
=end
@@ -260,6 +269,8 @@ IAX_SUPPORTED_CODECS = IAX_CODEC_G711_MULAW | IAX_CODEC_G7…
IAX_DEFAULT_REG_REFRESH = 60
IAX_DEFAULT_TIMEOUT = 10
+# IAX Vendor
+IAX_VENDOR_STRING = "Rex IAX2 1.0"
end
end
You are viewing proxied material from jay.scot. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.