5075 Commits

Author SHA1 Message Date
Anthony Minessale
baf5bbd565 FS-4266 --resolve 2012-05-29 08:42:51 -05:00
Travis Cross
c6b523c65f add inbound-zrtp-passthru to sample configs 2012-05-27 05:58:12 +00:00
Travis Cross
8513be49de enable inbound-late-negotiation in sample configs
We often tell people to enable this for various reasons; it likely
makes a sensible default.
2012-05-27 05:50:47 +00:00
Travis Cross
9b569ec875 cleanup and consolidate mod_sofia configuration example 2012-05-27 05:23:29 +00:00
Travis Cross
23f8967c32
add enhanced zrtp passthrough (zrtp passthru) mode
ZRTP passthrough mode allows two ZRTP-capable clients to negotiate an
end-to-end security association through FreeSWITCH.  The clients are
therefore able to be certain that the FreeSWITCH instance mediating
the call cannot eavesdrop on their conversation.

Importantly, this capability is maintained across multiple FreeSWITCH
hops.  If widely deployed, this enables a global network architecture
where two people can speak securely with strong cryptographically
protected authentication and confidentiality.

With this commit we implement a zrtp-passthru mode that handles all
the details of the negotiation intelligently.  This mode can be
selected by setting the boolean parameter inbound-zrtp-passthru in the
sofia profile.  This will also force late-negotiation as it is
essential for correctly negotiating an end-to-end ZRTP security
association.

When an incoming call with a zrtp-hash is received and this mode is
enabled, we find the first audio and the first video zrtp-hash in the
SDP and store them as remote values on this channel.  Once a b-leg is
available, we set the local zrtp-hash values on that channel to the
remote zrtp-hash values collected from the a-leg.

Because zrtp-passthru absolutely requires that the channels negotiate
the same codec, we offer to the b-leg only codecs that the a-leg can
speak.  Once the b-leg accepts a codec, we will force that choice onto
the a-leg.

If the b-leg sends us zrtp-hash values in the signaling, we store
those as remote values on the b-leg and copy them to the local values
on the a-leg.

At this point, each leg has the zrtp-hash values from the other, and
we know we can do ZRTP passthrough mode on the call.  We send the
b-leg's zrtp-hash back to the a-leg in the 200 OK.

We then enable UDPTL mode on the rtp streams for both the audio and
the video so that we don't interfere in the ZRTP negotiation.

If the b-leg fails to return a zrtp-hash in the signaling, we set up a
ZRTP security association with the a-leg ourselves, if we are so
equipped.  Likewise, if the a-leg fails to send a zrtp-hash in the
signaling, we attempt to set up a ZRTP security association ourselves
with the b-leg.

The zrtp-passthru mode can also be enabled in the dialplan by setting
the boolean channel variable zrtp_passthru.  If enabled in this
manner, we can't force late-negotiation, so the user would need to be
sure this is configured.

If ZRTP passthrough mode is not enabled in either manner, this change
should have no effect.

Channel variables for each of the various zrtp-hash values are set,
though it is anticipated that there is no good reason to use them, so
they may be removed without warning.  For checking whether zrtp
passthrough mode was successful, we provide the channel variable
zrtp_passthru_active which is set on both legs.

Though not implemented by this commit, the changes here should make it
more straightforward to add correct zrtp-hash values to the signaling
and verify that correct hello hash values are received when FreeSWITCH
is acting as a terminating leg of the ZRTP security association.

A historical note...

This commit replaces the recently-added sdp_zrtp_hash_string method,
commit 2ab1605a8887adc62be1b75f6ef67af87ff080de.

This prior method sets a channel variable from the a-leg's zrtp-hash,
then relies on the dialplan to export this channel variable to the
b-leg, where it is put into the SDP.

