Commit Graph

553 Commits

Author SHA1 Message Date
Anthony Minessale de802f2124 FS-5498 fix state change 2013-06-11 11:24:04 -05:00
Anthony Minessale df1bba55ee FS-5498 2013-06-10 19:13:21 -05:00
Anthony Minessale 6731519bef FS-5498 2013-06-10 18:22:08 -05:00
Anthony Minessale 860ed3f9a6 add last callback run stamp to device records 2013-06-06 13:09:13 -05:00
Anthony Minessale 4240526ce3 add some device-state mechinism to FS to allow tracking of device-specific states where they may have more than one call from the same device 2013-06-05 11:20:11 -05:00
Anthony Minessale 9d8af739c8 FS-5480 --resolve 2013-05-28 08:17:44 -05:00
Anthony Minessale f42fffb65f FS-5466 --resolve 2013-05-24 09:14:13 -05:00
Anthony Minessale 6cdb46889c FS-5402 --resolve the problem is ent originate has many channels and many causes to parse so we need to check it against all the causes 2013-05-22 11:01:39 -05:00
Anthony Minessale 2d96d7c165 fix minor cid issue in mod_fifo 2013-04-22 16:31:05 -05:00
Anthony Minessale 8adeab7d5a move callstate changes down to take place after the core states have run 2013-04-15 10:43:32 -05:00
Anthony Minessale 7fd28f58f9 FS-5208 --resolve 2013-04-08 12:09:49 -05:00
Anthony Minessale 18c429f66f refactor and cleanup more cid stuff 2013-04-05 15:29:57 -05:00
Anthony Minessale 83fc8ddf3a endless cid fun 2013-04-05 08:29:16 -05:00
Anthony Minessale a1999ad62a flush on answer for inbound only 2013-04-04 13:46:46 -05:00
Anthony Minessale 69c3c7d8e2 FS-5257 --resolve you seem to be setting sip_secure_media on an inbound leg, this is not correct. This patch should auto-correct that but also beware that the variable has changed to rtp_secure_media after this commit 2013-04-02 20:05:46 -05:00
Anthony Minessale 2207b87769 do some more caller-id cleanup 2013-04-01 23:03:14 -05:00
Anthony Minessale 262aed0ed1 remove debug code 2013-03-29 22:12:54 -05:00
Anthony Minessale aca9257f93 tweaks for caller id in certian uuid_bridge situations 2013-03-28 22:17:28 -05:00
Brian West b8b7176086 remove debug line left in by accident 2013-03-27 22:19:58 -05:00
Anthony Minessale 861c3e3ccc add switch_core_get_variables and allow execute_on funcs to see global vars too 2013-03-27 14:54:01 -05:00
Anthony Minessale 4e812bb263 FS-5169 --resolve 2013-03-13 10:37:44 -05:00
Anthony Minessale 50e7a09eca FS-4709 this is the right way to do this part 2013-02-26 15:32:19 -06:00
Anthony Minessale aa89eab58f FS-4709 --resolve, not adding the change to switch_rtp I want to have that log line there, don't make vanity changes mixed in with code changes 2013-02-26 11:49:17 -06:00
Anthony Minessale 28680c5e58 fix callstate stuff to behave right on outbound calls 2013-02-23 12:55:58 -06:00
Anthony Minessale ee7dd033fd fix race condition in state thread 2013-02-22 17:46:54 -06:00
Anthony Minessale d4f8a79299 try to improve audio stream sync 2012-11-28 23:12:35 -06:00
Anthony Minessale c7c528cd7c FS-4867 --resolve 2012-11-26 13:52:06 -06:00
Anthony Minessale 6f2976298f FS-4836 ok try this 2012-11-15 13:16:50 -06:00
Anthony Minessale 057861867e FS-4836 not quite 2012-11-15 13:14:08 -06:00
Anthony Minessale 73f022873b FS-4836 try this 2012-11-15 12:54:40 -06:00
Anthony Minessale b39a2cbb8b put running_state in the channel event rather than the state so presence events reflect the current state of the channel and not the one that was possibly changed during the last state 2012-11-08 14:13:05 -06:00
Anthony Minessale f1e16ccbfa only track calls once they have been answered 2012-10-24 12:33:13 -05:00
Jeff Lenk a8ee444ab9 FS-4748 --resolve 2012-10-22 09:24:45 -05:00
Anthony Minessale 03d702fabc FS-4676 --resolve 2012-10-09 13:50:11 -05:00
Anthony Minessale 07ed03c458 FS-4625 --resolve 2012-09-20 09:57:58 -05:00
Anthony Minessale 9a193a9cd2 add hold_events variable with start and stop times for each hold 2012-09-12 16:36:17 -05:00
Anthony Minessale c2893801cb add timestamps for on and off hold times to put in xml cdrs 2012-09-07 18:17:57 -05:00
Anthony Minessale 8c6b8edfea FS-4542 --resolve ok if this causes any problems it should lead us back to this commit 2012-08-17 14:07:20 -05:00
Anthony Minessale cc351ca004 revert 2012-08-16 12:09:19 -05:00
Anthony Minessale 42bf44de51 FS-4539 please test this and post new logs if necessary 2012-08-16 11:56:55 -05:00
Anthony Minessale bb69310259 FS-4079 FS-4540 please update to this version 2012-08-15 22:51:41 -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 696fb9c28b expand vars in hold music variable 2012-07-26 13:17:39 -05:00
Anthony Minessale 293516be59 FS-4370 --resolve 2012-07-10 22:44:11 -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 60bb3595fd FS-4313 --resolve 2012-06-26 11:34:24 -05:00
Anthony Minessale 75aab0ee6c put presence data in state events 2012-06-01 13:21:12 -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 1cfd145c17 add support for variable expander to recognize 717 vars as specificly globals 2012-05-24 13:07:26 -05:00