Commit Graph

580 Commits

Author SHA1 Message Date
Anthony Minessale 142c051d68 cache session threads and reuse them if possible 2012-08-21 00:14:50 -05:00
Anthony Minessale 75abcd2099 fix build 2012-08-09 16:27:15 -05:00
Michael Jerris f044f46250 add apr stub to get the real OS socket 2012-08-09 11:56:29 -05:00
Anthony Minessale 293429f78d add api-expansion to switch.conf.xml and fsctl api_expansion command to control allowing apis to be expanded via variable expansion 2012-07-27 18:53:04 -05:00
Anthony Minessale f4715781dc FS-4382 reverse this so you have to enable instead of disable, this patch has been causing srtp issues because the change in ssrc 2012-07-18 22:01:41 -05:00
Anthony Minessale 46fee25dad add fsctl sql start/stop for standby controls 2012-07-12 14:30:44 -05:00
Anthony Minessale 088437cab1 add some rtcp stuff for sangoma 2012-07-11 15:23:12 -05:00
Anthony Minessale 2aebe2456f first pass on some new stuff 2012-07-11 15:15:50 -05:00
Anthony Minessale 9ca929218f FS-4382 --resolve 2012-07-06 11:12:14 -05:00
Anthony Minessale bf20f52452 add execute_on_post_originate and api_on_post_originate to run on chosen newly originated channels vs execute_on_originate which runs on all candidates 2012-07-05 12:34:09 -05:00
Anthony Minessale f3a49366a1 FS-4331 please test and post a new log if necessary 2012-07-03 08:05:41 -05:00
Anthony Minessale 8b4c9dc42c FS-3659 and some refactor for rtcp ice and video ice and rtcp 2012-06-22 18:15:06 -05:00
Anthony Minessale 8bb55ed4bf abstract out originate_signal_bond to a function to avoid confustion and regressions 2012-05-29 13:10:15 -05: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 2ab1605a88.

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
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 1fc57f9828 FS-4198 --resolve 2012-05-08 07:43:01 -05:00
Anthony Minessale a511ff3026 re-implement sla barge using eavesdrop backend 2012-05-07 13:44:16 -05:00
Anthony Minessale 09e6152382 FS-3995 --resolve 2012-05-07 11:41:54 -05:00
Anthony Minessale 7f76b67f5d FS-4191 --resolve 2012-05-07 08:17:41 -05: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
Ken Rice 7a147e4762 Update a ton of copyright statements to make sure the dates are proper 2012-04-25 17:14:55 -05:00
Anthony Minessale d655ceecf8 add fsctl debug sql 2012-04-02 12:58:40 -05:00
Anthony Minessale 2ab1605a88 ZRTP passthru mode code for phil 2012-03-29 18:37:15 -05:00
Anthony Minessale 973a39e07f FS-4049 revert 2012-03-28 14:28:05 -05:00
Anthony Minessale 46810f58d3 FS-4049 try this 2012-03-27 13:08:49 -05:00
Anthony Minessale c358f67fe4 eat inbound vid while playing fsv files 2012-01-17 12:19:31 -06:00
Anthony Minessale e87a48b824 FS-3812 --resolve 2012-01-13 15:22:31 -06:00
Anthony Minessale a365fb636a mailing list 36bc584d980ce80fe6a6f6e7d7383db9.squirrel@my.tomp.co.uk [Freeswitch-users] audo sync issues with record_session to mp3 I redid the stream recording with timestamps and headers to try to keep it more synced 2012-01-11 17:49:46 -06:00
Marc Olivier Chouinard e081e8045e FS-3321 --resolve 2011-12-15 12:16:41 -05:00
Marc Olivier Chouinard d5042f2c1d FS-3069 --resolve 2011-12-14 21:19:15 -05:00
Anthony Minessale 6e7d44af42 FS-3764 --resolve 2011-12-14 13:23:54 -06:00
Anthony Minessale 2e6b55810f put transfer_source in a variable too 2011-12-08 17:33:31 -06:00
Anthony Minessale 4943f68208 set rtp stack into optimal mode for transferring data during fax situations (that does not mean we support the idea of audio fax over ip......) 2011-12-08 12:26:36 -06:00
Anthony Minessale b9e28f85cb add send_info dp app and uuid_send_info FSAPI and execute_on_sip_extra_headers and api_on_sip_extra_headers handler variables 2011-11-23 15:38:59 -06:00
Anthony Minessale c0af0a85d6 say years like 1985 as nineteen-85 2011-11-15 09:51:46 -06:00
Anthony Minessale ba14f95d81 FS-3678 --resolve 2011-11-08 08:02:17 -06:00
Anthony Minessale 43ca3ee81a FS-3634 the call is not bridged yet so we need to take more action, try this patch 2011-11-02 08:54:03 -05:00
Anthony Minessale babe955160 FS-3634 see if this works 2011-10-25 08:47:01 -05:00
Anthony Minessale ead7a68276 add <param name="core-odbc-required" value="true"/> to require connection to core db over odbc for startup 2011-10-17 09:34:50 -05:00
Anthony Minessale 2094f2d33b add fsctl sync_clock_when_idle so you can sync the clock but have it not do it till there are 0 calls 2011-10-12 14:55:32 -05:00
Anthony Minessale 1bf97fa7ba add some more reporting data to logs 2011-10-11 15:13:23 -05:00
Anthony Minessale 9e09483589 add manual_rtp_bug gen_one_gen_all to prevent rtp passthru to break the *S* word.. 2011-10-07 10:40:30 -05:00
Anthony Minessale 842ea87d64 FS-3571 try this, I don't have a way to test it so this is just guessing, give me a lab box if this doesn't work 2011-09-21 14:56:49 -05:00
Anthony Minessale 7333d46d5b add new chatplan concept and mod_sms. Apps for chat messages: copy new base freeswitch.xml and chatplan dir if you are upgrading on existing config base 2011-09-21 14:31:18 -05:00
Anthony Minessale 626b5cb2a2 FS-3571 FS-3442 FS-957 --resolve tighten up the parsing of these boolean vals issue in t38 sdp 2011-09-19 20:11:23 -05:00
Anthony Minessale 3a2f818387 make app to turn on new zombie exec instead of always doing it 2011-09-13 17:12:37 -05:00
Anthony Minessale 637a5ed83d Add application flag zombie_exec so registered applications can apply to be executed on channels that are already hungup, like the inline exec this is only limited to a small family of apps that do not use the channel for audio. 2011-09-13 09:35:41 -05:00
Anthony Minessale 910f5364a4 add threaded-system-exec param and fsctl (set it to false to use fork) 2011-09-12 14:25:01 -05:00
Anthony Minessale cb9abe0268 add new flag to frames to denote pass thru frames that are not audio 2011-09-09 13:56:04 -05:00
Brian West 06eb4b6ab3 Fix recovery when nat is involved 2011-09-09 02:47:56 -05:00