Commit Graph
612 Commits
Author SHA1 Message Date
Dmitry Verenitsin 7015f6a73a [mod_sofia] Add enable-chat-api-proto to gate the api chat proto (#3135)
The chat layer lets an inbound SIP MESSAGE select which chat proto handles it,
and the `api` proto runs the address as a FreeSWITCH API command. The new
per-profile `enable-chat-api-proto` param controls that route and is off unless
set. A MESSAGE selecting the proto on a profile without it is answered 403 and
logged with the source and the requested command.

The proto compare is case-insensitive, matching the chat interface registry,
which is created with `switch_core_hash_init_nocase()`.

The param ships commented out in the four vanilla profiles and the mod_sofia
sofia.conf.xml sample.
2026-08-26 16:46:56 +03:00
Dmitry Verenitsin 08c3fffa7c [mod_sofia] Fix use-after-free in dispatch event thread. (#3031)
`sofia_process_dispatch_event_in_thread` allocated `td` from a memory pool,
then `sofia_msg_thread_run_once` destroyed that same pool after processing
the event — leaving `td` dangling when the thread pool worker accessed it.

Allocate `td` with `switch_zmalloc` (`td->alloc = 1`) so the worker frees it
safely after the function returns. Remove the now-unused `pool` field from
`sofia_dispatch_event_t`.
2026-05-26 00:15:19 +03:00
Andrey Volk 5b1c2688da [Core, mod_sofia] Add switch_uint31_t type. Fix CSeq bigger than 2^31-1. 2024-05-09 22:20:14 +03:00
Dragos Oancea 8e59603d98 [core][mod_sofia] remove ZRTP (deemed obsolete).
[unit-tests][build-system][docs] remove references to ZRTP.
2022-10-28 20:19:42 +03:00
Dmitry Ukolov c6452cc8da [mod_sofia] Add db-spin-up-wait-ms profile parameter. 2022-10-06 12:15:41 +03:00
Aron Podrigal 0365becc0d [mod_sofia] Fix fs_path to keep <> so that sofia doesn't put the uri parameters as header parameters. Handle multiple Record-Route / Route and Path headers. 2022-03-25 19:44:25 +03:00
Andrey Volk 7ed2a99eb5 [mod_sofia] Implement maximum receiving requests per second max-recv-requests-per-second profile parameter. (Warning: Behaviour change. New default is 1000 requests per second) 2021-10-23 22:01:06 +03:00
Andrey Volk d2e8a775b0 [mod_sofia] Set sip_100_uepoch channel variable on initial 100 trying response. 2021-10-23 22:00:37 +03:00
Andrey Volk 66a92063b6 [mod_sofia] Add tls-orq-connect-timeout profile parameter so SIP engine could try again sending an outgoing request and when possible - using an alternative address (DNS failover). Add sip_call_tls_orq_connect_timeout channel variable per call to override profile's timeout. 2021-10-23 22:00:36 +03:00
Andrey Volk ec7ec190b0 [mod_sofia] Add TLS v1.3 support. 2021-10-23 21:59:57 +03:00
Dragos OanceaandAndrey Volk 69cdaac60b [mod_sofia] more fixes around md5 hash infoleak (tricky cfg).
* [mod_sofia] md5 hash infoleak fixes: (explictly allow host set in gw params 'register_proxy' and 'outbound_proxy' to challenge too).

"We have tightened security for digest authentication on gateways.
If you have gateways configured using dns and not an ip address,
you may need to configure gw-auth-acl in gateway configuration to
specify the IP addresses you can send auth challenges to for this gateway.
This is meant to better secure who we will send auth challenges." (Mike Jerris)

[mod_sofia] add REGISTER/401 unit-tests (sipp based)

[mod_sofia] add INVITE/407 unit-test (sipp-based)

* Cleanup spacing

Co-authored-by: Andrey Volk <andywolk@gmail.com>
2021-09-08 18:22:14 +03:00
Dragos Oancea c41aa83b17 [mod_sofia] fix md5 digest infoleak
[mod_sofia] refactor IP checks with sip-dig

[mod_sofia] add sipp-based unit-tests (use spawn_instead_of_system)
2021-08-13 18:17:17 +03:00
Andrey Volk 81fff857c5 [mod_sofia] sofia_process_dispatch_event() should unref all handles via sofia stack 2021-06-14 19:46:28 +03:00
Chris RienzoandAndrey Volk deecaae870 STIR/SHAKEN (#1160)
* [core] Add SWITCH_CAUSEs for STIR/SHAKEN.
[mod_sofia] Add sofia_verify_identity dialplan APP as a STIR/SHAKEN verification service.  Set sip_hangup_on_verify_identity_fail=true to end calls that fail verification, otherwise check sip_verstat and sip_verstat_detailed channel variables for verification result.

* [mod_sofia] Fix stir shaken implementation issues on fail.

* fix build

* Fix given comments

* stir_shaken_passport_get_grant return does not require to be freed.

* reworked things

* [core] add switch_rfc822_datetime_to_epoch()

* [mod_sofia] fix test return code

* [mod_sofia] Add Date header when signing Identity

* [mod_sofia] Check Date - WIP doesn't work

* [mod_sofia] STIR/SHAKEN check SIP Date header

* Try to give time for sofia to clean up calls

Co-authored-by: Andrey Volk <andywolk@gmail.com>
2021-04-27 13:54:32 -06:00
Dragos Oancea 833235b941 [mod_sofia] Add RFC8760 (sha-256, sha-512)
enable on the sip profile, eg:
<param name="rfc8760-auth-algorithms" value="sha-256,md5"/>
2021-04-12 09:57:56 -04:00
Andrey Volk dfb9541b08 [mod_sofia] Use thread-safe alternatives when destroying nua and nua_handle references. Bump sofia-sip library requirement to version 1.13.3 2021-03-22 18:43:19 +03:00
Andrey VolkandMike Jerris a746d12f6c [mod_sofia] Keep noreg gateways as NOREG, mark unregistered gateways as DOWN.
Co-authored-by: Mike Jerris <mike@signalwire.com>
2021-03-17 18:20:32 +03:00
Andrey Volk b06036e30f [mod_sofia] Cleanup usage of sofia-sip headers. 2020-08-03 22:15:19 +04:00
Jourdan Templeton 5805addbeb [mod_sofia] Add new gateway param 'contact-in-ping' to support for Microsoft Teams Direct Routing 2020-03-23 23:29:53 +04:00
Andrey Volk a074814b3f [mod_sofia] Add abort-on-empty-external-ip global param disabled by default. 2020-01-11 01:18:14 +04:00
Mike Jerris 090e8284b6 FS-11961: [mod_sofia] Handle request vs response in sofia_media_tech_media 2019-07-25 14:26:36 -06:00
Mariah Yang d654faa5a9 FS-11903: Fix errors reported by PVS-Studio Static Code Analyzer for mod_sofia 2019-07-18 22:22:56 +04:00
Mike Jerris e7dda1b027 Revert "FS-9490: [mod_sofia] add filter to SIP messages that match a regexp."
This reverts commit 53dbe5d84a.

This previous patch made logger function not reentrant so reverting until we can get a fix without that issue
2019-07-17 22:57:55 +04:00
Mike Jerris a9e634b664 FS-11557: [mod_sofia] add support for RFC 7989 Session-ID header
(enable with sofia profile param rfc-7989=true)

FS-11557 [mod_sofia, mod_conference, core] Add support for re-INVITE when setting Session-ID in conference after call has been answered.

FS-11557 [mod_conference] Missed a spot where APP_SESSION_ID needed to be set.

FS-11557: set session id for outbound (initial requests)

FS-11557: [mod_sofia] rename vars and functions "session id" -> "session uuid" to reflect the real meaning for rfc7989.

FS-11557: fix bug - colliding chan var names (session_id)

FS-11557: check nil session uuid

FS-11557 : replace CS_NEW with CS_INIT for when originating calls, generate new uuid.

FS-11557: handle inbound (UAS mode, one leg)

FS-11557: generic param handling and filter via new sip profile option "rfc-7989-filter", eg:
<param name="rfc-7989-filter" value="logme, sec-agree, privacy" />

FS-11557: renamed chan vars (reflect meaning only for RFC7989)

FS-11557: fallback to RFC7329 - "old" Session-ID

FS-11557: distinguish between request and replies when we read the header
(to provide compatibility with old RFC7329 - section 11 of RFC7989)
FS-11557: change more vars/consts names

FS-11557: move compat flag on the channel.

FS-11557: add Session-ID header in REFER

FS-11557: needs extra condition on received initial request

FS-11557: handle NOTIFY

FS-11557: support answer() in dialplan - it was sending back a 200 OK with Session-ID invalid, eg: A=NIL;B=X

FS-11557: add Session-ID for NOTIFY (more cases)

FS-11557: handle reply to SIP INFO (add Session-ID header)

FS-11557: handle case of BYE after REFER, when the channel is destroyed already (save the uuid on sofia_private)

FS-11557: handle more SIP reply cases (eg: 202 Accepted , more negative replies)

FS-11557: handle ACK (UAS role)

FS-11557: added "rfc-7989-force-old" profile param - to enforce old rfc7329 for the UAC role. default off.
enabled with "<param name="rfc-7989-force-old" value="true" />".

FS-11557: fallback to rfc7329 fixes.

FS-11557: set flag CF_RFC7329_COMPAT on partner channel where needed

FS-11557: fix crash (mod_conference)
2019-07-17 19:13:41 +04:00
Luis Azedo 669ea98834 FS-11825 [mod_sofia] use proper flag in blind auth 403 reply 2019-05-02 01:56:12 +01:00
Mike Jerris f4a7274195 Merge pull request #1682 in FS/freeswitch from ~LAZEDO/freeswitch:proxy-token-acl-port to master
* commit '6ceb9885d4bd10763b982255af732e3e6a8936ee':
  FS-9956 [mod_sofia] retain user lookup in blind & acl auth
  FS-11025 [mod_sofia] use ports for acl check
  FS-11025 [core] allow/check ports in network lists
  FS-10746 [mod_sofia] allow authoritative proxy to provide token
2019-03-26 17:21:02 -05:00
lazedo aca0798700 FS-9942 [mod_sofia] allow intercept for other channels 2019-03-26 21:16:11 +00:00
Luis Azedo 254b739b96 FS-11025 [mod_sofia] use ports for acl check
* optionally use port for acl check
* optionally lookup acl token from header
* optionally processed auth only by acl
2019-03-06 11:56:06 +00:00
Luis Azedo 46c1b4217c FS-10746 [mod_sofia] allow authoritative proxy to provide token 2019-03-06 11:55:59 +00:00
lazedo 614bc42e2c [FS-11607] [mod_sofia] add a json api to collect info 2019-01-30 23:44:42 +00:00
Seven Du 9911004b52 FS-11562 #resolve add register ip and port to gateway register state change events 2018-12-10 10:22:20 -05:00
Mike Jerris 2f4c9b363e FS-10067: [mod_sofia] add update-refresher profile param and sip_update_refresher channel var to use update for session timers 2017-03-03 11:01:26 -06:00
Mike Jerris e8f6ed3d93 Merge pull request #1183 in FS/freeswitch from ~SAFAROV/freeswitch2:FS-10009 to master
* commit '6c12f69e0c893646eda0bb010873583040aa136b':
  FS-10009: mod_fail2ban - Added logging of network_ip for abandoned calls
2017-02-14 13:32:05 -06:00
Armen Babikyan 6ed86abf9f FS-9300: Add support for disabling sofia's 100 Trying via configuration, and sending 100 Trying from dialplan 2017-02-13 14:49:05 -08:00
Sergey Safarov 6c12f69e0c FS-10009: mod_fail2ban - Added logging of network_ip for abandoned calls 2017-02-10 13:17:45 -05:00
Brian West 4ead2fcffc FS-9916: [mod_spandsp] OB fax calls go zombie #resolve 2017-01-04 16:14:59 -06:00
Seven Du 50e0f0195e FS-9832 start a single gateway or _all_ gateways 2016-12-08 20:47:22 +08:00
davidcsi 53dbe5d84a FS-9490: [mod_sofia] add filter to SIP messages that match a regexp. 2016-11-11 10:00:28 -06:00
Brian West 832144088d FS-9726 Fix malformed PAI 2016-11-10 13:42:31 -06:00
Chris Rienzo 3ff491274d FS-9698 fire custom sofia::bye_response event when response to BYE is received and fire-bye-response-events profile param is true 2016-11-04 12:00:39 -04:00
Anthony Minessale a49182c0f4 FS-9680 #resolve [Add proxy-message param to sofia] 2016-10-27 17:40:17 -05:00
Anthony Minessale 16fe6e6ca9 FS-9668 #resolve [Add proxy-info feature] 2016-10-25 17:45:22 -05:00
Armen Babikyan 75f4114443 FS-9636 [mod_sofia] Add sofia.conf parameter to make every transfer a nightmare transfer 2016-10-11 18:23:31 -07:00
Brian West 7258a2484b FS-9506 #resolve [Proxy-Hold improvement, Support a=inactive] 2016-09-13 13:17:51 -05:00
Muhammad Zaka 589a0e682e FS-9276 new feature proxy in-dialog calls sip notify and info similar to proxy hold 2016-08-01 11:44:12 +01:00
François 78c2ed0526 FS-9241 Use tls_public_url instead of tls_url in INVITE Contact when NAT is detected 2016-07-05 17:15:04 +02:00
Muhammad Zaka 05cc770818 FS-9192-proxy-hold: proxy hold when proxy media and proxy mode are disabled; its similiar to proxy-refer 2016-06-15 10:10:47 +01:00
Anthony Minessale b9d31dc9b7 FS-9214: fix 3pcc behavior
Fix callflow issues with  3pcc=true and 3pcc=proxy and interactions with sip_wait_for_aleg_ack
removes passthrough of 183 on 3pcc=proxy (that was previously not functioning)
2016-06-07 11:43:08 -05:00
Sergey Khripchenko 2766eaf49e FS-9225: [mod_sofia] Allow to force SIP REGISTER Expires: to be within configured range.
Allow to force SIP REGISTER Expires: to be within MIN and MAX values.
Not just to force it to one specific value using "sip-force-expires".

New profile parameters:
  "sip-force-expires-min"
  "sip-force-expires-max"
2016-06-03 05:30:01 -07:00
Anthony Minessale 0a8e115b98 FS-9060: [mod_sofia] correct issues with hold and broken soa negotiations after performing a bypass media reinvite 2016-04-22 12:26:13 -05:00