While it was a great start and wonderful for testing, this approach
has some drawbacks that motivated the present work:

 * There's no good way to pass the zrtp-hash from the b-leg back to
   the a-leg.  In fact, the implementation seems to send the a-leg's
   zrtp-hash back to the originating client in the 200 OK.  This is
   not correct.

 * To support video, we'd need to have a separate dialplan variable,
   and the dialplan author would need to deal with that explicitly.

 * The API is problematic as it requires the dialplan author to
   understand intricate details of how ZRTP works to implement a
   correct dialplan.  Further, by providing too fine-grained control
   (but at the same time, not enough control) it would limit our
   ability to make the behavior smarter once people started relying on
   this.
2012-05-24 20:39:03 +00:00
Travis Cross
16cf43a68d fix indentation; whitespace 2012-05-23 23:46:21 +00:00
Travis Cross
cb58e81c17 add editor variables to mod_sofia.h 2012-05-23 23:44:44 +00:00
Mathieu Rene
a5cd951c53 Update the outgoing channel handler so it passes the "var_event" event down towards rtmp_send_incoming_call since variables passed using originate are not yet in the session before the outgoing channel function returns. 2012-05-22 14:00:39 -04:00
Anthony Minessale
fb790bc320 block any inbound messages when queue is full; add debounce for mwi and pres on register; fix missing detach attr on new mode to process reg in new thread 2012-05-22 10:27:23 -05:00
Anthony Minessale
a672c99a57 FS-4224 --resolve this was a regression from d6374535 to fix FS-3029, when you find a profile you must release it 2012-05-22 07:59:21 -05:00
Anthony Minessale
792b004f36 add mwi-use-reg-callid 2012-05-21 13:55:50 -05:00
Anthony Minessale
b3b2c37526 FS-3983 --resolve 2012-05-18 13:41:16 -05:00
Anthony Minessale
bcd7a16290 indent 2012-05-18 10:15:08 -05:00
Anthony Minessale
718a311a41 FS-4224 --resolve add optional wait param to sofia profile stop [sofia profile foo stop wait] 2012-05-18 07:52:58 -05:00
Anthony Minessale
bbdcd33bde performance tweaks for sip message parsing and event system 2012-05-17 20:10:53 -05:00
Anthony Minessale
b117a65c50 put a little contention in the reg in new thread feature to prevent endless pileup 2012-05-17 19:57:02 -05:00
Anthony Minessale
ad7149bfa6 allow mod loopback bowout to reach out across stacked loopback bridges and remove all of them 2012-05-17 18:57:22 -05:00
Anthony Minessale
92eb698ddc FS-4231 --resolve declinatio mortuus obfirmo! 2012-05-17 11:27:57 -05:00
Anthony Minessale
da9aacc62e FS-4217 --resolve 2012-05-15 08:48:08 -05:00
Anthony Minessale
5c75d4cf5b FS-4220 --resolve i refactored this into a general cross platform function and use it everywhere else we try to set affinity 2012-05-15 08:31:42 -05:00
Anthony Minessale
0a5a057c46 add inbound-reg-in-new-thread sofia param to launch a new thread to process each new inbound register when using heavier backends 2012-05-14 17:51:15 -05:00
Anthony Minessale
4670a770cf fix sofia interaction with presence api command 2012-05-14 11:06:36 -05:00
Anthony Minessale
5b3b77071b make sure bargers use the same codec as bargee to avoid transcoding delay 2012-05-14 10:03:35 -05:00
Giovanni Maruzzelli
44fd0de8ff gsmopen: indented 2012-05-14 02:04:36 +02:00
Giovanni Maruzzelli
8a1508d669 gsmopen: correctly receives SMSs in GSM7 and UCS2 2012-05-14 02:04:36 +02:00
Giovanni Maruzzelli
eb93a14eb3 gsmopen: correctly sends SMSs in GSM7 or UCS2. Let's check SMS receiving 2012-05-14 02:04:36 +02:00
Giovanni Maruzzelli
4101e6b2b7 gsmopen: mod_sms tweak 2012-05-14 02:04:36 +02:00
Anthony Minessale
f3b1809a63 tweak to standby mode 2012-05-11 10:20:45 -05:00
Giovanni Maruzzelli
03bfc941a1 gsmopen: not check for CKPD when receiving SMS 2012-05-11 08:08:22 +02:00
Anthony Minessale
f9653fbd38 FS-4204 --resolve 2012-05-10 22:34:37 -05:00
Giovanni Maruzzelli
aba8e073a4 skypopen: don't whine in debug when skypeout to pstn 2012-05-10 23:05:08 +02:00
Giovanni Maruzzelli
dbafc38b3e skypopen: sk balances gives you how many credits you have, no more errors 2012-05-10 23:05:08 +02:00
Anthony Minessale
225eebc20d take out 101 dialing 2012-05-08 19:44:39 -05:00
Anthony Minessale
76c0201e89 dtmf tweak 2012-05-08 12:52:52 -05:00
Anthony Minessale
07204a1fb5 add param:confirm-blind-transfer var:confirm_blind_transfer that makes blind transfers keep the transferrer on the line until its confirmed that the call was completed or brings it back to the bridge. blind_transfer_ack app can be executed in the dp by the transferee to indicate sucess or fail or a sucessful bridge will automatically trigger a success 2012-05-08 08:50:41 -05:00
Anthony Minessale
a511ff3026 re-implement sla barge using eavesdrop backend 2012-05-07 13:44:16 -05:00
Moises Silva
105ce9ff33 Fixes before merging sangoma repo with upstream 2012-05-07 16:26:48 -04:00
Moises Silva
1f08e2b0ec Merge remote branch 'fsorig/master' 2012-05-07 15:46:08 -04:00
Jeff Lenk
fd62240199 changes for mod_gsmopen for vs2010 2012-05-07 14:05:21 -05:00
Jeff Lenk
bbe3249de8 some windows changes for gsmopen for vs2008 - 2010 changes next 2012-05-07 13:44:07 -05:00
Giovanni Maruzzelli
00a6f61a67 skypopen: indented 2012-05-07 19:02:16 +02:00
Giovanni Maruzzelli
56f415a164 skypopen: mark chatmessages SEEN 2012-05-07 19:02:16 +02:00
Giovanni Maruzzelli
8597842a56 skypopen: hook up to mod_sms, spawning a thread for servicing chatmessage 2012-05-07 17:31:32 +02:00
Anthony Minessale
64d4d9ea57 add pickup endpoint and app to dptools add pickup/keyname to forked dial, then route a call to call app pickup(keyname) to have your channel return from originate. sub to pickup+keyname or presence map the pickup proto to use on blf 2012-05-04 18:59:34 -05:00
William King
6ac20ed54d If the notify event contains call-info headers, then process the call-info linked list into comma separated values and add them to a header on the event. 2012-05-04 10:07:08 -07:00
Anthony Minessale
ca39f15aa9 let the var take precedence over the profile setting 2012-05-04 11:41:54 -05:00
Giovanni Maruzzelli
67240d2905 skypopen: DISABLED (for the time being) mod_sms hookup needs to CHAT CREATE, then read back the DIALOG. It will have to be spun as a separate thread, but is here as a proof of concept. I disable it right now 2012-05-04 16:39:50 +02:00
Giovanni Maruzzelli
c64813f4fd skypopen: mod_sms hookup, is flawed, because it needs to CHAT CREATE, then read back the DIALOG. It will have to be spun as a separate thread, but is here as a proof of concept. I disable it right now 2012-05-04 16:39:50 +02:00
Anthony Minessale
5190bd0849 FS-4186 --resolve 2012-05-04 08:25:48 -05:00
Giovanni Maruzzelli
1ad0d0af36 gsmopen: FS-4155, mod_sms hookup 2012-05-04 14:46:30 +02:00