Commit Graph
18 Commits
Author SHA1 Message Date
Andrey VolkandChris Rienzo c1bb5c6ab3 [Core, mod_commands] Interface allowlist (#3086)
* [core] Add interface allowlist to gate module app/api registration

Adds an optional, presence-activated allowlist in switch.conf.xml that
controls which modules may register application / api / json_api /
chat-application interfaces. With no <interface-allowlist> configured
nothing is enforced; when at least one <allow> entry is present, only
listed interfaces register at load time and all others are refused (the
module still loads and switch_loadable_module_process still returns
SUCCESS -- the blocked interface is simply never exposed).

Entries match at three levels of precision:
  mod_commands            - whole module
  mod_commands.system     - any interface named "system"
  mod_commands.system.api - a specific type (app|api|json_api|chat_app)

Enforcement lives in switch_loadable_module_process() so every module, at
boot and at runtime `load`, is subject to the same policy. This gives
operators a way to disable the "system"/"spawn" shell-exec API commands
(and equivalents) system-wide.

Also adds the `interface_allowlist_dump [modules] [plain]` API, which
walks the loaded modules and prints their interfaces in the allowlist key
format so the current state can be captured and pruned offline into config.

* [mod_commands] Add tests for the interface allowlist

New test_interface_allowlist boots the core with an active
<interface-allowlist> (conf_interface_allowlist/) that permits only a
couple of mod_commands interfaces, then loads mod_commands and verifies:

- listed commands register and run (status, version) while unlisted and
  shell-exec commands are refused (system, spawn, uptime) -- refusal
  surfaces as switch_api_execute returning FALSE / command-not-found,
  with the command function never invoked;
- a "module.name.type" entry gates by type: the API "status" loads while
  the JSON API of the same name stays blocked;
- interface_allowlist_dump prints the config format in its xml, modules
  and plain variants, and reflects module capabilities (system appears in
  the dump even though it was blocked from registering).

* [config] Fix interior -- in interface-allowlist comment breaking XML parse

The explanatory comment used -- as em-dash pairs. The XML parser treats
-- inside a comment as the comment close, causing an "unclosed <!--"
error that prevents the whole freeswitch.xml from parsing (boot and
reloadxml both fail). Replace the -- pairs with ordinary punctuation.

* update .gitignore

* [core] Warn when interface-allowlist section is present but parses no entries

Co-authored-by: Chris Rienzo <chris@signalwire.com>
2026-08-05 18:44:33 +03:00
Seven Du 7f9dd270b4 [core] add uuidv7 support 2025-07-31 19:38:54 +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
Andrey Volk a1d2f83104 [Core] ODBC: Add odbc-skip-autocommit-flip switch param. 2022-08-25 20:14:47 +03:00
Dragos Oancea c1b66f650f [core] add audio channels limit when opening files, configurable through switch.conf.xml (param "max-audio-channels"), add unit-test. 2020-01-27 23:35:19 +00:00
Andrey Volk 4a2812aaf5 FS-11727: [mod_mariadb] Add MariaDB (MySQL) support 2019-07-23 20:07:16 +04:00
Andrey Volk ccc4ae282a FS-11880: [Core,mod_pgsql] Remove native PostgreSQL support from the core, add mod_pgsql database module. 2019-07-18 00:20:50 +04:00
Razvan Crainea 6d056e1698 FS-10038: [core] tune heartbeat events interval 2017-02-14 13:43:13 +02:00
Corey Burke 0316fdfcf1 FS-8281: Expose SRTP and SRTCP crypto keys as channel vars
New vars are srtp_{local,remote}_crypto_key and srtcp_{local,remote}_crypto_key.
Allows decrypting packet captured media streams for debugging.
2015-10-27 16:33:49 -07:00
Brian 2e4385f640 FS-7433 2015-05-28 12:47:21 -05:00
Ken Rice c16f9ec1d9 FS-7191 #resolve #comment edit pgsql example connection string to remove unneeded option that may cause a failure on some systems. 2015-01-26 15:57:33 -06:00
Nathan Neulinger f175c71188 FS-6805 add support for logging full timestamps with dialplan, defaults to old behavior unless requested 2014-11-11 13:25:47 -06:00
William King 3575a07c40 FS-6271 --resolve Adding support for smoothing the min-cpu-idle by X number of seconds. Adds the cpu-idle-smoothing-depth into the conf/autoload_configs/switch.conf.xml configs with a default value of 30 seconds. 2014-02-26 12:36:50 -08:00
Anthony Minessale 6fef880f12 FS-5675 --resolve 2014-01-24 00:23:58 +05:00
Ken Rice 784380a650 update these examples to use the correct syntax for pgsql 2012-11-02 19:07:26 +00:00
Ken Rice a0a584b0c9 you cant have -- inside an xml comment... we should really be testing changes like this to the config files before we push this as this wouldnt even make it past a clean install start up or reloadxml test 2012-10-08 20:57:20 -04:00
Eliot Gable 5cb354dddc Initial core-pgsql support based on native libpq; FS starts and stops without errors using core-pgsql. 2012-10-08 20:33:57 +00:00
Ken Rice ee71daa1f6 conf: mv conf/* -> conf/vanilla/* 2012-03-24 03:19:32 +00:00