Compare commits

...

589 Commits

Author SHA1 Message Date
Seven Du
7f9dd270b4
[core] add uuidv7 support 2025-07-31 19:38:54 +03:00
Andrey Volk
ac9b8c621b
Merge pull request #2868 from signalwire/gha-copy-job
[GHA] Simplify `if` in UPLOAD_BUILD_ARTIFACTS
2025-07-22 23:42:12 +03:00
s3rj1k
559f502411
[GHA] Simplify if in UPLOAD_BUILD_ARTIFACTS 2025-07-22 22:16:30 +02:00
Andrey Volk
2bbb7356dd
Merge pull request #2867 from signalwire/gha-meta-job
[GHA] Simplify `if` logic for Meta job
2025-07-22 22:37:06 +03:00
s3rj1k
b8fb017b41
[GHA] Simplify if logic for Meta job 2025-07-22 21:14:52 +02:00
Andrey Volk
fcab28abf6
Merge pull request #2845 from signalwire/pcre2
[GHA] Add `trixie` build target
2025-07-22 20:29:30 +03:00
s3rj1k
6a6ade581f [GHA] Add trixie build target
Co-authored-by: Andrey Volk <andywolk@gmail.com>
2025-07-22 20:07:15 +03:00
Andrey Volk
1ed09805a6
Merge pull request #2866 from signalwire/deb13
[Build-System] Add Debian 13 Trixie support
2025-07-22 20:05:01 +03:00
Andrey Volk
dc3325f298 [Build-System] Add Debian 13 Trixie suite 2025-07-22 19:45:43 +03:00
Andrey Volk
7871070638
Merge pull request #2865 from signalwire/sanitize_opus
[mod_opus] Sanitize frame size when parsing Opus packets.
2025-07-22 19:44:34 +03:00
Andrey Volk
6323344ed4 [mod_opus] Sanitize frame size when parsing Opus packets. 2025-07-22 19:11:13 +03:00
Andrey Volk
364092154d
Merge pull request #2858 from signalwire/upgrade_to_pcre2
[Core] Upgrade FreeSWITCH to use PCRE2 library. Be aware of breaking changes.
2025-07-22 18:58:22 +03:00
Andrey Volk
909247067b [Core] Define SWITCH_PCRE2 macro 2025-07-21 23:31:07 +03:00
Andrey Volk
42bfd488f8 [GHA] Fix CI. 2025-07-15 18:26:36 +03:00
Andrey Volk
814a708953 swigall 2025-07-15 18:26:28 +03:00
Andrey Volk
65bc7c14bf [Core] Upgrade FreeSWITCH to use PCRE2 library. Be aware of breaking changes. 2025-07-15 18:26:17 +03:00
Andrey Volk
b2f5b66444
Merge pull request #2857 from signalwire/http_cache
[mod_http_cache] Fix error: curl_easy_setopt expects a long argument [-Werror=attribute-warning]
2025-07-15 14:06:46 +03:00
Andrey Volk
2e825dd3ec [mod_http_cache] Fix error: curl_easy_setopt expects a long argument [-Werror=attribute-warning] 2025-07-15 13:31:28 +03:00
Andrey Volk
5d5104f9fa
Merge pull request #2856 from signalwire/pocketsphinx
[mod_pocketsphinx] Use system libraries when possible
2025-07-15 13:11:56 +03:00
Andrey Volk
d0993872c7 [mod_pocketsphinx] Use system libraries when possible 2025-07-15 12:14:31 +03:00
Andrey Volk
fed90ac814
Merge pull request #2855 from signalwire/verto
[mod_verto] Fix time_t formatting
2025-07-14 23:54:27 +03:00
Andrey Volk
61599d5afd [mod_verto] Fix time_t formatting 2025-07-14 23:09:03 +03:00
Andrey Volk
a019373fd4
Merge pull request #2853 from signalwire/fsget-token
[UTILS] FSGET: Add additional token prefix
2025-07-14 20:29:06 +03:00
s3rj1k
051dea738d [UTILS] FSGET: Add additional token prefix 2025-07-14 19:28:08 +02:00
Andrey Volk
e48b99c884
Merge pull request #2846 from signalwire/rabbit
[mod_amqp] Add support for newer librabbitmq
2025-07-14 16:41:49 +03:00
Andrey Volk
239c28db8f [mod_amqp] Add support for newer librabbitmq 2025-07-14 16:14:55 +03:00
Andrey Volk
ff18e4db5f
Merge pull request #2850 from signalwire/perl
[mod_perl] Fix implicit declaration of function
2025-07-14 14:22:42 +03:00
Andrey Volk
2c5171191a [mod_perl] Fix implicit declaration of function 2025-07-14 13:41:48 +03:00
Andrey Volk
7a650efc3c
Merge pull request #2851 from signalwire/imagick
[mod_imagick] Fix build on newer compiler by adding noreturn attribute.
2025-07-14 13:41:24 +03:00
Andrey Volk
6dddd13101 [mod_imagick] Fix build on newer compiler by adding noreturn attribute. 2025-07-14 02:41:26 +03:00
Andrey Volk
ffec6d9781
Merge pull request #2848 from signalwire/openssl
[Build-System] Windows: Update OpenSSL to v3.4.0, rabbitmq-c to 0.15.0
2025-07-13 17:15:58 +03:00
Andrey Volk
8b57e98f1b [Build-System] Windows: Update OpenSSL to v3.4.0, rabbitmq-c to 0.15.0 2025-07-13 16:16:33 +03:00
Andrey Volk
a9c96d9040
Merge pull request #2847 from signalwire/libks
[Build-System] Windows: Update libks requirement to 2.0.6
2025-07-13 16:14:16 +03:00
Andrey Volk
af2dc182c2 [Build-System] Windows: Update libks requirement to 2.0.6 2025-07-13 15:50:58 +03:00
Andrey Volk
98ce256d9f
Merge pull request #2843 from signalwire/ffmpeg71
[mod_av] Add support for FFmpeg 7.1
2025-07-11 17:12:42 +03:00
Andrey Volk
066b92c589 [mod_av] Add support for FFmpeg 7.1 2025-07-11 16:46:56 +03:00
Andrey Volk
32f6423faa
Merge pull request #2842 from signalwire/ffmpeg_70
[mod_av] Add support for FFmpeg 7.0
2025-07-11 13:12:14 +03:00
Jakub Karolczyk
1fd9ac9dd1 [mod_av] Add support for FFmpeg 7.0 2025-07-11 10:37:09 +01:00
Andrey Volk
52a6f6f7c4
Merge pull request #2841 from signalwire/ffmpeg_61
[mod_av] Add support for FFmpeg 6.1
2025-07-11 12:35:16 +03:00
Jakub Karolczyk
58776f3eed [mod_av] Add support for FFmpeg 6.1 2025-07-11 10:08:01 +01:00
Andrey Volk
0a594435b8
Merge pull request #2840 from signalwire/ffmpeg_60
[mod_av] Add support for FFmpeg 6.0
2025-07-11 12:05:25 +03:00
Jakub Karolczyk
9dccd0b6e6 [mod_av] Add support for FFmpeg 6.0 2025-07-11 09:38:05 +01:00
Andrey Volk
f76b504d6d
Merge pull request #2839 from signalwire/fctstr_safe_cpy
[Unit-tests] Fix test framework error on newer compiler: 'strncpy' output truncated before terminating nul copying as many bytes from a string as its length [-Werror=stringop-truncation]
2025-07-10 21:39:36 +03:00
Andrey Volk
68e587d7cf [Unit-tests] Fix test framework error on newer compiler: 'strncpy' output truncated before terminating nul copying as many bytes from a string as its length [-Werror=stringop-truncation] 2025-07-10 19:15:31 +03:00
Andrey Volk
4d9c004eca
Merge pull request #2836 from signalwire/xml_rpc_inc
[mod_xml_rpc] Fix incompatible pointer type
2025-07-10 16:10:59 +03:00
Andrey Volk
907612ee1c [mod_xml_rpc] Fix incompatible pointer type 2025-07-09 22:43:21 +03:00
Andrey Volk
8d52772732
Merge pull request #2834 from signalwire/swig41
[Build-system] Use swig 4.1
2025-07-09 18:47:21 +03:00
Andrey Volk
ccc10280ec swigall 2025-07-09 12:03:12 +00:00
Andrey Volk
b8a16cbc7f [Build-system] Use swig 4.1 2025-07-09 15:00:39 +03:00
Andrey Volk
9d69bd607b
[UTILS] FSGET: Transition to using deb822 format for Debian sources replacing the old freeswitch.list (#2829) 2025-07-01 22:46:08 +03:00
Andrey Volk
7f3c7bd55a [UTILS] FSGET: Transition to using deb822 format for Debian sources replacing the old freeswitch.list 2025-06-27 11:07:09 +00:00
MarioG-X
72827d0944
[Build-System] Update configure.ac for macOS updates (#2818)
This is a request to change configure.ac  target libraries for Apple Silicon computers and a general cleanup/update for macOS.

Different target on Apple Silicon
Apple has stated that other programs should be installed into /opt for Apple Silicon computers instead of /usr/local. Homebrew installs everything in /opt. Multiple changes were made to handle this.

Added code to auto change the default from /usr/local to /opt for Apple Silicon. All other systems default to /usr/local as before.

Where target libraries were different, code was added to only add the correct libraries to the appropriate architecture. This eliminates a lot of warning message for missing libraries.

Compiler flags were updated to conform to current clang. Obsolete code that can no longer work (for old apple ancient releases or compilers) was removed or replaced.
2025-06-23 21:18:31 +03:00
s3rj1k
bd0d0db878
[GHA] Add pkgconf to macos.yml
Tested on empty Mac Intel and Apple Silicon. Both failed due to missing pkgconf. It is required and not auto downloaded as prerequisite to other packages.

Note the name is now pkgconf on homebrew. It is the newer version of pkg-config and pkgconfig which are now aliases that point to pkgconf on homebrew.

Co-authored-by: MarioG-X <20360699+MarioG-X@users.noreply.github.com>
2025-06-16 22:39:57 +03:00
Patty Watson
92ca4293db
[mod_amr, mod_amrwb] Increase AMR-NB and AMR-WB max decode buffer size by one byte
Co-authored-by: Patty Watson <patty.watson@ryzyliant.com>
2025-06-12 00:13:52 +03:00
Andrey Volk
b97bc60c20
Merge pull request #2817 from signalwire/windows-2022
[GHA] Update deprecated windows-2019 image to windows-2022
2025-06-07 18:59:58 +03:00
Andrey Volk
26a0d6e738 [GHA] Update deprecated windows-2019 image to windows-2022 2025-06-07 17:05:15 +03:00
Andrey Volk
4dc4ffc1fd
Merge pull request #2816 from signalwire/gha_macos
[GHA] Add MacOS build workflow
2025-06-05 19:51:05 +03:00
s3rj1k
a526713333
[GHA] Add MacOS build workflow 2025-06-05 18:10:07 +02:00
brianomchugh
6a25584da2
[mod_curl] fixes 'Unparsable header' error message on HTTP/2 200 reply 2025-05-21 12:35:22 +03:00
Andrey Volk
6a13dee6f8
Merge pull request #2800 from signalwire/jpeg
[Build-System] Windows: Update link to jpegsrc
2025-04-15 19:03:59 +03:00
Andrey Volk
7300514960 [Build-System] Windows: Update link to jpegsrc 2025-04-15 18:21:04 +03:00
Andrey Volk
1d29b134be
Merge pull request #2790 from signalwire/dockerfile
[BUILD] Add Dockerfiles and related small fixes.
2025-03-31 21:26:18 +03:00
s3rj1k
04dc456545
[BUILD] Add Dockerfiles and related small fixes. 2025-03-31 19:58:01 +02:00
Andrey Volk
a189aaa80c
Merge pull request #2792 from signalwire/python
[mod_python] Remove from tree
2025-03-31 20:06:07 +03:00
Andrey Volk
3a53566eab [mod_python] Remove from tree 2025-03-31 18:49:17 +03:00
Alexander Udovichenko
a57c895115
[mod_httpapi] Fix possible segfault when HEAD request fails 2025-03-20 00:01:35 +03:00
s3rj1k
e622a02b33
[DOCS] Add guides for building FreeSWITCH build-dependencies
* [DOCS] Add guides for building FreeSWITCH build-dependencies

* Add `build-dependencies.sh` script
2025-03-17 17:54:01 +03:00
Andrey Volk
675bd8f27d
Merge pull request #2781 from signalwire/windowssdk
[FFmpeg] Fix build on newer Windows SDKs.
2025-03-10 22:45:30 +03:00
Andrey Volk
869a1443fa [FFmpeg] Fix build on newer Windows SDKs. 2025-03-10 21:07:58 +03:00
Andrey Volk
f11e95e3fb
Merge pull request #2768 from signalwire/libexpat
[xmlrpc-c] Expat/xmltok: Add missing validation of encoding
2025-02-25 23:48:04 +03:00
Andrey Volk
09026b496f [xmlrpc-c] Expat/xmltok: Add missing validation of encoding 2025-02-25 15:05:28 +03:00
Andrey Volk
cde827dbf2
Merge pull request #2764 from signalwire/coverity_conf
[mod_conference] Coverity 1320840 Logically dead code. Execution cannot reach this statement: d = ";"
2025-02-20 03:33:01 +03:00
Andrey Volk
d269193c35 [mod_conference] Coverity 1320840 Logically dead code. Execution cannot reach this statement: d = ";" 2025-02-17 23:52:28 +03:00
Patrice Fournier
76458fafc5
[mod_spandsp] Fix compilation against >=2023/06/02 spandsp
* [mod_spandsp] Fix compilation against >=2023/06/02 spandsp

spandsp, beginning with commit d9681c37 and coinciding with the
SPANDSP_RELEASE_DATE of 20230620, introduced the following changes to
its V.18 protocol API, which FreeSWITCH is not able to compile against:
- Certain V.18 constants were renamed.
- The v18_init function now requires passing a third function, handling
the V.18 modem's status changes.

This patch allows FreeSWITCH to build against current versions of
spandsp by:
- Using the new V.18 constant names.
- Implementing a simple status reporter callback function and passing it
as the third function to v18_init.

Additionally, it retains backward compatibility with prior versions of
spandp through #if conditions checking the value of
SPANDSP_RELEASE_DATE.

Signed-off-by: Patrice Fournier <patrice.fournier@t38fax.com>

* [mod_spandsp] Pass session to handle_v18_status.

---------

Signed-off-by: Patrice Fournier <patrice.fournier@t38fax.com>
Co-authored-by: Morgan Scarafiotti <morgan.scarafiotti@t38fax.com>
Co-authored-by: Andrey Volk <andywolk@gmail.com>
2025-02-04 23:54:26 +03:00
Andrey Volk
6a9f151d8d
Merge pull request #2754 from signalwire/xml
[xmlrpc-c] Coverity 1024180, 1024205, 1024301, 1024847, 1024848, 1024377, 1024378, 1024379, 1024380, 1024381, 1024584, 1024495, 1214208 fixes.
2025-02-04 13:33:12 +03:00
Andrey Volk
eba48efef5 [xmlrpc-c] Coverity 1024180, 1024205, 1024301, 1024847, 1024848, 1024377, 1024378, 1024379, 1024380, 1024381, 1024584, 1024495, 1214208 fixes. 2025-02-04 03:46:55 +03:00
Andrey Volk
da7300bee0
Merge pull request #2756 from signalwire/eslcoverity
[fs_cli, libesl] Coverity fixes.
2025-02-04 03:46:11 +03:00
Andrey Volk
c3dff0ff95 [libesl] Coverity 1512636 Unused value 2025-02-04 02:18:47 +03:00
Andrey Volk
17cd751827 [libesl] Coverity 1589045 Check of thread-shared field evades lock acquisition 2025-02-04 02:18:47 +03:00
Andrey Volk
98a3749c10 [libesl] Coverity 1546296 Check of thread-shared field evades lock acquisition 2025-02-04 02:18:47 +03:00
Andrey Volk
8cfde8ad3c [libesl] Coverity 1294491 Identical code for different branches 2025-02-04 02:18:47 +03:00
Andrey Volk
f5509a59e8 [libesl] Coverity 1024721 Unchecked return value from library 2025-02-04 02:18:47 +03:00
Andrey Volk
e48b83fbbf [libesl] Coverity 1024719,1024720 Unchecked return value from library 2025-02-04 02:18:47 +03:00
Andrey Volk
62ef2d4822 [libesl] Coverity 1024459 Missing unlock 2025-02-04 02:18:47 +03:00
Andrey Volk
47d87e37b6 [libesl] Coverity 1024285 Dereference before null check 2025-02-04 02:18:47 +03:00
Andrey Volk
5854585d2d [libesl] Coverity 1395572 Logically dead code 2025-02-04 02:18:47 +03:00
Andrey Volk
86c0996fa8 [fs_cli] Coverity 1468564 Buffer not null terminated 2025-02-04 02:18:47 +03:00
Andrey Volk
8831d8bf4e
Merge pull request #2759 from signalwire/wincore
[Build-System] Remove Microsoft.Build.Utilities.Core reference from the downloadpackage task to fix building on the latest versions of Visual Studio on Windows.
2025-02-02 16:05:48 +03:00
Andrey Volk
94ef54bf41 [Build-System] Remove Microsoft.Build.Utilities.Core reference from the downloadpackage task to fix building on the latest versions of Visual Studio on Windows. 2025-02-02 14:47:15 +03:00
Andrey Volk
5e82e4f305
Merge pull request #2755 from signalwire/eslleak
[esl] 1227669 Resource leak
2025-01-31 18:36:53 +03:00
Andrey Volk
d895fdff60 [esl] 1227669 Resource leak 2025-01-31 18:09:18 +03:00
Andrey Volk
ca0f58f565
Merge pull request #2753 from signalwire/xmlrpc
[xmlrpc-c] Coverity 1024199, 1024200, 1024201, 1024202, 1024203, 1024204, 1024196, 1024197, 1024198 fixes. Uninitialized pointer read.
2025-01-30 17:40:08 +03:00
Andrey Volk
ebc430928b [xmlrpc-c] Coverity 1024199, 1024200, 1024201, 1024202, 1024203, 1024204, 1024196, 1024197, 1024198 fixes. Uninitialized pointer read. 2025-01-30 16:47:34 +03:00
Andrey Volk
73eb85674f
Merge pull request #2752 from signalwire/xml
[xmlrpc-c] Coverity 1500253, 1024634, 1024635, 1227693 fixes.
2025-01-30 16:46:58 +03:00
Andrey Volk
09debb3f26 [xmlrpc-c] Coverity 1500253, 1024634, 1024635, 1227693 fixes. 2025-01-29 23:29:10 +03:00
Andrey Volk
75566bc270
Merge pull request #2749 from signalwire/scripts
[Scripts] Introduce FSDEB - a simple way to build FreeSWITCH packages for Debian.
2025-01-27 14:05:48 +03:00
s3rj1k
dd52b54dd6 [Scripts] Introduce FSDEB - a simple way to build FreeSWITCH packages for Debian. 2025-01-27 13:29:07 +03:00
Andrey Volk
3f1e4bf90a
Merge pull request #2748 from signalwire/scripts
[UTILS] Refactor `fsget.sh` script.
2025-01-25 16:17:25 +03:00
s3rj1k
433bb901d9
[UTILS] Refactor fsget.sh script. 2025-01-25 13:21:29 +01:00
Andrey Volk
22954336ed
Merge pull request #2739 from signalwire/arm-runner
[GHA] Use `ubuntu-24.04-arm` runner
2025-01-24 17:24:00 +03:00
s3rj1k
edc534f1b7 [GHA] Use ubuntu-24.04-arm runner 2025-01-24 16:40:51 +03:00
Andrey Volk
102e4c07ea
Merge pull request #2395 from seven1240/fix-mac-build
[mod_shout] fix build with new clang on macOS
2025-01-23 18:57:44 +03:00
Seven Du
ad2f7424fa
[mod_shout] fix build with new clang on macOS
fix error: ignoring return value of function declared with warn_unused_result attribute [-Werror,-Wunused-result]
Apple clang version 15.0.0 (clang-1500.1.0.2.5)
2025-01-21 08:51:24 +08:00
junction1153b
3b58ebc5f3
[mod_sofia] Update Polycom UA to recognize new Poly phones
We observed that the new Poly phones (formerly known as Polycom) were not getting sent a SIP UPDATE in certain circumstances (example: retrieving a parked call, and therefore, Caller ID would not show the parked caller). I renamed Polycom to Poly which will catch all Poly AND Polycom UA's. I also added Acrobits, and Ringotel to extend such functionality to those UA's. There were also other minor compatibility issues with the new Poly phones which have been resolved with tweaking the UA recognition on the code.

Co-authored-by: Joseph <junction1153@gmail.com>
2025-01-21 00:57:25 +03:00
Aron Podrigal
5cb74797fe
[mod_pgsql] err is now set correctly (dbh:last_error())
New function, `void pgsql_handle_set_error_if_not_set(switch_pgsql_handle_t *handle, char **err)` has been added to mod_pgsql module. This function is now called at several points where an error occurred but *err was not yet set.
2025-01-17 18:51:45 +03:00
Aron Podrigal
96de8fd377
[mod_timerfd] Fixed - continue timer loop after receiving a SIGSTOP
When taking a snapshot of a machine which pauses the process, mod_timerfd exits and FreeSWITCH, causing all channels to wait indefinitely.

Check `errno == EINTR` and continue the timer loop.
2025-01-16 19:13:31 +03:00
Andrey Volk
55d8f3ff97
Merge pull request #2738 from signalwire/clearmode
[mod_clearmode] Remove from tree
2025-01-16 18:25:04 +03:00
Andrey Volk
6bad50d875 [mod_clearmode] Remove from tree 2025-01-16 13:53:57 +03:00
Andrey Volk
2970101bd8
Merge pull request #2737 from signalwire/oreka
[mod_oreka] Remove from tree
2025-01-16 13:43:50 +03:00
Andrey Volk
b3cdc8a783 [mod_oreka] Remove from tree 2025-01-16 02:57:37 +03:00
Andrey Volk
f1524d397c
Merge pull request #2736 from signalwire/yaml
[mod_yaml] Remove from tree
2025-01-16 02:44:50 +03:00
Andrey Volk
74c6433955 [mod_yaml] Remove from tree 2025-01-16 02:05:17 +03:00
Andrey Volk
4f17bc760c
Merge pull request #2735 from signalwire/theora
[mod_theora] Remove from tree
2025-01-16 02:01:49 +03:00
Andrey Volk
e600ab66a7 [mod_theora] Remove from tree 2025-01-16 01:27:53 +03:00
Andrey Volk
ca5b32701c
Merge pull request #2729 from ar45/mod_curl_fix_argv
[mod_curl] Fix off-by-one error in argument limit checks.
2025-01-15 23:43:23 +03:00
Aron Podrigal
083e6ae80f [mod_curl] Fix off-by-one error in argument limit checks.
refs: #2727
2025-01-15 14:03:07 -06:00
Andrey Volk
53abb53f2b
Merge pull request #2375 from ar45/mod_lua_query_rows
[mod_lua] Add Dbh:query_rows
2025-01-15 18:51:49 +03:00
Andrey Volk
7d2befa5fa [mod_lua] reswig 2025-01-15 16:30:59 +03:00
Andrey Volk
d6a7bb9ee5 [mod_lua] Fix hack.diff 2025-01-15 16:30:59 +03:00
Aron Podrigal
4e2e8151b0 [mod_lua] Add Dbh:query_rows
The added method, query_rows, allows the retrieval of rows from a database without the need for a callback function, it fetches the rows and returns 3 arguments as show below.

```
lua
local success, rows, err = dbh:query_rows(sql)
```

This function performs better with large number of rows. Test results below 50k rows returned.

dbh:query(sql, callback) - 0.335949 seconds
dbh:query_rows(sql) - 0.253178 seconds
2025-01-15 16:30:59 +03:00
Andrey Volk
ad5fe8bcff
Merge pull request #2727 from ar45/mod_curl_allow_more_argv
[mod_curl] Increase argument limit and enforce max args constraint
2025-01-15 03:17:25 +03:00
Aron Podrigal
e359409cae [mod_curl] Increase argument limit and enforce max args constraint
Introduced a configurable limit on the number of arguments for mod_curl functions with a default of 30. Adjusted the code to handle scenarios exceeding this limit by logging an error and returning failure. This improves flexibility and prevents potential overflow issues.
2025-01-15 02:41:23 +03:00
Andrey Volk
e9be0fab8a
Merge pull request #2728 from signalwire/zmq
[mod_event_zmq] Remove from tree
2025-01-15 02:18:29 +03:00
Andrey Volk
54fb449963 [mod_event_zmq] Remove from tree 2025-01-15 01:49:24 +03:00
Aron Podrigal
7ed261b27b
[mod_pgsql] Add support for PGRES_TUPLES_CHUNK in PostgreSQL 17+
Extend the database module to handle the PGRES_TUPLES_CHUNK case introduced in PostgreSQL 17. This ensures compatibility with the latest PostgreSQL version and prevents potential issues when processing query results.
2025-01-15 01:03:49 +03:00
Seven Du
b8a9c8be9b
[Build-System] Fix build for m1 and m2 chips on macOS 2025-01-14 14:06:11 +03:00
Andrey Volk
ca9430eaeb
Merge pull request #2725 from signalwire/h26x
[mod_h26x] Remove from tree
2025-01-14 00:02:58 +03:00
Andrey Volk
d4fd3cc054 [mod_h26x] Remove from tree 2025-01-13 23:24:50 +03:00
Andrey Volk
0bcc789a47
Merge pull request #2724 from signalwire/khomp
[mod_khomp] Remove from tree
2025-01-13 22:04:08 +03:00
Andrey Volk
2b52002e75 [mod_khomp] Remove from tree 2025-01-13 20:48:48 +03:00
Andrey Volk
17e36a9beb
Merge pull request #2723 from signalwire/rad
[mod_rad_auth] Remove from tree
2025-01-13 17:43:43 +03:00
Andrey Volk
443a1ca790 [mod_rad_auth] Remove from tree 2025-01-13 17:06:38 +03:00
Andrey Volk
c9a7269366
Merge pull request #2718 from signalwire/xml_radius
[mod_xml_radius] Remove from tree
2025-01-13 16:56:16 +03:00
Andrey Volk
285df0b026 [mod_xml_radius] Remove from tree 2025-01-13 13:14:44 +03:00
Andrey Volk
e343b47c49
Merge pull request #2717 from signalwire/radius
[mod_radius_cdr] Remove from tree
2025-01-13 02:24:29 +03:00
Andrey Volk
94df749a61 [mod_radius_cdr] Remove from tree 2025-01-13 00:46:00 +03:00
Andrey Volk
7d4609aabf
Merge pull request #2716 from signalwire/raven
[mod_raven] Remove from tree
2025-01-12 21:12:56 +03:00
Andrey Volk
e9023d124c [mod_raven] Remove from tree 2025-01-11 14:42:26 +03:00
Andrey Volk
559a97ecf5
Merge pull request #2715 from signalwire/rss
[mod_rss] Remove from tree
2025-01-11 04:33:17 +03:00
Andrey Volk
4d7a7f9af6 [mod_rss] Remove from tree 2025-01-11 02:36:12 +03:00
Andrey Volk
b752476797
Merge pull request #2712 from signalwire/snom
[mod_snom] Remove from tree.
2025-01-10 22:48:04 +03:00
Andrey Volk
4c447a98ed [mod_snom] Remove from tree. 2025-01-10 21:31:29 +03:00
Andrey Volk
33f7be8986
Merge pull request #2711 from signalwire/sonar
[mod_sonar] Remove from tree
2025-01-10 17:55:35 +03:00
Andrey Volk
f2481690d5 [mod_sonar] Remove from tree 2025-01-10 16:04:04 +03:00
Andrey Volk
6a5ac7e0a9
Merge pull request #2707 from signalwire/soundtouch
[mod_soundtouch] Remove from tree
2025-01-10 03:34:31 +03:00
Andrey Volk
d912e9fb01 [mod_soundtouch] Remove from tree 2025-01-10 02:41:04 +03:00
Andrey Volk
1d8ff1421e
Merge pull request #2705 from signalwire/unicall
[mod_unicall] Remove from tree
2025-01-09 19:59:10 +03:00
Andrey Volk
b033d27a38 [mod_unicall] Remove from tree 2025-01-09 19:34:21 +03:00
Andrey Volk
cdd676356e
Merge pull request #2692 from signalwire/stress
[mod_stress] Remove from tree.
2025-01-09 00:53:42 +03:00
Andrey Volk
866c235aa3 [mod_stress] Remove from tree. 2025-01-09 00:21:21 +03:00
Andrey Volk
0acb3f2ccb
Merge pull request #2704 from signalwire/abstraction
[mod_abstraction] Remove from tree
2025-01-09 00:20:40 +03:00
Andrey Volk
c1f4586e2d [mod_abstraction] Remove from tree 2025-01-08 23:47:31 +03:00
Andrey Volk
122c589815
Merge pull request #2702 from signalwire/isac
[mod_isac] Remove from tree
2025-01-08 22:07:40 +03:00
Andrey Volk
6286c51ff6 [mod_isac] Remove from tree 2025-01-08 20:46:37 +03:00
Andrey Volk
c1eb76c828
Merge pull request #2700 from signalwire/mp4
[mod_mp4, mod_mp4v, mod_mp4v2] Remove from tree
2025-01-07 23:53:17 +03:00
Andrey Volk
4235d86aee [mod_mp4, mod_mp4v, mod_mp4v2] Remove from tree 2025-01-07 20:18:07 +03:00
Andrey Volk
4f1d9cd7db
Merge pull request #2699 from signalwire/portaudio
[mod_portaudio, mod_portaudio_stream] Remove from tree
2025-01-07 19:51:23 +03:00
Andrey Volk
49e63f6fff [mod_portaudio, mod_portaudio_stream] Remove from tree 2025-01-07 19:18:03 +03:00
Andrey Volk
69fb55c6b3
Merge pull request #2698 from signalwire/dahdi
[mod_dahdi_codec] Remove from tree
2025-01-07 18:36:44 +03:00
Andrey Volk
7d88add653 [mod_dahdi_codec] Remove from tree 2025-01-07 12:21:53 +03:00
Andrey Volk
8a9977fa05
Merge pull request #2696 from signalwire/flowroute
[mod_sms_flowroute] Remove from tree
2025-01-07 00:27:36 +03:00
Andrey Volk
e5ae035d85 [mod_sms_flowroute] Remove from tree 2025-01-06 23:00:07 +03:00
Andrey Volk
eaf02c9036
Merge pull request #2694 from signalwire/cepstral
[mod_cepstral] Remove from tree
2025-01-06 18:24:40 +03:00
Andrey Volk
b7ac2be11b [mod_cepstral] Remove from tree 2025-01-06 17:41:58 +03:00
Andrey Volk
87bfafbb76
Merge pull request #2693 from signalwire/ladspa
[mod_ladspa] Remove from tree
2025-01-06 17:14:30 +03:00
Andrey Volk
4475a54127 [mod_ladspa] Remove from tree 2025-01-06 16:36:57 +03:00
Andrey Volk
2e0631208e
Merge pull request #2687 from signalwire/sangoma
[mod_sangoma_codec] Remove from tree
2025-01-03 02:26:20 +03:00
Andrey Volk
1944260c7b [mod_sangoma_codec] Remove from tree 2025-01-03 01:57:32 +03:00
Andrey Volk
4470f8d801
Merge pull request #2686 from signalwire/gsmopen
[mod_gsmopen] Remove from tree.
2025-01-02 21:01:29 +03:00
Andrey Volk
9ab4d17cce [mod_gsmopen] Remove from tree. 2025-01-02 20:14:38 +03:00
Andrey Volk
81796c02df
Merge pull request #2685 from signalwire/skypopen
[mod_skypopen] Remove from tree.
2025-01-02 20:06:02 +03:00
Andrey Volk
8c5efce33e [mod_skypopen] Remove from tree. 2025-01-02 19:37:56 +03:00
Andrey Volk
c409fe6b45
Merge pull request #2684 from signalwire/ssml
[mod_rayo, mod_ssml, iksemel] Remove from tree
2024-12-31 21:29:43 +03:00
Andrey Volk
0e412ac0ee [mod_rayo, mod_ssml, iksemel] Remove from tree 2024-12-31 13:43:48 +03:00
Andrey Volk
3687972db7
Merge pull request #2682 from signalwire/ssml
[Unit-tests] Move test_tts_format out of mod_ssml. Add mod_test and test_tts_format to the Windows build.
2024-12-31 02:35:29 +03:00
Andrey Volk
10d31ee12a [Unit-tests] Move test_tts_format out of mod_ssml. Add mod_test and test_tts_format to the Windows build. 2024-12-31 01:45:47 +03:00
Andrey Volk
efb6afda07
Merge pull request #2680 from signalwire/ssml
[mod_dptools] Move tts format from mod_ssml.
2024-12-31 01:38:50 +03:00
Andrey Volk
4b4dee8fd2 [mod_dptools] Move tts format from mod_ssml. 2024-12-31 01:03:46 +03:00
Andrey Volk
0422b86f89
Merge pull request #2679 from signalwire/ssml_multi
[mod_ssml] Push done when its flag multi
2024-12-31 01:00:29 +03:00
Anthony Minessale II
2a2554db99 [mod_ssml] Push done when its flag multi 2024-12-31 00:41:34 +03:00
Andrey Volk
a6b114a630
Merge pull request #2678 from signalwire/SWITCH_SPEECH_FLAG_MULTI
[Core] Add new SWITCH_SPEECH_FLAG_MULTI flag and check it in switch_ivr_speak_text_handle().
2024-12-31 00:38:11 +03:00
Anthony Minessale
a71a352872 [Core] Add new SWITCH_SPEECH_FLAG_MULTI flag and check it in switch_ivr_speak_text_handle(). 2024-12-30 23:59:25 +03:00
Patrice Fournier
ec25d5df77
[mod_sofia] Added missing %s in one form of contact string
Added missing %s in contact header format string when formatting with
rfc_5626, extension number and IPv6.
2024-12-19 00:23:50 +03:00
Andrey Volk
cb8e6de117
Merge pull request #2667 from signalwire/fsget
[Scripts] Introduce FSGET - a simple way to install FreeSWITCH.
2024-12-18 17:42:01 +03:00
Patrice Fournier
89b9e4f4ff
[Scripts] Only show email changed section if it was changed
Show the email section when the email has changed instead of when the
name has changed in the git setup script.
2024-12-17 20:53:51 +03:00
Andrey Volk
21af2d966a [Scripts] Introduce FSGET - a simple way to install FreeSWITCH. 2024-12-15 14:15:02 +03:00
Andrey Volk
05310dae07
Merge pull request #2665 from signalwire/gha_release
[GHA] Default to `release=unstable` in build workflow.
2024-12-12 17:44:02 +03:00
s3rj1k
26acc9601c
[GHA] Default to release=unstable in build workflow. 2024-12-12 15:12:38 +01:00
Andrey Volk
ce1826e538
Merge pull request #2642 from Ansuel/free-pcre
[mod_verto] Fix memory leak by correctly freeing regex
2024-12-11 20:53:31 +03:00
Christian Marangi
12b47fe7f9 [mod_verto] Fix memory leak by correctly freeing regex
For mod_verto regex was never freed and was actually leaking memory.
Correctly free the compiled regex to fix the memory leak.

Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2024-12-11 16:02:45 +03:00
Andrey Volk
e490fe6d7d
Merge pull request #2524 from signalwire/pat
[GHA] Use temporary token to build artifacts, extend manual run options.
2024-12-11 16:02:17 +03:00
s3rj1k
1f4d1e323e
[GHA] Use temporary token to build artifacts, extend manual run options. 2024-12-11 12:42:00 +01:00
Andrey Volk
c429987181
Merge pull request #2664 from signalwire/coveritydocker
[Build-System] Add a Dockerfile for Coverity scan.
2024-12-10 23:33:45 +03:00
Andrey Volk
da081d4b9f [Build-System] Add a Dockerfile for Coverity scan. 2024-12-10 22:14:42 +03:00
Andrey Volk
12997dde6a
Merge pull request #2661 from signalwire/workflow
[GHA] Use repository default value of artifacts `retention-days`
2024-12-04 12:38:17 +03:00
s3rj1k
23ab8bc0f4
[GHA] Use repository default value of artifacts retention-days 2024-12-04 01:44:21 +01:00
Andrey Volk
845d3164f5
Merge pull request #2657 from signalwire/workflow
[GHA] Refactor workflows
2024-12-04 00:05:41 +03:00
s3rj1k
556702ce9f
[GHA] Refactor workflows 2024-12-03 21:30:46 +01:00
Andrey Volk
545806c146
Merge pull request #2660 from signalwire/sdk10
[Build-System] Upgrade legacy Windows SDK to 10.0 in Visual Studio projects.
2024-12-03 23:29:21 +03:00
Andrey Volk
8e694fe10b [Build-System] Upgrade legacy Windows SDK to 10.0 in Visual Studio projects. 2024-12-03 22:59:02 +03:00
Andrey Volk
4658192547
[Core] switch_channel_clear_state_handler(), switch_channel_get_state_handler(): Coverity 1546120 Data race condition
* [Core] switch_channel_clear_state_handler: Coverity 1546120 Data race condition

* [Core] Fix race in switch_channel_get_state_handler()
2024-11-13 22:56:15 +03:00
Andrey Volk
ee7c7dea60
Merge pull request #2641 from signalwire/swig
swigall
2024-11-05 22:12:29 +03:00
Andrey Volk
1a7090fc66 swigall 2024-11-05 17:40:30 +00:00
Andrey Volk
97cb6722ae
Merge pull request #2622 from signalwire/unittests
[GHA] Use autogenerated matrix for grouping unit-tests.
2024-10-15 17:06:59 +03:00
s3rj1k
b662cc73fb
[GHA] Use autogenerated matrix for grouping unit-tests. 2024-10-12 20:41:29 +02:00
Andrey Volk
9599739b7e
Merge pull request #2538 from signalwire/CI
[GHA] Add tests.
2024-10-11 23:02:58 +03:00
s3rj1k
07283ac104
[GHA] Add tests. 2024-10-11 20:16:39 +02:00
Jakub Karolczyk
b4ebd0936c
[core, mod_sofia] Fix codec set deadlock 2024-10-11 16:16:02 +03:00
Anthony Minessale
a891067b89
Merge pull request #2618 from seven1240/b64-decode
[core] fix base64 decoded size when encoded string contains padding =
2024-10-09 10:11:38 -05:00
Seven Du
ef3bd2d8c3
[core] fix base64 decoded size when encoded string contains padding = 2024-10-09 22:53:00 +08:00
Andrey Volk
c402ce1dee
Merge pull request #2602 from signalwire/gha-layout
[GHA] Migrate to new project layout.
2024-09-23 13:09:31 +03:00
s3rj1k
628938fcc8
[GHA] Migrate to new project layout. 2024-09-21 13:21:43 +02:00
Ryan Williams
94b8ebaea7
Delete .drone.yml (#2580) 2024-08-22 14:00:25 -07:00
Andrey Volk
0e02cd465f
Merge pull request #2563 from signalwire/bump
version bump
2024-08-03 18:43:34 +03:00
Andrey Volk
ed4a242931 version bump 2024-08-03 18:24:55 +03:00
Andrey Volk
1b58716c95
Merge pull request #2561 from signalwire/swigall
swigall
2024-08-02 23:13:20 +03:00
Andrey Volk
6e8f30ea8b swigall 2024-08-02 19:39:59 +00:00
Andrey Volk
344150dd3d
Merge pull request #2559 from signalwire/buster
[GHA] Remove Debian `Buster`.
2024-08-02 21:06:52 +03:00
s3rj1k
b39f14679f
[GHA] Remove Debian Buster. 2024-08-02 19:37:14 +02:00
Andrey Volk
50720f6d62
Merge pull request #2556 from signalwire/maria
[mod_mariadb] mariadb_send_query: Coverity 1518917 Calling risky function
2024-07-31 19:52:13 +03:00
Andrey Volk
251da2f905 [mod_mariadb] mariadb_send_query: Coverity 1518917 Calling risky function 2024-07-31 16:04:38 +03:00
Andrey Volk
8e3d398ed7
Merge pull request #2555 from signalwire/stun
[Core] switch_stun_random_string: Coverity 1227623 Calling risky function
2024-07-30 20:15:25 +03:00
Andrey Volk
681dfee13d
Merge pull request #2554 from signalwire/allocator
[Core] switch_core_port_allocator_request_port: Coverity 1227622 Calling risky function
2024-07-30 20:03:54 +03:00
Andrey Volk
c736458a21 [Core] switch_stun_random_string: Coverity 1227623 Calling risky function 2024-07-30 19:32:28 +03:00
Andrey Volk
9d379b7071 [Core] switch_core_port_allocator_request_port: Coverity 1227622 Calling risky function 2024-07-30 19:24:13 +03:00
Andrey Volk
060621e09d
Merge pull request #2553 from signalwire/maria
[mod_mariadb] Coverity 1546237 COPY_INSTEAD_OF_MOVE
2024-07-30 19:20:23 +03:00
Andrey Volk
844cce8595 [mod_mariadb] Coverity 1546237 COPY_INSTEAD_OF_MOVE 2024-07-30 19:16:51 +03:00
Andrey Volk
c1354fd73b
Merge pull request #2552 from signalwire/email
[Core] switch_simple_email: Coverity 1227612 Calling risky function
2024-07-30 19:10:46 +03:00
Andrey Volk
c303c98539
Merge pull request #2551 from signalwire/v8_move
[mod_v8] SayPhrase: Coverity 1546153 COPY_INSTEAD_OF_MOVE
2024-07-30 19:10:16 +03:00
Andrey Volk
0974bd112c [Core] switch_simple_email: Coverity 1227612 Calling risky function 2024-07-30 18:32:01 +03:00
Andrey Volk
3c47eadd28 [mod_v8] SayPhrase: Coverity 1546153 COPY_INSTEAD_OF_MOVE 2024-07-30 18:24:16 +03:00
Andrey Volk
85397f1ba5
Merge pull request #2550 from signalwire/maria_move
[mod_mariadb] mariadb_dsn: Coverity 1546237 COPY_INSTEAD_OF_MOVE
2024-07-30 18:06:07 +03:00
Andrey Volk
d569ca0273
Merge pull request #2549 from signalwire/stun_overrun
[Core] switch_stun.c: Coverity 1468480: Out-of-bounds access (OVERRUN)
2024-07-30 18:05:26 +03:00
Andrey Volk
6fbb49d66c [mod_mariadb] mariadb_dsn: Coverity 1546237 COPY_INSTEAD_OF_MOVE 2024-07-30 17:36:14 +03:00
Andrey Volk
9f7c64b6fa [Core] switch_stun.c: Coverity 1468480: Out-of-bounds access (OVERRUN) 2024-07-30 15:23:49 +03:00
Andrey Volk
05e58fa909
Merge pull request #2547 from signalwire/overrun
[Core] switch_rtp.c: Coverity 1500271, 1500287: Out-of-bounds access (OVERRUN)
2024-07-30 15:15:25 +03:00
Andrey Volk
863d44fc8b
Merge pull request #2548 from signalwire/leak
[Core] switch_find_local_ip: Coverity 1024290 Resource leak.
2024-07-30 12:30:10 +03:00
Andrey Volk
11e3cff7cb [Core] switch_find_local_ip: Coverity 1024290 Resource leak. 2024-07-30 02:48:59 +03:00
Andrey Volk
1ff5a6593c [Core] switch_rtp.c: Coverity 1500271, 1500287: Out-of-bounds access (OVERRUN) 2024-07-30 02:31:10 +03:00
Andrey Volk
43f8ffb4f3
Merge pull request #2546 from signalwire/risky
[Core] switch_rtp_create: Coverity 1227620 Calling risky function
2024-07-30 02:28:01 +03:00
Andrey Volk
b43ae84564 [Core] switch_rtp_create: Coverity 1227620 Calling risky function 2024-07-30 00:16:15 +03:00
Andrey Volk
4eefe8279b
Merge pull request #2543 from signalwire/risky
[Core] rtp_common_write: Coverity 1227609 Calling risky function
2024-07-30 00:09:24 +03:00
Andrey Volk
be3c0b3ef6
Merge pull request #2544 from signalwire/SWITCH_RAND_MAX
[Core] Introduce SWITCH_RAND_MAX to switch_rand()
2024-07-29 22:52:09 +03:00
Andrey Volk
a99ed5c46f [Core] Introduce SWITCH_RAND_MAX to switch_rand() 2024-07-29 22:26:27 +03:00
Andrey Volk
b38d879413 [Core] rtp_common_write: Coverity 1227609 Calling risky function 2024-07-29 17:02:42 +03:00
Andrey Volk
56981d1e3a
Merge pull request #2539 from signalwire/bookworm
[core] check_rtcp_and_ice() - stringop-overflow: Fix build on Debian Bookworm.
2024-07-25 23:03:19 +03:00
Andrey Volk
93072c9503 [core] check_rtcp_and_ice() - stringop-overflow: Fix build on Debian Bookworm. 2024-07-25 21:46:40 +03:00
Andrey Volk
8f9939bffe
Merge pull request #2534 from signalwire/gha
[GHA] Disable repo name check.
2024-07-23 13:27:48 +03:00
Andrey Volk
56fdaaf33a
Merge pull request #2535 from signalwire/reproducable-src
[UTIL] Generate reproducible source archive.
2024-07-22 19:39:53 +03:00
s3rj1k
19270516bf
[UTIL] Generate reproducible source archive. 2024-07-22 16:57:32 +02:00
s3rj1k
5f4036eaac
[GHA] Disable repo name check. 2024-07-22 16:43:26 +02:00
Andrey Volk
98f164d2bf
Merge pull request #2512 from signalwire/gha
[GHA] Remove `build-from-fork.yml`.
2024-06-27 14:30:34 +03:00
s3rj1k
460d1c19cf
[GHA] Remove build-from-fork.yml. 2024-06-27 13:25:53 +02:00
Andrey Volk
31ec477d84
Merge pull request #2508 from signalwire/gha
[GHA] Pin workflow to repository.
2024-06-25 23:20:10 +03:00
s3rj1k
318953d078
[GHA] Pin workflow to repository. 2024-06-25 22:15:53 +02:00
Andrey Volk
86ea24ec7a
Merge pull request #2506 from signalwire/gha
[GHA] Pin workflow to repository.
2024-06-25 22:52:55 +03:00
s3rj1k
4a15dc1a62
[GHA] Pin workflow to repository. 2024-06-25 21:40:13 +02:00
Andrey Volk
f850f835b7
Merge pull request #2505 from signalwire/gha
[GHA] Rework `pull_request_target` workflow.
2024-06-25 22:06:55 +03:00
s3rj1k
c8b8f0d961
[GHA] Rework pull_request_target workflow. 2024-06-25 20:39:31 +02:00
Andrey Volk
987b3404e9
Merge pull request #2504 from signalwire/gha
[GHA] Increase verbosity for `mount=type=secret`.
2024-06-25 19:10:43 +03:00
s3rj1k
89a2db91c8
[GHA] Increase verbosity for mount=type=secret. 2024-06-25 17:45:46 +02:00
Andrey Volk
6bf2237153
Merge pull request #2498 from signalwire/gha
[GHA] Fail early when required secret not set.
2024-06-25 17:40:32 +03:00
s3rj1k
1c7163e2ce
[GHA] Fail early when required secret not set. 2024-06-22 19:43:19 +02:00
Andrey Volk
70c5520466
Merge pull request #2497 from signalwire/gha
[GHA] Rework how secrets are used inside Dockerfiles.
2024-06-22 19:29:00 +03:00
s3rj1k
453b18d893
[GHA] Rework how secrets are used inside Dockerfiles. 2024-06-22 16:52:59 +02:00
Andrey Volk
40a33e7bb7
Merge pull request #2487 from signalwire/thumbprint
[Build-System] Update expired Certificate Thumbprint on Windows.
2024-06-12 20:48:46 +03:00
Andrey Volk
a0e7fb8e71 [Build-System] Update expired Certificate Thumbprint on Windows. 2024-06-12 20:39:11 +03:00
Andrey Volk
e584243a19
Merge pull request #2479 from signalwire/gha
[GHA] Add build workflow.
2024-06-12 13:26:47 +03:00
s3rj1k
72d17ccf5c
[GHA] Add build workflow. 2024-06-11 22:02:42 +02:00
Andrey Volk
ca861064cc
Merge pull request #2485 from signalwire/arm64
[Build-System] Add ARM64 support, extend Debian helper scripts.
2024-06-11 22:56:28 +03:00
Andrey Volk
8224bb8e65
[Build-System] Add ARM64 support, extend Debian helper scripts.
Co-authored-by: s3rj1k <evasive.gyron@gmail.com>
2024-06-11 16:47:14 +02:00
Andrey Volk
3e5c58c11c
Merge pull request #2484 from signalwire/swigall
swigall
2024-06-11 17:24:00 +03:00
Andrey Volk
74f386bf94
swigall 2024-06-11 14:44:07 +02:00
Andrey Volk
c80ab8b034
Merge pull request #2482 from signalwire/rand
[Core] Better handle error cases in switch_rand().
2024-06-07 23:14:01 +03:00
Andrey Volk
9f362ea315 [Core] Better handle error cases in switch_rand(). 2024-06-07 23:12:20 +03:00
Andrey Volk
99625acfa9
Merge pull request #2481 from signalwire/fsv
[mod_fsv] Fix use of 2gb of memory. Fix compiler warnings preventing builds on Bookworm.
2024-06-07 23:05:47 +03:00
Andrey Volk
0c8b5987f0 [mod_fsv] Fix use of 2gb of memory. Fix compiler warnings preventing builds on Bookworm. 2024-06-07 23:03:24 +03:00
Andrey Volk
173b97b6fd
Merge pull request #2480 from signalwire/avfmt
[mod_av] Fix use of switch_size_t in fs_rtp_parse_h263_rfc2190().
2024-06-07 20:52:09 +03:00
Andrey Volk
3b65e27116 [mod_av] Fix use of switch_size_t in fs_rtp_parse_h263_rfc2190(). 2024-06-07 18:19:52 +03:00
Andrey Volk
d55ba83ef7
Merge pull request #2478 from signalwire/switch_rand
[Core] Add new switch_rand() a compliant random number generator API. Add a unit-test.
2024-06-06 23:31:20 +03:00
Andrey Volk
c7e793c345 [Core] Add new switch_rand() a compliant random number generator API. Add a unit-test.
* [Core] Add new switch_rand() a compliant random number generator API. Add a unit-test.

* Fall back to rand() on unsupported platforms compile time.
2024-06-06 21:14:36 +03:00
Andrey Volk
b84b7cbf71
Merge pull request #2477 from signalwire/msicrash
[Build-System] Fix crashing MSI packaging on Windows when Visual Studio 2022 is used.
2024-06-06 14:26:00 +03:00
Andrey Volk
a92c1e4c47 [Build-System] Fix crashing MSI packaging on Windows when Visual Studio 2022 is used. 2024-06-06 13:50:37 +03:00
Andrey Volk
218a00e2e9
Merge pull request #2467 from signalwire/sb14
[CI] Enable scan build 14 on Drone CI
2024-05-19 22:42:32 +03:00
Andrey Volk
72eef5681f [CI] Enable scan build 14 on Drone CI 2024-05-19 21:48:14 +03:00
Andrey Volk
c2b7f0b5f7
Merge pull request #2466 from signalwire/portallocator
[core] Fix scan-build 14 in port allocator
2024-05-19 21:46:32 +03:00
Jakub Karolczyk
41bc763d80 [core] Fix scan-build 14 in port allocator 2024-05-19 21:43:55 +03:00
Andrey Volk
ee62332ced
Merge pull request #2465 from signalwire/vad
[Core] VAD: Add a math sanity check to the switch_vad_process
2024-05-19 21:40:09 +03:00
Andrey Volk
85400015b7 [Core] VAD: Add a math sanity check to the switch_vad_process 2024-05-19 21:22:31 +03:00
Andrey Volk
f87a5eeb95
Merge pull request #2464 from signalwire/fix_scan_build_14_libvpx
[libvpx] Fix scan-build 14
2024-05-19 19:15:02 +03:00
Jakub Karolczyk
681c61ad32 [libvpx] Fix scan-build 14 2024-05-19 16:18:53 +01:00
Andrey Volk
503c19e12b
Merge pull request #2459 from signalwire/cseq
[Core, mod_sofia] Add switch_uint31_t type. Fix CSeq bigger than 2^31-1.
2024-05-09 22:45:26 +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
Andrey Volk
da93927c01
Merge pull request #2457 from signalwire/deadlock
[support-d] Add deadlock.py to tree.
2024-05-07 16:05:31 +03:00
Andrey Volk
91cc40d170 [support-d] Add deadlock.py to tree. 2024-05-07 10:24:07 +03:00
Andrey Volk
31cf32d91f
Merge pull request #2449 from signalwire/fix_scan_build_mod_amrwb
[mod_amrwb] Fix scan-build 14
2024-04-26 16:37:10 +03:00
Andrey Volk
f3ace249f5
Merge pull request #2448 from signalwire/fix_scan_build_mod_avmd
[mod_avmd] Fix scan-build 14
2024-04-26 16:35:53 +03:00
Andrey Volk
6896088fa8
Merge pull request #2447 from signalwire/fix_scan_build_mod_av
[mod_av] Fix scan-build 14
2024-04-26 16:34:58 +03:00
Jakub Karolczyk
84ab90895a [mod_amrwb] Fix scan-build 14 2024-04-26 13:11:54 +00:00
Jakub Karolczyk
597ee613de [mod_avmd] Fix scan-build 14 2024-04-26 12:58:44 +00:00
Jakub Karolczyk
ef32d90e91 [mod_av] Fix scan-build 14 2024-04-26 12:41:07 +00:00
Hadžem Hadžić
d5ad504723
[mod_vlc] Resolve double mutex lock 2024-04-18 12:06:40 +03:00
Andrey Volk
739e770c34
Merge pull request #2388 from signalwire/build_system
[build] Split `create_dsc` and `create-orig` functions in `util.sh`.
2024-02-28 19:31:06 +03:00
Andrey Volk
d7d38c7d03
Merge pull request #2381 from signalwire/opus_noop
[mod_opus] Fix status returned by switch_opus_decode(). Should be SWITCH_STATUS_FALSE instead of SWITCH_STATUS_NOOP. Add a unit-test.
2024-02-23 18:36:11 +03:00
Andrey Volk
5ce9057a12
Merge pull request #2392 from signalwire/kazoo
[Core] Remove mod_kazoo from tree
2024-02-22 22:06:32 +03:00
Jakub Karolczyk
49029c8575 [mod_sofia] Set missing CF_3PCC flag 2024-02-22 19:23:40 +03:00
Andrey Volk
70d76bcc0e [Core] Remove mod_kazoo from tree 2024-02-21 21:27:35 +03:00
s3rj1k
eb5476ff66
[build] Split create_dsc and create-orig functions in util.sh. 2024-02-15 18:51:46 +01:00
Andrey Volk
647035c323 [mod_opus] Fix status returned by switch_opus_decode(). Should be SWITCH_STATUS_FALSE instead of SWITCH_STATUS_NOOP. Add a unit-test. 2024-02-06 00:36:35 +03:00
Anton Olofsson
9df3076f29
[mod_event_socket] Check if listener is running before pushing more logs or events to its queue
This fixes a possibility for MAX_MISSED to be exceeded if more logs are
attempted to be pushed to the listener's queue after running kill_listener but
before the listener thread gets CPU time and removes itself.

On a heavily loaded system with a lot of logs in the event dispatch queue
these excessive logs may prove fatal since socket_logger itself will produce
logs about the full queue, resulting in a circular situation of never-ending logs.

The same logic was applied to event_handler after finding the same behaviour
mentioned in signalwire/freeswitch#2143.
2024-01-29 19:05:45 +03:00
Andrey Volk
8e36c59033
Merge pull request #2281 from dragos-oancea/sdp_dialect
[core] SDP: replace SIP lingo in SDP offer/answer.
2024-01-27 14:27:09 +03:00
Dragos Oancea
8b7a8c4aea [core] SDP: replace SIP lingo in SDP offer/answer. 2024-01-26 21:01:32 +03:00
wmasilva
1c05719100
[Core] softtimer: fix crash in timezones when reloading xml
* switch_time: fix segfault null TIMEZONES_LIST.hash when reloading xml

* Unbind before destroying TIMEZONES_LIST.hash. Protect TIMEZONES_LIST.hash with a mutex that's allocated in core's global runtime.memory_pool so the mutex does not die on softtimer shutdown.

---------

Co-authored-by: Andrey Volk <andywolk@gmail.com>
2024-01-24 22:04:32 +03:00
Dmitry Kunilov
d148a3e412
[mod_amr, mod_amrwb] Fix input data corruption
* Fix input data corruption in AMR and AMRWB codecs

* [amr/amrwb] Check encoded frame size before decoding

* [mod_amr, mod_amrwb] Coding guidelines cleanup.

---------

Co-authored-by: Dmitry Kunilov <dmitry.kunilov@upm.solutions>
Co-authored-by: Andrey Volk <andywolk@gmail.com>
2024-01-24 16:50:08 +03:00
mahald
d3c60820d7
[mod_amqp] Adjusting to Appropriate Log Level for Message
* [mod_amqp] Adjusting to Appropriate Log Level for Message

Refined Logging Level for FreeSWITCH's mod_amqp: The logging level for the AMQP module in FreeSWITCH has been updated from 'warning' to 'debug'. This adjustment ensures a more suitable level for the log message and eliminates any potential impact on production environments. Previously, the 'warning' level would lead to unnecessary log entries for each individual message, although there was no actual warning condition. This change improves logging efficiency and appropriateness for mod_amqp's operations within FreeSWITCH.

* [MOD_AMQP] Change LogLevel to DEBUG1 as it is more appropriate for this message
2024-01-10 19:01:26 +03:00
Visytel
a6e219062d
[Build-System, ldns] config.h change to not define inline under Windows to avoid clash with Windows winsock2.h inline usage. Use updated ldns tarball on Windows.
* [ldns] config.h change to not define inline under Windows to avoid clash with Windows winsock2.h inline usage
* [Build-System] Use updated ldns tarball on Windows.

---------

Co-authored-by: Andrey Volk <andywolk@gmail.com>
2024-01-08 12:00:28 +03:00
tmancill
0cea9811cd
[Docker] Change default freeswitch UID and GID to 499 in docker/master/Dockerfile
On several installs on recent Debian and Ubuntu systems, I have noticed
that GID 999 is already allocated on the system running the container,
making it a minor hassle to share a common freeswitch UID and GID
between the Docker host and the container.

The conflicting group id varies, but is typically either one of the systemd
groups or polkitd, which are dynamically created when those packages are
installed.  The behavior stems from the range of system GIDs being
between 100-999 ([see Debian Policy 9.2.2](https://www.debian.org/doc/debian-policy/ch-opersys.html#uid-and-gid-classes))
and the fact that system installation dynamically allocates from this
range.  I didn't track down exactly why these daemons are allocating
from the top of the range, since the default behavior of `adduser` and
`addgroup` ([link](6c04aa701a/adduser (L1255-1269)))
is to search from the bottom of the range, and the manpage for
`groupadd` says that it's default is also to use the smallest id,
but perhaps it was to avoid (other) conflicts.

The approach taken in this PR is to default to 499, more in the middle
of the range, which should reduce the chance of conflicting with an
existing system UID and GID.  The values are also now exposed as ARGs
and so can be explicitly set during the build with
`--build-arg="FREESWITCH_UID=xxx"` and `--build-arg="FREESWITCH_GID=yyy"`
if desired.
2024-01-05 18:42:58 +03:00
Andrey Volk
987e87bc0b version bump 2023-12-22 22:37:54 +03:00
Andrey Volk
6ae8ce604a swigall 2023-12-22 17:12:41 +00:00
Andrey Volk
86cbda90b8
Merge pull request from GHSA-39gv-hq72-j6m6
[Core] Reject DTLS packets coming from a source different than the current ICE negotiated path.
2023-12-22 17:57:34 +03:00
Jakub Karolczyk
6ea8c96c3d [Core] Reject DTLS packets coming from a source different than the current ICE negotiated path. 2023-12-21 22:56:32 +00:00
Andrey Volk
623f6176a3
Merge pull request #2342 from signalwire/sofia11317
Bump sofia-sip library requirement to version 1.13.17
2023-12-22 01:48:43 +03:00
Andrey Volk
e9e8e7fe1a Bump sofia-sip library requirement to version 1.13.17 2023-12-22 01:09:19 +03:00
Andrey Volk
e010821bc5
Merge pull request #2339 from signalwire/static
[mod_conference] Remove static from cJSON vars in conference_jlist
2023-12-19 23:23:30 +03:00
Andrey Volk
2e7424169e [mod_conference] Remove static from cJSON vars in conference_jlist 2023-12-19 22:42:54 +03:00
Andrey Volk
c26b5cdfa3
Merge pull request #2333 from signalwire/implicit
[Core] Fix implicit conversion from enumeration type 'switch_odbc_status_t' to different enumeration type 'switch_status_t'.
2023-12-14 14:01:57 +03:00
Andrey Volk
c155ea7008 [Core] Fix implicit conversion from enumeration type 'switch_odbc_status_t' to different enumeration type 'switch_status_t'. 2023-12-14 13:44:22 +03:00
Jakub Karolczyk
48608177d7 [core] Fix missing 192 key lengths 2023-12-13 00:27:59 +03:00
Andrey Volk
01068048f8
Merge pull request #2329 from signalwire/reason
[mod_sofia] BYE Reason header was limited in length.
2023-12-11 23:12:27 +03:00
Andrey Volk
f7e19e5134 [mod_sofia] BYE Reason header was limited in length. 2023-12-11 22:48:00 +03:00
Andrey Volk
11048483d3
Merge pull request #2273 from asymptotic-io/mod-conference-fix
[mod_conference] Avoid a race in member->read_impl access
2023-11-07 18:50:30 +03:00
Arun Raghavan
f05b7507aa [mod_conference] Avoid a race in member->read_impl access
The conference output loop accesses the member's read_impl while
resampling. The output loop also spawns off the input loop thread, which
is where the member->read_impl is actually initialised. This results in
an uncommon race where the output loop sometimes gets an uninitialised
member->read_impl and bails with logs something like this:

2023-10-12 18:19:01.436844 [DEBUG] conference_loop.c:1340 Setup timer soft success interval: 20  samples: 960 from codec L16
2023-10-12 18:19:01.436844 [DEBUG] conference_loop.c:1497 Outbound conference channel answered, setting CFLAG_ANSWERED
2023-10-12 18:19:01.436844 [NOTICE] switch_core_media.c:15852 Activating write resampler
2023-10-12 18:19:01.436844 [DEBUG] switch_core_media.c:16097 Engaging Write Buffer at 1920 bytes to accommodate 0->1920
2023-10-12 18:19:01.436844 [ERR] switch_core_media.c:16112 Write Buffer 0 bytes Failed!

As a solution, we initialise the member->read_impl even before we start
up the input loop, so that this race can never happen.
2023-11-07 09:42:27 -05:00
Andrey Volk
57fe9aa6b6
Merge pull request #2253 from signalwire/fix_ice_flopping
[core] Fix flopping routes on ICE negotiation
2023-10-27 19:29:22 +03:00
Jakub Karolczyk
104c0b3fec [core] Fix flopping routes on ICE negotiation 2023-10-12 12:15:46 +00:00
Andrey Volk
f1fb05214e
Merge pull request #2266 from signalwire/vpx
[libvpx] Fix bug with smaller width bigger size
2023-10-06 01:07:16 +03:00
Andrey Volk
2ab7a3d323 [libvpx] Fix bug with smaller width bigger size 2023-10-06 00:42:10 +03:00
Andrey Volk
f5a41d3092
[mod_pgsql] Coverity: 1227660 Logically dead code 2023-10-05 18:05:32 +03:00
Andrey Volk
d08424384b
[Core] Coverity: 1024552 Logically dead code 2023-10-05 18:03:32 +03:00
Andrey Volk
79ce088101
[Core] Coverity: Dereference before null check
* [Core] Coverity: 1060958 Dereference before null check

* [Core] Coverity: 1024236 Dereference before null check
2023-10-05 00:26:26 +03:00
Andrey Volk
c4115537e0
[Core] Coverity: Use of 32-bit time_t
* [Core] Coverity: 1500270 Use of 32-bit time_t

* [Core] Coverity: 1500229 Use of 32-bit time_t

* [Core] Coverity: 1500235 Use of 32-bit time_t

* [Core] Coverity: 1500244 Use of 32-bit time_t

* [Core] Coverity: 1500250 Use of 32-bit time_t

* [Core] Coverity: 1500245 Use of 32-bit time_t

* [Core] Coverity: 1500255 Use of 32-bit time_t

* [Core] Coverity: 1500370 Use of 32-bit time_t

* Cleanup
2023-10-04 18:24:16 +03:00
Andrey Volk
fb4b367ff1
Merge pull request #2259 from signalwire/vpx
[libvpx] VP8: disallow thread count changes
2023-10-04 18:13:53 +03:00
Andrey Volk
6f9e72c585 [libvpx] VP8: disallow thread count changes 2023-10-04 00:47:39 +03:00
Andrey Volk
792eee44d0
Merge pull request #2232 from signalwire/coverity_1364946
[core] Coverity 1364946 Unchecked return value
2023-09-11 14:06:48 +03:00
Andrey Volk
ff71b9089c
Merge pull request #2233 from signalwire/coverity_1325269
[core] Coverity 1325269 Dereference before null check
2023-09-11 14:06:05 +03:00
tmancill
c6ff92923d
updates for the Debian Dockerfile (#2234)
* default to Debian bookworm

* use DEBIAN_VERSION instead of lsb_release; gosu is in Debian since buster

* update comments for FS_META_PACKAGE and exposed ports

* fix SHELL invocation so 'RUN' works as expected in downstream builds

See:  https://docs.docker.com/engine/reference/builder/#shell
2023-09-09 12:38:50 -04:00
tmancill
dc3c0f00f3
misc readme updates (#2235)
* Update README.md regarding the archived freeswitch-users mailing list

* update docker/README.md to suggest --network host
2023-09-09 12:26:04 -04:00
Jakub Karolczyk
bb9afcb388
[core] Coverity fixes
* [core] Coverity 1518099, 1518097, 1518098 (Unchecked return value from library)

* [core] Coverity 1468551 Unchecked return value

* [core] Coverity 1468293 Unchecked return value

* [core] Coverity 1468274 Explicit null dereferenced

* [core] Coverity 1395588 Unchecked return value

* [core] Coverity 1395515 Logically dead code

* [core] Coverity 1364984 Result is not floating-point

* [core] Coverity 1395554, 1468440 Dereference before null check

* [core] Coverity 1024487 Dereference after null check

* [core] Coverity 1024872 Unchecked return value

* [core] Coverity 1025822 Unchecked return value

* [core] Coverity 1025823 Unchecked return value

* [core] Coverity 1087637, 1346467, 1087638 Unchecked return value

* [core] Coverity 1107607 Unchecked return value

* [core] Coverity 1210777 Unchecked return value

* [core] Coverity 1227670 Dereference before null check

* [core] Coverity 1024551 Logically dead code

* [core] Coverity 1024560 Logically dead code

* [core] Coverity 1024664 Operands don't affect result

* [core] Coverity 1364957 Dereference after null check

* [core] Coverity 1395572 Logically dead code

* [core] Coverity 1412459 Unchecked return value

* [core] Coverity 1412490 Unchecked return value

* [core] Coverity 1395515/2 Logically dead code

* [core] Coverity cleanup
2023-09-08 20:17:57 +03:00
Jakub Karolczyk
4c51ba9064 [core] Coverity 1364946 Unchecked return value 2023-09-08 17:54:58 +01:00
Jakub Karolczyk
ebcb099a01 [core] Coverity 1325269 Dereference before null check 2023-09-08 17:54:33 +01:00
Dragos Oancea
b6ccc27e6f [core] JB audio: check for jb type and silence some debug. (#1191) 2023-09-05 23:19:59 +03:00
Douglas Vought
07f192ca03
[contrib/timezone-gen] Fix timezone gen (#2215)
* [contrib/timezone-gen] Move timezone-gen.pl to own folder

* [contrib/timezone-gen] Add fixTzstr

* [contrib/timezone-gen] Add tests and zone data getter
 - tests.pl can be used to verify that the generated timezone conf
   will produce the correct datetimes by testing them against
   what the system's `date` says
 - build-zonedata.pl will download the latest tzdb data and build
   the posix timezone data files. It only builds what is needed
   rather than adding extraneous "right/" and "posix/" timezones.
   FreeSWITCH doesn't seem to be able to use the "right/"
   timezone files.
 - data/ is where the various files needed to generate the
   timezones gets stored
2023-09-05 23:11:01 +03:00
Andrey Volk
0df47beebe
Merge pull request #2216 from voughtdq/update-timezones
[timezones] Update timezones to version 2023c.
2023-09-05 20:12:52 +03:00
Douglas Vought
7d52ceb69d [timezones] Update timezones to version 2023c. 2023-09-05 12:46:13 -04:00
Andrey Volk
b74245d48a version bump 2023-08-13 23:20:20 +03:00
Andrey Volk
5c289cc063 swigall 2023-08-13 16:00:05 +00:00
Andrey Volk
9347c96712 [Core] check_ice: sanitize second field of the candidates. Add new switch_is_uint_in_range() API. 2023-08-13 15:49:58 +03:00
Sergei Rozhkov
eb918fe180
[Core] Fix switch_console.c for Galera Mariadb cluster
Fix in switch_console.c file.
Adds column names when inserting data.
Calls to use the complete table in Galera Multi-Master Cluster
2023-08-11 23:13:00 +03:00
Len
665745cfeb
Merge pull request #2201 from signalwire/updates
[Configuration]Update freeswitch.xml
2023-08-11 14:18:39 -04:00
Len
6355f9190a
Update freeswitch.xml 2023-08-11 14:03:04 -04:00
Andrey Volk
113889b14d
Merge pull request #1554 from wmasilva/mod_verto-msg_event_add_context_header
[mod_verto] Add context into msg event header
2023-08-11 20:08:31 +03:00
Sergei Rozhkov
c5be6262b4
[mod_mariadb] Fix "DeadLock. The retries are over." message.
Co-authored-by: Sergei Rozhkov <git@zserg.ru>
2023-08-11 19:53:32 +03:00
António Silva
558d3a6b11 [mod_verto] Add context into msg event header 2023-08-11 18:36:47 +03:00
Matteo
ffadaffdd8
[core] Use auto DH params with openssl3
Co-authored-by: Matteo Brancaleoni <matteo.brancaleoni@voismart.it>
2023-08-11 14:33:40 +03:00
Seven Du
9cad385930
[mod_logfile] add logfile open error log and fixes a missing \n 2023-08-11 14:21:59 +03:00
Andrey Volk
41507363f3 [Core] Fix greedy_sort for codecs containing different fmtp 2023-07-31 21:30:35 +03:00
Andrey Volk
cfb39e88dc [Core] Sanitize match count during negotiation 2023-07-31 21:30:25 +03:00
Andrey Volk
6b67970bbb [Core] Add new switch_channel_get_variable_strdup() and switch_channel_get_variable_buf() APIs that avoid allocating channel variables in a session's memory pool. 2023-07-28 22:29:22 +03:00
Andrey Volk
d91947f587
[Build-System] Add Debian 12 Bookworm support 2023-07-25 20:47:11 +03:00
Andrey Volk
1f364254a6
Merge pull request #2181 from signalwire/shout
[mod_shout] Replace deprecated meta functions with shout_set_meta()
2023-07-25 03:27:16 +03:00
Andrey Volk
820e42aa89
Merge pull request #2178 from signalwire/rtmp
[mod_rtmp] Add OpenSSL 3 support.
2023-07-25 03:04:26 +03:00
Andrey Volk
47e18be18d [mod_shout] Replace deprecated meta functions with shout_set_meta() 2023-07-25 02:49:51 +03:00
Andrey Volk
4f9918f663
Merge pull request #2180 from signalwire/older
[Core] switch_curl_process_mime(): fix build on older systems.
2023-07-25 01:56:41 +03:00
Andrey Volk
c37ed7c816 [Core] switch_curl_process_mime(): fix build on older systems. 2023-07-25 01:44:20 +03:00
Andrey Volk
f7e5ae793e
Merge pull request #2175 from signalwire/curl
[Core, mod_cidlookup, mod_curl, mod_httapi, mod_http_cache, mod_kazoo, mod_shout] Add new switch_curl_mime APIs replacing switch_curl_process_form_post_params() and make code be compatible with libcurl>=7.87.0
2023-07-25 01:28:57 +03:00
Andrey Volk
f3f257dcda
Merge pull request #2179 from signalwire/newer
[Core, mod_mariadb, mod_ilbc] Fix build on gcc 12.
2023-07-25 00:45:35 +03:00
Andrey Volk
64f8ff03be [Core, mod_mariadb, mod_ilbc] Fix build on gcc 12. 2023-07-25 00:25:53 +03:00
Andrey Volk
2ef59577a9 [mod_rtmp] Add OpenSSL 3 support. 2023-07-24 23:47:47 +03:00
Andrey Volk
5966077030 [Core, mod_cidlookup, mod_curl, mod_httapi, mod_http_cache, mod_kazoo, mod_shout] Add new switch_curl_mime APIs replacing switch_curl_process_form_post_params() and make code be compatible with libcurl>=7.87.0 2023-07-24 23:40:27 +03:00
Andrey Volk
0cdf1a5757
Merge pull request #2177 from signalwire/skinny
[mod_skinny] Fix build on Debian 12: error: array subscript 'skinny_message_t {aka struct skinny_message}[0]' is partly outside array bounds
2023-07-24 23:07:15 +03:00
Andrey Volk
62c1036b51
Merge pull request #2176 from signalwire/test
[Unit-tests] Fix possible overflows and an undefined variable in the test framework.
2023-07-24 22:33:47 +03:00
jpfox156
00818e7b25
[Core] OpenSSL 3 support 2023-07-24 21:56:46 +03:00
Andrey Volk
cced3e7f1b [Unit-tests] Fix possible overflows and an undefined variable in the test framework. 2023-07-24 21:23:53 +03:00
Andrey Volk
1b58c8bdd0 [mod_skinny] Fix build on Debian 12: error: array subscript 'skinny_message_t {aka struct skinny_message}[0]' is partly outside array bounds 2023-07-24 21:15:52 +03:00
Andrey Volk
0f445e1ddd
[core, mod_opus] more elastic jitterbuffer with Opus codec
* [core, mod_opus] more elastic jitterbuffer with Opus codec

* [Core] JB: Fix crash on null channel

* [Core] JB: Fix target_seq race in check_jb_size()

* Code cleanup

---------

Co-authored-by: Julien Chavanton <jchavanton@gmail.com>
2023-07-21 20:03:00 +03:00
Jakub Karolczyk
55f2dc4759
[core] Coverity fixes
* [core] Coverity CID 1024233 (Dereference before null check)

* [core] Coverity CID 1024239 (Dereference before null check)

* [core] Coverity CID 1024242 (Dereference before null check)

* [core] Coverity CID 1024243 (Dereference before null check)

* [core] Coverity CID 1024453 (Dereference before null check)

* [core] Coverity CID 1024554 (Logically dead code)

* [core] Coverity CID 1024868 (unchecked return value from library)

* [core] Coverity CID 1024869 (unchecked return value from library)

* [core] Coverity CID 1468281 (Dereference before null check)

* [core] Coverity CID 1024238 (Dereference before null check)

* [core] Coverity CID 1468621 (Copy into fixed size buffer)

* [core] Coverity CID 1024871 (Unchecked return value)
2023-07-21 13:49:40 +03:00
Jakub Karolczyk
e764f292b5
Merge pull request #2167 from signalwire/migrate_to_ffmpeg5win
[mod_av] Add FFmpeg 5.1.3 support on Windows.
2023-07-18 18:44:18 +01:00
Andrey Volk
e8c80bf7fb
Merge pull request #2166 from signalwire/migrate_to_ffmpeg5
[mod_av] Migrate to FFmpeg 5.1
2023-07-18 20:38:33 +03:00
Andrey Volk
9f8de014a1 [mod_av] Add FFmpeg 5.1.3 support on Windows. 2023-07-18 19:38:06 +03:00
Jakub Karolczyk
667783831b [mod_av] Migrate to FFmpeg 5.1 2023-07-18 10:32:05 +00:00
Andrey Volk
2f81317ac1
Merge pull request #2155 from signalwire/move_to_packetizer
[core,mod_av,unit-tests] Make transition to core packetizer
2023-07-17 18:31:27 +03:00
Andrey Volk
d73fb3ec7a
Merge pull request #2163 from signalwire/MEDIA_PARAMS
[Core] Fix missing MEDIA_PARAMS in message_names.
2023-07-17 18:28:12 +03:00
Andrey Volk
fdce50e420 [Core] Fix missing MEDIA_PARAMS in message_names. 2023-07-16 21:20:56 +03:00
Andrey Volk
5e439b7384
Merge pull request #2162 from signalwire/libks2
[Build-System] Update libks and signalwire-c requirements to 2.0
2023-07-14 13:33:20 +03:00
Andrey Volk
7c1faeff48 [Build-System] Update libks and signalwire-c requirements to 2.0 2023-07-13 21:23:34 +03:00
Andrey Volk
51dbe89df6
Merge pull request #2157 from signalwire/revertopus
Revert "[core, mod_opus] more elastic jitterbuffer with Opus codec (#2069)
2023-07-12 20:38:52 +03:00
Andrey Volk
34f1d974f5 Revert "[core, mod_opus] more elastic jitterbuffer with Opus codec (#2069)"
This reverts commit 67840823c178153cb013014c4fa780fe233612cb.
2023-07-12 18:18:17 +03:00
Andrey Volk
95457f7922 Revert "[mod_opus] Fix Windows build regression made by previous commit"
This reverts commit 25afda9be002a2edd7311d2d10531ce88431b5c3.
2023-07-12 18:17:52 +03:00
Andrey Volk
224eb221e0
Merge pull request #2146 from linuxmaniac/vseva/mod_python3
[mod_python3] Fix build on Python 3.10+
2023-07-11 17:50:35 +03:00
Victor Seva
2cf57c41b6 [mod_python3] fix build on Python 3.10+
fix #2145
2023-07-10 19:21:04 +02:00
Jakub Karolczyk
930341ba86 [core,mod_av,unit-tests] Make transition to core packetizer 2023-07-10 12:58:19 +00:00
Andrey Volk
48e1812e29
Merge pull request #2151 from signalwire/fix_func_decl
[mod_verto] Fix function declarations without a prototype
2023-07-08 18:47:21 +03:00
Jakub Karolczyk
c9fb586c34 [mod_verto] Fix function declarations without a prototype 2023-07-08 06:29:23 -05:00
Andrey Volk
545538fb7a
Merge pull request #2142 from signalwire/fix_macos_build
[xmlrpc-c] Fix MacOS build
2023-07-08 13:04:54 +03:00
Jakub Karolczyk
921eebdbea [xmlrpc-c] Fix MacOS build 2023-07-08 04:41:10 -05:00
Jakub Karolczyk
ab211c542a
Merge pull request #2140 from signalwire/fix_vars_not_used
[core,miniupnpc,modules] Fix not used variables
2023-07-05 13:18:15 +01:00
Andrey Volk
bd5bea5b2c
Merge pull request #2141 from signalwire/remove_verbatim
[mod_sofia] Remove non-implemented verbose feature
2023-07-04 17:04:37 +03:00
Andrey Volk
eec311d8d7 [Build-System] Update commit hash of SpanDSP on Windows. 2023-07-04 16:46:47 +03:00
Andrey Volk
845b4fdd5e
Merge pull request #2139 from signalwire/fix_func_decl_prot
[core,libyuv,modules] Fix function declarations without a prototype
2023-07-04 13:35:15 +03:00
Jakub Karolczyk
2afad15f48 [mod_sofia] Remove non-implemented verbose feature 2023-07-04 10:37:48 +01:00
Jakub Karolczyk
5656972bfe [core,miniupnpc,modules] Fix not used variables 2023-07-04 10:18:16 +01:00
Jakub Karolczyk
a160eced99 [core,libyuv,modules] Fix function declarations without a prototype 2023-07-04 09:56:40 +01:00
David Villasmil
b355bf21e6
[mod_conference] Add flag to destroy the conference only when all mandatory members disconnect. And set endconf to end the conference when any member with the flag disconnects (#2079)
* feature/mod_conference_mandatory_member_flag: Add flag to destroy the conference only when all mandatory members disconnect. And set endconf to end the conference when any member with the flag disconnects
2023-06-28 19:39:22 +03:00
Andrey Volk
244ccaa8a8
Merge pull request #2120 from signalwire/win
[mod_opus] Fix Windows build regression made by previous commit
2023-06-24 01:07:44 +03:00
Andrey Volk
25afda9be0 [mod_opus] Fix Windows build regression made by previous commit 2023-06-23 21:25:16 +03:00
Julien Chavanton
67840823c1
[core, mod_opus] more elastic jitterbuffer with Opus codec (#2069) 2023-06-23 16:45:31 +03:00
Andrey Volk
f64314ff48 [mod_sofia] Map SWITCH_CAUSE_REJECT_ALL cause to 603 2023-06-22 22:39:51 +03:00
Giacomo Vacca
9c63f03b45 [Core] Add new cause REJECT_ALL 2023-06-22 22:39:46 +03:00
Andrey Volk
7f62d6168d
Merge pull request #2113 from dragos-oancea/more_opus
[Core, mod_opus] Fixes.
2023-06-15 20:48:11 +03:00
Dragos Oancea
7bc999309c [mod_opus] fix remote codec rate to match. 2023-06-15 16:29:43 +03:00
Dragos Oancea
5e914efc8c [core, mod_opus] bring more fmtp params to core (offer/answer). 2023-06-15 16:26:17 +03:00
Dragos Oancea
f90aeade4f [core] Opus RTP timestamp: adding an exception on RTP session creation.
https://www.rfc-editor.org/rfc/rfc7587.html
"The RTP timestamp is incremented with a 48000 Hz
   clock rate for all modes of Opus and all sampling rates.  The unit
   for the timestamp is samples per single (mono) channel"

Follow up: 50f57f85732b0d5a58a39f3fca7b654f894b0c9d, ccbef9e0c7e31c410ce08b5276c3e2e5a2f69883 .
2023-06-15 16:25:46 +03:00
Dragos Oancea
5065c0b118 [mod_opus] fix samples_per_packet for 8khz, 16khz, 24khz. 2023-06-15 16:22:52 +03:00
Dragos Oancea
a458d704ab [mod_opus] show uuid in logs. 2023-06-14 16:01:27 +03:00
Dragos Oancea
24452ff104 [mod_opus] fix configuration glitches (switch_true() instead of atoi()). 2023-06-14 15:57:54 +03:00
Dragos Oancea
9b20b324f5
[mod_sofia] Coverity fixes
[mod_sofia] coverity CID 1024253 (Dereference before null check)
[mod_sofia] coverity CID 1024254 (Dereference before null check)
[mod_sofia] coverity CID 1257620 (Logically dead code)
[mod_sofia] coverity CID 1024750 (Dereference null return value)
2023-06-12 18:17:12 +03:00
Andrey Volk
645b610e79
Merge pull request #2109 from signalwire/switch_core_media_set_codec
[Core] Fix possible deadlock in switch_core_media_set_codec()
2023-06-12 18:03:26 +03:00
Andrey Volk
b4e43214f7 [Core] Fix possible deadlock in switch_core_media_set_codec() 2023-06-12 17:47:02 +03:00
Dragos Oancea
86875d2381
[mod_verto] Coverity fixes
[mod_verto] coverity CID 1468439 (Dereference after null check)
[mod_verto] coverity CID 1294451 (Dereference before null check)
[mod_verto] coverity CID 1468443 (Logically dead code)
2023-06-12 17:25:37 +03:00
Andrey Volk
9eda0c41eb
Merge pull request #2104 from dragos-oancea/cov-mod_portaudio
[mod_portaudio] coverity CID 1024263 (Dereference before null check)
2023-06-12 17:03:16 +03:00
Andrey Volk
7a47ed19c7
Merge pull request #2106 from dragos-oancea/cov-mod_spandsp
[mod_spandsp] Coverity CID 1024263 (Dereference before null check)
2023-06-12 16:58:09 +03:00
Andrey Volk
13ae4e3853
Merge pull request #2108 from signalwire/add_new_media_getters
[core] Add switch_core_media_get_engine() and switch_core_media_get_codec() functions
2023-06-09 22:48:30 +03:00
Jakub Karolczyk
b0a52eb1fe [core] Add switch_core_media_get_engine() and switch_core_media_get_codec() functions 2023-06-09 18:25:25 +00:00
Andrey Volk
d7a4ab7dce [mod_spandsp] Coverity CID 1024263 (Dereference before null check) 2023-06-09 12:18:19 +03:00
Dragos Oancea
ef275aec8a [mod_portaudio] coverity CID 1024263 (Dereference before null check) 2023-06-09 12:15:11 +03:00
Andrey Volk
0c89eeadc0
Merge pull request #2095 from signalwire/ksverto
[mod_verto] Include libks/ks.h instead of ks.h
2023-05-31 01:28:00 +03:00
Andrey Volk
35823b650a [mod_verto] Include libks/ks.h instead of ks.h 2023-05-30 22:45:54 +03:00
Henrique
a4af2ea7de
[mod_png] Fix unexpected png video blocked read 2023-05-24 02:14:22 +03:00
Andrey Volk
8aa6a8a904
Merge pull request #2088 from elkpi/master
[mod_sofia] fix sofia_glue_get_extra_headers memory leak
2023-05-16 20:07:54 +03:00
ping
a3a4244f21
[mod_sofia] fix sofia_glue_get_extra_headers memory leak 2023-05-17 00:29:13 +08:00
Andrey Volk
9b15516f23
Merge pull request #2084 from signalwire/sofiabump
Bump sofia-sip library requirement to version 1.13.15
2023-05-15 19:18:35 +03:00
Andrey Volk
21613b6f68 Bump sofia-sip library requirement to version 1.13.15 2023-05-13 15:25:51 +03:00
Andrey Volk
f377a0ff57
Revert "[Core, mod_curl, mod_httapi, mod_http_cache] Compatible with libcurl>=7.87.0" (#2070)
This reverts commit 039823848906b11fd6183ba81f037b7211a29497.
2023-05-01 20:38:51 +03:00
Clarence
0398238489
[Core, mod_curl, mod_httapi, mod_http_cache] Compatible with libcurl>=7.87.0
* [core] fix deprecated with libcurl>=7.56.0

* [mod_httpapi] fix deprecated with libcurl>=7.56.0

* [mod_curl] fix deprecated with libcurl>=7.56.0

* [mod_http_cache] fix deprecated with libcurl>=7.12.1
2023-04-27 23:43:32 +03:00
Dragos Oancea
b5cb26dc47
[Core] Coverity fixes
* [core] coverity CID 1024482 (Dereference after null check)

* [core] coverity CID 1468368 (Logically dead code)

* [core] coverity CID 1468459 (Logically dead code)

* [core] coverity CID 1232742 (Dereference before null check)
2023-04-18 19:30:22 +03:00
Andrey Volk
dbd37bdc51
Merge pull request #2052 from dragos-oancea/mod_dptools-cov3
[mod_dptools] coverity CID 1468646 (Unsigned compared against 0)
2023-04-18 13:25:13 +03:00
Andrey Volk
dd81253ab1
Merge pull request #2054 from dragos-oancea/mod_avmd-cov3
[mod_avmd] coverity CID 1395555 (Dereference before null check)
2023-04-18 13:23:26 +03:00
Dragos Oancea
5597fe3098 [mod_avmd] coverity CID 1395555 (Dereference before null check) 2023-04-18 12:58:16 +03:00
Dragos Oancea
e1d966ed0a [mod_dptools] coverity CID 1468646 (Unsigned compared against 0) 2023-04-18 12:55:42 +03:00
Andrey Volk
77a5fa3b0d
Merge pull request #2055 from dragos-oancea/mod_sofia-cov3
[mod_sofia] coverity CID 1468496 (Unchecked return value)
2023-04-17 23:29:03 +03:00
Jakub Karolczyk
6eefc674fe
[mod_avmd] Coverity fixes
* [mod_avmd] Coverity CID 1395501 (Dereference null return value)

* [mod_avmd] Coverity CID 1395478 (Resource leak)
2023-04-17 21:49:42 +03:00
Andrey Volk
cb3373872a
Merge pull request #2053 from dragos-oancea/mod_erlang_event-cov3
[mod_erlang_event] coverity CID 1500239 (Uninitialized scalar variable)
2023-04-17 21:22:43 +03:00
Andrey Volk
991c7be001
Merge pull request #2051 from dragos-oancea/mod_opusfile-cov3
[mod_opusfile] coverity CID 1468424 (Missing break in switch)
2023-04-17 20:15:53 +03:00
Andrey Volk
2debb076ed
Merge pull request #2042 from signalwire/coverity_13042023_mod_v8
[mod_v8] Coverity CID 1468570 (Resource leak)
2023-04-17 19:50:04 +03:00
Andrey Volk
e2544341bd
Merge pull request #2045 from signalwire/coverity_13042023_mod_rayo
[mod_rayo] Coverity CID 1395579 (Resource leak)
2023-04-17 19:46:01 +03:00
Jakub Karolczyk
075724845e [mod_rayo] Coverity CID 1395579 (Resource leak) 2023-04-17 15:33:47 +01:00
Andrey Volk
106e8b38f0
Merge pull request #2044 from signalwire/coverity_13042023_mod_radius_cdr
[mod_radius_cdr] Coverity CID 1395529 (Resource leak)
2023-04-17 16:59:24 +03:00
Dragos Oancea
aab9839678 [mod_sofia] coverity CID 1468496 (Unchecked return value) 2023-04-17 14:55:13 +03:00
Dragos Oancea
01e960cd90 [mod_erlang_event] coverity CID 1500239 (Uninitialized scalar variable) 2023-04-17 14:51:45 +03:00
Dragos Oancea
98c0482844 [mod_opusfile] coverity CID 1468424 (Missing break in switch) 2023-04-17 14:47:39 +03:00
Jakub Karolczyk
0c2edc4f56 [mod_radius_cdr] Coverity CID 1395529 (Resource leak) 2023-04-17 12:01:14 +01:00
Jakub Karolczyk
bc00add254
[mod_kazoo] Coverity fixes (#2043)
* [mod_kazoo] Coverity CID 1395503 (Resource leak)

* [mod_kazoo] Coverity CID 1468146 (Resource leak)

* [mod_kazoo] Coverity CID 1468483 (Resource leak)
2023-04-17 13:53:26 +03:00
Andrey Volk
371d3c6164
Merge pull request #2041 from signalwire/coverity_13042023_mod_java
[mod_java] Coverity CID 1320752 (Resource leak)
2023-04-17 13:50:03 +03:00
Andrey Volk
12af59e67e
Merge pull request #2040 from signalwire/coverity_13042023_mod_translate
[mod_translate] Coverity CID 1301006 (Resource leak)
2023-04-17 13:45:56 +03:00
Jakub Karolczyk
0b05623cef [mod_translate] Coverity CID 1301006 (Resource leak) 2023-04-16 14:22:09 +01:00
Jakub Karolczyk
85a109617f [mod_java] Coverity CID 1320752 (Resource leak) 2023-04-14 17:41:33 +01:00
Jakub Karolczyk
70c144309c [mod_v8] Coverity CID 1468570 (Resource leak) 2023-04-14 17:40:48 +01:00
Andrey Volk
b1bf3b0574
Merge pull request #2038 from signalwire/capture
[mod_commands] Fix leaking session readlock in uuid_capture_text
2023-04-14 16:51:13 +03:00
Andrey Volk
7f3a833466 [mod_commands] Fix leaking session readlock in uuid_capture_text 2023-04-14 14:48:41 +03:00
Jakub Karolczyk
eec1fd737c [mod_signalwire] Make this module working with libks and signalwire-c in versions 2.0
* [mod_signalwire] Fix load credentials data from json

* [mod_signalwire] Fix parsing of configuration response
2023-04-13 16:24:35 +03:00
Andrey Volk
4d3b0a5778 [mod_opus] Fix buf scope in switch_opus_decode(). 2023-04-10 15:10:17 +03:00
Andrey Volk
be3a73af62
Merge pull request #2032 from signalwire/coverity_06042023_mod_xml_rpc
[mod_xml_rpc] Coverity CID 1294469 (Resource leak)
2023-04-07 09:30:07 +03:00
Jakub Karolczyk
9994c51499 [mod_xml_rpc] Coverity CID 1294469 (Resource leak) 2023-04-06 22:31:50 +01:00
Andrey Volk
919647a035
Merge pull request #2033 from signalwire/coverity_06042023_mod_xml_scgi
[mod_xml_scgi] Coverity CID 1468595 (Resource leak)
2023-04-07 00:21:16 +03:00
Andrey Volk
daeaceb27c
Merge pull request #2031 from signalwire/coverity_06042023_mod_xml_curl
[mod_xml_curl] Coverity CID 1468413 (Resource leak)
2023-04-07 00:19:41 +03:00
Andrey Volk
ce5194a523
Merge pull request #2030 from signalwire/coverity_06042023_mod_verto
[mod_verto] Coverity CID 1320754 (Resource leak)
2023-04-07 00:16:41 +03:00
Andrey Volk
d4faa1ddd2
Merge pull request #2029 from signalwire/coverity_06042023_mod_java
[mod_java] Coverity CID 1320753 (Resource leak)
2023-04-07 00:14:52 +03:00
Andrey Volk
87dea6c503
Merge pull request #2028 from signalwire/coverity_06042023_mod_imagick
[mod_imagick] Coverity CID 1500258 (Resource leak)
2023-04-07 00:13:17 +03:00
Andrey Volk
0091a90ea8
Merge pull request #2027 from signalwire/coverity_06042023_mod_event_multicast
[mod_event_multicast] Coverity CID 1468504 (Resource leak)
2023-04-07 00:11:41 +03:00
Andrey Volk
f5bd2c653d
Merge pull request #2026 from signalwire/coverity_06042023_mod_dialplan_asterisk
[mod_dialplan_asterisk] Coverity CID 1214207 (Resource leak)
2023-04-07 00:07:19 +03:00
Andrey Volk
814348c739
Merge pull request #2025 from signalwire/coverity_06042023_mod_av
[mod_av] Coverity CID 1500320 (Resource leak)
2023-04-07 00:05:40 +03:00
Andrey Volk
1acab416ad
Merge pull request #2024 from signalwire/coverity_06042023_mod_amqp
[mod_amqp] Coverity CID 1468426 (Resource leak)
2023-04-07 00:03:54 +03:00
Jakub Karolczyk
11b9c1d104 [mod_event_multicast] Coverity CID 1468504 (Resource leak) 2023-04-06 18:36:34 +01:00
Jakub Karolczyk
a8f6625d12 [mod_amqp] Coverity CID 1468426 (Resource leak) 2023-04-06 18:31:40 +01:00
Jakub Karolczyk
5388319dd3 [mod_xml_curl] Coverity CID 1468413 (Resource leak) 2023-04-06 18:27:42 +01:00
Jakub Karolczyk
875a1b04ff [mod_av] Coverity CID 1500320 (Resource leak) 2023-04-06 18:25:56 +01:00
Jakub Karolczyk
99e26d3448 [mod_dialplan_asterisk] Coverity CID 1214207 (Resource leak) 2023-04-06 18:25:11 +01:00
Jakub Karolczyk
a9e81ae0b8 [mod_verto] Coverity CID 1320754 (Resource leak) 2023-04-06 18:24:26 +01:00
Jakub Karolczyk
0e9954467f [mod_imagick] Coverity CID 1500258 (Resource leak) 2023-04-06 18:23:33 +01:00
Jakub Karolczyk
b02fbc702d [mod_java] Coverity CID 1320753 (Resource leak) 2023-04-06 18:21:40 +01:00
Jakub Karolczyk
80d5790274 [mod_xml_scgi] Coverity CID 1468595 (Resource leak) 2023-04-06 18:20:07 +01:00
Dragos Oancea
73ea37c5ab
[Core] Coverity fixes
* [core] coverity CID 1320751 (Dereference before null check)

* [core] coverity CID 1294546 (Unchecked return value)

* [core] coverity CID 1227661 (Logically dead code)

* [core] coverity CID 1227656 (Logically dead code)

* [core] coverity CID 1060948 (Explicit null dereferenced)

* [core] coverity CID 1346465 (Unchecked return value)

* [core] coverity CID 1364953 (Logically dead code)

* [core] coverity CID 1468210 (Dereference before null check)

* [core] coverity CID 1468546 (Dereference before null check)

* [core] coverity CID 1468342 (Dereference before null check)
2023-04-05 18:54:11 +03:00
Jakub Karolczyk
49c1c35982
[core] Coverity fixes
* [core] Coverity CID 1468218 (Resource leak)

* [core] Coverity CID 1468214 (Resource leak)

* [core] Coverity CID 1294472 (Resource leak)

* [core] Coverity CID 1294470 (Resource leak)

* [core] Coverity CID 1500361 (Resource leak)

* [core] Coverity CID 1500308 (Resource leak)

* [core] Coverity CID 1500278 (Resource leak)

---------

Co-authored-by: Andrey Volk <andywolk@gmail.com>
2023-04-01 00:07:59 +03:00
Andrey Volk
04dd67da00
Merge pull request #2016 from signalwire/count
[Core] Remove unused count variable from switch_core_session_execute_exten()
2023-03-31 23:39:18 +03:00
Andrey Volk
55313696db [Core] Remove unused count variable from switch_core_session_execute_exten() 2023-03-31 22:48:11 +03:00
Andrey Volk
d1639199c3
Merge pull request #2014 from signalwire/prototype
[Core] Fix switch_core_sqldb_destroy() function declaration.
2023-03-31 21:00:42 +03:00
Andrey Volk
9940623bce [Core] Fix switch_core_sqldb_destroy() function declaration. 2023-03-31 20:47:56 +03:00
Jakub Karolczyk
9494148b10
[mod_sofia] Coverity fixes
* [mod_sofia] Coverity CID 1468634 (Resource leak)

* [mod_sofia] Coverity CID 1294467 (Resource leak)

---------

Co-authored-by: Andrey Volk <andywolk@gmail.com>
2023-03-30 22:00:40 +03:00
Andrey Volk
c540af16ad
Merge pull request #2011 from signalwire/coverity_24032023_mod_pgsql
[mod_pgsql] Coverity CID 1468401 (Resource leak)
2023-03-30 19:59:44 +03:00
Jakub Karolczyk
65b24c65db [mod_pgsql] Coverity CID 1468401 (Resource leak) 2023-03-29 23:26:35 +01:00
Andrey Volk
f5f7f76cd4
Merge pull request #2006 from dragos-oancea/mod_amr-cov
[mod_amr] coverity CID 1395603 (Unsigned compared against 0)
2023-03-29 19:19:47 +03:00
Dragos Oancea
3d547647b2
[mod_verto] Coverity fixes
* [mod_verto] coverity CID (Logically dead code)

* [mod_verto] coverity CID 1468609 (Logically dead code)
2023-03-29 19:14:54 +03:00
Andrey Volk
16884775b9
Merge pull request #2005 from dragos-oancea/mod_opus-cov
[mod_opus] coverity CID 1320733 (Result is not floating-point)
2023-03-29 19:12:19 +03:00
Dragos Oancea
48b8b0c4d7
[Core] Coverity fixes
* [core] coverity CID 1395504 (Logically dead code)

* [core] coverity CID 1395581 (Dereference before null check)

* [core] coverity CID 1346451 (Improper use of negative value)

* [core] coverity CID 1395497 (Dereference before null check)

* [core] coverity CID 1468458 (Dereference before null check)
2023-03-29 19:08:18 +03:00
Andrey Volk
8e5dc5a087 [mod_opusfile] Fix missing rdlock unlock in switch_opusfile_open() 2023-03-29 19:05:18 +03:00
Dragos Oancea
3c1824a685 [mod_amr] coverity CID 1395603 (Unsigned compared against 0) 2023-03-29 17:20:04 +03:00
Dragos Oancea
3c4695ea31 [mod_opus] coverity CID 1320733 (Result is not floating-point) 2023-03-29 17:18:57 +03:00
Andrey Volk
e479f1b648
Merge pull request #1639 from signalwire/docker
[Documentation] Fix typo in README.md
2023-03-28 17:39:41 +03:00
Tomasz Ostrowski
afc8d78a18
[mod_enum] Fix use-after-free if creating resolver from file failed 2023-03-28 17:36:01 +03:00
Andrey Volk
6c97e3b0f4 [Core] Fix missing mutex unlock in switch_ivr_dmachine_ping() 2023-03-28 17:10:25 +03:00
Andrey Volk
02c25a24a4
Merge pull request #1765 from greenbea/patch-14
[mod_say_en] change epoch to 64 bit int
2023-03-28 17:06:58 +03:00
Andrey Volk
ef9268ec0c
Merge pull request #1900 from jyelloz/master
[mod_ladspa] Added activate/deactivate support.
2023-03-28 17:00:28 +03:00
Henrique
bb2fa44071
[mod_conference] handle personal canvas with vmuted member 2023-03-28 16:53:16 +03:00
yois615
6d65f8e08c
[mod_callcenter] Fix stale agents and UUID broadcasts
* [call_center] Stop uuid_broadcast on answer

* [mod_callcenter] Fix stale members in database

When a channel is originated to an agent but the
member fails to bridge to that agent, the database is
not updated with the member status and a stale entry
of 'Answered' persists until mod_callcenter is restarted.

Additionally, cc_agent_found is set before the bridge,
therefore ending the while loop on the member channel.
If there is a problem with the agent bridge, the call is
terminated prematurely.

In this commit, we:

* Move the SQL update of the member
to the 'Answered' state to the agent thread instead of
the member's thread, so that correct data is populated.

* Reset the members state accordingly to Abandoned or
Waiting if the channels fail to bridge.

* Use cc_agent_bridged to end the member loop,
so that a member is put back on queue if the agent
channel fails to bridge.
2023-03-28 14:53:16 +03:00
yois615
965e88a6b0
[core, mod_cidlookup] Free memory allocated via strdup
In mod_cidlookup and several other modules, config parameters
are read from external XML files using the SWITCH_CONFIG_ITEM_STRING_STRDUP
method.  These items do not have string_options, and are not freed
with switch_xml_config_cleanup.  We therefore need to call switch_safe_free
for config without string_options.  We also add switch_xml_config_cleanup
to mod_cidlookup.  There are other modules that may be affected but this
commit makes no attempt at fixing those.

Fixes #1752
2023-03-28 01:47:23 +03:00
Andrey Volk
f680a29405
Merge pull request #1413 from yois615/master
[mod_sofia] Randomize OPTIONS Ping interval
2023-03-28 01:43:35 +03:00
Tomasz Ostrowski
8e604e8a94
[mod_event_multicast] Few fixes
* [mod_event_multicast] Fix crash / invalid pointer dereference

* [mod_event_multicast] Check current number of addresses before zeroing memory on init

* [mod_event_multicast] Fix condition checking number of addresses on init

* [mod_event_multicast] Fix addresses zeroing on init

* [mod_event_multicast] Reorder memset and assert after malloc
2023-03-27 20:23:07 +03:00
Andrey Volk
2c36dcdd50
Merge pull request #1843 from greenbea/patch-17
[mod_commands] Fix and improve coalesce function
2023-03-27 20:03:40 +03:00
Andrey Volk
49eb8a77ee
Merge pull request #1996 from greenbea/amqp_subclass_support
[mod_amqp] Event subclass support
2023-03-27 19:55:46 +03:00
Дилян Палаузов
99ca7436d8
[mod_commands] add completions for fsctl api_expansion and sync_clock_when_idle 2023-03-27 19:50:51 +03:00
Andrey Volk
be1b1c8085
Merge pull request #1976 from greenbea/patch-19
[core] switch_ivr_originate set originate endpoint used
2023-03-27 19:41:32 +03:00
Tomasz Ostrowski
01d3b3c0e3
[Core] ICE: fix wrong buffer size being passed and unitialized buffer 2023-03-23 21:15:41 +03:00
agree
8cf90dae41 [mod_commands] Fix and improve coalesece function
* fixed memory leak
* added custom delimeter support
2023-03-21 12:23:19 -04:00
agree
6eb685d353 [mod_amqp] Events subclass support 2023-03-21 12:16:01 -04:00
Andrey Volk
245171d812
Merge pull request #1954 from signalwire/session_table_lock
[Core] Fix race condition of session_table hash in switch_core_session_request_uuid()
2023-03-02 18:05:37 +03:00
Andrey Volk
23e6569fb0 [Core] Fix race condition of session_table hash in switch_core_session_request_uuid() 2023-03-02 12:53:00 +03:00
agree
81046e943a [core] switch_ivr_originate set originate endpoint used
This commit introduces a new channel variable that sets the channel endpoint used by the originate. This is particulary useful when using `execute_on_originate` that will execute multiple times when using fake endpoints as `user/` or `group/`. With this variable, a user can determine which endpoint is being used by the originate, and whether they want to process it.
2023-02-26 21:50:51 -05:00
Andrey Volk
3307083f8b Bump sofia-sip library requirement to version 1.13.14 2023-02-23 00:57:09 +03:00
Andrey Volk
c39034b729
Merge pull request #1972 from signalwire/winlibs
[Build-System] Windows: Update OpenSSL to 1.1.1t, libpq to 10.23, curl to 7.88.0, rabbitmq-c to 0.13.0. Allow using build numbers and bump libks version requirement to 1.8.2_1 and signalwire-c to 1.3.2_1 compiled with openssl 1.1.1t
2023-02-22 21:03:42 +03:00
Andrey Volk
83e4ccf802 [Build-System] Windows: Update OpenSSL to 1.1.1t, libpq to 10.23, curl to 7.88.0, rabbitmq-c to 0.13.0. Allow using build numbers and bump libks version requirement to 1.8.2_1 and signalwire-c to 1.3.2_1 compiled with openssl 1.1.1t 2023-02-22 16:14:09 +03:00
Andrey Volk
5007659488
Merge pull request #1967 from signalwire/security-policy
Create SECURITY.md
2023-02-17 23:54:46 +03:00
Chris Rienzo
d4291b8113
Create SECURITY.md 2023-02-17 15:24:03 -05:00
Andrey Volk
39958a31c3
Merge pull request #1966 from s3rj1k/dockerfile
[mod_shout] Enable module in Dockerfile example.
2023-02-16 21:12:11 +03:00
s3rj1k
4f76580785 [mod_shout] Enable module in Dockerfile example.
Signed-off-by: s3rj1k <evasive.gyron@gmail.com>
2023-02-16 18:11:28 +02:00
demonspork
1a2033b915
[mod_sofia] Ignore user agent for display update when channel variable update_ignore_ua is true 2023-02-10 21:16:57 +03:00
Andrey Volk
0f15bde800 version bump 2023-02-04 01:21:44 +03:00
Andrey Volk
3cb697c495 swigall 2023-02-03 18:46:31 +00:00
Andrey Volk
06f45d2872 [Build-system] Update libks version requirement to 1.8.2 2023-02-02 19:54:43 +03:00
Andrey Volk
e037cd09c6
Merge pull request #1938 from signalwire/ks182
[Build-System] Update libks to 1.8.2 and signalwire-client-c to 1.3.2 on Windows
2023-01-26 00:04:55 +03:00
Andrey Volk
b241a82d83 [Build-System] Update libks to 1.8.2 and signalwire-client-c to 1.3.2 on Windows 2023-01-25 18:42:48 +03:00
Adrian Fretwell
3326f4ec57
[mod_python3] Create an event on python_fetch() 2023-01-24 18:14:29 +03:00
Andrey Volk
f9a9c48d81
Merge pull request #1936 from signalwire/xml_curl_event
[mod_xml_curl] Fix leaking event in xml_url_fetch()
2023-01-24 18:12:18 +03:00
Andrey Volk
889afccad0 [mod_xml_curl] Fix leaking event in xml_url_fetch() 2023-01-24 14:14:27 +03:00
Len
c013a7dc64 [Configuration] Use : not , in rtp_secure_media 2023-01-24 02:04:56 +03:00
Andrey Volk
89fda08f64
Merge pull request #1929 from signalwire/sofia11312
Bump sofia-sip library requirement to version 1.13.12
2023-01-19 12:09:35 +03:00
Jordan Yelloz
9fd214fcbb
[mod_ladspa] Add activate/deactivate support.
Without these -- especially activate() -- stateful plugins will not be
set up correctly.

For example, the low-pass filter "lpf" in the CMT library may produce
a pop when starting since its state is not zeroed out.
2023-01-18 12:02:16 -07:00
Andrey Volk
a6096ce318 Bump sofia-sip library requirement to version 1.13.12 2023-01-18 19:45:35 +03:00
Andrey Volk
27c0287bd6
Merge pull request #1927 from signalwire/libcryptowin
[Build-System] Fix MD5 on Windows. Add a unit-test.
2023-01-18 03:30:45 +03:00
Andrey Volk
b2e78c90e7 [Build-System] Fix MD5 on Windows. Add a unit-test. 2023-01-18 02:55:34 +03:00
Andrey Volk
4b350962d3 [mod_verto] Limit websocket payload size to 1000000. 2023-01-17 00:36:44 +03:00
Andrey Volk
e4d63e698a
Merge pull request #1921 from signalwire/nsig
[Build-System] Fix NSIG redefinition issue.
2023-01-17 00:32:28 +03:00
Andrey Volk
5cc2a4fc2e
Merge pull request #1910 from signalwire/osx
[Unit-tests] mod_sofia: avoid duplicate symbols on macos.
2023-01-17 00:26:05 +03:00
Andrey Volk
fe68e3aff4 [Build-System] Fix NSIG redefinition issue. 2023-01-12 18:59:07 +03:00
Minh
c69c399dd2
[mod_sofia] New chanvars for inbound multiple header identity 2023-01-09 16:00:49 +03:00
Andrey Volk
84cb1bdf84 [Unit-tests] mod_sofia: avoid duplicate symbols on macos. 2022-12-31 02:41:55 +03:00
Andrey Volk
408cbb2050
Merge pull request #1907 from signalwire/readmegetstarted
[Docs] Update get-started link in README.md
2022-12-30 20:29:34 +03:00
Andrey Volk
908481bd10
[Docs] Update get-started link in README.md 2022-12-28 14:02:48 +03:00
Andrey Volk
e05a703ab0
Merge pull request #1902 from signalwire/switch_console_complete
[Core] Fix false-positive illegal memory access detection in switch_console_complete()
2022-12-27 21:13:05 +03:00
Andrey Volk
a739e197a5 [Core] Fix false-positive illegal memory access detection in switch_console_complete() 2022-12-26 16:36:04 +03:00
Andrey Volk
f71a56022a [Core] switch_mprintf: Increase the size of loop variables in the printf() implementation. Add unit-tests disabled by default. 2022-12-09 23:11:25 +03:00
Andrey Volk
ec32dc300f [Build-System] Update SQLite to 3.40.0 on Windows 2022-12-09 04:04:25 +03:00
Andrey Volk
eb22faad12
Merge pull request #1889 from signalwire/wincaching
[Build-System] Improve build time on Windows: Do not download a pre-compiled binary if it's found in a folder pointed by the FreeSWITCHBuildCachePath environment variable.
2022-12-08 12:45:02 +03:00
Andrey Volk
32525e5901
Merge pull request #1890 from signalwire/yasm64
[Build-System] Fix build on Windows 11: yasm tool compiled for x86 does not work on x64 system. Download yasm.exe 64bit instead.
2022-12-08 12:17:03 +03:00
Andrey Volk
52e97e8d0a [Build-System] Fix build on Windows 11: yasm tool compiled for x86 does not work on x64 system. Download yasm.exe 64bit instead. 2022-12-08 03:03:04 +03:00
Andrey Volk
4454ea58fd [Build-System] Improve build time on Windows: Do not download a pre-compiled binary if it's found in a folder pointed by the FreeSWITCHBuildCachePath environment variable. 2022-12-07 15:02:12 -06:00
morwin1
62d3e52cf9
[mod_python3] Fix compiler warnings 2022-12-06 20:07:19 +03:00
Andrey Volk
d2f84c8342
Merge pull request #1881 from signalwire/originatefence
[Core] Fix crash in enterprise originate: memory fence the handles.
2022-12-06 01:33:14 +03:00
David Villasmil
13646cc888
[mod_sofia] Parse extra headers on reINVITE 2022-12-01 21:51:17 +03:00
Andrey Volk
ded2a4c1be [Core] Fix crash in enterprise originate: memory fence the handles. 2022-11-30 23:22:01 +03:00
Anthony Minessale
edd36639c7 [Core] Blind pass at using a rwlock for chat_hash 2022-11-21 13:58:28 +03:00
Joseph Nadiv
7afeceb47e [mod_sofia] Randomize OPTIONS Ping interval
In FS-6400, the attempt was made to randomize OPTIONS
packets to be sent at a random interval.  The same random
interval is applied to all endpoints so this doesn't work.
Furthermore, rounding within the code, as well as
reseeding with srand() on each run will ultimately
make the ping times converge over time.  Once the
times converge, they will not separate since the reseeding
will cause the same random number to apply to each
registration.

This commmit will apply the random interval only during
initial registration and update of registration.
All subsequent pings will be incremented with the
actual value of ping-mean-interval. (This parameter
name is no longer accurate, and would be better named
ping-max-interval).

srand() has been moved to the start of the worker
thread, and all repeat calls have been removed,
so that each call of rand(), even during the
same second, generates a different random number.

Fixes #1132, Fixes #1133
2022-11-20 13:51:41 -05:00
Andrey Volk
bb682fc5b4
Merge pull request #1851 from signalwire/nodupremove
[Core] Remove deprecated SWITCH_STACK_NODUP flag. Change switch_event_add_header_string() behavior to always dup.
2022-11-08 02:36:35 +03:00
Andrey Volk
17453e0079 [Core] Remove deprecated SWITCH_STACK_NODUP flag. Change switch_event_add_header_string() behavior to always dup. 2022-11-08 01:48:25 +03:00
Andrey Volk
9675ef689f
Merge pull request #1856 from signalwire/nodupremovewithflag
[Core] SWITCH_STACK_NODUP flag is deprecated and will be soon removed. Introduce switch_event_add_header_string_nodup() API.
2022-11-08 01:43:14 +03:00
Andrey Volk
ffa2207926 [Core] SWITCH_STACK_NODUP flag is deprecated and will be soon removed. Introduce switch_event_add_header_string_nodup() API. 2022-11-08 01:17:08 +03:00
Andrey Volk
eb6c2333dd
Merge pull request #1857 from signalwire/smpp
[mod_smpp] Fix use of switch_event_add_header_string with SWITCH_STACK_NODUP.
2022-11-08 01:14:48 +03:00
Andrey Volk
00f4bc5ab0 [mod_smpp] Fix use of switch_event_add_header_string with SWITCH_STACK_NODUP. 2022-11-08 00:43:17 +03:00
Royce Mitchell
1213217ccc
[mod_logfile] Continue renaming if a logfile doesn't exist
this prevents a scenario where freeswitch.log fails to get rotated and eventually fills up the hard drive causing a crash. See issue #1738
2022-11-01 19:19:15 +03:00
Andrey Volk
6184eb5ffd
Merge pull request #1848 from dragos-oancea/nuke-zrtp-
[core][mod_sofia] remove ZRTP (deemed obsolete).
2022-10-28 22:50:14 +03:00
Dragos Oancea
f7c94bc01d swigall 2022-10-28 20:22:33 +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
2ab600c71a [mod_http_cache] Fix leaking curl handle in http_get() 2022-10-28 01:00:17 +03:00
Zvonimir Bužanić
92caab3647
[core] Fix wrong reason code for group call 2022-10-26 20:53:01 +03:00
Andrey Volk
fee17e1480
Merge pull request #1841 from signalwire/rpmshared
[Packaging] Shared libraries instead of static in freeswitch devel CentOS package.
2022-10-25 20:45:34 +03:00
Andrey Volk
d07b8af199 [Packaging] Shared libraries instead of static in freeswitch devel CentOS package. 2022-10-25 19:36:14 +03:00
Andrey Volk
442ebe344b
Merge pull request #1838 from signalwire/static
[Build-System] Disable static build by default on Linux.
2022-10-24 22:44:16 +03:00
Andrey Volk
5bfb9a935f [Build-System] Disable static build by default on Linux. 2022-10-24 21:24:07 +03:00
Andrey Volk
347b7f530d version bump 2022-10-15 01:16:48 +03:00
agree
f538fd3d7b [mod_say_en] change epoch to 64 bit int
handle time after 2038-01-18 22:14:07
2022-08-21 01:16:36 -04:00
Andrey Volk
caffa27a55 [Documentation] Fix typo in README.md 2022-04-22 21:02:50 +03:00
1641 changed files with 31980 additions and 460299 deletions

View File

@ -1,183 +0,0 @@
---
kind: pipeline
name: unit-tests
steps:
- name: bootstrap
image: signalwire/freeswitch-public-base:bullseye
pull: always
commands:
- cat /proc/sys/kernel/core_pattern
- ./bootstrap.sh -j
- name: configure
image: signalwire/freeswitch-public-base:bullseye
pull: always
environment:
REPOTOKEN:
from_secret: repotoken
commands:
- echo "machine freeswitch.signalwire.com password $REPOTOKEN" > /etc/apt/auth.conf
- apt-get update && DEBIAN_FRONTEND=noninteractive apt-get -yq remove libsofia-sip-ua0 libspandsp-dev
- DEBIAN_FRONTEND=noninteractive apt-get -yq install libspandsp3-dev
- export REPOTOKEN=''
- rm -rf /etc/apt/auth.conf
- git clone https://github.com/freeswitch/sofia-sip.git
- cd sofia-sip && ./autogen.sh && ./configure.gnu && make -j`nproc` && make install && cd ..
- echo 'codecs/mod_openh264' >> modules.conf
- sed -i '/applications\\/mod_http_cache/s/^#//g' modules.conf
- sed -i '/event_handlers\\/mod_rayo/s/^#//g' modules.conf
- sed -i '/formats\\/mod_opusfile/s/^#//g' modules.conf
- sed -i '/languages\\/mod_lua/s/^#//g' modules.conf
- export ASAN_OPTIONS=log_path=stdout:disable_coredump=0:unmap_shadow_on_exit=1:fast_unwind_on_malloc=0
- ./configure --enable-address-sanitizer --enable-fake-dlclose
- name: build
image: signalwire/freeswitch-public-base:bullseye
pull: always
environment:
REPOTOKEN:
from_secret: repotoken
commands:
- echo "machine freeswitch.signalwire.com password $REPOTOKEN" > /etc/apt/auth.conf
- apt-get update && DEBIAN_FRONTEND=noninteractive apt-get -yq remove libsofia-sip-ua0 libspandsp-dev
- DEBIAN_FRONTEND=noninteractive apt-get -yq install libspandsp3-dev
- export REPOTOKEN=''
- rm -rf /etc/apt/auth.conf
- cd sofia-sip && make install && cd ..
- echo '#!/bin/bash\nmake -j`nproc --all` |& tee ./unit-tests-build-result.txt\nexitstatus=$${PIPESTATUS[0]}\necho $$exitstatus > ./build-status.txt\n' > build.sh
- chmod +x build.sh
- ./build.sh
- name: run-tests
image: signalwire/freeswitch-public-base:bullseye
pull: always
environment:
REPOTOKEN:
from_secret: repotoken
commands:
- echo "machine freeswitch.signalwire.com password $REPOTOKEN" > /etc/apt/auth.conf
- apt-get update && DEBIAN_FRONTEND=noninteractive apt-get -yq remove libsofia-sip-ua0 libspandsp-dev
- DEBIAN_FRONTEND=noninteractive apt-get -yq install libspandsp3-dev
- export REPOTOKEN=''
- rm -rf /etc/apt/auth.conf
- cd sofia-sip && make install && cd ..
- make install || true
- cd tests/unit
- export ASAN_OPTIONS=log_path=stdout:disable_coredump=0:unmap_shadow_on_exit=1:fast_unwind_on_malloc=0
- ./run-tests.sh
- ls -la /cores
- mkdir logs && (mv log_run-tests_*.html logs || true) && (mv backtrace_*.txt logs || true)
- echo 0 > run-tests-status.txt
- ./collect-test-logs.sh && exit 0 || echo 'Some tests failed'
- echo 1 > run-tests-status.txt
- cd logs && ls -la
- name: notify
image: signalwire/drone-notify
pull: always
environment:
SLACK_WEBHOOK_URL:
from_secret: slack_webhook_url
ENV_FILE:
from_secret: notify_env
commands:
- /root/unit-tests-notify.sh
trigger:
branch:
- master
event:
- pull_request
- push
---
kind: pipeline
name: scan-build
steps:
- name: bootstrap
image: signalwire/freeswitch-public-base:bullseye
pull: always
commands:
- ./bootstrap.sh -j
- name: configure
image: signalwire/freeswitch-public-base:bullseye
pull: always
environment:
REPOTOKEN:
from_secret: repotoken
commands:
- echo "machine freeswitch.signalwire.com password $REPOTOKEN" > /etc/apt/auth.conf
- apt-get update && DEBIAN_FRONTEND=noninteractive apt-get -yq remove libspandsp-dev
- DEBIAN_FRONTEND=noninteractive apt-get -yq install libsofia-sip-ua-dev libspandsp3-dev
- export REPOTOKEN=''
- rm -rf /etc/apt/auth.conf
- cp build/modules.conf.most modules.conf
#Enable/Uncomment mods
- echo 'codecs/mod_openh264' >> modules.conf
- sed -i "/mod_mariadb/s/^#//g" modules.conf
- sed -i "/mod_v8/s/^#//g" modules.conf
#Disable/Comment out mods
- sed -i '/mod_ilbc/s/^/#/g' modules.conf
- sed -i '/mod_isac/s/^/#/g' modules.conf
- sed -i '/mod_mp4/s/^/#/g' modules.conf
- sed -i '/mod_mongo/s/^/#/g' modules.conf
- sed -i '/mod_pocketsphinx/s/^/#/g' modules.conf
- sed -i '/mod_sangoma_codec/s/^/#/g' modules.conf
- sed -i '/mod_siren/s/^/#/g' modules.conf
#Comment out mods for a while
- sed -i '/mod_avmd/s/^/#/g' modules.conf
- sed -i '/mod_basic/s/^/#/g' modules.conf
- sed -i '/mod_cdr_mongodb/s/^/#/g' modules.conf
- sed -i '/mod_cv/s/^/#/g' modules.conf
- sed -i '/mod_erlang_event/s/^/#/g' modules.conf
- sed -i '/mod_perl/s/^/#/g' modules.conf
- sed -i '/mod_rtmp/s/^/#/g' modules.conf
- sed -i '/mod_unimrcp/s/^/#/g' modules.conf
- sed -i '/mod_xml_rpc/s/^/#/g' modules.conf
- ./configure
- name: scan-build
image: signalwire/freeswitch-public-base:bullseye
pull: always
environment:
REPOTOKEN:
from_secret: repotoken
commands:
- echo "machine freeswitch.signalwire.com password $REPOTOKEN" > /etc/apt/auth.conf
- apt-get update && DEBIAN_FRONTEND=noninteractive apt-get -yq remove libspandsp-dev
- DEBIAN_FRONTEND=noninteractive apt-get -yq install libsofia-sip-ua-dev libspandsp3-dev
- export REPOTOKEN=''
- rm -rf /etc/apt/auth.conf
- mkdir -p scan-build
- echo '#!/bin/bash\nscan-build-11 -o ./scan-build/ make -j`nproc --all` |& tee ./scan-build-result.txt\nexitstatus=$${PIPESTATUS[0]}\necho $$exitstatus > ./scan-build-status.txt\n' > scan.sh
- chmod +x scan.sh
- ./scan.sh
- exitstatus=`cat ./scan-build-status.txt`
- echo "*** Exit status is $exitstatus"
- name: notify
image: signalwire/drone-notify
pull: always
environment:
SLACK_WEBHOOK_URL:
from_secret: slack_webhook_url
ENV_FILE:
from_secret: notify_env
commands:
- /root/scan-build-notify.sh
trigger:
branch:
- master
event:
- pull_request
- push
---
kind: signature
hmac: 780e4aaee61e3683ea4a8d6fe5131f7c9e62ebad727546013f18df0fca80d705
...

View File

@ -0,0 +1,24 @@
ARG BUILDER_IMAGE=signalwire/freeswitch-public-ci-base:bookworm-amd64
FROM ${BUILDER_IMAGE}
ARG MAINTAINER_EMAIL="andrey@signalwire.com"
LABEL org.opencontainers.image.authors="${MAINTAINER_EMAIL}"
SHELL ["/bin/bash", "-c"]
COPY --from=sofia-sip / /usr/src/sofia-sip
COPY --from=freeswitch / /usr/src/freeswitch
RUN cd /usr/src/freeswitch && \
./ci.sh -t unit-test -a configure -c sofia-sip -p "/usr/src/sofia-sip" && \
./ci.sh -t unit-test -a build -c sofia-sip -p "/usr/src/sofia-sip" && \
./ci.sh -t unit-test -a install -c sofia-sip -p "/usr/src/sofia-sip" && \
./ci.sh -t unit-test -a configure -c freeswitch -p "/usr/src/freeswitch" && \
./ci.sh -t unit-test -a build -c freeswitch -p "/usr/src/freeswitch" && \
./ci.sh -t unit-test -a install -c freeswitch -p "/usr/src/freeswitch"
WORKDIR /usr/src/freeswitch/tests/unit
ENTRYPOINT ["/usr/src/freeswitch/tests/unit/run-tests.sh"]

View File

@ -0,0 +1,103 @@
ARG BUILDER_IMAGE=debian:bookworm-20240513
FROM ${BUILDER_IMAGE} AS builder
ARG MAINTAINER_NAME="Andrey Volk"
ARG MAINTAINER_EMAIL="andrey@signalwire.com"
# Credentials
ARG REPO_DOMAIN=freeswitch.signalwire.com
ARG REPO_USERNAME=user
ARG BUILD_NUMBER=42
ARG GIT_SHA=0000000000
ARG DATA_DIR=/data
ARG CODENAME=bookworm
ARG GPG_KEY="/usr/share/keyrings/signalwire-freeswitch-repo.gpg"
MAINTAINER "${MAINTAINER_NAME} <${MAINTAINER_EMAIL}>"
SHELL ["/bin/bash", "-c"]
RUN apt-get -q update && \
DEBIAN_FRONTEND=noninteractive apt-get -yq install \
apt-transport-https \
build-essential \
ca-certificates \
cmake \
curl \
debhelper \
devscripts \
dh-autoreconf \
dos2unix \
doxygen \
git \
graphviz \
libglib2.0-dev \
libssl-dev \
lsb-release \
pkg-config \
wget
RUN update-ca-certificates --fresh
RUN echo "export CODENAME=${CODENAME}" | tee ~/.env && \
chmod +x ~/.env
RUN . ~/.env && cat <<EOF > /etc/apt/sources.list.d/freeswitch.list
deb [signed-by=${GPG_KEY}] https://${REPO_DOMAIN}/repo/deb/debian-release ${CODENAME} main
deb-src [signed-by=${GPG_KEY}] https://${REPO_DOMAIN}/repo/deb/debian-release ${CODENAME} main
EOF
RUN git config --global --add safe.directory '*' \
&& git config --global user.name "${MAINTAINER_NAME}" \
&& git config --global user.email "${MAINTAINER_EMAIL}"
# Bootstrap and Build
COPY . ${DATA_DIR}
WORKDIR ${DATA_DIR}
RUN echo "export VERSION=$(cat ./build/next-release.txt | tr -d '\n')" | tee -a ~/.env
RUN . ~/.env && ./debian/util.sh prep-create-orig -n -V${VERSION}-${BUILD_NUMBER}-${GIT_SHA} -x
RUN . ~/.env && ./debian/util.sh prep-create-dsc ${CODENAME}
RUN --mount=type=secret,id=REPO_PASSWORD,required=true \
printf "machine ${REPO_DOMAIN} " > /etc/apt/auth.conf && \
printf "login ${REPO_USERNAME} " >> /etc/apt/auth.conf && \
printf "password " >> /etc/apt/auth.conf && \
cat /run/secrets/REPO_PASSWORD >> /etc/apt/auth.conf && \
sha512sum /run/secrets/REPO_PASSWORD && \
curl \
--fail \
--netrc-file /etc/apt/auth.conf \
--output ${GPG_KEY} \
https://${REPO_DOMAIN}/repo/deb/debian-release/signalwire-freeswitch-repo.gpg && \
file ${GPG_KEY} && \
apt-get --quiet update && \
mk-build-deps \
--install \
--remove debian/control \
--tool "apt-get -o Debug::pkgProblemResolver=yes --yes --no-install-recommends" && \
apt-get --yes --fix-broken install && \
rm -f /etc/apt/auth.conf
ENV DEB_BUILD_OPTIONS="parallel=1"
RUN . ~/.env && dch -b -M -v "${VERSION}-${BUILD_NUMBER}-${GIT_SHA}~${CODENAME}" \
--force-distribution -D "${CODENAME}" "Nightly build, ${GIT_SHA}"
RUN . ~/.env && ./debian/util.sh create-orig -n -V${VERSION}-${BUILD_NUMBER}-${GIT_SHA} -x
RUN dpkg-source \
--diff-ignore=.* \
--compression=xz \
--compression-level=9 \
--build \
. \
&& debuild -b -us -uc \
&& mkdir OUT \
&& mv -v ../*.{deb,dsc,changes,tar.*} OUT/.
# Artifacts image (mandatory part, the resulting image must have a single filesystem layer)
FROM scratch
COPY --from=builder /data/OUT/ /

View File

@ -0,0 +1,103 @@
ARG BUILDER_IMAGE=debian:bookworm-20240513
FROM ${BUILDER_IMAGE} AS builder
ARG MAINTAINER_NAME="Andrey Volk"
ARG MAINTAINER_EMAIL="andrey@signalwire.com"
# Credentials
ARG REPO_DOMAIN=freeswitch.signalwire.com
ARG REPO_USERNAME=user
ARG BUILD_NUMBER=42
ARG GIT_SHA=0000000000
ARG DATA_DIR=/data
ARG CODENAME=bookworm
ARG GPG_KEY="/usr/share/keyrings/signalwire-freeswitch-repo.gpg"
MAINTAINER "${MAINTAINER_NAME} <${MAINTAINER_EMAIL}>"
SHELL ["/bin/bash", "-c"]
RUN apt-get -q update && \
DEBIAN_FRONTEND=noninteractive apt-get -yq install \
apt-transport-https \
build-essential \
ca-certificates \
cmake \
curl \
debhelper \
devscripts \
dh-autoreconf \
dos2unix \
doxygen \
git \
graphviz \
libglib2.0-dev \
libssl-dev \
lsb-release \
pkg-config \
wget
RUN update-ca-certificates --fresh
RUN echo "export CODENAME=${CODENAME}" | tee ~/.env && \
chmod +x ~/.env
RUN . ~/.env && cat <<EOF > /etc/apt/sources.list.d/freeswitch.list
deb [signed-by=${GPG_KEY}] https://${REPO_DOMAIN}/repo/deb/debian-unstable ${CODENAME} main
deb-src [signed-by=${GPG_KEY}] https://${REPO_DOMAIN}/repo/deb/debian-unstable ${CODENAME} main
EOF
RUN git config --global --add safe.directory '*' \
&& git config --global user.name "${MAINTAINER_NAME}" \
&& git config --global user.email "${MAINTAINER_EMAIL}"
# Bootstrap and Build
COPY . ${DATA_DIR}
WORKDIR ${DATA_DIR}
RUN echo "export VERSION=$(cat ./build/next-release.txt | tr -d '\n')" | tee -a ~/.env
RUN . ~/.env && ./debian/util.sh prep-create-orig -n -V${VERSION}-${BUILD_NUMBER}-${GIT_SHA} -x
RUN . ~/.env && ./debian/util.sh prep-create-dsc ${CODENAME}
RUN --mount=type=secret,id=REPO_PASSWORD,required=true \
printf "machine ${REPO_DOMAIN} " > /etc/apt/auth.conf && \
printf "login ${REPO_USERNAME} " >> /etc/apt/auth.conf && \
printf "password " >> /etc/apt/auth.conf && \
cat /run/secrets/REPO_PASSWORD >> /etc/apt/auth.conf && \
sha512sum /run/secrets/REPO_PASSWORD && \
curl \
--fail \
--netrc-file /etc/apt/auth.conf \
--output ${GPG_KEY} \
https://${REPO_DOMAIN}/repo/deb/debian-unstable/signalwire-freeswitch-repo.gpg && \
file ${GPG_KEY} && \
apt-get --quiet update && \
mk-build-deps \
--install \
--remove debian/control \
--tool "apt-get -o Debug::pkgProblemResolver=yes --yes --no-install-recommends" && \
apt-get --yes --fix-broken install && \
rm -f /etc/apt/auth.conf
ENV DEB_BUILD_OPTIONS="parallel=1"
RUN . ~/.env && dch -b -M -v "${VERSION}-${BUILD_NUMBER}-${GIT_SHA}~${CODENAME}" \
--force-distribution -D "${CODENAME}" "Nightly build, ${GIT_SHA}"
RUN . ~/.env && ./debian/util.sh create-orig -n -V${VERSION}-${BUILD_NUMBER}-${GIT_SHA} -x
RUN dpkg-source \
--diff-ignore=.* \
--compression=xz \
--compression-level=9 \
--build \
. \
&& debuild -b -us -uc \
&& mkdir OUT \
&& mv -v ../*.{deb,dsc,changes,tar.*} OUT/.
# Artifacts image (mandatory part, the resulting image must have a single filesystem layer)
FROM scratch
COPY --from=builder /data/OUT/ /

View File

@ -0,0 +1,102 @@
ARG BUILDER_IMAGE=arm32v7/debian:bookworm-20240513
FROM --platform=linux/arm32 ${BUILDER_IMAGE} AS builder
ARG MAINTAINER_NAME="Andrey Volk"
ARG MAINTAINER_EMAIL="andrey@signalwire.com"
# Credentials
ARG REPO_DOMAIN=freeswitch.signalwire.com
ARG REPO_USERNAME=user
ARG BUILD_NUMBER=42
ARG GIT_SHA=0000000000
ARG DATA_DIR=/data
ARG CODENAME=bookworm
ARG GPG_KEY="/usr/share/keyrings/signalwire-freeswitch-repo.gpg"
MAINTAINER "${MAINTAINER_NAME} <${MAINTAINER_EMAIL}>"
SHELL ["/bin/bash", "-c"]
RUN apt-get -q update && \
DEBIAN_FRONTEND=noninteractive apt-get -yq install \
apt-transport-https \
build-essential \
ca-certificates \
cmake \
curl \
debhelper \
devscripts \
dh-autoreconf \
dos2unix \
doxygen \
git \
graphviz \
libglib2.0-dev \
libssl-dev \
lsb-release \
pkg-config \
wget
RUN update-ca-certificates --fresh
RUN echo "export CODENAME=${CODENAME}" | tee ~/.env && \
chmod +x ~/.env
RUN . ~/.env && cat <<EOF > /etc/apt/sources.list.d/freeswitch.list
deb [signed-by=${GPG_KEY}] https://${REPO_DOMAIN}/repo/deb/rpi/debian-release ${CODENAME} main
deb-src [signed-by=${GPG_KEY}] https://${REPO_DOMAIN}/repo/deb/rpi/debian-release ${CODENAME} main
EOF
RUN git config --global --add safe.directory '*' \
&& git config --global user.name "${MAINTAINER_NAME}" \
&& git config --global user.email "${MAINTAINER_EMAIL}"
# Bootstrap and Build
COPY . ${DATA_DIR}
WORKDIR ${DATA_DIR}
RUN echo "export VERSION=$(cat ./build/next-release.txt | tr -d '\n')" | tee -a ~/.env
RUN . ~/.env && ./debian/util.sh prep-create-orig -n -V${VERSION}-${BUILD_NUMBER}-${GIT_SHA} -x
RUN . ~/.env && ./debian/util.sh prep-create-dsc -a armhf ${CODENAME}
RUN --mount=type=secret,id=REPO_PASSWORD,required=true \
printf "machine ${REPO_DOMAIN} " > /etc/apt/auth.conf && \
printf "login ${REPO_USERNAME} " >> /etc/apt/auth.conf && \
printf "password " >> /etc/apt/auth.conf && \
cat /run/secrets/REPO_PASSWORD >> /etc/apt/auth.conf && \
sha512sum /run/secrets/REPO_PASSWORD && \
curl \
--fail \
--netrc-file /etc/apt/auth.conf \
--output ${GPG_KEY} \
https://${REPO_DOMAIN}/repo/deb/rpi/debian-release/signalwire-freeswitch-repo.gpg && \
file ${GPG_KEY} && \
apt-get --quiet update && \
mk-build-deps \
--install \
--remove debian/control \
--tool "apt-get -o Debug::pkgProblemResolver=yes --yes --no-install-recommends" && \
apt-get --yes --fix-broken install && \
rm -f /etc/apt/auth.conf
ENV DEB_BUILD_OPTIONS="parallel=1"
RUN . ~/.env && dch -b -M -v "${VERSION}-${BUILD_NUMBER}-${GIT_SHA}~${CODENAME}" \
--force-distribution -D "${CODENAME}" "Nightly build, ${GIT_SHA}"
RUN . ~/.env && ./debian/util.sh create-orig -n -V${VERSION}-${BUILD_NUMBER}-${GIT_SHA} -x
RUN dpkg-source \
--diff-ignore=.* \
--compression=xz \
--compression-level=9 \
--build \
. \
&& debuild -b -us -uc \
&& mkdir OUT \
&& mv -v ../*.{deb,dsc,changes,tar.*} OUT/.
# Artifacts image (mandatory part, the resulting image must have a single filesystem layer)
FROM scratch
COPY --from=builder /data/OUT/ /

View File

@ -0,0 +1,102 @@
ARG BUILDER_IMAGE=arm32v7/debian:bookworm-20240513
FROM --platform=linux/arm32 ${BUILDER_IMAGE} AS builder
ARG MAINTAINER_NAME="Andrey Volk"
ARG MAINTAINER_EMAIL="andrey@signalwire.com"
# Credentials
ARG REPO_DOMAIN=freeswitch.signalwire.com
ARG REPO_USERNAME=user
ARG BUILD_NUMBER=42
ARG GIT_SHA=0000000000
ARG DATA_DIR=/data
ARG CODENAME=bookworm
ARG GPG_KEY="/usr/share/keyrings/signalwire-freeswitch-repo.gpg"
MAINTAINER "${MAINTAINER_NAME} <${MAINTAINER_EMAIL}>"
SHELL ["/bin/bash", "-c"]
RUN apt-get -q update && \
DEBIAN_FRONTEND=noninteractive apt-get -yq install \
apt-transport-https \
build-essential \
ca-certificates \
cmake \
curl \
debhelper \
devscripts \
dh-autoreconf \
dos2unix \
doxygen \
git \
graphviz \
libglib2.0-dev \
libssl-dev \
lsb-release \
pkg-config \
wget
RUN update-ca-certificates --fresh
RUN echo "export CODENAME=${CODENAME}" | tee ~/.env && \
chmod +x ~/.env
RUN . ~/.env && cat <<EOF > /etc/apt/sources.list.d/freeswitch.list
deb [signed-by=${GPG_KEY}] https://${REPO_DOMAIN}/repo/deb/rpi/debian-dev ${CODENAME} main
deb-src [signed-by=${GPG_KEY}] https://${REPO_DOMAIN}/repo/deb/rpi/debian-dev ${CODENAME} main
EOF
RUN git config --global --add safe.directory '*' \
&& git config --global user.name "${MAINTAINER_NAME}" \
&& git config --global user.email "${MAINTAINER_EMAIL}"
# Bootstrap and Build
COPY . ${DATA_DIR}
WORKDIR ${DATA_DIR}
RUN echo "export VERSION=$(cat ./build/next-release.txt | tr -d '\n')" | tee -a ~/.env
RUN . ~/.env && ./debian/util.sh prep-create-orig -n -V${VERSION}-${BUILD_NUMBER}-${GIT_SHA} -x
RUN . ~/.env && ./debian/util.sh prep-create-dsc -a armhf ${CODENAME}
RUN --mount=type=secret,id=REPO_PASSWORD,required=true \
printf "machine ${REPO_DOMAIN} " > /etc/apt/auth.conf && \
printf "login ${REPO_USERNAME} " >> /etc/apt/auth.conf && \
printf "password " >> /etc/apt/auth.conf && \
cat /run/secrets/REPO_PASSWORD >> /etc/apt/auth.conf && \
sha512sum /run/secrets/REPO_PASSWORD && \
curl \
--fail \
--netrc-file /etc/apt/auth.conf \
--output ${GPG_KEY} \
https://${REPO_DOMAIN}/repo/deb/rpi/debian-dev/signalwire-freeswitch-repo.gpg && \
file ${GPG_KEY} && \
apt-get --quiet update && \
mk-build-deps \
--install \
--remove debian/control \
--tool "apt-get -o Debug::pkgProblemResolver=yes --yes --no-install-recommends" && \
apt-get --yes --fix-broken install && \
rm -f /etc/apt/auth.conf
ENV DEB_BUILD_OPTIONS="parallel=1"
RUN . ~/.env && dch -b -M -v "${VERSION}-${BUILD_NUMBER}-${GIT_SHA}~${CODENAME}" \
--force-distribution -D "${CODENAME}" "Nightly build, ${GIT_SHA}"
RUN . ~/.env && ./debian/util.sh create-orig -n -V${VERSION}-${BUILD_NUMBER}-${GIT_SHA} -x
RUN dpkg-source \
--diff-ignore=.* \
--compression=xz \
--compression-level=9 \
--build \
. \
&& debuild -b -us -uc \
&& mkdir OUT \
&& mv -v ../*.{deb,dsc,changes,tar.*} OUT/.
# Artifacts image (mandatory part, the resulting image must have a single filesystem layer)
FROM scratch
COPY --from=builder /data/OUT/ /

View File

@ -0,0 +1,102 @@
ARG BUILDER_IMAGE=arm64v8/debian:bookworm-20240513
FROM --platform=linux/arm64 ${BUILDER_IMAGE} AS builder
ARG MAINTAINER_NAME="Andrey Volk"
ARG MAINTAINER_EMAIL="andrey@signalwire.com"
# Credentials
ARG REPO_DOMAIN=freeswitch.signalwire.com
ARG REPO_USERNAME=user
ARG BUILD_NUMBER=42
ARG GIT_SHA=0000000000
ARG DATA_DIR=/data
ARG CODENAME=bookworm
ARG GPG_KEY="/usr/share/keyrings/signalwire-freeswitch-repo.gpg"
MAINTAINER "${MAINTAINER_NAME} <${MAINTAINER_EMAIL}>"
SHELL ["/bin/bash", "-c"]
RUN apt-get -q update && \
DEBIAN_FRONTEND=noninteractive apt-get -yq install \
apt-transport-https \
build-essential \
ca-certificates \
cmake \
curl \
debhelper \
devscripts \
dh-autoreconf \
dos2unix \
doxygen \
git \
graphviz \
libglib2.0-dev \
libssl-dev \
lsb-release \
pkg-config \
wget
RUN update-ca-certificates --fresh
RUN echo "export CODENAME=${CODENAME}" | tee ~/.env && \
chmod +x ~/.env
RUN . ~/.env && cat <<EOF > /etc/apt/sources.list.d/freeswitch.list
deb [signed-by=${GPG_KEY}] https://${REPO_DOMAIN}/repo/deb/debian-release ${CODENAME} main
deb-src [signed-by=${GPG_KEY}] https://${REPO_DOMAIN}/repo/deb/debian-release ${CODENAME} main
EOF
RUN git config --global --add safe.directory '*' \
&& git config --global user.name "${MAINTAINER_NAME}" \
&& git config --global user.email "${MAINTAINER_EMAIL}"
# Bootstrap and Build
COPY . ${DATA_DIR}
WORKDIR ${DATA_DIR}
RUN echo "export VERSION=$(cat ./build/next-release.txt | tr -d '\n')" | tee -a ~/.env
RUN . ~/.env && ./debian/util.sh prep-create-orig -n -V${VERSION}-${BUILD_NUMBER}-${GIT_SHA} -x
RUN . ~/.env && ./debian/util.sh prep-create-dsc -a arm64 ${CODENAME}
RUN --mount=type=secret,id=REPO_PASSWORD,required=true \
printf "machine ${REPO_DOMAIN} " > /etc/apt/auth.conf && \
printf "login ${REPO_USERNAME} " >> /etc/apt/auth.conf && \
printf "password " >> /etc/apt/auth.conf && \
cat /run/secrets/REPO_PASSWORD >> /etc/apt/auth.conf && \
sha512sum /run/secrets/REPO_PASSWORD && \
curl \
--fail \
--netrc-file /etc/apt/auth.conf \
--output ${GPG_KEY} \
https://${REPO_DOMAIN}/repo/deb/debian-release/signalwire-freeswitch-repo.gpg && \
file ${GPG_KEY} && \
apt-get --quiet update && \
mk-build-deps \
--install \
--remove debian/control \
--tool "apt-get -o Debug::pkgProblemResolver=yes --yes --no-install-recommends" && \
apt-get --yes --fix-broken install && \
rm -f /etc/apt/auth.conf
ENV DEB_BUILD_OPTIONS="parallel=1"
RUN . ~/.env && dch -b -M -v "${VERSION}-${BUILD_NUMBER}-${GIT_SHA}~${CODENAME}" \
--force-distribution -D "${CODENAME}" "Nightly build, ${GIT_SHA}"
RUN . ~/.env && ./debian/util.sh create-orig -n -V${VERSION}-${BUILD_NUMBER}-${GIT_SHA} -x
RUN dpkg-source \
--diff-ignore=.* \
--compression=xz \
--compression-level=9 \
--build \
. \
&& debuild -b -us -uc \
&& mkdir OUT \
&& mv -v ../*.{deb,dsc,changes,tar.*} OUT/.
# Artifacts image (mandatory part, the resulting image must have a single filesystem layer)
FROM scratch
COPY --from=builder /data/OUT/ /

View File

@ -0,0 +1,102 @@
ARG BUILDER_IMAGE=arm64v8/debian:bookworm-20240513
FROM --platform=linux/arm64 ${BUILDER_IMAGE} AS builder
ARG MAINTAINER_NAME="Andrey Volk"
ARG MAINTAINER_EMAIL="andrey@signalwire.com"
# Credentials
ARG REPO_DOMAIN=freeswitch.signalwire.com
ARG REPO_USERNAME=user
ARG BUILD_NUMBER=42
ARG GIT_SHA=0000000000
ARG DATA_DIR=/data
ARG CODENAME=bookworm
ARG GPG_KEY="/usr/share/keyrings/signalwire-freeswitch-repo.gpg"
MAINTAINER "${MAINTAINER_NAME} <${MAINTAINER_EMAIL}>"
SHELL ["/bin/bash", "-c"]
RUN apt-get -q update && \
DEBIAN_FRONTEND=noninteractive apt-get -yq install \
apt-transport-https \
build-essential \
ca-certificates \
cmake \
curl \
debhelper \
devscripts \
dh-autoreconf \
dos2unix \
doxygen \
git \
graphviz \
libglib2.0-dev \
libssl-dev \
lsb-release \
pkg-config \
wget
RUN update-ca-certificates --fresh
RUN echo "export CODENAME=${CODENAME}" | tee ~/.env && \
chmod +x ~/.env
RUN . ~/.env && cat <<EOF > /etc/apt/sources.list.d/freeswitch.list
deb [signed-by=${GPG_KEY}] https://${REPO_DOMAIN}/repo/deb/debian-unstable ${CODENAME} main
deb-src [signed-by=${GPG_KEY}] https://${REPO_DOMAIN}/repo/deb/debian-unstable ${CODENAME} main
EOF
RUN git config --global --add safe.directory '*' \
&& git config --global user.name "${MAINTAINER_NAME}" \
&& git config --global user.email "${MAINTAINER_EMAIL}"
# Bootstrap and Build
COPY . ${DATA_DIR}
WORKDIR ${DATA_DIR}
RUN echo "export VERSION=$(cat ./build/next-release.txt | tr -d '\n')" | tee -a ~/.env
RUN . ~/.env && ./debian/util.sh prep-create-orig -n -V${VERSION}-${BUILD_NUMBER}-${GIT_SHA} -x
RUN . ~/.env && ./debian/util.sh prep-create-dsc -a arm64 ${CODENAME}
RUN --mount=type=secret,id=REPO_PASSWORD,required=true \
printf "machine ${REPO_DOMAIN} " > /etc/apt/auth.conf && \
printf "login ${REPO_USERNAME} " >> /etc/apt/auth.conf && \
printf "password " >> /etc/apt/auth.conf && \
cat /run/secrets/REPO_PASSWORD >> /etc/apt/auth.conf && \
sha512sum /run/secrets/REPO_PASSWORD && \
curl \
--fail \
--netrc-file /etc/apt/auth.conf \
--output ${GPG_KEY} \
https://${REPO_DOMAIN}/repo/deb/debian-unstable/signalwire-freeswitch-repo.gpg && \
file ${GPG_KEY} && \
apt-get --quiet update && \
mk-build-deps \
--install \
--remove debian/control \
--tool "apt-get -o Debug::pkgProblemResolver=yes --yes --no-install-recommends" && \
apt-get --yes --fix-broken install && \
rm -f /etc/apt/auth.conf
ENV DEB_BUILD_OPTIONS="parallel=1"
RUN . ~/.env && dch -b -M -v "${VERSION}-${BUILD_NUMBER}-${GIT_SHA}~${CODENAME}" \
--force-distribution -D "${CODENAME}" "Nightly build, ${GIT_SHA}"
RUN . ~/.env && ./debian/util.sh create-orig -n -V${VERSION}-${BUILD_NUMBER}-${GIT_SHA} -x
RUN dpkg-source \
--diff-ignore=.* \
--compression=xz \
--compression-level=9 \
--build \
. \
&& debuild -b -us -uc \
&& mkdir OUT \
&& mv -v ../*.{deb,dsc,changes,tar.*} OUT/.
# Artifacts image (mandatory part, the resulting image must have a single filesystem layer)
FROM scratch
COPY --from=builder /data/OUT/ /

View File

@ -0,0 +1,102 @@
ARG BUILDER_IMAGE=debian:bullseye-20240513
FROM ${BUILDER_IMAGE} AS builder
ARG MAINTAINER_NAME="Andrey Volk"
ARG MAINTAINER_EMAIL="andrey@signalwire.com"
# Credentials
ARG REPO_DOMAIN=freeswitch.signalwire.com
ARG REPO_USERNAME=user
ARG BUILD_NUMBER=42
ARG GIT_SHA=0000000000
ARG DATA_DIR=/data
ARG CODENAME=bullseye
ARG GPG_KEY="/usr/share/keyrings/signalwire-freeswitch-repo.gpg"
MAINTAINER "${MAINTAINER_NAME} <${MAINTAINER_EMAIL}>"
SHELL ["/bin/bash", "-c"]
RUN apt-get -q update && \
DEBIAN_FRONTEND=noninteractive apt-get -yq install \
apt-transport-https \
build-essential \
ca-certificates \
cmake \
curl \
debhelper \
devscripts \
dh-autoreconf \
dos2unix \
doxygen \
git \
graphviz \
libglib2.0-dev \
libssl-dev \
lsb-release \
pkg-config \
wget
RUN update-ca-certificates --fresh
RUN echo "export CODENAME=${CODENAME}" | tee ~/.env && \
chmod +x ~/.env
RUN . ~/.env && cat <<EOF > /etc/apt/sources.list.d/freeswitch.list
deb [signed-by=${GPG_KEY}] https://${REPO_DOMAIN}/repo/deb/debian-release ${CODENAME} main
deb-src [signed-by=${GPG_KEY}] https://${REPO_DOMAIN}/repo/deb/debian-release ${CODENAME} main
EOF
RUN git config --global --add safe.directory '*' \
&& git config --global user.name "${MAINTAINER_NAME}" \
&& git config --global user.email "${MAINTAINER_EMAIL}"
# Bootstrap and Build
COPY . ${DATA_DIR}
WORKDIR ${DATA_DIR}
RUN echo "export VERSION=$(cat ./build/next-release.txt | tr -d '\n')" | tee -a ~/.env
RUN . ~/.env && ./debian/util.sh prep-create-orig -n -V${VERSION}-${BUILD_NUMBER}-${GIT_SHA} -x
RUN . ~/.env && ./debian/util.sh prep-create-dsc ${CODENAME}
RUN --mount=type=secret,id=REPO_PASSWORD,required=true \
printf "machine ${REPO_DOMAIN} " > /etc/apt/auth.conf && \
printf "login ${REPO_USERNAME} " >> /etc/apt/auth.conf && \
printf "password " >> /etc/apt/auth.conf && \
cat /run/secrets/REPO_PASSWORD >> /etc/apt/auth.conf && \
sha512sum /run/secrets/REPO_PASSWORD && \
curl \
--fail \
--netrc-file /etc/apt/auth.conf \
--output ${GPG_KEY} \
https://${REPO_DOMAIN}/repo/deb/debian-release/signalwire-freeswitch-repo.gpg && \
file ${GPG_KEY} && \
apt-get --quiet update && \
mk-build-deps \
--install \
--remove debian/control \
--tool "apt-get -o Debug::pkgProblemResolver=yes --yes --no-install-recommends" && \
apt-get --yes --fix-broken install && \
rm -f /etc/apt/auth.conf
ENV DEB_BUILD_OPTIONS="parallel=1"
RUN . ~/.env && dch -b -M -v "${VERSION}-${BUILD_NUMBER}-${GIT_SHA}~${CODENAME}" \
--force-distribution -D "${CODENAME}" "Nightly build, ${GIT_SHA}"
RUN . ~/.env && ./debian/util.sh create-orig -n -V${VERSION}-${BUILD_NUMBER}-${GIT_SHA} -x
RUN dpkg-source \
--diff-ignore=.* \
--compression=xz \
--compression-level=9 \
--build \
. \
&& debuild -b -us -uc \
&& mkdir OUT \
&& mv -v ../*.{deb,dsc,changes,tar.*} OUT/.
# Artifacts image (mandatory part, the resulting image must have a single filesystem layer)
FROM scratch
COPY --from=builder /data/OUT/ /

View File

@ -0,0 +1,102 @@
ARG BUILDER_IMAGE=debian:bullseye-20240513
FROM ${BUILDER_IMAGE} AS builder
ARG MAINTAINER_NAME="Andrey Volk"
ARG MAINTAINER_EMAIL="andrey@signalwire.com"
# Credentials
ARG REPO_DOMAIN=freeswitch.signalwire.com
ARG REPO_USERNAME=user
ARG BUILD_NUMBER=42
ARG GIT_SHA=0000000000
ARG DATA_DIR=/data
ARG CODENAME=bullseye
ARG GPG_KEY="/usr/share/keyrings/signalwire-freeswitch-repo.gpg"
MAINTAINER "${MAINTAINER_NAME} <${MAINTAINER_EMAIL}>"
SHELL ["/bin/bash", "-c"]
RUN apt-get -q update && \
DEBIAN_FRONTEND=noninteractive apt-get -yq install \
apt-transport-https \
build-essential \
ca-certificates \
cmake \
curl \
debhelper \
devscripts \
dh-autoreconf \
dos2unix \
doxygen \
git \
graphviz \
libglib2.0-dev \
libssl-dev \
lsb-release \
pkg-config \
wget
RUN update-ca-certificates --fresh
RUN echo "export CODENAME=${CODENAME}" | tee ~/.env && \
chmod +x ~/.env
RUN . ~/.env && cat <<EOF > /etc/apt/sources.list.d/freeswitch.list
deb [signed-by=${GPG_KEY}] https://${REPO_DOMAIN}/repo/deb/debian-unstable ${CODENAME} main
deb-src [signed-by=${GPG_KEY}] https://${REPO_DOMAIN}/repo/deb/debian-unstable ${CODENAME} main
EOF
RUN git config --global --add safe.directory '*' \
&& git config --global user.name "${MAINTAINER_NAME}" \
&& git config --global user.email "${MAINTAINER_EMAIL}"
# Bootstrap and Build
COPY . ${DATA_DIR}
WORKDIR ${DATA_DIR}
RUN echo "export VERSION=$(cat ./build/next-release.txt | tr -d '\n')" | tee -a ~/.env
RUN . ~/.env && ./debian/util.sh prep-create-orig -n -V${VERSION}-${BUILD_NUMBER}-${GIT_SHA} -x
RUN . ~/.env && ./debian/util.sh prep-create-dsc ${CODENAME}
RUN --mount=type=secret,id=REPO_PASSWORD,required=true \
printf "machine ${REPO_DOMAIN} " > /etc/apt/auth.conf && \
printf "login ${REPO_USERNAME} " >> /etc/apt/auth.conf && \
printf "password " >> /etc/apt/auth.conf && \
cat /run/secrets/REPO_PASSWORD >> /etc/apt/auth.conf && \
sha512sum /run/secrets/REPO_PASSWORD && \
curl \
--fail \
--netrc-file /etc/apt/auth.conf \
--output ${GPG_KEY} \
https://${REPO_DOMAIN}/repo/deb/debian-unstable/signalwire-freeswitch-repo.gpg && \
file ${GPG_KEY} && \
apt-get --quiet update && \
mk-build-deps \
--install \
--remove debian/control \
--tool "apt-get -o Debug::pkgProblemResolver=yes --yes --no-install-recommends" && \
apt-get --yes --fix-broken install && \
rm -f /etc/apt/auth.conf
ENV DEB_BUILD_OPTIONS="parallel=1"
RUN . ~/.env && dch -b -M -v "${VERSION}-${BUILD_NUMBER}-${GIT_SHA}~${CODENAME}" \
--force-distribution -D "${CODENAME}" "Nightly build, ${GIT_SHA}"
RUN . ~/.env && ./debian/util.sh create-orig -n -V${VERSION}-${BUILD_NUMBER}-${GIT_SHA} -x
RUN dpkg-source \
--diff-ignore=.* \
--compression=xz \
--compression-level=9 \
--build \
. \
&& debuild -b -us -uc \
&& mkdir OUT \
&& mv -v ../*.{deb,dsc,changes,tar.*} OUT/.
# Artifacts image (mandatory part, the resulting image must have a single filesystem layer)
FROM scratch
COPY --from=builder /data/OUT/ /

View File

@ -0,0 +1,102 @@
ARG BUILDER_IMAGE=arm32v7/debian:bullseye-20240513
FROM --platform=linux/arm32 ${BUILDER_IMAGE} AS builder
ARG MAINTAINER_NAME="Andrey Volk"
ARG MAINTAINER_EMAIL="andrey@signalwire.com"
# Credentials
ARG REPO_DOMAIN=freeswitch.signalwire.com
ARG REPO_USERNAME=user
ARG BUILD_NUMBER=42
ARG GIT_SHA=0000000000
ARG DATA_DIR=/data
ARG CODENAME=bullseye
ARG GPG_KEY="/usr/share/keyrings/signalwire-freeswitch-repo.gpg"
MAINTAINER "${MAINTAINER_NAME} <${MAINTAINER_EMAIL}>"
SHELL ["/bin/bash", "-c"]
RUN apt-get -q update && \
DEBIAN_FRONTEND=noninteractive apt-get -yq install \
apt-transport-https \
build-essential \
ca-certificates \
cmake \
curl \
debhelper \
devscripts \
dh-autoreconf \
dos2unix \
doxygen \
git \
graphviz \
libglib2.0-dev \
libssl-dev \
lsb-release \
pkg-config \
wget
RUN update-ca-certificates --fresh
RUN echo "export CODENAME=${CODENAME}" | tee ~/.env && \
chmod +x ~/.env
RUN . ~/.env && cat <<EOF > /etc/apt/sources.list.d/freeswitch.list
deb [signed-by=${GPG_KEY}] https://${REPO_DOMAIN}/repo/deb/rpi/debian-release ${CODENAME} main
deb-src [signed-by=${GPG_KEY}] https://${REPO_DOMAIN}/repo/deb/rpi/debian-release ${CODENAME} main
EOF
RUN git config --global --add safe.directory '*' \
&& git config --global user.name "${MAINTAINER_NAME}" \
&& git config --global user.email "${MAINTAINER_EMAIL}"
# Bootstrap and Build
COPY . ${DATA_DIR}
WORKDIR ${DATA_DIR}
RUN echo "export VERSION=$(cat ./build/next-release.txt | tr -d '\n')" | tee -a ~/.env
RUN . ~/.env && ./debian/util.sh prep-create-orig -n -V${VERSION}-${BUILD_NUMBER}-${GIT_SHA} -x
RUN . ~/.env && ./debian/util.sh prep-create-dsc -a armhf ${CODENAME}
RUN --mount=type=secret,id=REPO_PASSWORD,required=true \
printf "machine ${REPO_DOMAIN} " > /etc/apt/auth.conf && \
printf "login ${REPO_USERNAME} " >> /etc/apt/auth.conf && \
printf "password " >> /etc/apt/auth.conf && \
cat /run/secrets/REPO_PASSWORD >> /etc/apt/auth.conf && \
sha512sum /run/secrets/REPO_PASSWORD && \
curl \
--fail \
--netrc-file /etc/apt/auth.conf \
--output ${GPG_KEY} \
https://${REPO_DOMAIN}/repo/deb/rpi/debian-release/signalwire-freeswitch-repo.gpg && \
file ${GPG_KEY} && \
apt-get --quiet update && \
mk-build-deps \
--install \
--remove debian/control \
--tool "apt-get -o Debug::pkgProblemResolver=yes --yes --no-install-recommends" && \
apt-get --yes --fix-broken install && \
rm -f /etc/apt/auth.conf
ENV DEB_BUILD_OPTIONS="parallel=1"
RUN . ~/.env && dch -b -M -v "${VERSION}-${BUILD_NUMBER}-${GIT_SHA}~${CODENAME}" \
--force-distribution -D "${CODENAME}" "Nightly build, ${GIT_SHA}"
RUN . ~/.env && ./debian/util.sh create-orig -n -V${VERSION}-${BUILD_NUMBER}-${GIT_SHA} -x
RUN dpkg-source \
--diff-ignore=.* \
--compression=xz \
--compression-level=9 \
--build \
. \
&& debuild -b -us -uc \
&& mkdir OUT \
&& mv -v ../*.{deb,dsc,changes,tar.*} OUT/.
# Artifacts image (mandatory part, the resulting image must have a single filesystem layer)
FROM scratch
COPY --from=builder /data/OUT/ /

View File

@ -0,0 +1,102 @@
ARG BUILDER_IMAGE=arm32v7/debian:bullseye-20240513
FROM --platform=linux/arm32 ${BUILDER_IMAGE} AS builder
ARG MAINTAINER_NAME="Andrey Volk"
ARG MAINTAINER_EMAIL="andrey@signalwire.com"
# Credentials
ARG REPO_DOMAIN=freeswitch.signalwire.com
ARG REPO_USERNAME=user
ARG BUILD_NUMBER=42
ARG GIT_SHA=0000000000
ARG DATA_DIR=/data
ARG CODENAME=bullseye
ARG GPG_KEY="/usr/share/keyrings/signalwire-freeswitch-repo.gpg"
MAINTAINER "${MAINTAINER_NAME} <${MAINTAINER_EMAIL}>"
SHELL ["/bin/bash", "-c"]
RUN apt-get -q update && \
DEBIAN_FRONTEND=noninteractive apt-get -yq install \
apt-transport-https \
build-essential \
ca-certificates \
cmake \
curl \
debhelper \
devscripts \
dh-autoreconf \
dos2unix \
doxygen \
git \
graphviz \
libglib2.0-dev \
libssl-dev \
lsb-release \
pkg-config \
wget
RUN update-ca-certificates --fresh
RUN echo "export CODENAME=${CODENAME}" | tee ~/.env && \
chmod +x ~/.env
RUN . ~/.env && cat <<EOF > /etc/apt/sources.list.d/freeswitch.list
deb [signed-by=${GPG_KEY}] https://${REPO_DOMAIN}/repo/deb/rpi/debian-dev ${CODENAME} main
deb-src [signed-by=${GPG_KEY}] https://${REPO_DOMAIN}/repo/deb/rpi/debian-dev ${CODENAME} main
EOF
RUN git config --global --add safe.directory '*' \
&& git config --global user.name "${MAINTAINER_NAME}" \
&& git config --global user.email "${MAINTAINER_EMAIL}"
# Bootstrap and Build
COPY . ${DATA_DIR}
WORKDIR ${DATA_DIR}
RUN echo "export VERSION=$(cat ./build/next-release.txt | tr -d '\n')" | tee -a ~/.env
RUN . ~/.env && ./debian/util.sh prep-create-orig -n -V${VERSION}-${BUILD_NUMBER}-${GIT_SHA} -x
RUN . ~/.env && ./debian/util.sh prep-create-dsc -a armhf ${CODENAME}
RUN --mount=type=secret,id=REPO_PASSWORD,required=true \
printf "machine ${REPO_DOMAIN} " > /etc/apt/auth.conf && \
printf "login ${REPO_USERNAME} " >> /etc/apt/auth.conf && \
printf "password " >> /etc/apt/auth.conf && \
cat /run/secrets/REPO_PASSWORD >> /etc/apt/auth.conf && \
sha512sum /run/secrets/REPO_PASSWORD && \
curl \
--fail \
--netrc-file /etc/apt/auth.conf \
--output ${GPG_KEY} \
https://${REPO_DOMAIN}/repo/deb/rpi/debian-dev/signalwire-freeswitch-repo.gpg && \
file ${GPG_KEY} && \
apt-get --quiet update && \
mk-build-deps \
--install \
--remove debian/control \
--tool "apt-get -o Debug::pkgProblemResolver=yes --yes --no-install-recommends" && \
apt-get --yes --fix-broken install && \
rm -f /etc/apt/auth.conf
ENV DEB_BUILD_OPTIONS="parallel=1"
RUN . ~/.env && dch -b -M -v "${VERSION}-${BUILD_NUMBER}-${GIT_SHA}~${CODENAME}" \
--force-distribution -D "${CODENAME}" "Nightly build, ${GIT_SHA}"
RUN . ~/.env && ./debian/util.sh create-orig -n -V${VERSION}-${BUILD_NUMBER}-${GIT_SHA} -x
RUN dpkg-source \
--diff-ignore=.* \
--compression=xz \
--compression-level=9 \
--build \
. \
&& debuild -b -us -uc \
&& mkdir OUT \
&& mv -v ../*.{deb,dsc,changes,tar.*} OUT/.
# Artifacts image (mandatory part, the resulting image must have a single filesystem layer)
FROM scratch
COPY --from=builder /data/OUT/ /

View File

@ -0,0 +1,102 @@
ARG BUILDER_IMAGE=arm64v8/debian:bullseye-20240513
FROM --platform=linux/arm64 ${BUILDER_IMAGE} AS builder
ARG MAINTAINER_NAME="Andrey Volk"
ARG MAINTAINER_EMAIL="andrey@signalwire.com"
# Credentials
ARG REPO_DOMAIN=freeswitch.signalwire.com
ARG REPO_USERNAME=user
ARG BUILD_NUMBER=42
ARG GIT_SHA=0000000000
ARG DATA_DIR=/data
ARG CODENAME=bullseye
ARG GPG_KEY="/usr/share/keyrings/signalwire-freeswitch-repo.gpg"
MAINTAINER "${MAINTAINER_NAME} <${MAINTAINER_EMAIL}>"
SHELL ["/bin/bash", "-c"]
RUN apt-get -q update && \
DEBIAN_FRONTEND=noninteractive apt-get -yq install \
apt-transport-https \
build-essential \
ca-certificates \
cmake \
curl \
debhelper \
devscripts \
dh-autoreconf \
dos2unix \
doxygen \
git \
graphviz \
libglib2.0-dev \
libssl-dev \
lsb-release \
pkg-config \
wget
RUN update-ca-certificates --fresh
RUN echo "export CODENAME=${CODENAME}" | tee ~/.env && \
chmod +x ~/.env
RUN . ~/.env && cat <<EOF > /etc/apt/sources.list.d/freeswitch.list
deb [signed-by=${GPG_KEY}] https://${REPO_DOMAIN}/repo/deb/debian-release ${CODENAME} main
deb-src [signed-by=${GPG_KEY}] https://${REPO_DOMAIN}/repo/deb/debian-release ${CODENAME} main
EOF
RUN git config --global --add safe.directory '*' \
&& git config --global user.name "${MAINTAINER_NAME}" \
&& git config --global user.email "${MAINTAINER_EMAIL}"
# Bootstrap and Build
COPY . ${DATA_DIR}
WORKDIR ${DATA_DIR}
RUN echo "export VERSION=$(cat ./build/next-release.txt | tr -d '\n')" | tee -a ~/.env
RUN . ~/.env && ./debian/util.sh prep-create-orig -n -V${VERSION}-${BUILD_NUMBER}-${GIT_SHA} -x
RUN . ~/.env && ./debian/util.sh prep-create-dsc -a arm64 ${CODENAME}
RUN --mount=type=secret,id=REPO_PASSWORD,required=true \
printf "machine ${REPO_DOMAIN} " > /etc/apt/auth.conf && \
printf "login ${REPO_USERNAME} " >> /etc/apt/auth.conf && \
printf "password " >> /etc/apt/auth.conf && \
cat /run/secrets/REPO_PASSWORD >> /etc/apt/auth.conf && \
sha512sum /run/secrets/REPO_PASSWORD && \
curl \
--fail \
--netrc-file /etc/apt/auth.conf \
--output ${GPG_KEY} \
https://${REPO_DOMAIN}/repo/deb/debian-release/signalwire-freeswitch-repo.gpg && \
file ${GPG_KEY} && \
apt-get --quiet update && \
mk-build-deps \
--install \
--remove debian/control \
--tool "apt-get -o Debug::pkgProblemResolver=yes --yes --no-install-recommends" && \
apt-get --yes --fix-broken install && \
rm -f /etc/apt/auth.conf
ENV DEB_BUILD_OPTIONS="parallel=1"
RUN . ~/.env && dch -b -M -v "${VERSION}-${BUILD_NUMBER}-${GIT_SHA}~${CODENAME}" \
--force-distribution -D "${CODENAME}" "Nightly build, ${GIT_SHA}"
RUN . ~/.env && ./debian/util.sh create-orig -n -V${VERSION}-${BUILD_NUMBER}-${GIT_SHA} -x
RUN dpkg-source \
--diff-ignore=.* \
--compression=xz \
--compression-level=9 \
--build \
. \
&& debuild -b -us -uc \
&& mkdir OUT \
&& mv -v ../*.{deb,dsc,changes,tar.*} OUT/.
# Artifacts image (mandatory part, the resulting image must have a single filesystem layer)
FROM scratch
COPY --from=builder /data/OUT/ /

View File

@ -0,0 +1,102 @@
ARG BUILDER_IMAGE=arm64v8/debian:bullseye-20240513
FROM --platform=linux/arm64 ${BUILDER_IMAGE} AS builder
ARG MAINTAINER_NAME="Andrey Volk"
ARG MAINTAINER_EMAIL="andrey@signalwire.com"
# Credentials
ARG REPO_DOMAIN=freeswitch.signalwire.com
ARG REPO_USERNAME=user
ARG BUILD_NUMBER=42
ARG GIT_SHA=0000000000
ARG DATA_DIR=/data
ARG CODENAME=bullseye
ARG GPG_KEY="/usr/share/keyrings/signalwire-freeswitch-repo.gpg"
MAINTAINER "${MAINTAINER_NAME} <${MAINTAINER_EMAIL}>"
SHELL ["/bin/bash", "-c"]
RUN apt-get -q update && \
DEBIAN_FRONTEND=noninteractive apt-get -yq install \
apt-transport-https \
build-essential \
ca-certificates \
cmake \
curl \
debhelper \
devscripts \
dh-autoreconf \
dos2unix \
doxygen \
git \
graphviz \
libglib2.0-dev \
libssl-dev \
lsb-release \
pkg-config \
wget
RUN update-ca-certificates --fresh
RUN echo "export CODENAME=${CODENAME}" | tee ~/.env && \
chmod +x ~/.env
RUN . ~/.env && cat <<EOF > /etc/apt/sources.list.d/freeswitch.list
deb [signed-by=${GPG_KEY}] https://${REPO_DOMAIN}/repo/deb/debian-unstable ${CODENAME} main
deb-src [signed-by=${GPG_KEY}] https://${REPO_DOMAIN}/repo/deb/debian-unstable ${CODENAME} main
EOF
RUN git config --global --add safe.directory '*' \
&& git config --global user.name "${MAINTAINER_NAME}" \
&& git config --global user.email "${MAINTAINER_EMAIL}"
# Bootstrap and Build
COPY . ${DATA_DIR}
WORKDIR ${DATA_DIR}
RUN echo "export VERSION=$(cat ./build/next-release.txt | tr -d '\n')" | tee -a ~/.env
RUN . ~/.env && ./debian/util.sh prep-create-orig -n -V${VERSION}-${BUILD_NUMBER}-${GIT_SHA} -x
RUN . ~/.env && ./debian/util.sh prep-create-dsc -a arm64 ${CODENAME}
RUN --mount=type=secret,id=REPO_PASSWORD,required=true \
printf "machine ${REPO_DOMAIN} " > /etc/apt/auth.conf && \
printf "login ${REPO_USERNAME} " >> /etc/apt/auth.conf && \
printf "password " >> /etc/apt/auth.conf && \
cat /run/secrets/REPO_PASSWORD >> /etc/apt/auth.conf && \
sha512sum /run/secrets/REPO_PASSWORD && \
curl \
--fail \
--netrc-file /etc/apt/auth.conf \
--output ${GPG_KEY} \
https://${REPO_DOMAIN}/repo/deb/debian-unstable/signalwire-freeswitch-repo.gpg && \
file ${GPG_KEY} && \
apt-get --quiet update && \
mk-build-deps \
--install \
--remove debian/control \
--tool "apt-get -o Debug::pkgProblemResolver=yes --yes --no-install-recommends" && \
apt-get --yes --fix-broken install && \
rm -f /etc/apt/auth.conf
ENV DEB_BUILD_OPTIONS="parallel=1"
RUN . ~/.env && dch -b -M -v "${VERSION}-${BUILD_NUMBER}-${GIT_SHA}~${CODENAME}" \
--force-distribution -D "${CODENAME}" "Nightly build, ${GIT_SHA}"
RUN . ~/.env && ./debian/util.sh create-orig -n -V${VERSION}-${BUILD_NUMBER}-${GIT_SHA} -x
RUN dpkg-source \
--diff-ignore=.* \
--compression=xz \
--compression-level=9 \
--build \
. \
&& debuild -b -us -uc \
&& mkdir OUT \
&& mv -v ../*.{deb,dsc,changes,tar.*} OUT/.
# Artifacts image (mandatory part, the resulting image must have a single filesystem layer)
FROM scratch
COPY --from=builder /data/OUT/ /

Binary file not shown.

View File

@ -0,0 +1,85 @@
ARG BUILDER_IMAGE=debian:trixie-20250520
FROM ${BUILDER_IMAGE} AS builder
ARG MAINTAINER_NAME="Andrey Volk"
ARG MAINTAINER_EMAIL="andrey@signalwire.com"
ARG BUILD_NUMBER=42
ARG GIT_SHA=0000000000
ARG DATA_DIR=/data
ARG CODENAME=trixie
LABEL org.opencontainers.image.authors="${MAINTAINER_EMAIL}"
SHELL ["/bin/bash", "-c"]
RUN apt-get -q update && \
DEBIAN_FRONTEND=noninteractive apt-get -yq install \
apt-transport-https \
build-essential \
ca-certificates \
cmake \
curl \
debhelper \
devscripts \
dh-autoreconf \
dos2unix \
doxygen \
git \
graphviz \
libglib2.0-dev \
libssl-dev \
lsb-release \
pkg-config \
wget
RUN update-ca-certificates --fresh
RUN echo "export CODENAME=${CODENAME}" | tee ~/.env && \
chmod +x ~/.env
RUN git config --global --add safe.directory '*' \
&& git config --global user.name "${MAINTAINER_NAME}" \
&& git config --global user.email "${MAINTAINER_EMAIL}"
# Bootstrap and Build
COPY . ${DATA_DIR}
WORKDIR ${DATA_DIR}
RUN echo "export VERSION=$(cat ./build/next-release.txt | tr -d '\n')" | tee -a ~/.env
RUN . ~/.env && ./debian/util.sh prep-create-orig -n -V${VERSION}-${BUILD_NUMBER}-${GIT_SHA} -x
RUN . ~/.env && ./debian/util.sh prep-create-dsc ${CODENAME}
RUN --mount=type=secret,id=REPO_PASSWORD,required=true \
sha512sum /run/secrets/REPO_PASSWORD && \
curl -sSL https://freeswitch.org/fsget | \
bash -s $(cat /run/secrets/REPO_PASSWORD) prerelease && \
apt-get --quiet update && \
mk-build-deps \
--install \
--remove debian/control \
--tool "apt-get -o Debug::pkgProblemResolver=yes --yes --no-install-recommends" && \
apt-get --yes --fix-broken install && \
rm -f /etc/apt/auth.conf
ENV DEB_BUILD_OPTIONS="parallel=1"
RUN . ~/.env && dch -b -M -v "${VERSION}-${BUILD_NUMBER}-${GIT_SHA}~${CODENAME}" \
--force-distribution -D "${CODENAME}" "Nightly build, ${GIT_SHA}"
RUN . ~/.env && ./debian/util.sh create-orig -n -V${VERSION}-${BUILD_NUMBER}-${GIT_SHA} -x
RUN dpkg-source \
--diff-ignore=.* \
--compression=xz \
--compression-level=9 \
--build \
. \
&& debuild -b -us -uc \
&& mkdir OUT \
&& mv -v ../*.{deb,dsc,changes,tar.*} OUT/.
# Artifacts image (mandatory part, the resulting image must have a single filesystem layer)
FROM scratch
COPY --from=builder /data/OUT/ /

View File

@ -0,0 +1,85 @@
ARG BUILDER_IMAGE=debian:trixie-20250520
FROM ${BUILDER_IMAGE} AS builder
ARG MAINTAINER_NAME="Andrey Volk"
ARG MAINTAINER_EMAIL="andrey@signalwire.com"
ARG BUILD_NUMBER=42
ARG GIT_SHA=0000000000
ARG DATA_DIR=/data
ARG CODENAME=trixie
LABEL org.opencontainers.image.authors="${MAINTAINER_EMAIL}"
SHELL ["/bin/bash", "-c"]
RUN apt-get -q update && \
DEBIAN_FRONTEND=noninteractive apt-get -yq install \
apt-transport-https \
build-essential \
ca-certificates \
cmake \
curl \
debhelper \
devscripts \
dh-autoreconf \
dos2unix \
doxygen \
git \
graphviz \
libglib2.0-dev \
libssl-dev \
lsb-release \
pkg-config \
wget
RUN update-ca-certificates --fresh
RUN echo "export CODENAME=${CODENAME}" | tee ~/.env && \
chmod +x ~/.env
RUN git config --global --add safe.directory '*' \
&& git config --global user.name "${MAINTAINER_NAME}" \
&& git config --global user.email "${MAINTAINER_EMAIL}"
# Bootstrap and Build
COPY . ${DATA_DIR}
WORKDIR ${DATA_DIR}
RUN echo "export VERSION=$(cat ./build/next-release.txt | tr -d '\n')" | tee -a ~/.env
RUN . ~/.env && ./debian/util.sh prep-create-orig -n -V${VERSION}-${BUILD_NUMBER}-${GIT_SHA} -x
RUN . ~/.env && ./debian/util.sh prep-create-dsc ${CODENAME}
RUN --mount=type=secret,id=REPO_PASSWORD,required=true \
sha512sum /run/secrets/REPO_PASSWORD && \
curl -sSL https://freeswitch.org/fsget | \
bash -s $(cat /run/secrets/REPO_PASSWORD) prerelease && \
apt-get --quiet update && \
mk-build-deps \
--install \
--remove debian/control \
--tool "apt-get -o Debug::pkgProblemResolver=yes --yes --no-install-recommends" && \
apt-get --yes --fix-broken install && \
rm -f /etc/apt/auth.conf
ENV DEB_BUILD_OPTIONS="parallel=1"
RUN . ~/.env && dch -b -M -v "${VERSION}-${BUILD_NUMBER}-${GIT_SHA}~${CODENAME}" \
--force-distribution -D "${CODENAME}" "Nightly build, ${GIT_SHA}"
RUN . ~/.env && ./debian/util.sh create-orig -n -V${VERSION}-${BUILD_NUMBER}-${GIT_SHA} -x
RUN dpkg-source \
--diff-ignore=.* \
--compression=xz \
--compression-level=9 \
--build \
. \
&& debuild -b -us -uc \
&& mkdir OUT \
&& mv -v ../*.{deb,dsc,changes,tar.*} OUT/.
# Artifacts image (mandatory part, the resulting image must have a single filesystem layer)
FROM scratch
COPY --from=builder /data/OUT/ /

View File

@ -0,0 +1,85 @@
ARG BUILDER_IMAGE=arm32v7/debian:trixie-20250520
FROM --platform=linux/arm/v7 ${BUILDER_IMAGE} AS builder
ARG MAINTAINER_NAME="Andrey Volk"
ARG MAINTAINER_EMAIL="andrey@signalwire.com"
ARG BUILD_NUMBER=42
ARG GIT_SHA=0000000000
ARG DATA_DIR=/data
ARG CODENAME=trixie
LABEL org.opencontainers.image.authors="${MAINTAINER_EMAIL}"
SHELL ["/bin/bash", "-c"]
RUN apt-get -q update && \
DEBIAN_FRONTEND=noninteractive apt-get -yq install \
apt-transport-https \
build-essential \
ca-certificates \
cmake \
curl \
debhelper \
devscripts \
dh-autoreconf \
dos2unix \
doxygen \
git \
graphviz \
libglib2.0-dev \
libssl-dev \
lsb-release \
pkg-config \
wget
RUN update-ca-certificates --fresh
RUN echo "export CODENAME=${CODENAME}" | tee ~/.env && \
chmod +x ~/.env
RUN git config --global --add safe.directory '*' \
&& git config --global user.name "${MAINTAINER_NAME}" \
&& git config --global user.email "${MAINTAINER_EMAIL}"
# Bootstrap and Build
COPY . ${DATA_DIR}
WORKDIR ${DATA_DIR}
RUN echo "export VERSION=$(cat ./build/next-release.txt | tr -d '\n')" | tee -a ~/.env
RUN . ~/.env && ./debian/util.sh prep-create-orig -n -V${VERSION}-${BUILD_NUMBER}-${GIT_SHA} -x
RUN . ~/.env && ./debian/util.sh prep-create-dsc -a armhf ${CODENAME}
RUN --mount=type=secret,id=REPO_PASSWORD,required=true \
sha512sum /run/secrets/REPO_PASSWORD && \
curl -sSL https://freeswitch.org/fsget | \
bash -s $(cat /run/secrets/REPO_PASSWORD) prerelease && \
apt-get --quiet update && \
mk-build-deps \
--install \
--remove debian/control \
--tool "apt-get -o Debug::pkgProblemResolver=yes --yes --no-install-recommends" && \
apt-get --yes --fix-broken install && \
rm -f /etc/apt/auth.conf
ENV DEB_BUILD_OPTIONS="parallel=1"
RUN . ~/.env && dch -b -M -v "${VERSION}-${BUILD_NUMBER}-${GIT_SHA}~${CODENAME}" \
--force-distribution -D "${CODENAME}" "Nightly build, ${GIT_SHA}"
RUN . ~/.env && ./debian/util.sh create-orig -n -V${VERSION}-${BUILD_NUMBER}-${GIT_SHA} -x
RUN dpkg-source \
--diff-ignore=.* \
--compression=xz \
--compression-level=9 \
--build \
. \
&& debuild -b -us -uc \
&& mkdir OUT \
&& mv -v ../*.{deb,dsc,changes,tar.*} OUT/.
# Artifacts image (mandatory part, the resulting image must have a single filesystem layer)
FROM scratch
COPY --from=builder /data/OUT/ /

View File

@ -0,0 +1,85 @@
ARG BUILDER_IMAGE=arm32v7/debian:trixie-20250520
FROM --platform=linux/arm/v7 ${BUILDER_IMAGE} AS builder
ARG MAINTAINER_NAME="Andrey Volk"
ARG MAINTAINER_EMAIL="andrey@signalwire.com"
ARG BUILD_NUMBER=42
ARG GIT_SHA=0000000000
ARG DATA_DIR=/data
ARG CODENAME=trixie
LABEL org.opencontainers.image.authors="${MAINTAINER_EMAIL}"
SHELL ["/bin/bash", "-c"]
RUN apt-get -q update && \
DEBIAN_FRONTEND=noninteractive apt-get -yq install \
apt-transport-https \
build-essential \
ca-certificates \
cmake \
curl \
debhelper \
devscripts \
dh-autoreconf \
dos2unix \
doxygen \
git \
graphviz \
libglib2.0-dev \
libssl-dev \
lsb-release \
pkg-config \
wget
RUN update-ca-certificates --fresh
RUN echo "export CODENAME=${CODENAME}" | tee ~/.env && \
chmod +x ~/.env
RUN git config --global --add safe.directory '*' \
&& git config --global user.name "${MAINTAINER_NAME}" \
&& git config --global user.email "${MAINTAINER_EMAIL}"
# Bootstrap and Build
COPY . ${DATA_DIR}
WORKDIR ${DATA_DIR}
RUN echo "export VERSION=$(cat ./build/next-release.txt | tr -d '\n')" | tee -a ~/.env
RUN . ~/.env && ./debian/util.sh prep-create-orig -n -V${VERSION}-${BUILD_NUMBER}-${GIT_SHA} -x
RUN . ~/.env && ./debian/util.sh prep-create-dsc -a armhf ${CODENAME}
RUN --mount=type=secret,id=REPO_PASSWORD,required=true \
sha512sum /run/secrets/REPO_PASSWORD && \
curl -sSL https://freeswitch.org/fsget | \
bash -s $(cat /run/secrets/REPO_PASSWORD) prerelease && \
apt-get --quiet update && \
mk-build-deps \
--install \
--remove debian/control \
--tool "apt-get -o Debug::pkgProblemResolver=yes --yes --no-install-recommends" && \
apt-get --yes --fix-broken install && \
rm -f /etc/apt/auth.conf
ENV DEB_BUILD_OPTIONS="parallel=1"
RUN . ~/.env && dch -b -M -v "${VERSION}-${BUILD_NUMBER}-${GIT_SHA}~${CODENAME}" \
--force-distribution -D "${CODENAME}" "Nightly build, ${GIT_SHA}"
RUN . ~/.env && ./debian/util.sh create-orig -n -V${VERSION}-${BUILD_NUMBER}-${GIT_SHA} -x
RUN dpkg-source \
--diff-ignore=.* \
--compression=xz \
--compression-level=9 \
--build \
. \
&& debuild -b -us -uc \
&& mkdir OUT \
&& mv -v ../*.{deb,dsc,changes,tar.*} OUT/.
# Artifacts image (mandatory part, the resulting image must have a single filesystem layer)
FROM scratch
COPY --from=builder /data/OUT/ /

View File

@ -0,0 +1,85 @@
ARG BUILDER_IMAGE=arm64v8/debian:trixie-20250520
FROM --platform=linux/arm64 ${BUILDER_IMAGE} AS builder
ARG MAINTAINER_NAME="Andrey Volk"
ARG MAINTAINER_EMAIL="andrey@signalwire.com"
ARG BUILD_NUMBER=42
ARG GIT_SHA=0000000000
ARG DATA_DIR=/data
ARG CODENAME=trixie
LABEL org.opencontainers.image.authors="${MAINTAINER_EMAIL}"
SHELL ["/bin/bash", "-c"]
RUN apt-get -q update && \
DEBIAN_FRONTEND=noninteractive apt-get -yq install \
apt-transport-https \
build-essential \
ca-certificates \
cmake \
curl \
debhelper \
devscripts \
dh-autoreconf \
dos2unix \
doxygen \
git \
graphviz \
libglib2.0-dev \
libssl-dev \
lsb-release \
pkg-config \
wget
RUN update-ca-certificates --fresh
RUN echo "export CODENAME=${CODENAME}" | tee ~/.env && \
chmod +x ~/.env
RUN git config --global --add safe.directory '*' \
&& git config --global user.name "${MAINTAINER_NAME}" \
&& git config --global user.email "${MAINTAINER_EMAIL}"
# Bootstrap and Build
COPY . ${DATA_DIR}
WORKDIR ${DATA_DIR}
RUN echo "export VERSION=$(cat ./build/next-release.txt | tr -d '\n')" | tee -a ~/.env
RUN . ~/.env && ./debian/util.sh prep-create-orig -n -V${VERSION}-${BUILD_NUMBER}-${GIT_SHA} -x
RUN . ~/.env && ./debian/util.sh prep-create-dsc -a arm64 ${CODENAME}
RUN --mount=type=secret,id=REPO_PASSWORD,required=true \
sha512sum /run/secrets/REPO_PASSWORD && \
curl -sSL https://freeswitch.org/fsget | \
bash -s $(cat /run/secrets/REPO_PASSWORD) prerelease && \
apt-get --quiet update && \
mk-build-deps \
--install \
--remove debian/control \
--tool "apt-get -o Debug::pkgProblemResolver=yes --yes --no-install-recommends" && \
apt-get --yes --fix-broken install && \
rm -f /etc/apt/auth.conf
ENV DEB_BUILD_OPTIONS="parallel=1"
RUN . ~/.env && dch -b -M -v "${VERSION}-${BUILD_NUMBER}-${GIT_SHA}~${CODENAME}" \
--force-distribution -D "${CODENAME}" "Nightly build, ${GIT_SHA}"
RUN . ~/.env && ./debian/util.sh create-orig -n -V${VERSION}-${BUILD_NUMBER}-${GIT_SHA} -x
RUN dpkg-source \
--diff-ignore=.* \
--compression=xz \
--compression-level=9 \
--build \
. \
&& debuild -b -us -uc \
&& mkdir OUT \
&& mv -v ../*.{deb,dsc,changes,tar.*} OUT/.
# Artifacts image (mandatory part, the resulting image must have a single filesystem layer)
FROM scratch
COPY --from=builder /data/OUT/ /

View File

@ -0,0 +1,85 @@
ARG BUILDER_IMAGE=arm64v8/debian:trixie-20250520
FROM --platform=linux/arm64 ${BUILDER_IMAGE} AS builder
ARG MAINTAINER_NAME="Andrey Volk"
ARG MAINTAINER_EMAIL="andrey@signalwire.com"
ARG BUILD_NUMBER=42
ARG GIT_SHA=0000000000
ARG DATA_DIR=/data
ARG CODENAME=trixie
LABEL org.opencontainers.image.authors="${MAINTAINER_EMAIL}"
SHELL ["/bin/bash", "-c"]
RUN apt-get -q update && \
DEBIAN_FRONTEND=noninteractive apt-get -yq install \
apt-transport-https \
build-essential \
ca-certificates \
cmake \
curl \
debhelper \
devscripts \
dh-autoreconf \
dos2unix \
doxygen \
git \
graphviz \
libglib2.0-dev \
libssl-dev \
lsb-release \
pkg-config \
wget
RUN update-ca-certificates --fresh
RUN echo "export CODENAME=${CODENAME}" | tee ~/.env && \
chmod +x ~/.env
RUN git config --global --add safe.directory '*' \
&& git config --global user.name "${MAINTAINER_NAME}" \
&& git config --global user.email "${MAINTAINER_EMAIL}"
# Bootstrap and Build
COPY . ${DATA_DIR}
WORKDIR ${DATA_DIR}
RUN echo "export VERSION=$(cat ./build/next-release.txt | tr -d '\n')" | tee -a ~/.env
RUN . ~/.env && ./debian/util.sh prep-create-orig -n -V${VERSION}-${BUILD_NUMBER}-${GIT_SHA} -x
RUN . ~/.env && ./debian/util.sh prep-create-dsc -a arm64 ${CODENAME}
RUN --mount=type=secret,id=REPO_PASSWORD,required=true \
sha512sum /run/secrets/REPO_PASSWORD && \
curl -sSL https://freeswitch.org/fsget | \
bash -s $(cat /run/secrets/REPO_PASSWORD) prerelease && \
apt-get --quiet update && \
mk-build-deps \
--install \
--remove debian/control \
--tool "apt-get -o Debug::pkgProblemResolver=yes --yes --no-install-recommends" && \
apt-get --yes --fix-broken install && \
rm -f /etc/apt/auth.conf
ENV DEB_BUILD_OPTIONS="parallel=1"
RUN . ~/.env && dch -b -M -v "${VERSION}-${BUILD_NUMBER}-${GIT_SHA}~${CODENAME}" \
--force-distribution -D "${CODENAME}" "Nightly build, ${GIT_SHA}"
RUN . ~/.env && ./debian/util.sh create-orig -n -V${VERSION}-${BUILD_NUMBER}-${GIT_SHA} -x
RUN dpkg-source \
--diff-ignore=.* \
--compression=xz \
--compression-level=9 \
--build \
. \
&& debuild -b -us -uc \
&& mkdir OUT \
&& mv -v ../*.{deb,dsc,changes,tar.*} OUT/.
# Artifacts image (mandatory part, the resulting image must have a single filesystem layer)
FROM scratch
COPY --from=builder /data/OUT/ /

208
.github/workflows/build.yml vendored Normal file
View File

@ -0,0 +1,208 @@
name: Build and Distribute
on:
pull_request:
push:
branches:
- master
- v1.10
paths:
- "**"
workflow_dispatch:
inputs:
freeswitch_ref:
description: "FreeSWITCH repository ref"
required: true
default: master
type: string
release:
description: "FreeSWITCH release type"
type: choice
required: true
default: unstable
options:
- release
- unstable
publish:
description: "Publish build data"
required: true
default: false
type: boolean
concurrency:
group: ${{ github.head_ref || github.ref }}
jobs:
preconfig:
name: "Preconfig"
runs-on: ubuntu-latest
outputs:
deb: ${{ steps.deb.outputs.excludes }}
release: ${{ steps.release.outputs.release }}
steps:
- name: Generate Matrix excludes for DEB
id: deb
run: |
JSON="[]"
if [[ "${{ github.event_name }}" == "pull_request" ]]; then
JSON=$(jq -n '[
{
"version": "bookworm",
"platform": {
"name": "arm64v8"
}
},
{
"version": "bullseye",
"platform": {
"name": "arm32v7"
}
}
]')
fi
echo "excludes=$(echo $JSON | jq -c .)" | tee -a $GITHUB_OUTPUT
- name: Get release type based on branch
id: release
run: |
if [[ '${{ github.event_name }}' == 'pull_request' ]]; then
if [[ '${{ github.base_ref }}' == 'v1.10' ]]; then
echo 'release=release' | tee -a $GITHUB_OUTPUT
else
echo 'release=unstable' | tee -a $GITHUB_OUTPUT
fi
elif [[ '${{ github.event_name }}' == 'workflow_dispatch' ]]; then
echo 'release=${{ inputs.release }}' | tee -a $GITHUB_OUTPUT
elif [[ '${{ github.ref }}' == 'refs/heads/v1.10' ]]; then
echo 'release=release' | tee -a $GITHUB_OUTPUT
else
echo 'release=unstable' | tee -a $GITHUB_OUTPUT
fi
get-nonce:
name: "Get Nonce for token"
runs-on: freeswitch-repo-auth-client
outputs:
nonce: ${{ steps.get-nonce.outputs.nonce }}
steps:
- name: Get Nonce
id: get-nonce
uses: signalwire/actions-template/.github/actions/repo-auth-client@main
with:
mode: nonce
issue-token:
name: "Issue temporary token"
runs-on: ubuntu-latest
needs: get-nonce
env:
NONCE: ${{ needs.get-nonce.outputs.nonce }}
outputs:
token: ${{ steps.issue-token.outputs.token }}
steps:
- name: Mask Token
run: echo "::add-mask::$NONCE"
- name: Issue Token
id: issue-token
uses: signalwire/actions-template/.github/actions/repo-auth-client@main
env:
NONCE: ${{ needs.get-nonce.outputs.nonce }}
with:
mode: issue
deb-public:
name: "DEB-PUBLIC"
permissions:
id-token: write
contents: read
needs:
- preconfig
- issue-token
uses: signalwire/actions-template/.github/workflows/cicd-docker-build-and-distribute.yml@main
strategy:
# max-parallel: 1
fail-fast: false
matrix:
os:
- debian
version:
- trixie
- bookworm
- bullseye
platform:
- name: amd64
runner: ubuntu-latest
- name: arm32v7
runner: ubuntu-24.04-arm
- name: arm64v8
runner: ubuntu-24.04-arm
release:
- ${{ needs.preconfig.outputs.release }}
exclude: ${{ fromJson(needs.preconfig.outputs.deb) }}
with:
RUNNER: ${{ matrix.platform.runner }}
REF: ${{ inputs.freeswitch_ref }}
ARTIFACTS_PATTERN: '.*\.(deb|dsc|changes|tar.bz2|tar.gz|tar.lzma|tar.xz)$'
DOCKERFILE: .github/docker/${{ matrix.os }}/${{ matrix.version }}/${{ matrix.platform.name }}/public.${{ matrix.release }}.Dockerfile
MAINTAINER: "Andrey Volk <andrey@signalwire.com>"
META_FILE_PATH_PREFIX: /var/www/freeswitch/public/${{ matrix.release }}/${{ github.ref_name }}/${{ github.run_id }}-${{ github.run_number }}
PLATFORM: ${{ matrix.platform.name }}
REPO_DOMAIN: "freeswitch.signalwire.com"
TARGET_ARTIFACT_NAME: ${{ matrix.os }}-${{ matrix.version }}-${{ matrix.platform.name }}-public-${{ matrix.release }}-artifact
UPLOAD_BUILD_ARTIFACTS: >-
${{
(
github.event_name == 'push' &&
github.repository == 'signalwire/freeswitch' &&
contains(fromJSON('["master", "v1.10"]'), github.ref_name)
) ||
(github.event_name == 'workflow_dispatch' && inputs.publish)
}}
secrets:
GH_BOT_DEPLOY_TOKEN: ${{ secrets.PAT }}
HOSTNAME: ${{ secrets.HOSTNAME }}
PROXY_URL: ${{ secrets.PROXY_URL }}
USERNAME: ${{ secrets.USERNAME }}
TELEPORT_TOKEN: ${{ secrets.TELEPORT_TOKEN }}
REPO_USERNAME: "SWUSERNAME"
REPO_PASSWORD: ${{ needs.issue-token.outputs.token }}
revoke-token:
name: "Revoke temporary token"
runs-on: ubuntu-latest
# if: always()
needs:
- issue-token
- deb-public
steps:
- name: Revoke Token
id: revoke-token
uses: signalwire/actions-template/.github/actions/repo-auth-client@main
env:
TOKEN: ${{ needs.issue-token.outputs.token }}
with:
mode: revoke
meta:
name: "Publish build data to meta-repo"
if: >-
${{
github.event_name == 'push' &&
github.repository == 'signalwire/freeswitch' &&
contains(fromJSON('["master", "v1.10"]'), github.ref_name)
}}
needs:
- deb-public
permissions:
id-token: write
contents: read
uses: signalwire/actions-template/.github/workflows/meta-repo-content.yml@main
with:
META_CONTENT: "/var/www/freeswitch/public/{release,unstable}/${{ github.ref_name }}/${{ github.run_id }}-${{ github.run_number }}"
META_REPO: signalwire/bamboo_gha_trigger
META_REPO_BRANCH: trigger/freeswitch/${{ github.ref_name }}
secrets:
GH_BOT_DEPLOY_TOKEN: ${{ secrets.PAT }}

103
.github/workflows/ci.yml vendored Normal file
View File

@ -0,0 +1,103 @@
name: CI
on:
push:
branches:
- master
- v1.10
pull_request:
types:
- opened
- synchronize
workflow_dispatch:
inputs:
freeswitch_ref:
description: 'FreeSWITCH repository ref'
required: false
type: string
sofia-sip_ref:
description: 'Sofia-Sip repository ref'
required: false
type: string
dind:
description: 'Run tests using Docker-in-Docker'
required: false
type: boolean
default: false
env:
CI_BASE_STATIC_IMAGE: signalwire/freeswitch-public-ci-base:bookworm-amd64
DOCKER_BUILD_SUMMARY: false
DOCKER_BUILD_CHECKS_ANNOTATIONS: false
DOCKER_BUILD_RECORD_UPLOAD: false
jobs:
unit-tests-pre-config:
if: ${{ !inputs.dind }}
name: "Unit-tests pre-config"
runs-on: ubuntu-latest
env:
TOTAL_GROUPS: 2
outputs:
matrix: ${{ steps.set-matrix.outputs.matrix }}
container-image: ${{ steps.set-vars.outputs.container-image }}
working-directory: ${{ steps.set-vars.outputs.working-directory }}
tests-only: ${{ steps.set-vars.outputs.tests-only }}
steps:
- id: set-matrix
shell: bash
run: |
MATRIX=$(jq -c -n --argjson groups "${{ env.TOTAL_GROUPS }}" \
'{
include: [range(1; $groups + 1) | {group: ., total: $groups}]
}')
echo "matrix=$MATRIX" | tee -a $GITHUB_OUTPUT
- id: set-vars
shell: bash
run: |
echo "tests-only=false" >> $GITHUB_OUTPUT
echo "working-directory=freeswitch/tests/unit" >> $GITHUB_OUTPUT
echo "container-image=$CI_BASE_STATIC_IMAGE" >> $GITHUB_OUTPUT
unit-tests:
if: ${{ !inputs.dind }}
name: "Unit-tests (group ${{ matrix.group }})"
needs:
- unit-tests-pre-config
strategy:
fail-fast: false
matrix: ${{ fromJson(needs.unit-tests-pre-config.outputs.matrix) }}
uses: ./.github/workflows/unit-test.yml
with:
total-groups: ${{ matrix.total }}
current-group: ${{ matrix.group }}
container-image: ${{ needs.unit-tests-pre-config.outputs.container-image }}
working-directory: ${{ needs.unit-tests-pre-config.outputs.working-directory }}
tests-only: ${{ fromJson(needs.unit-tests-pre-config.outputs.tests-only) }}
secrets: inherit
validate-unit-tests:
if: ${{ always() && !inputs.dind }}
name: "Validate Unit-tests"
needs: unit-tests
runs-on: ubuntu-latest
steps:
- name: Check unit tests status
run: |
if [ "${{ needs.unit-tests.result }}" != "success" ]; then
exit 1
fi
unit-tests-dind:
if: ${{ inputs.dind }}
name: "Unit-tests D-in-D"
uses: ./.github/workflows/unit-test-dind.yml
with:
freeswitch_ref: ${{ inputs.freeswitch_ref }}
sofia-sip_ref: ${{ inputs.sofia-sip_ref }}
secrets: inherit
scan-build:
name: "Scan Build"
uses: ./.github/workflows/scan-build.yml
secrets: inherit

96
.github/workflows/macos.yml vendored Normal file
View File

@ -0,0 +1,96 @@
name: MacOS Build
on:
workflow_dispatch:
push:
branches:
- master
- v1.10
pull_request:
branches:
- master
- v1.10
jobs:
build:
name: Build MacOS
runs-on: macos-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Install dependencies
run: |
brew update
# brew install libtiff openssl@3
brew install \
autoconf \
automake \
curl \
ffmpeg@5 \
gnu-sed \
jpeg \
ldns \
libpq@16 \
libsndfile \
libtool \
lua \
opus \
ossp-uuid \
pcre2 \
pkgconf \
sofia-sip \
speex \
speexdsp \
sqlite \
yasm \
&& \
brew install \
signalwire/homebrew-signalwire/libks2 \
signalwire/homebrew-signalwire/signalwire-c2 \
signalwire/homebrew-signalwire/spandsp \
&& \
brew link --force --overwrite \
ffmpeg@5 \
libpq@16
- name: Bootstrap FreeSWITCH
run: ./bootstrap.sh -j
# - name: Disable modules
# run: |
# gsed -i \
# -e '/mod_pgsql/s/^/#/g' \
# modules.conf
- name: Configure build
run: |
mkdir -p OUT && \
./configure \
--enable-shared \
--enable-static \
--exec_prefix=${{ github.workspace }}/OUT \
--prefix=${{ github.workspace }}/OUT
- name: Build
run: |
make
- name: Install to local folder
run: |
make install
# - name: Debug - List all files
# run: |
# find . -type f | sort
- name: Upload build artifacts
uses: actions/upload-artifact@v4
if: always()
with:
name: freeswitch-macos-build
path: |
OUT/

100
.github/workflows/scan-build.yml vendored Normal file
View File

@ -0,0 +1,100 @@
name: Scan build (Static Analysis)
on:
workflow_call:
inputs:
freeswitch_ref:
description: 'FreeSWITCH repository ref'
required: false
type: string
sofia-sip_ref:
description: 'Sofia-Sip repository ref'
required: false
type: string
jobs:
scan-build:
runs-on: ubuntu-latest
container:
image: signalwire/freeswitch-public-ci-base:bookworm-amd64
options: --privileged
env:
DEBIAN_FRONTEND: noninteractive
steps:
- name: Checkout Sofia-Sip
if: inputs.sofia-sip_ref == ''
uses: actions/checkout@v4
with:
repository: freeswitch/sofia-sip
path: sofia-sip
- name: Checkout Sofia-Sip (via ref)
if: inputs.sofia-sip_ref != ''
uses: actions/checkout@v4
with:
repository: freeswitch/sofia-sip
ref: ${{ inputs.sofia-sip_ref }}
path: sofia-sip
- name: Checkout FreeSWITCH (via ref)
if: inputs.freeswitch_ref != ''
uses: actions/checkout@v4
with:
ref: ${{ inputs.freeswitch_ref }}
path: freeswitch
- name: Checkout FreeSWITCH
if: inputs.freeswitch_ref == ''
uses: actions/checkout@v4
with:
path: freeswitch
- name: Configure, Build and Install Sofia-Sip
shell: bash
working-directory: freeswitch
run: |
DEBIAN_FRONTEND=noninteractive apt-get install -y libpcre2-dev libsphinxbase-dev libpocketsphinx-dev
./ci.sh -t scan-build -a configure -c sofia-sip -p "$GITHUB_WORKSPACE/sofia-sip"
./ci.sh -t scan-build -a build -c sofia-sip -p "$GITHUB_WORKSPACE/sofia-sip"
./ci.sh -t scan-build -a install -c sofia-sip -p "$GITHUB_WORKSPACE/sofia-sip"
- name: Configure FreeSWITCH
shell: bash
working-directory: freeswitch
run: |
./ci.sh -t scan-build -a configure -c freeswitch -p "$GITHUB_WORKSPACE/freeswitch"
- name: Run scan-build analysis
shell: bash
working-directory: freeswitch
run: |
./ci.sh -t scan-build -a build -c freeswitch -p "$GITHUB_WORKSPACE/freeswitch"
- name: Check analysis results
if: always()
shell: bash
working-directory: freeswitch
run: |
./ci.sh -t scan-build -a validate -c freeswitch -p "$GITHUB_WORKSPACE/freeswitch"
- name: Upload Scan-Build logs
if: failure()
uses: actions/upload-artifact@v4
with:
name: scan-build-logs
path: freeswitch/scan-build
if-no-files-found: ignore
compression-level: 9
- name: Notify run tests result to slack
if: |
failure() &&
github.event_name == 'push' &&
(github.ref == 'refs/heads/master' || github.ref == 'refs/heads/v1.10')
uses: signalwire/actions-template/.github/actions/slack@main
with:
CHANNEL: ${{ secrets.SLACK_DEVOPS_CI_CHANNEL }}
MESSAGE: Scan-Build ${{ github.repository }} > <${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}|${{ github.run_id }}>. Static analysis failed.
env:
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}

100
.github/workflows/unit-test-dind.yml vendored Normal file
View File

@ -0,0 +1,100 @@
name: Unit-tests D-in-D
on:
workflow_call:
inputs:
freeswitch_ref:
description: 'FreeSWITCH repository ref'
required: false
type: string
sofia-sip_ref:
description: 'Sofia-Sip repository ref'
required: false
type: string
env:
MAX_CONTAINERS: 8
NUM_CPU_PER_CONTAINER: 1
DOCKER_BUILD_SUMMARY: false
DOCKER_BUILD_CHECKS_ANNOTATIONS: false
DOCKER_BUILD_RECORD_UPLOAD: false
jobs:
unit-tests:
runs-on: ubuntu-latest
container:
image: signalwire/freeswitch-public-ci-base:bookworm-amd64
options: --privileged
env:
DEBIAN_FRONTEND: noninteractive
ASAN_OPTIONS: log_path=stdout:disable_coredump=0:unmap_shadow_on_exit=1:fast_unwind_on_malloc=0
steps:
- name: Checkout Sofia-Sip (via ref)
if: inputs.sofia-sip_ref != ''
uses: actions/checkout@v4
with:
repository: freeswitch/sofia-sip
ref: ${{ inputs.sofia-sip_ref }}
path: sofia-sip
- name: Checkout Sofia-Sip
if: inputs.sofia-sip_ref == ''
uses: actions/checkout@v4
with:
repository: freeswitch/sofia-sip
path: sofia-sip
- name: Checkout FreeSWITCH (via ref)
if: inputs.freeswitch_ref != ''
uses: actions/checkout@v4
with:
ref: ${{ inputs.freeswitch_ref }}
path: freeswitch
- name: Checkout FreeSWITCH
if: inputs.freeswitch_ref == ''
uses: actions/checkout@v4
with:
path: freeswitch
- name: Run Unit-Test containers and collect artifacts
id: unit_tests
shell: bash
run: |
echo "logs_path=${GITHUB_WORKSPACE}/freeswitch/tests/unit/logs" >> $GITHUB_OUTPUT
"${GITHUB_WORKSPACE}/freeswitch/tests/unit/run-tests-docker.sh" \
--base-image signalwire/freeswitch-public-ci-base:bookworm-amd64 \
--cpus ${{ env.NUM_CPU_PER_CONTAINER }} \
--image-tag ci.local \
--max-containers ${{ env.MAX_CONTAINERS }} \
--output-dir "${GITHUB_WORKSPACE}/freeswitch/tests/unit/logs" \
--sofia-sip-path "${GITHUB_WORKSPACE}/sofia-sip" \
--freeswitch-path "${GITHUB_WORKSPACE}/freeswitch"
test -d "/cores" && ls -lah /cores
cd "${GITHUB_WORKSPACE}/freeswitch/tests/unit/" && \
./collect-test-logs.sh --dir logs --print
- name: Upload Unit-Test logs
if: failure()
uses: actions/upload-artifact@v4
with:
name: test-results-${{ github.sha }}-${{ github.run_number }}
path: ${{ steps.unit_tests.outputs.logs_path }}
if-no-files-found: ignore
compression-level: 9
- name: Notify run tests result to slack
if: |
failure() &&
github.event_name == 'push' &&
(github.ref == 'refs/heads/master' || github.ref == 'refs/heads/v1.10')
uses: signalwire/actions-template/.github/actions/slack@main
with:
CHANNEL: ${{ secrets.SLACK_DEVOPS_CI_CHANNEL }}
MESSAGE: Unit-Tests ${{ github.repository }} > <${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}|${{ github.run_id }}>. Some tests are failing.
env:
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}

137
.github/workflows/unit-test.yml vendored Normal file
View File

@ -0,0 +1,137 @@
name: Unit tests
on:
workflow_call:
inputs:
total-groups:
description: 'Total number of test groups'
required: true
type: number
default: 1
current-group:
description: 'Current test group number'
required: true
type: number
default: 1
freeswitch_ref:
description: 'FreeSWITCH repository ref'
required: false
type: string
sofia-sip_ref:
description: 'Sofia-Sip repository ref'
required: false
type: string
container-image:
description: 'Container image to use for running tests'
required: false
type: string
default: 'signalwire/freeswitch-public-ci-base:bookworm-amd64'
working-directory:
description: 'Working directory for running tests'
required: false
type: string
default: 'freeswitch/tests/unit'
tests-only:
description: 'Run only tests, skip other tasks'
required: false
type: boolean
default: false
jobs:
unit-test:
runs-on: ubuntu-latest
container:
image: ${{ inputs.container-image }}
options: --privileged
env:
DEBIAN_FRONTEND: noninteractive
ASAN_OPTIONS: log_path=stdout:disable_coredump=0:unmap_shadow_on_exit=1:fast_unwind_on_malloc=0
steps:
- name: Override core_pattern
shell: bash
run: |
echo '/cores/core.%s.%E.%e.%p.%t' > /proc/sys/kernel/core_pattern
cat /proc/sys/kernel/core_pattern
- name: Checkout Sofia-Sip (via ref)
if: ${{ !inputs.tests-only && inputs.sofia-sip_ref != '' }}
uses: actions/checkout@v4
with:
repository: freeswitch/sofia-sip
ref: ${{ inputs.sofia-sip_ref }}
path: sofia-sip
- name: Checkout Sofia-Sip
if: ${{ !inputs.tests-only && inputs.sofia-sip_ref == '' }}
uses: actions/checkout@v4
with:
repository: freeswitch/sofia-sip
path: sofia-sip
- name: Checkout FreeSWITCH (via ref)
if: ${{ !inputs.tests-only && inputs.freeswitch_ref != '' }}
uses: actions/checkout@v4
with:
ref: ${{ inputs.freeswitch_ref }}
path: freeswitch
- name: Checkout FreeSWITCH
if: ${{ !inputs.tests-only && inputs.freeswitch_ref == '' }}
uses: actions/checkout@v4
with:
path: freeswitch
- name: Configure, Build and Install Sofia-Sip
if: ${{ !inputs.tests-only }}
shell: bash
working-directory: freeswitch
run: |
DEBIAN_FRONTEND=noninteractive apt-get install -y libpcre2-dev libsphinxbase-dev libpocketsphinx-dev
./ci.sh -t unit-test -a configure -c sofia-sip -p "$GITHUB_WORKSPACE/sofia-sip"
./ci.sh -t unit-test -a build -c sofia-sip -p "$GITHUB_WORKSPACE/sofia-sip"
./ci.sh -t unit-test -a install -c sofia-sip -p "$GITHUB_WORKSPACE/sofia-sip"
- name: Configure, Build and Install FreeSWITCH
if: ${{ !inputs.tests-only }}
shell: bash
working-directory: freeswitch
run: |
./ci.sh -t unit-test -a configure -c freeswitch -p "$GITHUB_WORKSPACE/freeswitch"
./ci.sh -t unit-test -a build -c freeswitch -p "$GITHUB_WORKSPACE/freeswitch"
./ci.sh -t unit-test -a install -c freeswitch -p "$GITHUB_WORKSPACE/freeswitch"
- name: Run unit tests
shell: bash
working-directory: ${{ inputs.working-directory }}
run: |
./run-tests.sh ${{ inputs.total-groups }} ${{ inputs.current-group }} --output-dir logs || exit 1
- name: Collect unit test logs
if: always()
shell: bash
working-directory: ${{ inputs.working-directory }}
run: |
test -d "/cores" && ls -lah /cores
./collect-test-logs.sh --dir logs --print
- name: Upload Unit-Test logs
if: failure()
uses: actions/upload-artifact@v4
with:
name: test-results-${{ github.sha }}-${{ github.run_number }}-${{ inputs.current-group }}-of-${{ inputs.total-groups }}
path: ${{ inputs.working-directory }}/logs
if-no-files-found: ignore
compression-level: 9
- name: Notify run tests result to slack
if: |
failure() &&
github.event_name == 'push' &&
(github.ref == 'refs/heads/master' || github.ref == 'refs/heads/v1.10')
uses: signalwire/actions-template/.github/actions/slack@main
with:
CHANNEL: ${{ secrets.SLACK_DEVOPS_CI_CHANNEL }}
MESSAGE: Unit-Tests ${{ github.repository }} > <${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}|${{ github.run_id }}>. Some tests are failing.
env:
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}

43
.github/workflows/windows.yml vendored Normal file
View File

@ -0,0 +1,43 @@
name: Windows
on:
pull_request:
types: [opened, synchronize]
push:
branches: [master, release]
jobs:
x64:
runs-on: windows-2022
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Download yasm.exe
run: |
curl -o libs\win32\ffmpeg\yasm.exe https://files.freeswitch.org/downloads/win64/yasm-1.3.0.87.g121a.exe
copy libs\win32\ffmpeg\yasm.exe libs\win32\libvpx\yasm.exe
- name: Verify and Run yasm.exe
run: |
if exist libs\win32\ffmpeg\yasm.exe (
libs\win32\ffmpeg\yasm.exe --version
) else (
echo ERROR: yasm.exe not found!
exit 1
)
shell: cmd
- name: Add msbuild to PATH
uses: microsoft/setup-msbuild@v2
- name: Build
run: msbuild Freeswitch.2017.sln -t:build -verbosity:minimal -property:Configuration=Release -property:Platform=x64
- name: Upload Artifact
uses: actions/upload-artifact@v4
with:
name: MSI Package
path: D:\a\freeswitch\freeswitch\x64\*.msi
if: contains(github.event.pull_request.title, ':upload-artifacts') || github.ref == 'refs/heads/master' || github.ref == 'refs/heads/v1.10'

12
.gitignore vendored
View File

@ -145,18 +145,15 @@ Release/
/src/mod/applications/mod_nibblebill/Makefile
/src/mod/applications/mod_osp/Makefile
/src/mod/applications/mod_osp/Makefile.in
/src/mod/applications/mod_rss/Makefile
/src/mod/applications/mod_snipe_hunt/Makefile
/src/mod/applications/mod_test/test/Makefile
/src/mod/applications/mod_test/test/Makefile.in
/src/mod/codecs/mod_com_g729/Makefile
/src/mod/codecs/mod_com_g729/Makefile.in
/src/mod/codecs/mod_dahdi_codec/Makefile
/src/mod/dialplans/mod_dialplan_directory/Makefile
/src/mod/formats/mod_shell_stream/Makefile
/src/mod/languages/mod_lua/mod_lua_wrap.cpp.orig
/src/mod/languages/mod_perl/mod_perl_wrap.cpp.orig
/src/mod/languages/mod_python/mod_python_wrap.cpp.orig
/src/mod/languages/mod_python3/mod_python_wrap.cpp.orig
/src/mod/say/mod_say_de/Makefile
/src/mod/say/mod_say_es/Makefile
@ -175,7 +172,6 @@ BuildLog.htm
!/libs/win32/
!/libs/speex/win32/
!/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/win32/
*.suo
*.sdf
x64/
@ -187,7 +183,7 @@ ipch/
/w32/Setup/obj
*dSYM*
/UpgradeLog.*
/UpgradeLog*.*
/_UpgradeReport_Files/
*.aps
/w32/Library/switch_version.inc
@ -255,9 +251,6 @@ libs/sofia-sip*
src/mod/applications/mod_test/test/test_asr
src/mod/applications/mod_test/test/test_tts
src/mod/event_handlers/mod_rayo/test/test_iks
src/mod/event_handlers/mod_rayo/test/test_nlsml
src/mod/event_handlers/mod_rayo/test/test_srgs
src/mod/applications/mod_http_cache/test/Makefile
src/mod/applications/mod_http_cache/test/Makefile.in
src/mod/applications/mod_http_cache/test/test-suite.log
@ -266,7 +259,6 @@ src/mod/applications/mod_http_cache/test/test_aws.log
src/mod/applications/mod_http_cache/test/test_aws.trs
src/mod/formats/mod_sndfile/test/test_sndfile
src/mod/formats/mod_sndfile/test/test_sndfile_conf
src/mod/formats/mod_ssml/test/test_tts_format
src/mod/*/*/test/*.log
src/mod/*/*/test/*.trs
src/mod/*/*/test/[0-9]*/*
@ -281,3 +273,5 @@ images/test_text.png
src/mod/codecs/mod_amrwb/test/test_amrwb
src/mod/endpoints/mod_sofia/test/sipp-based-tests
.DS_Store

View File

@ -79,8 +79,6 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "autoload_configs", "autoloa
conf\vanilla\autoload_configs\logfile.conf.xml = conf\vanilla\autoload_configs\logfile.conf.xml
conf\vanilla\autoload_configs\modules.conf.xml = conf\vanilla\autoload_configs\modules.conf.xml
conf\vanilla\autoload_configs\openmrcp.conf.xml = conf\vanilla\autoload_configs\openmrcp.conf.xml
conf\vanilla\autoload_configs\portaudio.conf.xml = conf\vanilla\autoload_configs\portaudio.conf.xml
conf\vanilla\autoload_configs\rss.conf.xml = conf\vanilla\autoload_configs\rss.conf.xml
conf\vanilla\autoload_configs\sofia.conf.xml = conf\vanilla\autoload_configs\sofia.conf.xml
conf\vanilla\autoload_configs\switch.conf.xml = conf\vanilla\autoload_configs\switch.conf.xml
conf\vanilla\autoload_configs\syslog.conf.xml = conf\vanilla\autoload_configs\syslog.conf.xml
@ -173,8 +171,6 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_g729", "src\mod\codecs\
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_sndfile", "src\mod\formats\mod_sndfile\mod_sndfile.2017.vcxproj", "{AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_PortAudio", "src\mod\endpoints\mod_portaudio\mod_PortAudio.2017.vcxproj", "{5FD31A25-5D83-4794-8BEE-904DAD84CE71}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "docs", "docs\docs.2017.vcxproj", "{1A1FF289-4FD6-4285-A422-D31DD67A4723}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_dialplan_xml", "src\mod\dialplans\mod_dialplan_xml\mod_dialplan_xml.2017.vcxproj", "{07113B25-D3AF-4E04-BA77-4CD1171F022C}"
@ -191,8 +187,6 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_v8", "src\mod\languages
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_v8_skel", "src\mod\languages\mod_v8\mod_v8_skel.2017.vcxproj", "{8B754330-A434-4791-97E5-1EE67060BAC0}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_cepstral", "src\mod\asr_tts\mod_cepstral\mod_cepstral.2017.vcxproj", "{692F6330-4D87-4C82-81DF-40DB5892636E}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_ilbc", "src\mod\codecs\mod_ilbc\mod_ilbc.2017.vcxproj", "{D3EC0AFF-76FC-4210-A825-9A17410660A3}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_commands", "src\mod\applications\mod_commands\mod_commands.2017.vcxproj", "{30A5B29C-983E-4580-9FD0-D647CCDCC7EB}"
@ -204,8 +198,6 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_xml_rpc", "src\mod\xml_
{BED7539C-0099-4A14-AD5D-30828F15A171} = {BED7539C-0099-4A14-AD5D-30828F15A171}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_rss", "src\mod\applications\mod_rss\mod_rss.2017.vcxproj", "{B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_conference", "src\mod\applications\mod_conference\mod_conference.2017.vcxproj", "{C24FB505-05D7-4319-8485-7540B44C8603}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_dptools", "src\mod\applications\mod_dptools\mod_dptools.2017.vcxproj", "{B5881A85-FE70-4F64-8607-2CAAE52669C6}"
@ -218,16 +210,12 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libsqlite", "libs\win32\sql
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libapr", "libs\win32\apr\libapr.2017.vcxproj", "{F6C55D93-B927-4483-BB69-15AEF3DD2DFF}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "iksemel", "libs\win32\iksemel\iksemel.2017.vcxproj", "{E727E8F6-935D-46FE-8B0E-37834748A0E3}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_sofia", "src\mod\endpoints\mod_sofia\mod_sofia.2017.vcxproj", "{0DF3ABD0-DDC0-4265-B778-07C66780979B}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "pthread", "libs\win32\pthread\pthread.2017.vcxproj", "{DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_g723_1", "src\mod\codecs\mod_g723_1\mod_g723_1.2017.vcxproj", "{FEA1EEF7-876F-48DE-88BF-C0E3E606D758}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_iSAC", "src\mod\codecs\mod_isac\mod_iSAC.2017.vcxproj", "{7F1610F1-DD5A-4CF7-8610-30AB12C60ADD}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_native_file", "src\mod\formats\mod_native_file\mod_native_file.2017.vcxproj", "{9254C4B0-6F60-42B6-BB3A-36D63FC001C7}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libudns", "libs\win32\udns\libudns.2017.vcxproj", "{4043FC6A-9A30-4577-8AD5-9B233C9575D8}"
@ -238,14 +226,10 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_xml_curl", "src\mod\xml
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_say_en", "src\mod\say\mod_say_en\mod_say_en.2017.vcxproj", "{988CACF7-3FCB-4992-BE69-77872AE67DC8}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "portaudio", "libs\win32\portaudio\portaudio.2017.vcxproj", "{0A18A071-125E-442F-AFF7-A3F68ABECF99}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_xml_cdr", "src\mod\xml_int\mod_xml_cdr\mod_xml_cdr.2017.vcxproj", "{08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_amr", "src\mod\codecs\mod_amr\mod_amr.2017.vcxproj", "{8DEB383C-4091-4F42-A56F-C9E46D552D79}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_h26x", "src\mod\codecs\mod_h26x\mod_h26x.2017.vcxproj", "{2C3C2423-234B-4772-8899-D3B137E5CA35}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_esf", "src\mod\applications\mod_esf\mod_esf.2017.vcxproj", "{3850D93A-5F24-4922-BC1C-74D08C37C256}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_local_stream", "src\mod\formats\mod_local_stream\mod_local_stream.2017.vcxproj", "{2CA40887-1622-46A1-A7F9-17FD7E7E545B}"
@ -302,8 +286,6 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_shout", "src\mod\format
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libogg", "libs\win32\libogg\libogg.2017.vcxproj", "{0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_snom", "src\mod\applications\mod_snom\mod_snom.2017.vcxproj", "{2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_say_zh", "src\mod\say\mod_say_zh\mod_say_zh.2017.vcxproj", "{B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_managed", "src\mod\languages\mod_managed\mod_managed.2017.vcxproj", "{7B42BDA1-72C0-4378-A9B6-5C530F8CD61E}"
@ -407,18 +389,10 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_spy", "src\mod\applicat
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_httapi", "src\mod\applications\mod_httapi\mod_httapi.2017.vcxproj", "{4748FF56-CA85-4809-97D6-A94C0FAC1D77}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_abstraction", "src\mod\applications\mod_abstraction\mod_abstraction.2017.vcxproj", "{60C542EE-6882-4EA2-8C21-5AB6DB1BA73F}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_sms", "src\mod\applications\mod_sms\mod_sms.2017.vcxproj", "{2469B306-B027-4FF2-8815-C9C1EA2CAE79}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "xmlrpc-c", "xmlrpc-c", "{9DE35039-A8F6-4FBF-B1B6-EB527F802411}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gsmlib", "src\mod\endpoints\mod_gsmopen\gsmlib\gsmlib-1.10-patched-13ubuntu\win32\gsmlib.2017.vcxproj", "{26C82FCE-E0CF-4D10-A00C-D8E582FFEB53}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_gsmopen", "src\mod\endpoints\mod_gsmopen\mod_gsmopen.2017.vcxproj", "{74B120FF-6935-4DFE-A142-CDB6BEA99C90}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libzrtp", "libs\libzrtp\projects\win\libzrtp.2017.vcxproj", "{C13CC324-0032-4492-9A30-310A6BD64FF5}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_redis", "src\mod\applications\mod_redis\mod_redis.2017.vcxproj", "{886B5E9D-F2C2-4AF2-98C8-EF98C4C770E6}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libjpeg", "libs\win32\libjpeg\libjpeg.2017.vcxproj", "{019DBD2A-273D-4BA4-BF86-B5EFE2ED76B1}"
@ -452,8 +426,6 @@ Project("{930C7802-8A8C-48F9-8165-68863BCCD9DD}") = "Setup.2017", "w32\Setup\Set
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "make_math_fixed_tables", "libs\win32\spandsp\make_math_fixed_tables.2017.vcxproj", "{2386B892-35F5-46CF-A0F0-10394D2FBF9B}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libcbt", "libs\win32\libcbt\libcbt.2017.vcxproj", "{77BC1DD2-C9A1-44D7-BFFA-1320370CACB9}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "make_cielab_luts", "libs\win32\spandsp\make_cielab_luts.2017.vcxproj", "{85F0CF8C-C7AB-48F6-BA19-CC94CF87F981}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "opus", "opus", "{ED2CA8B5-8E91-4296-A120-02BB0B674652}"
@ -556,6 +528,12 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "test_switch_core_db", "test
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "test_switch_ivr_originate", "tests\unit\test_switch_ivr_originate.2017.vcxproj", "{69A7464A-9B0D-4804-A108-835229DACF58}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "test_switch_core_codec", "tests\unit\test_switch_core_codec.2017.vcxproj", "{589A07E7-5DE5-49FD-A62C-27795B806AFB}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "test_tts_format", "tests\unit\test_tts_format.2017.vcxproj", "{3745B86B-6BE8-3E67-FCB9-BE62A6131D67}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_test", "src\mod\applications\mod_test\mod_test.2017.vcxproj", "{E9FF8127-D5F0-2398-59EB-702CE55F7800}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
All|Win32 = All|Win32
@ -610,17 +588,6 @@ Global
{AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}.Release|Win32.Build.0 = Release|Win32
{AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}.Release|x64.ActiveCfg = Release|x64
{AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}.Release|x64.Build.0 = Release|x64
{5FD31A25-5D83-4794-8BEE-904DAD84CE71}.All|Win32.ActiveCfg = Release|x64
{5FD31A25-5D83-4794-8BEE-904DAD84CE71}.All|x64.ActiveCfg = Release|x64
{5FD31A25-5D83-4794-8BEE-904DAD84CE71}.All|x64.Build.0 = Release|x64
{5FD31A25-5D83-4794-8BEE-904DAD84CE71}.Debug|Win32.ActiveCfg = Debug|Win32
{5FD31A25-5D83-4794-8BEE-904DAD84CE71}.Debug|Win32.Build.0 = Debug|Win32
{5FD31A25-5D83-4794-8BEE-904DAD84CE71}.Debug|x64.ActiveCfg = Debug|x64
{5FD31A25-5D83-4794-8BEE-904DAD84CE71}.Debug|x64.Build.0 = Debug|x64
{5FD31A25-5D83-4794-8BEE-904DAD84CE71}.Release|Win32.ActiveCfg = Release|Win32
{5FD31A25-5D83-4794-8BEE-904DAD84CE71}.Release|Win32.Build.0 = Release|Win32
{5FD31A25-5D83-4794-8BEE-904DAD84CE71}.Release|x64.ActiveCfg = Release|x64
{5FD31A25-5D83-4794-8BEE-904DAD84CE71}.Release|x64.Build.0 = Release|x64
{1A1FF289-4FD6-4285-A422-D31DD67A4723}.All|Win32.ActiveCfg = Release|Win32
{1A1FF289-4FD6-4285-A422-D31DD67A4723}.All|x64.ActiveCfg = Release|Win32
{1A1FF289-4FD6-4285-A422-D31DD67A4723}.Debug|Win32.ActiveCfg = Debug|Win32
@ -700,13 +667,6 @@ Global
{8B754330-A434-4791-97E5-1EE67060BAC0}.Debug|x64.ActiveCfg = Debug|x64
{8B754330-A434-4791-97E5-1EE67060BAC0}.Release|Win32.ActiveCfg = Release|Win32
{8B754330-A434-4791-97E5-1EE67060BAC0}.Release|x64.ActiveCfg = Release|x64
{692F6330-4D87-4C82-81DF-40DB5892636E}.All|Win32.ActiveCfg = Release|x64
{692F6330-4D87-4C82-81DF-40DB5892636E}.All|x64.ActiveCfg = Release|x64
{692F6330-4D87-4C82-81DF-40DB5892636E}.All|x64.Build.0 = Release|x64
{692F6330-4D87-4C82-81DF-40DB5892636E}.Debug|Win32.ActiveCfg = Debug|Win32
{692F6330-4D87-4C82-81DF-40DB5892636E}.Debug|x64.ActiveCfg = Debug|x64
{692F6330-4D87-4C82-81DF-40DB5892636E}.Release|Win32.ActiveCfg = Release|Win32
{692F6330-4D87-4C82-81DF-40DB5892636E}.Release|x64.ActiveCfg = Release|x64
{D3EC0AFF-76FC-4210-A825-9A17410660A3}.All|Win32.ActiveCfg = Release|x64
{D3EC0AFF-76FC-4210-A825-9A17410660A3}.All|x64.ActiveCfg = Release|x64
{D3EC0AFF-76FC-4210-A825-9A17410660A3}.All|x64.Build.0 = Release|x64
@ -751,17 +711,6 @@ Global
{CBEC7225-0C21-4DA8-978E-1F158F8AD950}.Release|Win32.Build.0 = Release|Win32
{CBEC7225-0C21-4DA8-978E-1F158F8AD950}.Release|x64.ActiveCfg = Release|x64
{CBEC7225-0C21-4DA8-978E-1F158F8AD950}.Release|x64.Build.0 = Release|x64
{B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.All|Win32.ActiveCfg = Release|x64
{B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.All|x64.ActiveCfg = Release|x64
{B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.All|x64.Build.0 = Release|x64
{B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.Debug|Win32.ActiveCfg = Debug|Win32
{B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.Debug|Win32.Build.0 = Debug|Win32
{B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.Debug|x64.ActiveCfg = Debug|x64
{B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.Debug|x64.Build.0 = Debug|x64
{B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.Release|Win32.ActiveCfg = Release|Win32
{B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.Release|Win32.Build.0 = Release|Win32
{B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.Release|x64.ActiveCfg = Release|x64
{B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.Release|x64.Build.0 = Release|x64
{C24FB505-05D7-4319-8485-7540B44C8603}.All|Win32.ActiveCfg = Release|x64
{C24FB505-05D7-4319-8485-7540B44C8603}.All|x64.ActiveCfg = Release|x64
{C24FB505-05D7-4319-8485-7540B44C8603}.All|x64.Build.0 = Release|x64
@ -828,17 +777,6 @@ Global
{F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.Release|Win32.Build.0 = Release|Win32
{F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.Release|x64.ActiveCfg = Release|x64
{F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.Release|x64.Build.0 = Release|x64
{E727E8F6-935D-46FE-8B0E-37834748A0E3}.All|Win32.ActiveCfg = Release|x64
{E727E8F6-935D-46FE-8B0E-37834748A0E3}.All|x64.ActiveCfg = Release|x64
{E727E8F6-935D-46FE-8B0E-37834748A0E3}.All|x64.Build.0 = Release|x64
{E727E8F6-935D-46FE-8B0E-37834748A0E3}.Debug|Win32.ActiveCfg = Debug|Win32
{E727E8F6-935D-46FE-8B0E-37834748A0E3}.Debug|Win32.Build.0 = Debug|Win32
{E727E8F6-935D-46FE-8B0E-37834748A0E3}.Debug|x64.ActiveCfg = Debug|x64
{E727E8F6-935D-46FE-8B0E-37834748A0E3}.Debug|x64.Build.0 = Debug|x64
{E727E8F6-935D-46FE-8B0E-37834748A0E3}.Release|Win32.ActiveCfg = Release|Win32
{E727E8F6-935D-46FE-8B0E-37834748A0E3}.Release|Win32.Build.0 = Release|Win32
{E727E8F6-935D-46FE-8B0E-37834748A0E3}.Release|x64.ActiveCfg = Release|x64
{E727E8F6-935D-46FE-8B0E-37834748A0E3}.Release|x64.Build.0 = Release|x64
{0DF3ABD0-DDC0-4265-B778-07C66780979B}.All|Win32.ActiveCfg = Release|x64
{0DF3ABD0-DDC0-4265-B778-07C66780979B}.All|x64.ActiveCfg = Release|x64
{0DF3ABD0-DDC0-4265-B778-07C66780979B}.All|x64.Build.0 = Release|x64
@ -872,17 +810,6 @@ Global
{FEA1EEF7-876F-48DE-88BF-C0E3E606D758}.Release|Win32.Build.0 = Release Passthrough|Win32
{FEA1EEF7-876F-48DE-88BF-C0E3E606D758}.Release|x64.ActiveCfg = Release Passthrough|x64
{FEA1EEF7-876F-48DE-88BF-C0E3E606D758}.Release|x64.Build.0 = Release Passthrough|x64
{7F1610F1-DD5A-4CF7-8610-30AB12C60ADD}.All|Win32.ActiveCfg = Release|x64
{7F1610F1-DD5A-4CF7-8610-30AB12C60ADD}.All|x64.ActiveCfg = Release|x64
{7F1610F1-DD5A-4CF7-8610-30AB12C60ADD}.All|x64.Build.0 = Release|x64
{7F1610F1-DD5A-4CF7-8610-30AB12C60ADD}.Debug|Win32.ActiveCfg = Debug|Win32
{7F1610F1-DD5A-4CF7-8610-30AB12C60ADD}.Debug|Win32.Build.0 = Debug|Win32
{7F1610F1-DD5A-4CF7-8610-30AB12C60ADD}.Debug|x64.ActiveCfg = Debug|x64
{7F1610F1-DD5A-4CF7-8610-30AB12C60ADD}.Debug|x64.Build.0 = Debug|x64
{7F1610F1-DD5A-4CF7-8610-30AB12C60ADD}.Release|Win32.ActiveCfg = Release|Win32
{7F1610F1-DD5A-4CF7-8610-30AB12C60ADD}.Release|Win32.Build.0 = Release|Win32
{7F1610F1-DD5A-4CF7-8610-30AB12C60ADD}.Release|x64.ActiveCfg = Release|x64
{7F1610F1-DD5A-4CF7-8610-30AB12C60ADD}.Release|x64.Build.0 = Release|x64
{9254C4B0-6F60-42B6-BB3A-36D63FC001C7}.All|Win32.ActiveCfg = Release|x64
{9254C4B0-6F60-42B6-BB3A-36D63FC001C7}.All|x64.ActiveCfg = Release|x64
{9254C4B0-6F60-42B6-BB3A-36D63FC001C7}.All|x64.Build.0 = Release|x64
@ -934,17 +861,6 @@ Global
{988CACF7-3FCB-4992-BE69-77872AE67DC8}.Release|Win32.Build.0 = Release|Win32
{988CACF7-3FCB-4992-BE69-77872AE67DC8}.Release|x64.ActiveCfg = Release|x64
{988CACF7-3FCB-4992-BE69-77872AE67DC8}.Release|x64.Build.0 = Release|x64
{0A18A071-125E-442F-AFF7-A3F68ABECF99}.All|Win32.ActiveCfg = Release DirectSound|x64
{0A18A071-125E-442F-AFF7-A3F68ABECF99}.All|x64.ActiveCfg = Release DirectSound|x64
{0A18A071-125E-442F-AFF7-A3F68ABECF99}.All|x64.Build.0 = Release DirectSound|x64
{0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug|Win32.ActiveCfg = Debug DirectSound|Win32
{0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug|Win32.Build.0 = Debug DirectSound|Win32
{0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug|x64.ActiveCfg = Debug DirectSound|x64
{0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug|x64.Build.0 = Debug DirectSound|x64
{0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release|Win32.ActiveCfg = Release DirectSound|Win32
{0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release|Win32.Build.0 = Release DirectSound|Win32
{0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release|x64.ActiveCfg = Release DirectSound|x64
{0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release|x64.Build.0 = Release DirectSound|x64
{08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.All|Win32.ActiveCfg = Release|x64
{08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.All|x64.ActiveCfg = Release|x64
{08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.All|x64.Build.0 = Release|x64
@ -967,17 +883,6 @@ Global
{8DEB383C-4091-4F42-A56F-C9E46D552D79}.Release|Win32.Build.0 = Release Passthrough|Win32
{8DEB383C-4091-4F42-A56F-C9E46D552D79}.Release|x64.ActiveCfg = Release Passthrough|x64
{8DEB383C-4091-4F42-A56F-C9E46D552D79}.Release|x64.Build.0 = Release Passthrough|x64
{2C3C2423-234B-4772-8899-D3B137E5CA35}.All|Win32.ActiveCfg = Release|x64
{2C3C2423-234B-4772-8899-D3B137E5CA35}.All|x64.ActiveCfg = Release|x64
{2C3C2423-234B-4772-8899-D3B137E5CA35}.All|x64.Build.0 = Release|x64
{2C3C2423-234B-4772-8899-D3B137E5CA35}.Debug|Win32.ActiveCfg = Debug|Win32
{2C3C2423-234B-4772-8899-D3B137E5CA35}.Debug|Win32.Build.0 = Debug|Win32
{2C3C2423-234B-4772-8899-D3B137E5CA35}.Debug|x64.ActiveCfg = Debug|x64
{2C3C2423-234B-4772-8899-D3B137E5CA35}.Debug|x64.Build.0 = Debug|x64
{2C3C2423-234B-4772-8899-D3B137E5CA35}.Release|Win32.ActiveCfg = Release|Win32
{2C3C2423-234B-4772-8899-D3B137E5CA35}.Release|Win32.Build.0 = Release|Win32
{2C3C2423-234B-4772-8899-D3B137E5CA35}.Release|x64.ActiveCfg = Release|x64
{2C3C2423-234B-4772-8899-D3B137E5CA35}.Release|x64.Build.0 = Release|x64
{3850D93A-5F24-4922-BC1C-74D08C37C256}.All|Win32.ActiveCfg = Release|x64
{3850D93A-5F24-4922-BC1C-74D08C37C256}.All|x64.ActiveCfg = Release|x64
{3850D93A-5F24-4922-BC1C-74D08C37C256}.All|x64.Build.0 = Release|x64
@ -1282,17 +1187,6 @@ Global
{0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4}.Release|Win32.Build.0 = Release|Win32
{0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4}.Release|x64.ActiveCfg = Release|x64
{0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4}.Release|x64.Build.0 = Release|x64
{2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.All|Win32.ActiveCfg = Release|x64
{2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.All|x64.ActiveCfg = Release|x64
{2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.All|x64.Build.0 = Release|x64
{2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.Debug|Win32.ActiveCfg = Debug|Win32
{2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.Debug|Win32.Build.0 = Debug|Win32
{2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.Debug|x64.ActiveCfg = Debug|x64
{2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.Debug|x64.Build.0 = Debug|x64
{2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.Release|Win32.ActiveCfg = Release|Win32
{2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.Release|Win32.Build.0 = Release|Win32
{2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.Release|x64.ActiveCfg = Release|x64
{2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.Release|x64.Build.0 = Release|x64
{B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}.All|Win32.ActiveCfg = Release|x64
{B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}.All|x64.ActiveCfg = Release|x64
{B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}.All|x64.Build.0 = Release|x64
@ -1821,17 +1715,6 @@ Global
{4748FF56-CA85-4809-97D6-A94C0FAC1D77}.Release|Win32.Build.0 = Release|Win32
{4748FF56-CA85-4809-97D6-A94C0FAC1D77}.Release|x64.ActiveCfg = Release|x64
{4748FF56-CA85-4809-97D6-A94C0FAC1D77}.Release|x64.Build.0 = Release|x64
{60C542EE-6882-4EA2-8C21-5AB6DB1BA73F}.All|Win32.ActiveCfg = Release|x64
{60C542EE-6882-4EA2-8C21-5AB6DB1BA73F}.All|x64.ActiveCfg = Release|x64
{60C542EE-6882-4EA2-8C21-5AB6DB1BA73F}.All|x64.Build.0 = Release|x64
{60C542EE-6882-4EA2-8C21-5AB6DB1BA73F}.Debug|Win32.ActiveCfg = Debug|Win32
{60C542EE-6882-4EA2-8C21-5AB6DB1BA73F}.Debug|Win32.Build.0 = Debug|Win32
{60C542EE-6882-4EA2-8C21-5AB6DB1BA73F}.Debug|x64.ActiveCfg = Debug|x64
{60C542EE-6882-4EA2-8C21-5AB6DB1BA73F}.Debug|x64.Build.0 = Debug|x64
{60C542EE-6882-4EA2-8C21-5AB6DB1BA73F}.Release|Win32.ActiveCfg = Release|Win32
{60C542EE-6882-4EA2-8C21-5AB6DB1BA73F}.Release|Win32.Build.0 = Release|Win32
{60C542EE-6882-4EA2-8C21-5AB6DB1BA73F}.Release|x64.ActiveCfg = Release|x64
{60C542EE-6882-4EA2-8C21-5AB6DB1BA73F}.Release|x64.Build.0 = Release|x64
{2469B306-B027-4FF2-8815-C9C1EA2CAE79}.All|Win32.ActiveCfg = Release|x64
{2469B306-B027-4FF2-8815-C9C1EA2CAE79}.All|x64.ActiveCfg = Release|x64
{2469B306-B027-4FF2-8815-C9C1EA2CAE79}.All|x64.Build.0 = Release|x64
@ -1843,39 +1726,6 @@ Global
{2469B306-B027-4FF2-8815-C9C1EA2CAE79}.Release|Win32.Build.0 = Release|Win32
{2469B306-B027-4FF2-8815-C9C1EA2CAE79}.Release|x64.ActiveCfg = Release|x64
{2469B306-B027-4FF2-8815-C9C1EA2CAE79}.Release|x64.Build.0 = Release|x64
{26C82FCE-E0CF-4D10-A00C-D8E582FFEB53}.All|Win32.ActiveCfg = Release|x64
{26C82FCE-E0CF-4D10-A00C-D8E582FFEB53}.All|x64.ActiveCfg = Release|x64
{26C82FCE-E0CF-4D10-A00C-D8E582FFEB53}.All|x64.Build.0 = Release|x64
{26C82FCE-E0CF-4D10-A00C-D8E582FFEB53}.Debug|Win32.ActiveCfg = Debug|Win32
{26C82FCE-E0CF-4D10-A00C-D8E582FFEB53}.Debug|Win32.Build.0 = Debug|Win32
{26C82FCE-E0CF-4D10-A00C-D8E582FFEB53}.Debug|x64.ActiveCfg = Debug|x64
{26C82FCE-E0CF-4D10-A00C-D8E582FFEB53}.Debug|x64.Build.0 = Debug|x64
{26C82FCE-E0CF-4D10-A00C-D8E582FFEB53}.Release|Win32.ActiveCfg = Release|Win32
{26C82FCE-E0CF-4D10-A00C-D8E582FFEB53}.Release|Win32.Build.0 = Release|Win32
{26C82FCE-E0CF-4D10-A00C-D8E582FFEB53}.Release|x64.ActiveCfg = Release|x64
{26C82FCE-E0CF-4D10-A00C-D8E582FFEB53}.Release|x64.Build.0 = Release|x64
{74B120FF-6935-4DFE-A142-CDB6BEA99C90}.All|Win32.ActiveCfg = Release|x64
{74B120FF-6935-4DFE-A142-CDB6BEA99C90}.All|x64.ActiveCfg = Release|x64
{74B120FF-6935-4DFE-A142-CDB6BEA99C90}.All|x64.Build.0 = Release|x64
{74B120FF-6935-4DFE-A142-CDB6BEA99C90}.Debug|Win32.ActiveCfg = Debug|Win32
{74B120FF-6935-4DFE-A142-CDB6BEA99C90}.Debug|Win32.Build.0 = Debug|Win32
{74B120FF-6935-4DFE-A142-CDB6BEA99C90}.Debug|x64.ActiveCfg = Debug|x64
{74B120FF-6935-4DFE-A142-CDB6BEA99C90}.Debug|x64.Build.0 = Debug|x64
{74B120FF-6935-4DFE-A142-CDB6BEA99C90}.Release|Win32.ActiveCfg = Release|Win32
{74B120FF-6935-4DFE-A142-CDB6BEA99C90}.Release|Win32.Build.0 = Release|Win32
{74B120FF-6935-4DFE-A142-CDB6BEA99C90}.Release|x64.ActiveCfg = Release|x64
{74B120FF-6935-4DFE-A142-CDB6BEA99C90}.Release|x64.Build.0 = Release|x64
{C13CC324-0032-4492-9A30-310A6BD64FF5}.All|Win32.ActiveCfg = Release|Win32
{C13CC324-0032-4492-9A30-310A6BD64FF5}.All|Win32.Build.0 = Release|Win32
{C13CC324-0032-4492-9A30-310A6BD64FF5}.All|x64.ActiveCfg = Release|Win32
{C13CC324-0032-4492-9A30-310A6BD64FF5}.Debug|Win32.ActiveCfg = Debug|Win32
{C13CC324-0032-4492-9A30-310A6BD64FF5}.Debug|Win32.Build.0 = Debug|Win32
{C13CC324-0032-4492-9A30-310A6BD64FF5}.Debug|x64.ActiveCfg = Debug|x64
{C13CC324-0032-4492-9A30-310A6BD64FF5}.Debug|x64.Build.0 = Debug|x64
{C13CC324-0032-4492-9A30-310A6BD64FF5}.Release|Win32.ActiveCfg = Release|Win32
{C13CC324-0032-4492-9A30-310A6BD64FF5}.Release|Win32.Build.0 = Release|Win32
{C13CC324-0032-4492-9A30-310A6BD64FF5}.Release|x64.ActiveCfg = Release|x64
{C13CC324-0032-4492-9A30-310A6BD64FF5}.Release|x64.Build.0 = Release|x64
{886B5E9D-F2C2-4AF2-98C8-EF98C4C770E6}.All|Win32.ActiveCfg = Release|x64
{886B5E9D-F2C2-4AF2-98C8-EF98C4C770E6}.All|x64.ActiveCfg = Release|x64
{886B5E9D-F2C2-4AF2-98C8-EF98C4C770E6}.All|x64.Build.0 = Release|x64
@ -1976,17 +1826,6 @@ Global
{2386B892-35F5-46CF-A0F0-10394D2FBF9B}.Release|Win32.Build.0 = All|Win32
{2386B892-35F5-46CF-A0F0-10394D2FBF9B}.Release|x64.ActiveCfg = All|Win32
{2386B892-35F5-46CF-A0F0-10394D2FBF9B}.Release|x64.Build.0 = All|Win32
{77BC1DD2-C9A1-44D7-BFFA-1320370CACB9}.All|Win32.ActiveCfg = Release|Win32
{77BC1DD2-C9A1-44D7-BFFA-1320370CACB9}.All|Win32.Build.0 = Release|Win32
{77BC1DD2-C9A1-44D7-BFFA-1320370CACB9}.All|x64.ActiveCfg = Release|Win32
{77BC1DD2-C9A1-44D7-BFFA-1320370CACB9}.Debug|Win32.ActiveCfg = Debug|Win32
{77BC1DD2-C9A1-44D7-BFFA-1320370CACB9}.Debug|Win32.Build.0 = Debug|Win32
{77BC1DD2-C9A1-44D7-BFFA-1320370CACB9}.Debug|x64.ActiveCfg = Debug|x64
{77BC1DD2-C9A1-44D7-BFFA-1320370CACB9}.Debug|x64.Build.0 = Debug|x64
{77BC1DD2-C9A1-44D7-BFFA-1320370CACB9}.Release|Win32.ActiveCfg = Release|Win32
{77BC1DD2-C9A1-44D7-BFFA-1320370CACB9}.Release|Win32.Build.0 = Release|Win32
{77BC1DD2-C9A1-44D7-BFFA-1320370CACB9}.Release|x64.ActiveCfg = Release|x64
{77BC1DD2-C9A1-44D7-BFFA-1320370CACB9}.Release|x64.Build.0 = Release|x64
{85F0CF8C-C7AB-48F6-BA19-CC94CF87F981}.All|Win32.ActiveCfg = All|Win32
{85F0CF8C-C7AB-48F6-BA19-CC94CF87F981}.All|Win32.Build.0 = All|Win32
{85F0CF8C-C7AB-48F6-BA19-CC94CF87F981}.All|x64.ActiveCfg = All|Win32
@ -2529,6 +2368,42 @@ Global
{69A7464A-9B0D-4804-A108-835229DACF58}.Release|Win32.Build.0 = Release|Win32
{69A7464A-9B0D-4804-A108-835229DACF58}.Release|x64.ActiveCfg = Release|x64
{69A7464A-9B0D-4804-A108-835229DACF58}.Release|x64.Build.0 = Release|x64
{589A07E7-5DE5-49FD-A62C-27795B806AFB}.All|Win32.ActiveCfg = Debug|Win32
{589A07E7-5DE5-49FD-A62C-27795B806AFB}.All|Win32.Build.0 = Debug|Win32
{589A07E7-5DE5-49FD-A62C-27795B806AFB}.All|x64.ActiveCfg = Debug|x64
{589A07E7-5DE5-49FD-A62C-27795B806AFB}.All|x64.Build.0 = Debug|x64
{589A07E7-5DE5-49FD-A62C-27795B806AFB}.Debug|Win32.ActiveCfg = Debug|Win32
{589A07E7-5DE5-49FD-A62C-27795B806AFB}.Debug|Win32.Build.0 = Debug|Win32
{589A07E7-5DE5-49FD-A62C-27795B806AFB}.Debug|x64.ActiveCfg = Debug|x64
{589A07E7-5DE5-49FD-A62C-27795B806AFB}.Debug|x64.Build.0 = Debug|x64
{589A07E7-5DE5-49FD-A62C-27795B806AFB}.Release|Win32.ActiveCfg = Release|Win32
{589A07E7-5DE5-49FD-A62C-27795B806AFB}.Release|Win32.Build.0 = Release|Win32
{589A07E7-5DE5-49FD-A62C-27795B806AFB}.Release|x64.ActiveCfg = Release|x64
{589A07E7-5DE5-49FD-A62C-27795B806AFB}.Release|x64.Build.0 = Release|x64
{3745B86B-6BE8-3E67-FCB9-BE62A6131D67}.All|Win32.ActiveCfg = Debug|Win32
{3745B86B-6BE8-3E67-FCB9-BE62A6131D67}.All|Win32.Build.0 = Debug|Win32
{3745B86B-6BE8-3E67-FCB9-BE62A6131D67}.All|x64.ActiveCfg = Debug|x64
{3745B86B-6BE8-3E67-FCB9-BE62A6131D67}.All|x64.Build.0 = Debug|x64
{3745B86B-6BE8-3E67-FCB9-BE62A6131D67}.Debug|Win32.ActiveCfg = Debug|Win32
{3745B86B-6BE8-3E67-FCB9-BE62A6131D67}.Debug|Win32.Build.0 = Debug|Win32
{3745B86B-6BE8-3E67-FCB9-BE62A6131D67}.Debug|x64.ActiveCfg = Debug|x64
{3745B86B-6BE8-3E67-FCB9-BE62A6131D67}.Debug|x64.Build.0 = Debug|x64
{3745B86B-6BE8-3E67-FCB9-BE62A6131D67}.Release|Win32.ActiveCfg = Release|Win32
{3745B86B-6BE8-3E67-FCB9-BE62A6131D67}.Release|Win32.Build.0 = Release|Win32
{3745B86B-6BE8-3E67-FCB9-BE62A6131D67}.Release|x64.ActiveCfg = Release|x64
{3745B86B-6BE8-3E67-FCB9-BE62A6131D67}.Release|x64.Build.0 = Release|x64
{E9FF8127-D5F0-2398-59EB-702CE55F7800}.All|Win32.ActiveCfg = Debug|Win32
{E9FF8127-D5F0-2398-59EB-702CE55F7800}.All|Win32.Build.0 = Debug|Win32
{E9FF8127-D5F0-2398-59EB-702CE55F7800}.All|x64.ActiveCfg = Debug|x64
{E9FF8127-D5F0-2398-59EB-702CE55F7800}.All|x64.Build.0 = Debug|x64
{E9FF8127-D5F0-2398-59EB-702CE55F7800}.Debug|Win32.ActiveCfg = Debug|Win32
{E9FF8127-D5F0-2398-59EB-702CE55F7800}.Debug|Win32.Build.0 = Debug|Win32
{E9FF8127-D5F0-2398-59EB-702CE55F7800}.Debug|x64.ActiveCfg = Debug|x64
{E9FF8127-D5F0-2398-59EB-702CE55F7800}.Debug|x64.Build.0 = Debug|x64
{E9FF8127-D5F0-2398-59EB-702CE55F7800}.Release|Win32.ActiveCfg = Release|Win32
{E9FF8127-D5F0-2398-59EB-702CE55F7800}.Release|Win32.Build.0 = Release|Win32
{E9FF8127-D5F0-2398-59EB-702CE55F7800}.Release|x64.ActiveCfg = Release|x64
{E9FF8127-D5F0-2398-59EB-702CE55F7800}.Release|x64.Build.0 = Release|x64
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@ -2553,7 +2428,6 @@ Global
{3DAF028C-AB5B-4183-A01B-DCC43F5A87F0} = {D4A12E4C-DBDA-4614-BA26-3425AE9F60F5}
{1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0} = {F881ADA2-2F1A-4046-9FEB-191D9422D781}
{AFAC0568-7548-42D5-9F6A-8D3400A1E4F6} = {A5A27244-AD24-46E5-B01B-840CD296C91D}
{5FD31A25-5D83-4794-8BEE-904DAD84CE71} = {9460B5F1-0A95-41C4-BEB7-9C2C96459A7C}
{1A1FF289-4FD6-4285-A422-D31DD67A4723} = {CBD81696-EFB4-4D2F-8451-1B8DAA86155A}
{07113B25-D3AF-4E04-BA77-4CD1171F022C} = {C5F182F9-754A-4EC5-B50F-76ED02BE13F4}
{EC3E5C7F-EE09-47E2-80FE-546363D14A98} = {B8F5B47B-8568-46EB-B320-64C17D2A98BC}
@ -2562,32 +2436,26 @@ Global
{89385C74-5860-4174-9CAF-A39E7C48909C} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}
{9B9D2551-D6BD-4F20-8BE5-DE30E154A064} = {0C808854-54D1-4230-BFF5-77B5FD905000}
{8B754330-A434-4791-97E5-1EE67060BAC0} = {0C808854-54D1-4230-BFF5-77B5FD905000}
{692F6330-4D87-4C82-81DF-40DB5892636E} = {4CF6A6AC-07DE-4B9E-ABE1-7F98B64E0BB0}
{D3EC0AFF-76FC-4210-A825-9A17410660A3} = {F881ADA2-2F1A-4046-9FEB-191D9422D781}
{30A5B29C-983E-4580-9FD0-D647CCDCC7EB} = {E72B5BCB-6462-4D23-B419-3AF1A4AC3D78}
{1C453396-D912-4213-89FD-9B489162B7B5} = {A7AB4405-FDB7-4853-9FBB-1516B1C3D80A}
{CBEC7225-0C21-4DA8-978E-1F158F8AD950} = {F69A4A6B-9360-4EBB-A280-22AA3C455AC5}
{B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4} = {E72B5BCB-6462-4D23-B419-3AF1A4AC3D78}
{C24FB505-05D7-4319-8485-7540B44C8603} = {E72B5BCB-6462-4D23-B419-3AF1A4AC3D78}
{B5881A85-FE70-4F64-8607-2CAAE52669C6} = {E72B5BCB-6462-4D23-B419-3AF1A4AC3D78}
{05515420-16DE-4E63-BE73-85BE85BA5142} = {9ADF1E48-2F5C-4ED7-A893-596259FABFE0}
{EEF031CB-FED8-451E-A471-91EC8D4F6750} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}
{6EDFEFD5-3596-4FA9-8EBA-B331547B35A3} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}
{F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}
{E727E8F6-935D-46FE-8B0E-37834748A0E3} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}
{0DF3ABD0-DDC0-4265-B778-07C66780979B} = {9460B5F1-0A95-41C4-BEB7-9C2C96459A7C}
{DF018947-0FFF-4EB3-BDEE-441DC81DA7A4} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}
{FEA1EEF7-876F-48DE-88BF-C0E3E606D758} = {F881ADA2-2F1A-4046-9FEB-191D9422D781}
{7F1610F1-DD5A-4CF7-8610-30AB12C60ADD} = {F881ADA2-2F1A-4046-9FEB-191D9422D781}
{9254C4B0-6F60-42B6-BB3A-36D63FC001C7} = {A5A27244-AD24-46E5-B01B-840CD296C91D}
{4043FC6A-9A30-4577-8AD5-9B233C9575D8} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}
{71A967D5-0E99-4CEF-A587-98836EE6F2EF} = {E72B5BCB-6462-4D23-B419-3AF1A4AC3D78}
{AB91A099-7690-4ECF-8994-E458F4EA1ED4} = {F69A4A6B-9360-4EBB-A280-22AA3C455AC5}
{988CACF7-3FCB-4992-BE69-77872AE67DC8} = {6CD61A1D-797C-470A-BE08-8C31B68BB336}
{0A18A071-125E-442F-AFF7-A3F68ABECF99} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}
{08DAD348-9E0A-4A2E-97F1-F1E7E24A7836} = {F69A4A6B-9360-4EBB-A280-22AA3C455AC5}
{8DEB383C-4091-4F42-A56F-C9E46D552D79} = {F881ADA2-2F1A-4046-9FEB-191D9422D781}
{2C3C2423-234B-4772-8899-D3B137E5CA35} = {F881ADA2-2F1A-4046-9FEB-191D9422D781}
{3850D93A-5F24-4922-BC1C-74D08C37C256} = {E72B5BCB-6462-4D23-B419-3AF1A4AC3D78}
{2CA40887-1622-46A1-A7F9-17FD7E7E545B} = {A5A27244-AD24-46E5-B01B-840CD296C91D}
{D7F1E3F2-A3F4-474C-8555-15122571AF52} = {E72B5BCB-6462-4D23-B419-3AF1A4AC3D78}
@ -2616,7 +2484,6 @@ Global
{D3D8B329-20BE-475E-9E83-653CEA0E0EF5} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}
{38FE0559-9910-43A8-9E45-3E5004C27692} = {A5A27244-AD24-46E5-B01B-840CD296C91D}
{0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}
{2A3D00C6-588D-4E86-81AC-9EF5EDE86E03} = {E72B5BCB-6462-4D23-B419-3AF1A4AC3D78}
{B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E} = {6CD61A1D-797C-470A-BE08-8C31B68BB336}
{7B42BDA1-72C0-4378-A9B6-5C530F8CD61E} = {0C808854-54D1-4230-BFF5-77B5FD905000}
{834E2B2F-5483-4B80-8FE3-FE48FF76E5C0} = {0C808854-54D1-4230-BFF5-77B5FD905000}
@ -2665,12 +2532,8 @@ Global
{50AAC2CE-BFC9-4912-87CC-C6381850D735} = {E72B5BCB-6462-4D23-B419-3AF1A4AC3D78}
{A61D7CB4-75A5-4A55-8CA1-BE5AF615D921} = {E72B5BCB-6462-4D23-B419-3AF1A4AC3D78}
{4748FF56-CA85-4809-97D6-A94C0FAC1D77} = {E72B5BCB-6462-4D23-B419-3AF1A4AC3D78}
{60C542EE-6882-4EA2-8C21-5AB6DB1BA73F} = {E72B5BCB-6462-4D23-B419-3AF1A4AC3D78}
{2469B306-B027-4FF2-8815-C9C1EA2CAE79} = {E72B5BCB-6462-4D23-B419-3AF1A4AC3D78}
{9DE35039-A8F6-4FBF-B1B6-EB527F802411} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}
{26C82FCE-E0CF-4D10-A00C-D8E582FFEB53} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}
{74B120FF-6935-4DFE-A142-CDB6BEA99C90} = {9460B5F1-0A95-41C4-BEB7-9C2C96459A7C}
{C13CC324-0032-4492-9A30-310A6BD64FF5} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}
{886B5E9D-F2C2-4AF2-98C8-EF98C4C770E6} = {E72B5BCB-6462-4D23-B419-3AF1A4AC3D78}
{019DBD2A-273D-4BA4-BF86-B5EFE2ED76B1} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}
{D2396DD7-7D38-473A-ABB7-6F96D65AE1B9} = {9DE35039-A8F6-4FBF-B1B6-EB527F802411}
@ -2679,7 +2542,6 @@ Global
{CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA} = {9DE35039-A8F6-4FBF-B1B6-EB527F802411}
{B535402E-38D2-4D54-8360-423ACBD17192} = {9DE35039-A8F6-4FBF-B1B6-EB527F802411}
{2386B892-35F5-46CF-A0F0-10394D2FBF9B} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}
{77BC1DD2-C9A1-44D7-BFFA-1320370CACB9} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}
{85F0CF8C-C7AB-48F6-BA19-CC94CF87F981} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}
{ED2CA8B5-8E91-4296-A120-02BB0B674652} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}
{FD60942F-72D6-4CA1-8B57-EA1D1B95A89E} = {ED2CA8B5-8E91-4296-A120-02BB0B674652}
@ -2728,6 +2590,9 @@ Global
{0B612F84-7533-4DEC-AEDD-5C9CBCF15EAC} = {31C2761D-20E0-4BF8-98B9-E32F0D8DD6E1}
{580675D7-C1C9-4197-AAC5-00F64FAFDE78} = {9388C266-C3FC-468A-92EF-0CBC35941412}
{69A7464A-9B0D-4804-A108-835229DACF58} = {9388C266-C3FC-468A-92EF-0CBC35941412}
{589A07E7-5DE5-49FD-A62C-27795B806AFB} = {9388C266-C3FC-468A-92EF-0CBC35941412}
{3745B86B-6BE8-3E67-FCB9-BE62A6131D67} = {9388C266-C3FC-468A-92EF-0CBC35941412}
{E9FF8127-D5F0-2398-59EB-702CE55F7800} = {E72B5BCB-6462-4D23-B419-3AF1A4AC3D78}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {09840DE7-9208-45AA-9667-1A71EE93BD1E}

86
LICENSE
View File

@ -1202,10 +1202,6 @@ Files: src/include/switch_cpp.h
Copyright: 2007 Yossi Neiman <freeswitch@cartissolutions.com>
License: MPL-1.1 (well, maybe -- it refers to a COPYING file, so probably docs/COPYING, in which case MPL-1.1)
Files: libs/iksemel/*
Copyright: 2000-2007 Gurer Ozen <madcat@e-kolay.net>
License: LGPL-2.1
Files: libs/apr*/*
Copyright: 2000-2005 The Apache Software Foundation or its licensors
1991-1992, RSA Data Security, Inc.
@ -1313,11 +1309,6 @@ Copyright: 2009-2012 10gen Inc.
2001 Unicode, Inc.
License: Apache-2.0
Files: src/mod/applications/mod_stress/FFTReal.h
src/mod/applications/mod_stress/FFTReal.cpp
Copyright: 1999 Laurent de Soras
License: unclear
Files: src/mod/loggers/mod_syslog/mod_syslog.c
Copyright: 2005-2010, James Martelletti <james@nerdc0re.com>
License: MPL-1.1
@ -1330,10 +1321,6 @@ Files: src/mod/event_handlers/mod_cdr_mongodb/driver/src/md5.[ch]
Copyright: 1999, 2000, 2002 Aladdin Enterprises.
License: zlib/libpng
Files: src/mod/event_handlers/mod_radius_cdr/mod_radius_cdr.h
Copyright: 2006, Author: Yossi Neiman of Cartis Solutions, Inc. <freeswitch AT cartissolutions.com>
License: MPL-1.1
Files: src/mod/say/mod_say_??/mod_say_??.c
scripts/c/socket2me/socket2me.c
src/mod/xml_int/mod_xml_scgi/xml_scgi_server.pl
@ -1497,18 +1484,6 @@ Copyright: 2010 Ilnitskiy Mixim (max.h323@gmail.com)
2010 Georgiewskiy Yuriy (bottleman@icf.org.ru)
License: MPL-1.1
Files: src/mod/endpoints/mod_khomp/*
Copyright: 2007-2010 Khomp Ind. & Com.
License: MPL-1.1 or LGPL-2.1+
Files: src/mod/endpoints/mod_khomp/mod_khomp.cpp
Copyright: 2005-2014, Anthony Minessale II <anthm@freeswitch.org>
License: MPL-1.1
Files: src/mod/endpoints/mod_khomp/commons/base/atomic.hpp
Copyright: 1998 Doug Rabson
License: BSD-2-clause
Files: src/mod/languages/mod_java/modjava.c
Copyright: 2007, Damjan Jovanovic <d a m j a n d o t j o v a t g m a i l d o t c o m>
License: MPL-1.1
@ -1517,22 +1492,6 @@ Files: src/mod/languages/mod_managed/*
Copyright: 2008, Michael Giagnocavo <mgg@giagnocavo.net>
License: MPL-1.1
Files: src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/*
src/mod/languages/mod_lua/lua-mode.el
libs/iksemel/ltmain.sh
Copyright: 1995-2007 Free Software Foundation, Inc.
License: GPL-2+
Files: src/mod/endpoints/mod_gsmopen/libctb-0.16/*
Copyright: 2001-2010 Joachim Buermann
License: wxWindows
Files: src/mod/endpoints/mod_gsmopen/libctb-0.16/src/win32/getopt.cpp
Copyright: 2001 ?
License: clueless and unacceptable
FIXME -- this cannot go in Debian -- the license is stated as:
(I think Open Source)
Files: src/mod/endpoints/mod_rtmp/libamf/src/types.[ch]
Copyright: 2007, 2008 Marc Noirot <marc.noirot AT gmail.com>
License: GPL-2+
@ -1544,10 +1503,6 @@ Files: src/mod/endpoints/mod_rtmp/rtmp.c
Copyright: 2011-2012, Barracuda Networks Inc.
License: MPL-1.1
Files: src/mod/endpoints/mod_gsmopen/asterisk/celliax_spandsp.[ch]
Copyright: 2001-2006 Steve Underwood
License: GPL-2
Files: src/mod/endpoints/mod_skinny/*
src/mod/asr_tts/mod_tts_commandline/mod_tts_commandline.c
Copyright: 2009-2010, Mathieu Parent <math.parent@gmail.com>
@ -1557,15 +1512,6 @@ Files: src/mod/endpoints/mod_skinny/*.p[lm]
Copyright: 2010, Mathieu Parent <math.parent@gmail.com>
License: Perl
Files: src/mod/endpoints/mod_portaudio/*
Copyright: 1999-2000 Ross Bencina and Phil Burk
2005-2014, Anthony Minessale II <anthm@freeswitch.org>
License: MIT/X11 (BSD like)
Files: src/mod/endpoints/mod_portaudio/mod_portaudio.c
Copyright: 2005-2014, Anthony Minessale II <anthm@freeswitch.org>
License: MPL-1.1
Files: src/mod/endpoints/mod_sofia/sip-dig.c
Copyright: 2006 Nokia Corporation
License: LGPL-2.1+
@ -1606,20 +1552,11 @@ Files: libs/libcodec2/src/pack.c
Copyright: 2010 Perens LLC <bruce@perens.com>
License: GPL-3+
Files: src/mod/codecs/mod_sangoma_codec/mod_sangoma_codec.c
src/include/switch_profile.h
Files: src/include/switch_profile.h
src/switch_profile.c
Copyright: 2009,2010, Sangoma Technologies
License: BSD-3-clause
Files: src/mod/codecs/mod_isac/*
Copyright: 2011-2012 The WebRTC project authors
License: BSD-3-clause
Files: src/mod/codecs/mod_isac/mod_isac.c
Copyright: 2005-2014, Anthony Minessale II <anthm@freeswitch.org>
License: MPL-1.1
Files: libs/srtp/*
Copyright: 2001-2006, Cisco Systems, Inc.
2005 Ingate Systems AB
@ -1709,27 +1646,6 @@ License: LGPL-2.1
Files: libs/broadvoice/autogen.sh
License: GPL-2
Files: libs/libzrtp/*
Copyright: 2006-2012 Philip R. Zimmermann.
1993-2005 Colin Plumb
1998-2006, Dr Brian Gladman, Worcester, UK.
2002, Bryce "Zooko" Wilcox-O'Hearn
2010 Soft Industry
License: AGPL-3 or MPL-1.1
Files: libs/libzrtp/test/cmockery/cmockery.c
Copyright: 2008 Google Inc
License: Apache-2.0
Files: libs/libzrtp/third_party/bnlib/legal.c
libs/libzrtp/third_party/bnlib/*
Copyright: 1993-2005 Colin Plumb
License: GPL-2 or GPL-3 or MPL-1.1
Files: libs/libzrtp/third_party/bnlib/test/md5.c
Copyright: 1995 Abandoned Colin Plumb
License: public-domain
Files: libs/win32/sqlite/sqlite3.[ch]
libs/win32/sqlite/parse.c
Copyright: 2006 Abandoned D. Richard Hipp <drh@hwaci.com>

View File

@ -231,9 +231,9 @@ CORE_LIBS+=libfreeswitch_libyuv.la
endif
lib_LTLIBRARIES = libfreeswitch.la
libfreeswitch_la_CFLAGS = $(CORE_CFLAGS) $(SQLITE_CFLAGS) $(GUMBO_CFLAGS) $(FVAD_CFLAGS) $(FREETYPE_CFLAGS) $(CURL_CFLAGS) $(PCRE_CFLAGS) $(SPEEX_CFLAGS) $(LIBEDIT_CFLAGS) $(openssl_CFLAGS) $(SOFIA_SIP_CFLAGS) $(AM_CFLAGS) $(TPL_CFLAGS)
libfreeswitch_la_CFLAGS = $(CORE_CFLAGS) $(SQLITE_CFLAGS) $(GUMBO_CFLAGS) $(FVAD_CFLAGS) $(FREETYPE_CFLAGS) $(CURL_CFLAGS) $(PCRE2_CFLAGS) $(SPEEX_CFLAGS) $(LIBEDIT_CFLAGS) $(openssl_CFLAGS) $(SOFIA_SIP_CFLAGS) $(AM_CFLAGS) $(TPL_CFLAGS)
libfreeswitch_la_LDFLAGS = -version-info 1:0:0 $(AM_LDFLAGS) $(PLATFORM_CORE_LDFLAGS) -no-undefined
libfreeswitch_la_LIBADD = $(CORE_LIBS) $(APR_LIBS) $(SQLITE_LIBS) $(GUMBO_LIBS) $(FVAD_LIBS) $(FREETYPE_LIBS) $(CURL_LIBS) $(PCRE_LIBS) $(SPEEX_LIBS) $(LIBEDIT_LIBS) $(SYSTEMD_LIBS) $(openssl_LIBS) $(PLATFORM_CORE_LIBS) $(TPL_LIBS) $(SPANDSP_LIBS) $(SOFIA_SIP_LIBS)
libfreeswitch_la_LIBADD = $(CORE_LIBS) $(APR_LIBS) $(SQLITE_LIBS) $(GUMBO_LIBS) $(FVAD_LIBS) $(FREETYPE_LIBS) $(CURL_LIBS) $(PCRE2_LIBS) $(SPEEX_LIBS) $(LIBEDIT_LIBS) $(SYSTEMD_LIBS) $(openssl_LIBS) $(PLATFORM_CORE_LIBS) $(TPL_LIBS) $(SPANDSP_LIBS) $(SOFIA_SIP_LIBS)
libfreeswitch_la_DEPENDENCIES = $(BUILT_SOURCES)
if HAVE_PNG
@ -244,19 +244,6 @@ if HAVE_ODBC
libfreeswitch_la_LDFLAGS += $(ODBC_LIB_FLAGS)
endif
if ENABLE_ZRTP
CORE_CFLAGS += -I$(switch_srcdir)/libs/libzrtp/third_party/bgaes
CORE_CFLAGS += -I$(switch_srcdir)/libs/libzrtp/third_party/bnlib
CORE_CFLAGS += -isystem $(switch_srcdir)/libs/libzrtp/include
ZRTP_LDFLAGS = -L$(switch_srcdir)/libs/libzrtp/third_party/bnlib
ZRTP_LDFLAGS += -L$(switch_srcdir)/libs/libzrtp
ZRTP_LIBS = -lbn -lzrtp
libfreeswitch_la_LDFLAGS += $(ZRTP_LDFLAGS)
libfreeswitch_la_LIBADD += $(ZRTP_LIBS)
CORE_LIBS += libs/libzrtp/libzrtp.a
LIBS += libs/libzrtp/third_party/bnlib/libbn.a
endif
library_includetestdir = $(includedir)/test
library_includetest_HEADERS = \
src/include/test/switch_fct.h \
@ -407,7 +394,8 @@ libfreeswitch_la_SOURCES = \
libs/miniupnpc/minissdpc.c \
libs/miniupnpc/upnperrors.c \
libs/libnatpmp/natpmp.c \
libs/libnatpmp/getgateway.c
libs/libnatpmp/getgateway.c \
src/switch_uuidv7.c
if ENABLE_CPP
libfreeswitch_la_SOURCES += src/switch_cpp.cpp
@ -570,9 +558,6 @@ src/include/switch_version.h: src/include/switch_version.h.in Makefile $(switch_
libs/libedit/src/.libs/libedit.a:
cd libs/libedit && $(MAKE)
libs/libzrtp/libzrtp.a:
cd libs/libzrtp && $(MAKE)
libs/libvpx/Makefile: libs/libvpx/.update
cd libs/libvpx && CC="$(CC)" CXX="$(CXX)" CFLAGS="$(CFLAGS) $(VISIBILITY_FLAG)" CXXFLAGS="$(CXXFLAGS)" LDFLAGS="$(LDFLAGS)" ./configure --enable-pic --disable-docs --disable-examples --disable-install-bins --disable-install-srcs --disable-unit-tests --size-limit=16384x16384
@ -604,10 +589,6 @@ libs/srtp/libsrtp.la: libs/srtp libs/srtp/.update $(SRTP_SRC)
##
## helper targets
##
yaml-files:
@echo `mkdir $(DESTDIR)$(confdir)/yaml 2>/dev/null`
$(INSTALL) -m 644 $(switch_srcdir)/conf/default/yaml/*.yaml $(DESTDIR)$(confdir)/yaml
vm-sync:
test -d $(DESTDIR)$(confdir) || $(mkinstalldirs) $(DESTDIR)$(confdir)
test -d $(DESTDIR)$(confdir)/lang || $(mkinstalldirs) $(DESTDIR)$(confdir)/lang
@ -684,9 +665,6 @@ nodepends: .nodepends
yesdepends:
rm .nodepends
iksemel-dep:
make -C src/mod/formats/mod_ssml deps
core: $(switch_builddir)/modules.conf src/include/switch_version.h $(CORE_LIBS)
$(MAKE) $(AM_MAKEFLAGS) libfreeswitch.la
@ -729,7 +707,7 @@ pristine:
git clean -fdx
git reset --hard
update-clean: clean python-reconf python3-reconf
update-clean: clean python3-reconf
cd libs/esl && $(MAKE) clean
cd libs/srtp && $(MAKE) clean
@ -742,10 +720,6 @@ sndfile-reconf:
cd libs/libsndfile && ./config.status --recheck
cd libs/libsndfile && ./config.status
python-reconf:
rm -f src/mod/languages/mod_python/Makefile
./config.status
python3-reconf:
rm -f src/mod/languages/mod_python3/Makefile
./config.status
@ -760,13 +734,6 @@ srtp-reconf:
cd libs/srtp && sh ./config.status --recheck
cd libs/srtp && sh ./config.status
iks-reconf:
cd libs/iksemel && $(MAKE) clean
cd libs/iksemel && autoreconf -fi
cd libs/iksemel && sh ./configure.gnu $(MY_DEFAULT_ARGS)
$(MAKE) mod_ssml-clean
cluecon:
@clear
@echo Thank you for updating. This is going to take a while so relax.

View File

@ -8,7 +8,7 @@ Visit [https://signalwire.com](https://signalwire.com/) or https://github.com/
FreeSWITCH is available on [Github](https://github.com/signalwire/freeswitch) in source code format. You can checkout the development branch and build for many popular platforms including Linux, Windows, MacOSX and BSD. There is an issue tracker and pull request system available as part of the repo online.
See [https://freeswitch.com/#getting-started](https://freeswitch.com/#getting-started) for more detailed instructions.
See https://developer.signalwire.com/freeswitch/FreeSWITCH-Explained/ for more detailed instructions.
## Additional Help
@ -33,20 +33,25 @@ The main index for documentation is available at:
Step by step tutorials to install FreeSWITCH from packages:
* [Debian](https://freeswitch.org/confluence/display/FREESWITCH/Debian) [<b>Recommended</b>]
* [Using FSGET](/scripts/packaging) [<b>Recommended</b>]
* [Debian](https://freeswitch.org/confluence/display/FREESWITCH/Debian)
* [Raspberry Pi](https://freeswitch.org/confluence/display/FREESWITCH/Raspberry+Pi)
* [CentOS 7](https://freeswitch.org/confluence/display/FREESWITCH/CentOS+7+and+RHEL+7)
### Build from source
Example Dockerfiles to build FreeSWITCH and dependencies from source:
* https://github.com/signalwire/freeswitch/tree/dockerfile/docker/examples
* https://github.com/signalwire/freeswitch/tree/master/docker/examples
Step by step tutorials to build FreeSWITCH with provided dependency packages:
* [Debian](https://freeswitch.org/confluence/display/FREESWITCH/Debian#Debian-buildfromsource) [<b>Recommended</b>]
* [Raspberry Pi](https://freeswitch.org/confluence/display/FREESWITCH/Raspberry+Pi)
* [CentOS 7](https://freeswitch.org/confluence/display/FREESWITCH/CentOS+7+and+RHEL+7)
### How to build Debian packages
* [Using FSDEB](/scripts/packaging/build)
## Downloads
* [Tarballs](https://files.freeswitch.org/releases/freeswitch/)
@ -67,8 +72,8 @@ This is the place to get answers faster and chat with other users in real time.
Slack Community:
* https://signalwire.community/
Mailing list:
Mailing list (ARCHIVED):
* http://lists.freeswitch.org/mailman/listinfo/freeswitch-users
* http://lists.freeswitch.org/pipermail/freeswitch-users/
**Thank you for using FreeSWITCH!**

5
SECURITY.md Normal file
View File

@ -0,0 +1,5 @@
# Security Policy
## Reporting a Vulnerability
Send an e-mail to security@signalwire.com to report a vulnerability. If accepted, we'll create a security advisory and add you and your team as collaborators. Please allow our team sufficient time to resolve the vulnerability before disclosing it; we'll remain in contact about the fix and may ask for your assistance to verify it is resolved.

View File

@ -13,4 +13,3 @@ m4_include([build/config/sac-pkg-config.m4])
m4_include([build/config/sac-openssl.m4])
m4_include([build/config/sched_setaffinity.m4])
m4_include([libs/apr/build/apr_common.m4])
m4_include([libs/iksemel/build/libgnutls.m4])

View File

@ -10,7 +10,7 @@ BGJOB=false
VERBOSE=false
BASEDIR=`pwd`;
LIBDIR=${BASEDIR}/libs;
SUBDIRS="apr libzrtp iksemel srtp fs";
SUBDIRS="apr srtp fs";
while getopts 'jhd:v' o; do
case "$o" in
@ -172,10 +172,6 @@ bootstrap_apr() {
}
bootstrap_libzrtp() {
(cd ${LIBDIR}/libzrtp && ./bootstrap.sh)
}
# Libs automake automation function
libbootstrap() {
i=$1
@ -260,7 +256,7 @@ bootstrap_libs_post() {
bootstrap_libs() {
for i in ${SUBDIRS}; do
case "$i" in
apr|fs|libzrtp)
apr|fs)
${BGJOB} && wait
bootstrap_$i
continue

View File

@ -13,7 +13,7 @@ DOWNLOAD=http://files.freeswitch.org/downloads/libs
JPEG=v8d
OPENSSL=1.0.1l
SQLITE=autoconf-3080403
PCRE=8.35
PCRE2=10.42
CURL=7.40.0
SPEEX=1.2rc1
LIBEDIT=20140618-3.1
@ -45,7 +45,7 @@ has-git:
@git --version || (echo "please install git by running 'make install-git'" && false)
clean:
@rm -rf openssl* ldns* jpeg* pcre* perl* pkg-config* speex* sqlite* libedit* curl* *~
@rm -rf openssl* ldns* jpeg* pcre2* perl* pkg-config* speex* sqlite* libedit* curl* *~
(cd freeswitch.git && git clean -fdx && git reset --hard HEAD && git pull)
libjpeg: jpeg-8d/.done
@ -66,9 +66,9 @@ sqlite-$(SQLITE):
(test -d $@) || (wget -4 -O $@.tar.gz $(DOWNLOAD)/$@.tar.gz && tar zxfv $@.tar.gz)
(cd $@ && ./configure --prefix=$(PREFIX) && make && sudo make install && touch .done_sqlite && touch .done)
pcre: pcre-$(PCRE)/.done
pcre-$(PCRE)/.done: pcre-$(PCRE)
pcre-$(PCRE):
pcre2: pcre2-$(PCRE2)/.done
pcre2-$(PCRE2)/.done: pcre2-$(PCRE2)
pcre2-$(PCRE2):
(test -d $@) || (wget -4 -O $@.tar.gz $(DOWNLOAD)/$@.tar.gz && tar zxfv $@.tar.gz)
(cd $@ && ./configure --prefix=$(PREFIX) && make && sudo make install && touch .done)
@ -96,4 +96,4 @@ ldns-$(LDNS):
(test -d $@) || (wget -4 -O $@.tar.gz $(DOWNLOAD)/$@.tar.gz && tar zxfv $@.tar.gz)
(cd $@ && ./configure --with-ssl=$(PREFIX) --prefix=$(PREFIX) && make && sudo make install && touch .done)
deps: libjpeg openssl sqlite pcre curl speex libedit ldns
deps: libjpeg openssl sqlite pcre2 curl speex libedit ldns

View File

@ -6,8 +6,8 @@
# in that same directory.
#
#
RPMS=git gcc-c++ autoconf automake libtool wget python ncurses-devel zlib-devel libjpeg-devel openssl-devel e2fsprogs-devel sqlite-devel libcurl-devel pcre-devel speex-devel ldns-devel libedit-devel
DEBS=git build-essential automake autoconf 'libtool-bin|libtool' wget python uuid-dev zlib1g-dev 'libjpeg8-dev|libjpeg62-turbo-dev' libncurses5-dev libssl-dev libpcre3-dev libcurl4-openssl-dev libldns-dev libedit-dev libspeexdsp-dev libspeexdsp-dev libsqlite3-dev perl libgdbm-dev libdb-dev bison libvlc-dev pkg-config
RPMS=git gcc-c++ autoconf automake libtool wget ncurses-devel zlib-devel libjpeg-devel openssl-devel e2fsprogs-devel sqlite-devel libcurl-devel pcre2-devel speex-devel ldns-devel libedit-devel
DEBS=git build-essential automake autoconf 'libtool-bin|libtool' wget uuid-dev zlib1g-dev 'libjpeg8-dev|libjpeg62-turbo-dev' libncurses5-dev libssl-dev libpcre2-dev libcurl4-openssl-dev libldns-dev libedit-dev libspeexdsp-dev libspeexdsp-dev libsqlite3-dev perl libgdbm-dev libdb-dev bison libvlc-dev pkg-config
freeswitch: deps has-git freeswitch.git/Makefile
cd freeswitch.git && make

View File

@ -7,7 +7,7 @@
#
#
PKG=rsync-3.1.0 git automake-1.14.1 autoconf-2.69p1 libtool gmake bzip2 jpeg wget pcre speex libldns
PKG=rsync-3.1.0 git automake-1.14.1 autoconf-2.69p1 libtool gmake bzip2 jpeg wget pcre2 speex libldns
PREFIX=/usr/local/freeswitch
DOWNLOAD=http://files.freeswitch.org/downloads/libs
OPENSSL=1.0.1j

View File

@ -12,7 +12,7 @@ DOWNLOAD=http://files.freeswitch.org/downloads/libs
JP=v8d
SSL=1.0.1j
SQLITE=autoconf-3080403
PCRE=8.35
PCRE2=10.42
CURL=7.35.0
SPEEX=1.2rc1
LIBEDIT=20140618-3.1
@ -43,7 +43,7 @@ has-git:
@git --version || (echo "please install git by running 'gmake install-git'" && false)
clean:
@rm -rf openssl* ldns* jpeg* pcre* perl* pkg-config* speex* sqlite* libedit* curl* *~
@rm -rf openssl* ldns* jpeg* pcre2* perl* pkg-config* speex* sqlite* libedit* curl* *~
(cd freeswitch.git && git clean -fdx && git reset --hard HEAD && git pull)
libjpeg: jpeg-8d/.done
@ -64,9 +64,9 @@ sqlite-$(SQLITE):
(test -d $@) || (wget -4 -O $@.tar.gz $(DOWNLOAD)/$@.tar.gz && tar zxfv $@.tar.gz)
(cd $@ && CFLAGS=-m64 LDFLAGS=-m64 ./configure --prefix=$(PREFIX) && gmake && sudo gmake install && touch .done)
pcre: pcre-$(PCRE)/.done
pcre-$(PCRE)/.done: pcre-$(PCRE)
pcre-$(PCRE):
pcre2: pcre2-$(PCRE2)/.done
pcre2-$(PCRE2)/.done: pcre2-$(PCRE2)
pcre2-$(PCRE2):
(test -d $@) || (wget -4 -O $@.tar.gz $(DOWNLOAD)/$@.tar.gz && tar zxfv $@.tar.gz)
(cd $@ && CXXFLAGS=-m64 CFLAGS=-m64 LDFLAGS=-m64 ./configure --prefix=$(PREFIX) && gmake && sudo gmake install && touch .done)
@ -107,4 +107,4 @@ perl-$(PERL):
(test -d $@) || (wget -4 -O $@.tar.gz $(DOWNLOAD)/$@.tar.gz && tar zxfv $@.tar.gz)
(cd $@ && CFLAGS=-m64 LDFLAGS=-m64 ./configure.gnu -Dcc=gcc --prefix=$(PREFIX) && gmake && sudo gmake install && touch .done)
deps: has-git libjpeg openssl sqlite pcre curl speex libedit ldns pkg-config perl
deps: has-git libjpeg openssl sqlite pcre2 curl speex libedit ldns pkg-config perl

View File

@ -1,8 +0,0 @@
#!/bin/sh
tar zxf libzrtp-0.81.514.tar.gz
cd libzrtp-0.81.514
patch -p1 < ../patches/zrtp_bnlib_pic.diff
cd projects/gnu/
./configure CFLAGS="-fPIC"
make
make install

View File

@ -17,5 +17,4 @@ extraclean-modules: extraclean
print_tests:
@set +e; \
test -z "$(TESTS)" || for i in $(TESTS); do echo $(subdir)/$$i; done;
test -z "$(TESTS)" || for i in $(TESTS); do echo $(subdir)/$$i; done; echo;

33
build/modules.conf.in Normal file → Executable file
View File

@ -1,4 +1,3 @@
#applications/mod_abstraction
applications/mod_av
#applications/mod_avmd
#applications/mod_bert
@ -26,29 +25,18 @@ applications/mod_hash
#applications/mod_hiredis
applications/mod_httapi
#applications/mod_http_cache
#applications/mod_ladspa
#applications/mod_lcr
#applications/mod_memcache
#applications/mod_mongo
#applications/mod_mp4
#applications/mod_mp4v2
#applications/mod_nibblebill
#applications/mod_oreka
#applications/mod_osp
#applications/mod_prefix
#applications/mod_rad_auth
#applications/mod_redis
#applications/mod_rss
applications/mod_signalwire
applications/mod_sms
#applications/mod_sms_flowroute
#applications/mod_snapshot
#applications/mod_snom
#applications/mod_sonar
#applications/mod_soundtouch
applications/mod_spandsp
#applications/mod_spy
#applications/mod_stress
applications/mod_test
#applications/mod_translate
applications/mod_valet_parking
@ -56,7 +44,6 @@ applications/mod_valet_parking
#applications/mod_vmd
applications/mod_voicemail
#applications/mod_voicemail_ivr
#asr_tts/mod_cepstral
#asr_tts/mod_flite
#asr_tts/mod_pocketsphinx
#asr_tts/mod_tts_commandline
@ -64,21 +51,14 @@ codecs/mod_amr
#codecs/mod_amrwb
codecs/mod_b64
#codecs/mod_bv
#codecs/mod_clearmode
#codecs/mod_codec2
#codecs/mod_com_g729
#codecs/mod_dahdi_codec
codecs/mod_g723_1
codecs/mod_g729
codecs/mod_h26x
#codecs/mod_ilbc
#codecs/mod_isac
#codecs/mod_mp4v
codecs/mod_opus
#codecs/mod_sangoma_codec
#codecs/mod_silk
#codecs/mod_siren
#codecs/mod_theora
#databases/mod_mariadb
databases/mod_pgsql
dialplans/mod_dialplan_asterisk
@ -86,12 +66,9 @@ dialplans/mod_dialplan_asterisk
dialplans/mod_dialplan_xml
#directories/mod_ldap
#endpoints/mod_alsa
#endpoints/mod_gsmopen
#endpoints/mod_h323
#endpoints/mod_khomp
endpoints/mod_loopback
#endpoints/mod_opal
#endpoints/mod_portaudio
endpoints/mod_rtc
#endpoints/mod_rtmp
endpoints/mod_skinny
@ -108,22 +85,16 @@ event_handlers/mod_event_socket
#event_handlers/mod_fail2ban
#event_handlers/mod_format_cdr
#event_handlers/mod_json_cdr
#event_handlers/mod_radius_cdr
#event_handlers/mod_odbc_cdr
#event_handlers/mod_kazoo
#event_handlers/mod_rayo
#event_handlers/mod_smpp
#event_handlers/mod_snmp
#event_handlers/mod_event_zmq
#formats/mod_imagick
formats/mod_local_stream
formats/mod_native_file
formats/mod_png
#formats/mod_portaudio_stream
#formats/mod_shell_stream
#formats/mod_shout
formats/mod_sndfile
#formats/mod_ssml
formats/mod_tone_stream
#formats/mod_vlc
#formats/mod_opusfile
@ -132,15 +103,12 @@ formats/mod_tone_stream
languages/mod_lua
#languages/mod_managed
#languages/mod_perl
#languages/mod_python
#languages/mod_python3
#languages/mod_v8
#languages/mod_yaml
loggers/mod_console
#loggers/mod_graylog2
loggers/mod_logfile
loggers/mod_syslog
#loggers/mod_raven
#say/mod_say_de
say/mod_say_en
#say/mod_say_es
@ -164,7 +132,6 @@ say/mod_say_en
xml_int/mod_xml_cdr
#xml_int/mod_xml_curl
#xml_int/mod_xml_ldap
#xml_int/mod_xml_radius
xml_int/mod_xml_rpc
xml_int/mod_xml_scgi

28
build/modules.conf.most Normal file → Executable file
View File

@ -1,4 +1,3 @@
applications/mod_abstraction
applications/mod_av
applications/mod_avmd
applications/mod_bert
@ -26,27 +25,18 @@ applications/mod_hash
applications/mod_hiredis
applications/mod_httapi
applications/mod_http_cache
#applications/mod_ladspa
applications/mod_lcr
applications/mod_memcache
applications/mod_mongo
applications/mod_mp4
applications/mod_nibblebill
applications/mod_oreka
#applications/mod_osp
applications/mod_prefix
#applications/mod_rad_auth
applications/mod_redis
applications/mod_rss
applications/mod_signalwire
applications/mod_sms
applications/mod_snapshot
applications/mod_snom
applications/mod_sonar
applications/mod_soundtouch
applications/mod_spandsp
applications/mod_spy
applications/mod_stress
applications/mod_test
applications/mod_translate
applications/mod_valet_parking
@ -54,7 +44,6 @@ applications/mod_video_filter
applications/mod_vmd
applications/mod_voicemail
applications/mod_voicemail_ivr
#asr_tts/mod_cepstral
asr_tts/mod_flite
asr_tts/mod_pocketsphinx
asr_tts/mod_tts_commandline
@ -64,18 +53,12 @@ codecs/mod_b64
codecs/mod_bv
codecs/mod_codec2
#codecs/mod_com_g729
codecs/mod_dahdi_codec
codecs/mod_g723_1
codecs/mod_g729
codecs/mod_h26x
codecs/mod_ilbc
codecs/mod_isac
codecs/mod_mp4v
codecs/mod_opus
codecs/mod_sangoma_codec
codecs/mod_silk
codecs/mod_siren
codecs/mod_theora
#databases/mod_mariadb
databases/mod_pgsql
dialplans/mod_dialplan_asterisk
@ -83,12 +66,9 @@ dialplans/mod_dialplan_directory
dialplans/mod_dialplan_xml
directories/mod_ldap
#endpoints/mod_alsa
#endpoints/mod_gsmopen
#endpoints/mod_h323
#endpoints/mod_khomp
endpoints/mod_loopback
#endpoints/mod_opal
endpoints/mod_portaudio
endpoints/mod_rtc
endpoints/mod_rtmp
endpoints/mod_skinny
@ -104,21 +84,15 @@ event_handlers/mod_event_multicast
event_handlers/mod_event_socket
event_handlers/mod_format_cdr
event_handlers/mod_json_cdr
event_handlers/mod_kazoo
#event_handlers/mod_radius_cdr
event_handlers/mod_odbc_cdr
event_handlers/mod_rayo
event_handlers/mod_snmp
#event_handlers/mod_event_zmq
formats/mod_imagick
formats/mod_local_stream
formats/mod_native_file
formats/mod_png
formats/mod_portaudio_stream
formats/mod_shell_stream
formats/mod_shout
formats/mod_sndfile
formats/mod_ssml
formats/mod_tone_stream
formats/mod_vlc
languages/mod_basic
@ -128,7 +102,6 @@ languages/mod_managed
languages/mod_perl
languages/mod_python3
#languages/mod_v8
languages/mod_yaml
loggers/mod_console
loggers/mod_graylog2
loggers/mod_logfile
@ -156,6 +129,5 @@ timers/mod_timerfd
xml_int/mod_xml_cdr
xml_int/mod_xml_curl
xml_int/mod_xml_ldap
#xml_int/mod_xml_radius
xml_int/mod_xml_rpc
xml_int/mod_xml_scgi

View File

@ -1 +1 @@
1.10.8-dev
1.10.13-dev

View File

@ -8,11 +8,6 @@ make swigclean
make mod_perl_wrap.cpp
cd ../../../..
cd src/mod/languages/mod_python
make swigclean
make mod_python_wrap.cpp
cd ../../../..
cd src/mod/languages/mod_python3
make swigclean
make mod_python_wrap.cpp

255
ci.sh Executable file
View File

@ -0,0 +1,255 @@
#!/usr/bin/env bash
### shfmt -w -s -ci -sr -kp -fn ci.sh
#------------------------------------------------------------------------------
# CI Script
# Helper script for running CI jobs
#------------------------------------------------------------------------------
# Function to display usage information
display_usage()
{
echo "Usage: $0 -t <type> -a <action> -c <code> -p <path>"
echo "Options:"
echo " -t Type (unit-test, scan-build)"
echo " -a Action (configure, build, install, validate)"
echo " -c Code (sofia-sip, freeswitch)"
echo " -p Path to code"
exit 1
}
# Parse command line arguments
while getopts "t:p:a:c:h" opt; do
case $opt in
t) TYPE="$OPTARG" ;;
a) ACTION="$OPTARG" ;;
c) CODE="$OPTARG" ;;
p) PATH_TO_CODE="$OPTARG" ;;
h) display_usage ;;
?) display_usage ;;
esac
done
# Function to handle sofia-sip configuration
configure_sofia_sip()
{
./autogen.sh && ./configure.gnu || exit 1
}
# Function to handle sofia-sip build
build_sofia_sip()
{
make -j$(nproc) || exit 1
}
# Function to handle sofia-sip installation
install_sofia_sip()
{
make install || exit 1
}
# Function to handle sofia-sip validation
validate_sofia_sip()
{
exit 0
}
# Function to handle freeswitch configuration
configure_freeswitch()
{
local type="$1"
./bootstrap.sh -j || exit 1
case "$type" in
"unit-test")
echo 'codecs/mod_openh264' >> modules.conf
sed -i \
-e '/applications\/mod_http_cache/s/^#//g' \
-e '/formats\/mod_opusfile/s/^#//g' \
-e '/languages\/mod_lua/s/^#//g' \
modules.conf
export ASAN_OPTIONS=log_path=stdout:disable_coredump=0:unmap_shadow_on_exit=1:fast_unwind_on_malloc=0
./configure \
--enable-address-sanitizer \
--enable-fake-dlclose ||
exit 1
;;
"scan-build")
cp build/modules.conf.most modules.conf
# "Enable"/"Uncomment" mods
echo 'codecs/mod_openh264' >> modules.conf
sed -i \
-e '/mod_mariadb/s/^#//g' \
-e '/mod_v8/s/^#//g' \
modules.conf
# "Disable"/"Comment out" mods
sed -i \
-e '/mod_ilbc/s/^/#/g' \
-e '/mod_mongo/s/^/#/g' \
-e '/mod_pocketsphinx/s/^/#/g' \
-e '/mod_siren/s/^/#/g' \
-e '/mod_avmd/s/^/#/g' \
-e '/mod_basic/s/^/#/g' \
-e '/mod_cdr_mongodb/s/^/#/g' \
-e '/mod_cv/s/^/#/g' \
-e '/mod_erlang_event/s/^/#/g' \
-e '/mod_perl/s/^/#/g' \
-e '/mod_rtmp/s/^/#/g' \
-e '/mod_unimrcp/s/^/#/g' \
-e '/mod_xml_rpc/s/^/#/g' \
modules.conf
./configure || exit 1
;;
*)
exit 1
;;
esac
}
# Function to handle freeswitch build
build_freeswitch()
{
local type="$1"
set -o pipefail
case "$type" in
"unit-test")
make --no-keep-going -j$(nproc --all) |& tee ./unit-tests-build-result.txt
build_status=${PIPESTATUS[0]}
if [[ $build_status != "0" ]]; then
exit $build_status
fi
;;
"scan-build")
if ! command -v scan-build-14 > /dev/null 2>&1; then
echo "Error: scan-build-14 command not found. Please ensure clang static analyzer is installed." >&2
exit 1
fi
mkdir -p scan-build
scan-build-14 \
--force-analyze-debug-code \
--status-bugs \
-o ./scan-build/ \
make --no-keep-going -j$(nproc --all) |& tee ./scan-build-result.txt
build_status=${PIPESTATUS[0]}
if ! grep -siq "scan-build: No bugs found" ./scan-build-result.txt; then
echo "scan-build: bugs found!"
exit 1
fi
if [[ $build_status != "0" ]]; then
echo "scan-build: compilation failed!"
exit $build_status
fi
;;
*)
exit 1
;;
esac
}
# Function to handle freeswitch installation
install_freeswitch()
{
make install || exit 1
}
# Function to handle freeswitch validation
validate_freeswitch()
{
local type="$1"
case "$type" in
"unit-test")
exit 0
;;
"scan-build")
REPORT_PATH=$(find scan-build* -mindepth 1 -type d)
if [ -n "$REPORT_PATH" ]; then
echo "Found analysis report at: $REPORT_PATH"
if command -v html2text > /dev/null 2>&1; then
echo "Report contents:"
html2text "$REPORT_PATH"/*.html || true
fi
echo "Number of issues found:"
grep -c "<!--BUGDESC" "$REPORT_PATH"/*.html || true
exit $([ -d "$REPORT_PATH" ])
else
echo "No analysis report found"
exit 0
fi
;;
*)
exit 1
;;
esac
}
# Change to the code directory
if [ -n "$PATH_TO_CODE" ]; then
cd "$PATH_TO_CODE" || exit 1
fi
# Execute appropriate flow based on code, type, and action
case "$CODE" in
"sofia-sip")
case "$ACTION" in
"configure")
configure_sofia_sip "$TYPE"
;;
"build")
build_sofia_sip "$TYPE"
;;
"install")
install_sofia_sip "$TYPE"
;;
"validate")
validate_sofia_sip "$TYPE"
;;
*)
exit 1
;;
esac
;;
"freeswitch")
case "$ACTION" in
"configure")
configure_freeswitch "$TYPE"
;;
"build")
build_freeswitch "$TYPE"
;;
"install")
install_freeswitch "$TYPE"
;;
"validate")
validate_freeswitch "$TYPE"
;;
*)
exit 1
;;
esac
;;
*)
exit 1
;;
esac

View File

@ -1,33 +0,0 @@
<configuration name="portaudio.conf" description="Soundcard Endpoint">
<settings>
<!-- indev, outdev, ringdev:
partial case sensitive string match on something in the name
or the device number prefixed with # eg "#1" (or blank for default) -->
<!-- device to use for input -->
<param name="indev" value=""/>
<!-- device to use for output -->
<param name="outdev" value=""/>
<!--device to use for inbound ring -->
<!--<param name="ringdev" value=""/>-->
<!--File to play as the ring sound -->
<!--<param name="ring-file" value="/sounds/ring.wav"/>-->
<!--Number of seconds to pause between rings -->
<!--<param name="ring-interval" value="5"/>-->
<!--file to play when calls are on hold-->
<!--<param name="hold-file" value="/sounds/holdmusic.wav"/>-->
<!--Timer to use for hold music (i'd leave this one commented)-->
<!--<param name="timer-name" value="soft"/>-->
<!--Default dialplan and caller-id info -->
<param name="dialplan" value="XML"/>
<param name="cid-name" value="$${outbound_caller_name}"/>
<param name="cid-num" value="$${outbound_caller_id}"/>
<!--audio sample rate and interval -->
<param name="sample-rate" value="8000"/>
<param name="codec-ms" value="20"/>
</settings>
</configuration>

View File

@ -1,7 +0,0 @@
<configuration name="rss.conf" description="RSS Parser">
<feeds>
<!-- Just download the files to wherever and refer to them here -->
<!-- <feed name="Slash Dot">/home/rss/rss.rss</feed> -->
<!-- <feed name="News Forge">/home/rss/newsforge.rss</feed> -->
</feeds>
</configuration>

File diff suppressed because it is too large Load Diff

10
conf/insideout/autoload_configs/modules.conf.xml Normal file → Executable file
View File

@ -6,8 +6,6 @@
<load module="mod_logfile"/>
<!-- <load module="mod_syslog"/> -->
<!--<load module="mod_yaml"/>-->
<!-- Multi-Faceted -->
<!-- mod_enum is a dialplan interface, an application interface and an api command interface -->
<load module="mod_enum"/>
@ -29,7 +27,6 @@
<!-- Endpoints -->
<!-- <load module="mod_dingaling"/> -->
<!-- <load module="mod_iax"/> -->
<!-- <load module="mod_portaudio"/> -->
<!-- <load module="mod_alsa"/> -->
<load module="mod_sofia"/>
<load module="mod_loopback"/>
@ -49,9 +46,6 @@
<load module="mod_fsv"/>
<!--<load module="mod_translate"/>-->
<!-- SNOM Module -->
<!--<load module="mod_snom"/>-->
<!-- Dialplan Interfaces -->
<!-- <load module="mod_dialplan_directory"/> -->
<load module="mod_dialplan_xml"/>
@ -63,7 +57,6 @@
<load module="mod_g729"/>
<load module="mod_amr"/>
<!--<load module="mod_ilbc"/>-->
<load module="mod_h26x"/>
<!--<load module="mod_siren"/>-->
<!-- File Format Interfaces -->
@ -80,7 +73,6 @@
<!-- Languages -->
<load module="mod_v8"/>
<!-- <load module="mod_perl"/> -->
<!-- <load module="mod_python"/> -->
<!-- <load module="mod_python3"/> -->
<!-- <load module="mod_java"/> -->
<load module="mod_lua"/>
@ -88,9 +80,7 @@
<!-- ASR /TTS -->
<!-- <load module="mod_flite"/> -->
<!-- <load module="mod_pocketsphinx"/> -->
<!-- <load module="mod_cepstral"/> -->
<!-- <load module="mod_openmrcp"/> -->
<!-- <load module="mod_rss"/> -->
<!-- Say -->
<load module="mod_say_en"/>

View File

@ -1,33 +0,0 @@
<configuration name="portaudio.conf" description="Soundcard Endpoint">
<settings>
<!-- indev, outdev, ringdev:
partial case sensitive string match on something in the name
or the device number prefixed with # eg "#1" (or blank for default) -->
<!-- device to use for input -->
<param name="indev" value=""/>
<!-- device to use for output -->
<param name="outdev" value=""/>
<!--device to use for inbound ring -->
<!--<param name="ringdev" value=""/>-->
<!--File to play as the ring sound -->
<!--<param name="ring-file" value="/sounds/ring.wav"/>-->
<!--Number of seconds to pause between rings -->
<!--<param name="ring-interval" value="5"/>-->
<!--file to play when calls are on hold-->
<!--<param name="hold-file" value="/sounds/holdmusic.wav"/>-->
<!--Timer to use for hold music (i'd leave this one commented)-->
<!--<param name="timer-name" value="soft"/>-->
<!--Default dialplan and caller-id info -->
<param name="dialplan" value="XML"/>
<param name="cid-name" value="$${outbound_caller_name}"/>
<param name="cid-num" value="$${outbound_caller_id}"/>
<!--audio sample rate and interval -->
<param name="sample-rate" value="8000"/>
<param name="codec-ms" value="20"/>
</settings>
</configuration>

View File

@ -1,7 +0,0 @@
<configuration name="rss.conf" description="RSS Parser">
<feeds>
<!-- Just download the files to wherever and refer to them here -->
<!-- <feed name="Slash Dot">/home/rss/rss.rss</feed> -->
<!-- <feed name="News Forge">/home/rss/newsforge.rss</feed> -->
</feeds>
</configuration>

File diff suppressed because it is too large Load Diff

View File

@ -116,24 +116,6 @@
</condition>
</extension>
-->
<!--
snom button demo, call 9000 to make button 2 mapped to transfer the current call to a conference
-->
<extension name="snom-demo-2">
<condition field="destination_number" expression="^9001$">
<action application="eval" data="${snom_bind_key(2 off DND ${sip_from_user} ${sip_from_host} ${sofia_profile_name} message notused)}"/>
<action application="transfer" data="3000"/>
</condition>
</extension>
<extension name="snom-demo-1">
<condition field="destination_number" expression="^9000$">
<!--<key> <light> <label> <user> <host> <profile> <action_name> <action>-->
<action application="eval" data="${snom_bind_key(2 on DND ${sip_from_user} ${sip_from_host} ${sofia_profile_name} message api+uuid_transfer ${uuid} 9001)}"/>
<action application="playback" data="$${hold_music}"/>
</condition>
</extension>
<extension name="eavesdrop">
<condition field="destination_number" expression="^88(.*)$|^\*0(.*)$">

View File

@ -48,7 +48,6 @@
<param name="auth-calls" value="false"/>
<param name="rtp-timeout-sec" value="1800"/>
<param name="inbound-late-negotiation" value="true"/>
<param name="inbound-zrtp-passthru" value="true"/> <!-- (also enables late negotiation) -->
<!--
DO NOT USE HOSTNAMES, ONLY IP ADDRESSES IN THESE SETTINGS!
-->

View File

@ -70,9 +70,6 @@
<!-- Let calls hit the dialplan before selecting codec for the a-leg -->
<param name="inbound-late-negotiation" value="true"/>
<!-- Allow ZRTP clients to negotiate end-to-end security associations (also enables late negotiation) -->
<param name="inbound-zrtp-passthru" value="true"/>
<!-- this lets anything register -->
<!-- comment the next line and uncomment one or both of the other 2 lines for call authentication -->
<!-- <param name="accept-blind-reg" value="true"/> -->

View File

@ -106,9 +106,6 @@
<!-- Let calls hit the dialplan before selecting codec for the a-leg -->
<param name="inbound-late-negotiation" value="true"/>
<!-- Allow ZRTP clients to negotiate end-to-end security associations (also enables late negotiation) -->
<param name="inbound-zrtp-passthru" value="true"/>
<!-- this lets anything register -->
<!-- comment the next line and uncomment one or both of the other 2 lines for call authentication -->
<!-- <param name="accept-blind-reg" value="true"/> -->

View File

@ -59,14 +59,6 @@
G729 - G729 in passthru mode. (mod_g729)
G723 - G723.1 in passthru mode. (mod_g723_1)
AMR - AMR in passthru mode. (mod_amr)
These are the passthru video codecs: (mod_h26x)
H261 - H.261 Video
H263 - H.263 Video
H263-1998 - H.263-1998 Video
H263-2000 - H.263-2000 Video
H264 - H.264 Video
-->
<X-PRE-PROCESS cmd="set" data="global_codec_prefs=G722,PCMU,PCMA,GSM"/>

File diff suppressed because it is too large Load Diff

View File

@ -1,41 +0,0 @@
<configuration name="acl.conf" description="Network Lists">
<network-lists>
<!--
These ACL's are automatically created on startup.
rfc1918.auto - RFC1918 Space
nat.auto - RFC1918 Excluding your local lan.
localnet.auto - ACL for your local lan.
loopback.auto - ACL for your local lan.
-->
<list name="lan" default="allow">
<node type="deny" cidr="192.168.42.0/24"/>
<node type="allow" cidr="192.168.42.42/32"/>
</list>
<!--
This will traverse the directory adding all users
with the cidr= tag to this ACL, when this ACL matches
the users variables and params apply as if they
digest authenticated.
-->
<list name="domains" default="deny">
<!-- domain= is special it scans the domain from the directory to build the ACL -->
<node type="allow" domain="$${domain}"/>
<!-- use cidr= if you wish to allow ip ranges to this domains acl. -->
<!-- <node type="allow" cidr="192.168.0.0/24"/> -->
</list>
<list name="rayo-clients" default="deny">
<node type="allow" cidr="192.168.0.39/32"/>
<node type="allow" cidr="192.168.0.59/32"/>
</list>
<list name="rayo-servers" default="deny">
<node type="allow" cidr="192.168.0.39/32"/>
</list>
</network-lists>
</configuration>

View File

@ -1,23 +0,0 @@
<configuration name="cdr_csv.conf" description="CDR CSV Format">
<settings>
<!-- 'cdr-csv' will always be appended to log-base -->
<!--<param name="log-base" value="/var/log"/>-->
<param name="default-template" value="example"/>
<!-- This is like the info app but after the call is hung up -->
<!--<param name="debug" value="true"/>-->
<param name="rotate-on-hup" value="true"/>
<!-- may be a b or ab -->
<param name="legs" value="a"/>
<!-- Only log in Master.csv -->
<!-- <param name="master-file-only" value="true"/> -->
</settings>
<templates>
<template name="sql">INSERT INTO cdr VALUES ("${caller_id_name}","${caller_id_number}","${destination_number}","${context}","${start_stamp}","${answer_stamp}","${end_stamp}","${duration}","${billsec}","${hangup_cause}","${uuid}","${bleg_uuid}", "${accountcode}");</template>
<template name="example">"${caller_id_name}","${caller_id_number}","${destination_number}","${context}","${start_stamp}","${answer_stamp}","${end_stamp}","${duration}","${billsec}","${hangup_cause}","${uuid}","${bleg_uuid}","${accountcode}","${read_codec}","${write_codec}"</template>
<template name="snom">"${caller_id_name}","${caller_id_number}","${destination_number}","${context}","${start_stamp}","${answer_stamp}","${end_stamp}","${duration}","${billsec}","${hangup_cause}","${uuid}","${bleg_uuid}", "${accountcode}","${read_codec}","${write_codec}","${sip_user_agent}","${call_clientcode}","${sip_rtp_rxstat}","${sip_rtp_txstat}","${sofia_record_file}"</template>
<template name="linksys">"${caller_id_name}","${caller_id_number}","${destination_number}","${context}","${start_stamp}","${answer_stamp}","${end_stamp}","${duration}","${billsec}","${hangup_cause}","${uuid}","${bleg_uuid}","${accountcode}","${read_codec}","${write_codec}","${sip_user_agent}","${sip_p_rtp_stat}"</template>
<template name="asterisk">"${accountcode}","${caller_id_number}","${destination_number}","${context}","${caller_id}","${channel_name}","${bridge_channel}","${last_app}","${last_arg}","${start_stamp}","${answer_stamp}","${end_stamp}","${duration}","${billsec}","${hangup_cause}","${amaflags}","${uuid}","${userfield}"</template>
<template name="opencdrrate">"${uuid}","${signal_bond}","${direction}","${ani}","${destination_number}","${answer_stamp}","${end_stamp}","${billsec}","${accountcode}","${userfield}","${network_addr}","${regex('${original_caller_id_name}'|^.)}","${sip_gateway_name}"</template>
</templates>
</configuration>

View File

@ -1,214 +0,0 @@
<!-- http://wiki.freeswitch.org/wiki/Mod_conference -->
<!-- None of these paths are real if you want any of these options you need to really set them up -->
<configuration name="conference.conf" description="Audio Conference">
<!-- Advertise certain presence on startup . -->
<advertise>
<room name="3001@$${domain}" status="FreeSWITCH"/>
</advertise>
<!-- These are the default keys that map when you do not specify a caller control group -->
<!-- Note: none and default are reserved names for group names. Disabled if dist-dtmf member flag is set. -->
<caller-controls>
<group name="default">
<control action="mute" digits="0"/>
<control action="deaf mute" digits="*"/>
<control action="energy up" digits="9"/>
<control action="energy equ" digits="8"/>
<control action="energy dn" digits="7"/>
<control action="vol talk up" digits="3"/>
<control action="vol talk zero" digits="2"/>
<control action="vol talk dn" digits="1"/>
<control action="vol listen up" digits="6"/>
<control action="vol listen zero" digits="5"/>
<control action="vol listen dn" digits="4"/>
<control action="hangup" digits="#"/>
</group>
</caller-controls>
<!-- Profiles are collections of settings you can reference by name. -->
<profiles>
<!--If no profile is specified it will default to "default"-->
<profile name="default">
<!-- Directory to drop CDR's
'auto' means $PREFIX/logs/conference_cdr/<confernece_uuid>.cdr.xml
a non-absolute path means $PREFIX/logs/<value>/<confernece_uuid>.cdr.xml
absolute path means <value>/<confernece_uuid>.cdr.xml
-->
<!-- <param name="cdr-log-dir" value="auto"/> -->
<!-- Domain (for presence) -->
<param name="domain" value="$${domain}"/>
<!-- Sample Rate-->
<param name="rate" value="8000"/>
<!-- Number of milliseconds per frame -->
<param name="interval" value="20"/>
<!-- Energy level required for audio to be sent to the other users -->
<param name="energy-level" value="300"/>
<!--Can be | delim of waste|mute|deaf|dist-dtmf waste will always transmit data to each channel
even during silence. dist-dtmf propagates dtmfs to all other members, but channel controls
via dtmf will be disabled. -->
<!--<param name="member-flags" value="waste"/>-->
<!-- Name of the caller control group to use for this profile -->
<!-- <param name="caller-controls" value="some name"/> -->
<!-- Name of the caller control group to use for the moderator in this profile -->
<!-- <param name="moderator-controls" value="some name"/> -->
<!-- TTS Engine to use -->
<!--<param name="tts-engine" value="cepstral"/>-->
<!-- TTS Voice to use -->
<!--<param name="tts-voice" value="david"/>-->
<!-- If TTS is enabled all audio-file params beginning with -->
<!-- 'say:' will be considered text to say with TTS -->
<!-- Override the default path here, after which you use relative paths in the other sound params -->
<!-- Note: The default path is the conference's first caller's sound_prefix -->
<!--<param name="sound-prefix" value="$${sound_prefix}"/>-->
<!-- File to play to acknowledge success -->
<!--<param name="ack-sound" value="beep.wav"/>-->
<!-- File to play to acknowledge failure -->
<!--<param name="nack-sound" value="beeperr.wav"/>-->
<!-- File to play to acknowledge muted -->
<param name="muted-sound" value="conference/conf-muted.wav"/>
<!-- File to play to acknowledge unmuted -->
<param name="unmuted-sound" value="conference/conf-unmuted.wav"/>
<!-- File to play if you are alone in the conference -->
<param name="alone-sound" value="conference/conf-alone.wav"/>
<!-- File to play endlessly (nobody will ever be able to talk) -->
<!--<param name="perpetual-sound" value="perpetual.wav"/>-->
<!-- File to play when you're alone (music on hold)-->
<param name="moh-sound" value="$${hold_music}"/>
<!-- File to play when you join the conference -->
<param name="enter-sound" value="tone_stream://%(200,0,500,600,700)"/>
<!-- File to play when you leave the conference -->
<param name="exit-sound" value="tone_stream://%(500,0,300,200,100,50,25)"/>
<!-- File to play when you ae ejected from the conference -->
<param name="kicked-sound" value="conference/conf-kicked.wav"/>
<!-- File to play when the conference is locked -->
<param name="locked-sound" value="conference/conf-locked.wav"/>
<!-- File to play when the conference is locked during the call-->
<param name="is-locked-sound" value="conference/conf-is-locked.wav"/>
<!-- File to play when the conference is unlocked during the call-->
<param name="is-unlocked-sound" value="conference/conf-is-unlocked.wav"/>
<!-- File to play to prompt for a pin -->
<param name="pin-sound" value="conference/conf-pin.wav"/>
<!-- File to play to when the pin is invalid -->
<param name="bad-pin-sound" value="conference/conf-bad-pin.wav"/>
<!-- Conference pin -->
<!--<param name="pin" value="12345"/>-->
<!--<param name="moderator-pin" value="54321"/>-->
<!-- Max number of times the user can be prompted for PIN -->
<!--<param name="pin-retries" value="3"/>-->
<!-- Default Caller ID Name for outbound calls -->
<param name="caller-id-name" value="$${outbound_caller_name}"/>
<!-- Default Caller ID Number for outbound calls -->
<param name="caller-id-number" value="$${outbound_caller_id}"/>
<!-- Suppress start and stop talking events -->
<!-- <param name="suppress-events" value="start-talking,stop-talking"/> -->
<!-- enable comfort noise generation -->
<param name="comfort-noise" value="true"/>
<!-- Uncomment auto-record to toggle recording every conference call. -->
<!-- Another valid value is shout://user:pass@server.com/live.mp3 -->
<!--
<param name="auto-record" value="$${recordings_dir}/${conference_name}_${strftime(%Y-%m-%d-%H-%M-%S)}.wav"/>
-->
<!-- IVR digit machine timeouts -->
<!-- How much to wait between DTMF digits to match caller-controls -->
<!-- <param name="ivr-dtmf-timeout" value="500"/> -->
<!-- How much to wait for the first DTMF, 0 forever -->
<!-- <param name="ivr-input-timeout" value="0" /> -->
<!-- Delay before a conference is asked to be terminated -->
<!-- <param name="endconf-grace-time" value="120" /> -->
<!-- Can be | delim of wait-mod|audio-always|video-bridge|video-floor-only
wait_mod will wait until the moderator in,
audio-always will always mix audio from all members regardless they are talking or not -->
<!-- <param name="conference-flags" value="audio-always"/> -->
</profile>
<profile name="wideband">
<param name="domain" value="$${domain}"/>
<param name="rate" value="16000"/>
<param name="interval" value="20"/>
<param name="energy-level" value="300"/>
<!--<param name="sound-prefix" value="$${sound_prefix}"/>-->
<param name="muted-sound" value="conference/conf-muted.wav"/>
<param name="unmuted-sound" value="conference/conf-unmuted.wav"/>
<param name="alone-sound" value="conference/conf-alone.wav"/>
<param name="moh-sound" value="$${hold_music}"/>
<param name="enter-sound" value="tone_stream://%(200,0,500,600,700)"/>
<param name="exit-sound" value="tone_stream://%(500,0,300,200,100,50,25)"/>
<param name="kicked-sound" value="conference/conf-kicked.wav"/>
<param name="locked-sound" value="conference/conf-locked.wav"/>
<param name="is-locked-sound" value="conference/conf-is-locked.wav"/>
<param name="is-unlocked-sound" value="conference/conf-is-unlocked.wav"/>
<param name="pin-sound" value="conference/conf-pin.wav"/>
<param name="bad-pin-sound" value="conference/conf-bad-pin.wav"/>
<param name="caller-id-name" value="$${outbound_caller_name}"/>
<param name="caller-id-number" value="$${outbound_caller_id}"/>
<param name="comfort-noise" value="true"/>
<!--<param name="tts-engine" value="flite"/>-->
<!--<param name="tts-voice" value="kal16"/>-->
</profile>
<profile name="ultrawideband">
<param name="domain" value="$${domain}"/>
<param name="rate" value="32000"/>
<param name="interval" value="20"/>
<param name="energy-level" value="300"/>
<!--<param name="sound-prefix" value="$${sound_prefix}"/>-->
<param name="muted-sound" value="conference/conf-muted.wav"/>
<param name="unmuted-sound" value="conference/conf-unmuted.wav"/>
<param name="alone-sound" value="conference/conf-alone.wav"/>
<param name="moh-sound" value="$${hold_music}"/>
<param name="enter-sound" value="tone_stream://%(200,0,500,600,700)"/>
<param name="exit-sound" value="tone_stream://%(500,0,300,200,100,50,25)"/>
<param name="kicked-sound" value="conference/conf-kicked.wav"/>
<param name="locked-sound" value="conference/conf-locked.wav"/>
<param name="is-locked-sound" value="conference/conf-is-locked.wav"/>
<param name="is-unlocked-sound" value="conference/conf-is-unlocked.wav"/>
<param name="pin-sound" value="conference/conf-pin.wav"/>
<param name="bad-pin-sound" value="conference/conf-bad-pin.wav"/>
<param name="caller-id-name" value="$${outbound_caller_name}"/>
<param name="caller-id-number" value="$${outbound_caller_id}"/>
<param name="comfort-noise" value="true"/>
<!--<param name="tts-engine" value="flite"/>-->
<!--<param name="tts-voice" value="kal16"/>-->
</profile>
<profile name="cdquality">
<param name="domain" value="$${domain}"/>
<param name="rate" value="48000"/>
<param name="interval" value="10"/>
<param name="energy-level" value="300"/>
<!--<param name="sound-prefix" value="$${sound_prefix}"/>-->
<param name="muted-sound" value="conference/conf-muted.wav"/>
<param name="unmuted-sound" value="conference/conf-unmuted.wav"/>
<param name="alone-sound" value="conference/conf-alone.wav"/>
<param name="moh-sound" value="$${hold_music}"/>
<param name="enter-sound" value="tone_stream://%(200,0,500,600,700)"/>
<param name="exit-sound" value="tone_stream://%(500,0,300,200,100,50,25)"/>
<param name="kicked-sound" value="conference/conf-kicked.wav"/>
<param name="locked-sound" value="conference/conf-locked.wav"/>
<param name="is-locked-sound" value="conference/conf-is-locked.wav"/>
<param name="is-unlocked-sound" value="conference/conf-is-unlocked.wav"/>
<param name="pin-sound" value="conference/conf-pin.wav"/>
<param name="bad-pin-sound" value="conference/conf-bad-pin.wav"/>
<param name="caller-id-name" value="$${outbound_caller_name}"/>
<param name="caller-id-number" value="$${outbound_caller_id}"/>
<param name="comfort-noise" value="true"/>
</profile>
<profile name="sla">
<param name="domain" value="$${domain}"/>
<param name="rate" value="16000"/>
<param name="interval" value="20"/>
<param name="caller-controls" value="none"/>
<param name="energy-level" value="200"/>
<param name="moh-sound" value="silence"/>
<param name="comfort-noise" value="true"/>
<param name="min-required-recording-participants" value="1"/>
</profile>
</profiles>
</configuration>

View File

@ -1,56 +0,0 @@
<configuration name="console.conf" description="Console Logger">
<!-- pick a file name, a function name or 'all' -->
<!-- map as many as you need for specific debugging -->
<mappings>
<!--
name can be a file name, function name or 'all'
value is one or more of debug,info,notice,warning,err,crit,alert,all
See examples below
The following map is the default, which is all debug levels enabled:
<map name="all" value="debug,info,notice,warning,err,crit,alert"/>
Example: the following turns on debugging for error and critical levels only
<map name="all" value="err,crit"/>
NOTE: using map name="all" will override any other settings! If you
want a more specific set of console messages then you will need
to specify which files and/or functions you want to have debug
messages. One option is to turn on just the more critical
messages with map name="all", then specify the other types of
console messages you want to see for various files and functions.
Example: turn on ERROR, CRIT, ALERT for all modules, then specify other
levels for various modules and functions
<map name="all" value="err,crit,alert"/>
<map name="switch_loadable_module_process" value="all"/>
<map name="mod_local_stream.c" value="warning,debug"/>
<map name="mod_sndfile.c" value="warning,info,debug"/>
-->
<map name="all" value="console,debug,info,notice,warning,err,crit,alert"/>
<!--
You can use or modify this sample set of mappings. It turns on higher
level messages for all modules and then specifies extra lower level
messages for Freetdm, Sofia, and switch core messages.
<map name="all" value="warning,err,crit,alert"/>
<map name="zap_analog.c" value="all"/>
<map name="zap_io.c" value="all"/>
<map name="zap_isdn.c" value="all"/>
<map name="zap_zt.c" value="all"/>
<map name="mod_freetdm" value="all"/>
<map name="sofia.c" value="notice"/>
<map name="switch_core_state_machine.c" value="all"/>
-->
</mappings>
<settings>
<!-- comment or set to false for no color logging -->
<param name="colorize" value="true"/>
<param name="loglevel" value="$${console_loglevel}"/>
</settings>
</configuration>

View File

@ -1,9 +0,0 @@
<configuration name="event_socket.conf" description="Socket Client">
<settings>
<param name="nat-map" value="false"/>
<param name="listen-ip" value="127.0.0.1"/>
<param name="listen-port" value="8021"/>
<param name="password" value="ClueCon"/>
<!--<param name="apply-inbound-acl" value="lan"/>-->
</settings>
</configuration>

View File

@ -1,21 +0,0 @@
<configuration name="http_cache.conf" description="HTTP GET cache">
<settings>
<!-- set to true if you want to enable http:// and https:// formats. Do not use if mod_httapi is also loaded -->
<param name="enable-file-formats" value="true"/>
<param name="max-urls" value="10000"/>
<param name="location" value="$${base_dir}/http_cache"/>
<param name="default-max-age" value="86400"/>
<param name="prefetch-thread-count" value="8"/>
<param name="prefetch-queue-size" value="100"/>
<!-- absolute path to CA bundle file -->
<param name="ssl-cacert" value="$${base_dir}/conf/cacert.pem"/>
<!-- verify certificates -->
<param name="ssl-verifypeer" value="true"/>
<!-- verify host name matches certificate -->
<param name="ssl-verifyhost" value="true"/>
<!-- default is 300 seconds, override here -->
<!--param name="connect-timeout" value="300"/-->
<!-- default is 300 seconds, override here -->
<!--param name="download-timeout" value="300"/-->
</settings>
</configuration>

View File

@ -1,49 +0,0 @@
<configuration name="local_stream.conf" description="stream files from local dir">
<!-- fallback to default if requested moh class isn't found -->
<directory name="default" path="$${sounds_dir}/music/8000">
<param name="rate" value="8000"/>
<param name="shuffle" value="true"/>
<param name="channels" value="1"/>
<param name="interval" value="20"/>
<param name="timer-name" value="soft"/>
<!-- list of short files to break in with every so often -->
<!--<param name="chime-list" value="file1.wav,file2.wav"/>-->
<!-- frequency of break-in (seconds)-->
<!--<param name="chime-freq" value="30"/>-->
<!-- limit to how many seconds the file will play -->
<!--<param name="chime-max" value="500"/>-->
</directory>
<directory name="moh/8000" path="$${sounds_dir}/music/8000">
<param name="rate" value="8000"/>
<param name="shuffle" value="true"/>
<param name="channels" value="1"/>
<param name="interval" value="20"/>
<param name="timer-name" value="soft"/>
</directory>
<directory name="moh/16000" path="$${sounds_dir}/music/16000">
<param name="rate" value="16000"/>
<param name="shuffle" value="true"/>
<param name="channels" value="1"/>
<param name="interval" value="20"/>
<param name="timer-name" value="soft"/>
</directory>
<directory name="moh/32000" path="$${sounds_dir}/music/32000">
<param name="rate" value="32000"/>
<param name="shuffle" value="true"/>
<param name="channels" value="1"/>
<param name="interval" value="20"/>
<param name="timer-name" value="soft"/>
</directory>
<!--
<directory name="moh/48000" path="$${sounds_dir}/music/48000">
<param name="rate" value="48000"/>
<param name="shuffle" value="true"/>
<param name="channels" value="1"/>
<param name="interval" value="10"/>
<param name="timer-name" value="soft"/>
</directory>
-->
</configuration>

View File

@ -1,29 +0,0 @@
<configuration name="logfile.conf" description="File Logging">
<settings>
<!-- true to auto rotate on HUP, false to open/close -->
<param name="rotate-on-hup" value="true"/>
</settings>
<profiles>
<profile name="default">
<settings>
<!-- File to log to -->
<!--<param name="logfile" value="/var/log/freeswitch.log"/>-->
<!-- At this length in bytes rotate the log file (0 for never) -->
<param name="rollover" value="10485760"/>
<!-- Maximum number of log files to keep before wrapping -->
<!-- If this parameter is enabled, the log filenames will not include a date stamp -->
<!-- <param name="maximum-rotate" value="32"/> -->
<!-- Uncomment to prefix all log lines by the session's uuid -->
<param name="uuid" value="true" />
</settings>
<mappings>
<!--
name can be a file name, function name or 'all'
value is one or more of debug,info,notice,warning,err,crit,alert,all
Please see comments in console.conf.xml for more information
-->
<map name="all" value="debug,info,notice,warning,err,crit,alert"/>
</mappings>
</profile>
</profiles>
</configuration>

View File

@ -1,70 +0,0 @@
<configuration name="modules.conf" description="Modules">
<modules>
<!-- Loggers -->
<load module="mod_console"/>
<load module="mod_logfile"/>
<!-- Event Handlers -->
<load module="mod_cdr_csv"/>
<load module="mod_event_socket"/>
<load module="mod_rayo"/>
<!-- Endpoints -->
<load module="mod_sofia"/>
<load module="mod_loopback"/>
<!-- Applications -->
<!--load module="mod_signalwire"-->
<load module="mod_commands"/>
<load module="mod_conference"/>
<load module="mod_dptools"/>
<load module="mod_expr"/>
<load module="mod_esf"/>
<load module="mod_fsv"/>
<load module="mod_http_cache"/>
<!-- Dialplan Interfaces -->
<load module="mod_dialplan_xml"/>
<!-- Codec Interfaces -->
<load module="mod_spandsp"/>
<load module="mod_opus"/>
<load module="mod_ilbc"/>
<load module="mod_h26x"/>
<!-- File Format Interfaces -->
<load module="mod_sndfile"/>
<load module="mod_native_file"/>
<load module="mod_shell_stream"/>
<!--For icecast/mp3 streams/files-->
<load module="mod_shout"/>
<!--For local streams (play all the files in a directory)-->
<load module="mod_local_stream"/>
<load module="mod_tone_stream"/>
<load module="mod_ssml"/>
<!-- ASR /TTS -->
<load module="mod_flite"/>
<load module="mod_pocketsphinx"/>
<!-- <load module="mod_tts_commandline"/> -->
<!-- Say -->
<!--load module="mod_say_de"/-->
<!--load module="mod_say_es"/-->
<!--load module="mod_say_fr"/-->
<!--load module="mod_say_hr"/-->
<!--load module="mod_say_it"/-->
<!--load module="mod_say_nl"/-->
<!--load module="mod_say_ru"/-->
<!--load module="mod_say_zh"/-->
<load module="mod_say_en"/>
<!--load module="mod_say_fa"/-->
<!--load module="mod_say_he"/-->
<!--load module="mod_say_hu"/-->
<!--load module="mod_say_ja"/-->
<!--load module="mod_say_pt"/-->
<!--load module="mod_say_th"/-->
<!--load module="mod_say_sv"/-->
</modules>
</configuration>

View File

@ -1,12 +0,0 @@
<configuration name="pocketsphinx.conf" description="PocketSphinx ASR Configuration">
<settings>
<param name="threshold" value="400"/>
<param name="silence-hits" value="25"/>
<param name="listen-hits" value="1"/>
<param name="auto-reload" value="true"/>
<!--<param name="language-weight" value="1"/>-->
<!--<param name="narrowband-model" value="communicator"/>-->
<!--<param name="wideband-model" value="wsj1"/>-->
<!--<param name="dictionary" value="default.dic"/>-->
</settings>
</configuration>

View File

@ -1,4 +0,0 @@
<configuration name="post_load_modules.conf" description="Modules">
<modules>
</modules>
</configuration>

View File

@ -1,7 +0,0 @@
<configuration name="pre_load_modules.conf" description="Modules">
<modules>
<!-- Databases -->
<!-- <load module="mod_mariadb"/> -->
<load module="mod_pgsql"/>
</modules>
</configuration>

View File

@ -1,7 +0,0 @@
<configuration name="presence_map.conf" description="PRESENCE MAP">
<domains>
<domain name="$${domain}">
<exten regex="3\d+" proto="conf"/>
</domain>
</domains>
</configuration>

View File

@ -1,315 +0,0 @@
<configuration name="rayo.conf" description="Rayo server config">
<!-- rayo params -->
<settings>
<!-- ends idle calls : unbridged calls that have not been controlled by client in some time -->
<param name="max-idle-sec" value="300"/>
<!-- conference profile to use for mixers- sla = shared line appearance / conference /w no audio -->
<param name="mixer-conf-profile" value="sla"/>
<!-- if true, to attribute in offer uses URI instead of name/number -->
<param name="offer-uri" value="true"/>
<!-- how offers are distributed to clients (all, first, random). -->
<param name="offer-algorithm" value="all"/>
<!-- If offer is not answered after timeout, next client is offered (based on algorithm picked).
If no other clients are available, the call is rejected. Set to 0 to disable -->
<param name="offer-timeout-ms" value="5000"/>
<!-- if true, channel variables are added to rayo client offer -->
<param name="add-variables-to-offer" value="false"/>
<!-- if true, channel variables are added to offer, ringing, answered, and end events sent to rayo clients -->
<param name="add-variables-to-events" value="false"/>
</settings>
<!-- record component params -->
<record>
<param name="record-file-prefix" value="$${recordings_dir}/"/>
</record>
<!-- input component params -->
<input>
<param name="default-recognizer" value="pocketsphinx"/>
</input>
<!-- send/receivefax component params -->
<fax>
<!-- where to store incoming faxes -->
<param name="receivefax-file-prefix" value="/tmp/"/>
</fax>
<!-- Call progress analysis configuration -->
<!-- Define CPA detectors. These are sources for Rayo CPA signal events -->
<!-- Detectors must fire an event that can be translated by mod_rayo into a CPA signal event -->
<cpa>
<!-- map DTMF events to CPA -->
<detector name="core_dtmf_event">
<event class="DTMF" value-header="DTMF-Digit" duration-header="DTMF-Duration">
<signal-type value="dtmf"/>
</event>
</detector>
<!-- map mod_spandsp fax detector to the Rayo CPA events. Fires DETECTED_FAX_* event once and quits. -->
<detector name="mod_spandsp_fax_ced">
<start application="spandsp_start_fax_detect" data="event 'Event-Name=CUSTOM,Event-Subclass=DETECTED_FAX_CED' 500 ced"/>
<stop application="spandsp_stop_fax_detect" data=""/>
<event class="CUSTOM" subclass="DETECTED_FAX_CED">
<signal-type value="fax-ced"/>
</event>
</detector>
<detector name="mod_spandsp_fax_cng">
<start application="spandsp_start_fax_detect" data="event 'Event-Name=CUSTOM,Event-Subclass=DETECTED_FAX_CNG' 500"/>
<stop application="spandsp_stop_fax_detect" data=""/>
<event class="CUSTOM" subclass="DETECTED_FAX_CNG">
<signal-type value="fax-cng"/>
</event>
</detector>
<!-- map mod_spandsp call progress tone detector to Rayo CPA signal events. Fires DETECTED_TONE events until stopped. -->
<detector name="mod_spandsp_tone">
<start application="spandsp_start_tone_detect" data="1"/>
<stop application="spandsp_stop_tone_detect" data=""/>
<!-- map tone events to Rayo CPA signal type -->
<event class="DETECTED_TONE" type-header="Detected-Tone">
<signal-type header-value="SIT" value="sit"/>
<signal-type header-value="BUSY_TONE" value="busy"/>
<signal-type header-value="REORDER_TONE" value="congestion"/>
<signal-type header-value="RING_TONE" value="ring"/>
</event>
</detector>
<!-- map mod_avmd detector to Rayo CPA beep event. Fires avmd::beep event once. -->
<detector name="mod_avmd">
<start application="avmd" data=""/>
<stop application="avmd" data="stop"/>
<event class="CUSTOM" subclass="avmd::beep">
<signal-type value="beep"/>
</event>
</detector>
<!-- Alternative beep detector using mod_vmd. Fires vmd::beep events until stopped. -->
<!--detector name="mod_vmd">
<start application="vmd" data=""/>
<stop application="vmd" data="stop"/>
<event class="CUSTOM" subclass="vmd::beep">
<signal-type value="beep"/>
</event>
</detector-->
</cpa>
<!-- XMPP server domain -->
<domain name="$${rayo_domain_name}" shared-secret="ClueCon">
<!-- use this instead if you want secure XMPP client to server connections. Put .crt and .key file in freeswitch/certs -->
<!--domain name="$${rayo_domain_name}" shared-secret="ClueCon" cert="$${base_dir}/certs/$${rayo_domain_name}.crt" key="$${base_dir}/certs/$${rayo_domain_name}.key"-->
<!-- Listeners for new Rayo client connections -->
<!--listen type="c2s" port="5222" address="$${local_ip_v4}" acl="rayo-clients"/-->
<listen type="c2s" port="5222" address="$${rayo_ip}" acl=""/>
<!-- Listeners for new server connections -->
<!--listen type="s2s" port="5269" address="$${local_ip_v4}" acl="rayo-servers"/-->
<!-- servers to connect to -->
<!--connect port="5269" address="node.example.com" domain="example.com"/-->
<!-- Authorized users -->
<users>
<user name="usera" password="1"/>
</users>
</domain>
<!-- URI mapping to endpoint / gateway -->
<dial-gateways>
<dial-gateway uriprefix="default" dialprefix="sofia/gateway/outbound/" strip="0"/>
<dial-gateway uriprefix="sip:" dialprefix="sofia/external/" strip="0"/>
<dial-gateway uriprefix="tel:" dialprefix="sofia/gateway/outbound/" strip="4"/>
<!-- pass through user and sofia unaltered -->
<dial-gateway uriprefix="user/" dialprefix="" strip=""/>
<dial-gateway uriprefix="sofia/" dialprefix="" strip=""/>
<dial-gateway uriprefix="loopback/" dialprefix="" strip=""/>
</dial-gateways>
<!-- IQ request aliases. Used mainly for testing purposes or for controlling a rayo call via the console -->
<aliases>
<alias name="detect" target="call" args="1"><![CDATA[<input xmlns="urn:xmpp:rayo:input:1" mode="cpa"><grammar url="urn:xmpp:rayo:cpa:$1:1"/></input>]]></alias>
<alias name="detect-once" target="call" args="1"><![CDATA[<input xmlns="urn:xmpp:rayo:input:1" mode="cpa"><grammar url="urn:xmpp:rayo:cpa:$1:1?terminate=true"/></input>]]></alias>
<alias name="detect-tones" target="call"><![CDATA[<input xmlns="urn:xmpp:rayo:input:1" mode="cpa"><grammar url="urn:xmpp:rayo:cpa:busy:1"/><grammar url="urn:xmpp:rayo:cpa:congestion:1"/><grammar url="urn:xmpp:rayo:cpa:sit:1"/></input>]]></alias>
<alias name="ping" target="external"><![CDATA[<iq type="get"><ping xmlns="urn:xmpp:ping"/></iq>]]></alias>
<alias name="dial" target="server" args="2"><![CDATA[<dial xmlns="urn:xmpp:rayo:1" from="$1" to="$2"/>]]></alias>
<alias name="answer" target="call"><![CDATA[<answer xmlns="urn:xmpp:rayo:1"/>]]></alias>
<alias name="hangup" target="call"><![CDATA[<hangup xmlns="urn:xmpp:rayo:1"/>]]></alias>
<alias name="join" target="call" args="1"><![CDATA[<join xmlns="urn:xmpp:rayo:1" call-uri="xmpp:$1"/>]]></alias>
<alias name="join_mixer_duplex" target="call" args="1"><![CDATA[<join xmlns="urn:xmpp:rayo:1" mixer-name="$1" direction="duplex"/>]]></alias>
<alias name="join_mixer_send" target="call" args="1"><![CDATA[<join xmlns="urn:xmpp:rayo:1" mixer-name="$1" direction="send"/>]]></alias>
<alias name="join_mixer_recv" target="call" args="1"><![CDATA[<join xmlns="urn:xmpp:rayo:1" mixer-name="$1" direction="recv"/>]]></alias>
<alias name="unjoin_mixer" target="call" args="1"><![CDATA[<unjoin xmlns="urn:xmpp:rayo:1" mixer-name="$1"/>]]></alias>
<alias name="unjoin" target="call"><![CDATA[<unjoin xmlns="urn:xmpp:rayo:1"/>]]></alias>
<alias name="unjoin_call" target="call" args="1"><![CDATA[<unjoin xmlns="urn:xmpp:rayo:1" call-uri="xmpp:$1"/>]]></alias>
<alias name="stop" target="component"><![CDATA[<stop xmlns="urn:xmpp:rayo:ext:1"/>]]></alias>
<alias name="output_bad" target="call"><![CDATA[<output xmlns="urn:xmpp:rayo:output:1" repeat-time="100"></output>]]></alias>
<alias name="pause" target="output"><![CDATA[<pause xmlns="urn:xmpp:rayo:output:1"/>]]></alias>
<alias name="resume" target="output"><![CDATA[<resume xmlns="urn:xmpp:rayo:output:1"/>]]></alias>
<alias name="speed-up" target="output"><![CDATA[<speed-up xmlns="urn:xmpp:rayo:output:1"/>]]></alias>
<alias name="speed-down" target="output"><![CDATA[<speed-down xmlns="urn:xmpp:rayo:output:1"/>]]></alias>
<alias name="volume-up" target="output"><![CDATA[<volume-up xmlns="urn:xmpp:rayo:output:1"/>]]></alias>
<alias name="volume-down" target="output"><![CDATA[<volume-down xmlns="urn:xmpp:rayo:output:1"/>]]></alias>
<alias name="receivefax" target="call"><![CDATA[<receivefax xmlns="urn:xmpp:rayo:fax:1"/>]]></alias>
<alias name="sendfax" target="call" args="1"><![CDATA[<sendfax xmlns="urn:xmpp:rayo:fax:1"><document xmlns="urn:xmpp:rayo:fax:1" url="$1"/></sendfax>]]></alias>
<alias name="record" target="call"><![CDATA[<record xmlns="urn:xmpp:rayo:record:1"/>]]></alias>
<alias name="record_pause" target="record"><![CDATA[<pause xmlns="urn:xmpp:rayo:record:1"/>]]></alias>
<alias name="record_resume" target="record"><![CDATA[<resume xmlns="urn:xmpp:rayo:record:1"/>]]></alias>
<alias name="prompt_barge" target="call">
<![CDATA[
<prompt xmlns="urn:xmpp:rayo:prompt:1" barge-in="true">
<output xmlns="urn:xmpp:rayo:output:1" repeat-times="5">
<document content-type="application/ssml+xml">
<![CDATA[<speak><p>Please press a digit.</p></speak>]]]]><![CDATA[>
</document>
</output>
<input xmlns="urn:xmpp:rayo:input:1" mode="dtmf" initial-timeout="5000" inter-digit-timeout="3000">
<grammar content-type="application/srgs+xml">
<![CDATA[<grammar mode="dtmf"><rule id="digit" scope="public"><one-of><item>0</item><item>1</item><item>2</item><item>3</item><item>4</item><item>5</item><item>6</item><item>7</item><item>8</item><item>9</item></one-of></rule></grammar>]]]]><![CDATA[>
</grammar>
</input>
</prompt>
]]>
</alias>
<alias name="prompt_no_barge" target="call">
<![CDATA[
<prompt xmlns="urn:xmpp:rayo:prompt:1" barge-in="false">
<output xmlns="urn:xmpp:rayo:output:1" repeat-times="5">
<document content-type="application/ssml+xml">
<![CDATA[<speak><p>Please press a digit.</p></speak>]]]]><![CDATA[>
</document>
</output>
<input xmlns="urn:xmpp:rayo:input:1" mode="dtmf" initial-timeout="5000" inter-digit-timeout="3000">
<grammar content-type="application/srgs+xml">
<![CDATA[<grammar mode="dtmf"><rule id="digit" scope="public"><one-of><item>0</item><item>1</item><item>2</item><item>3</item><item>4</item><item>5</item><item>6</item><item>7</item><item>8</item><item>9</item></one-of></rule></grammar>]]]]><![CDATA[>
</grammar>
</input>
</prompt>
]]>
</alias>
<alias name="prompt_long" target="call">
<![CDATA[
<prompt xmlns="urn:xmpp:rayo:prompt:1" barge-in="true">
<output xmlns="urn:xmpp:rayo:output:1" repeat-times="100">
<document content-type="application/ssml+xml">
<![CDATA[<speak><p>Please press a digit.</p></speak>]]]]><![CDATA[>
</document>
</output>
<input xmlns="urn:xmpp:rayo:input:1" mode="dtmf" initial-timeout="5000" inter-digit-timeout="3000">
<grammar content-type="application/srgs+xml">
<![CDATA[<grammar mode="dtmf"><rule id="digit" scope="public"><one-of><item>0</item><item>1</item><item>2</item><item>3</item><item>4</item><item>5</item><item>6</item><item>7</item><item>8</item><item>9</item></one-of></rule></grammar>]]]]><![CDATA[>
</grammar>
</input>
</prompt>
]]>
</alias>
<alias name="prompt_multi_digit" target="call">
<![CDATA[
<prompt xmlns="urn:xmpp:rayo:prompt:1" barge-in="true">
<output xmlns="urn:xmpp:rayo:output:1" repeat-times="100">
<document content-type="application/ssml+xml">
<![CDATA[<speak><p>Please press a digit.</p></speak>]]]]><![CDATA[>
</document>
</output>
<input xmlns="urn:xmpp:rayo:input:1" mode="dtmf" initial-timeout="5000" inter-digit-timeout="3000">
<grammar content-type="application/srgs+xml">
<![CDATA[<grammar mode="dtmf"><rule id="digit" scope="public"><item repeat="1-4"><one-of><item>0</item><item>1</item><item>2</item><item>3</item><item>4</item><item>5</item><item>6</item><item>7</item><item>8</item><item>9</item></one-of></item></rule></grammar>]]]]><![CDATA[>
</grammar>
</input>
</prompt>
]]>
</alias>
<alias name="prompt_terminator" target="call">
<![CDATA[
<prompt xmlns="urn:xmpp:rayo:prompt:1" barge-in="true">
<output xmlns="urn:xmpp:rayo:output:1" repeat-times="100">
<document content-type="application/ssml+xml">
<![CDATA[<speak><p>Please press a digit.</p></speak>]]]]><![CDATA[>
</document>
</output>
<input xmlns="urn:xmpp:rayo:input:1" mode="dtmf" initial-timeout="5000" inter-digit-timeout="3000" terminator="#">
<grammar content-type="application/srgs+xml">
<![CDATA[<grammar mode="dtmf"><rule id="digit" scope="public"><item repeat="1-4"><one-of><item>0</item><item>1</item><item>2</item><item>3</item><item>4</item><item>5</item><item>6</item><item>7</item><item>8</item><item>9</item></one-of></item></rule></grammar>]]]]><![CDATA[>
</grammar>
</input>
</prompt>
]]>
</alias>
<alias name="prompt_input_bad" target="call">
<![CDATA[
<prompt xmlns="urn:xmpp:rayo:prompt:1" barge-in="true">
<output xmlns="urn:xmpp:rayo:output:1" repeat-times="100">
<document content-type="application/ssml+xml">
<![CDATA[<speak><p>Please press a digit.</p></speak>]]]]><![CDATA[>
</document>
</output>
<input xmlns="urn:xmpp:rayo:input:1" mode="dtf" initial-timeout="5000" inter-digit-timeout="3000" terminator="#">
<grammar content-type="application/srgs+xml">
<![CDATA[<grammar mode="dtmf"><rule id="digit" scope="public"><item repeat="1-4"><one-of><item>0</item><item>1</item><item>2</item><item>3</item><item>4</item><item>5</item><item>6</item><item>7</item><item>8</item><item>9</item></one-of></item></rule></grammar>]]]]><![CDATA[>
</grammar>
</input>
</prompt>
]]>
</alias>
<alias name="prompt_output_bad" target="call">
<![CDATA[
<prompt xmlns="urn:xmpp:rayo:prompt:1" barge-in="true">
<output xmlns="urn:xmpp:rayo:output:1" repeat-time="100">
<document content-type="application/ssml+xml">
<![CDATA[<speak><p>Please press a digit.</p></speak>]]]]><![CDATA[>
</document>
</output>
<input xmlns="urn:xmpp:rayo:input:1" mode="dtmf" initial-timeout="5000" inter-digit-timeout="3000" terminator="#">
<grammar content-type="application/srgs+xml">
<![CDATA[<grammar mode="dtmf"><rule id="digit" scope="public"><item repeat="1-4"><one-of><item>0</item><item>1</item><item>2</item><item>3</item><item>4</item><item>5</item><item>6</item><item>7</item><item>8</item><item>9</item></one-of></item></rule></grammar>]]]]><![CDATA[>
</grammar>
</input>
</prompt>
]]>
</alias>
<alias name="input" target="call">
<![CDATA[
<input xmlns="urn:xmpp:rayo:input:1" mode="dtmf" initial-timeout="5000" inter-digit-timeout="3000">
<grammar content-type="application/srgs+xml">
<![CDATA[<grammar mode="dtmf"><rule id="digit" scope="public"><one-of><item>0</item><item>1</item><item>2</item><item>3</item><item>4</item><item>5</item><item>6</item><item>7</item><item>8</item><item>9</item></one-of></rule></grammar>]]]]><![CDATA[>
</grammar>
</input>
]]>
</alias>
<alias name="input_voice_yesno_pocketsphinx" target="call">
<![CDATA[
<input xmlns="urn:xmpp:rayo:input:1" mode="voice" recognizer="pocketsphinx" max-silence="5000" initial-timeout="5000">
<grammar content-type="application/srgs+xml>
<![CDATA[
<grammar xmlns="http://www.w3.org/2001/06/grammar"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.w3.org/2001/06/grammar http://www.w3.org/TR/speech-grammar/grammar.xsd"
xml:lang="en-US" version="1.0">
<rule id="yesno"><one-of><item>yes</item><item>no</item></one-of></rule></grammar>
]]]]><![CDATA[>
</grammar>
</input>
]]>
</alias>
<alias name="input_voice_yesno_default" target="call">
<![CDATA[
<input xmlns="urn:xmpp:rayo:input:1" mode="voice" max-silence="5000" initial-timeout="5000">
<grammar content-type="application/srgs+xml>
<![CDATA[
<grammar xmlns="http://www.w3.org/2001/06/grammar"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.w3.org/2001/06/grammar http://www.w3.org/TR/speech-grammar/grammar.xsd"
xml:lang="en-US" version="1.0">
<rule id="yesno"><one-of><item>yes</item><item>no</item></one-of></rule></grammar>
]]]]><![CDATA[>
</grammar>
</input>
]]>
</alias>
</aliases>
</configuration>

View File

@ -1,9 +0,0 @@
<configuration name="shout.conf" description="mod shout config">
<settings>
<!-- Don't change these unless you are insane -->
<!--<param name="decoder" value="i586"/>-->
<!--<param name="volume" value=".1"/>-->
<!-- mod_shout sets output amplitude scale to 8192 by default - preserve mpg123 default of 32768 -->
<param name="outscale" value="32768"/>
</settings>
</configuration>

View File

@ -1,19 +0,0 @@
<configuration name="sofia.conf" description="sofia Endpoint">
<global_settings>
<param name="log-level" value="0"/>
<!-- <param name="auto-restart" value="false"/> -->
<param name="debug-presence" value="0"/>
<!-- <param name="capture-server" value="udp:homer.domain.com:5060"/> -->
</global_settings>
<!--
The rabbit hole goes deep. This includes all the
profiles in the sip_profiles directory that is up
one level from this directory.
-->
<profiles>
<X-PRE-PROCESS cmd="include" data="../sip_profiles/*.xml"/>
</profiles>
</configuration>

View File

@ -1,113 +0,0 @@
<configuration name="spandsp.conf" description="SpanDSP config">
<modem-settings>
<!--
total-modems set to N will create that many soft-modems.
If you use them with Hylafax you need the following for each one numbered 0..N:
1) A line like this in /etc/inittab:
f0:2345:respawn:/usr/lib/fax/faxgetty /dev/FS0
2) copy conf/config.FS0 to /var/spool/hylafax/etc (or wherver the appropriate dir is on your system)
Subsequent modem configs would increment the 0 to 1 and so on.
-->
<param name="total-modems" value="0"/>
<!-- Default context and dialplan to use on inbound calls from the modems -->
<param name="context" value="default"/>
<param name="dialplan" value="XML"/>
<!-- Extra tracing for debugging -->
<param name="verbose" value="false"/>
</modem-settings>
<fax-settings>
<param name="use-ecm" value="true"/>
<param name="verbose" value="false"/>
<param name="disable-v17" value="false"/>
<param name="ident" value="SpanDSP Fax Ident"/>
<param name="header" value="SpanDSP Fax Header"/>
<param name="spool-dir" value="/tmp"/>
<param name="file-prefix" value="faxrx"/>
</fax-settings>
<descriptors>
<!-- These tones are defined in Annex to ITU Operational Bulletin No. 781 - 1.II.2003 -->
<!-- Various Tones Used in National Networks (According to ITU-T Recommendation E.180)(03/1998) -->
<!-- North America -->
<descriptor name="1">
<tone name="CED_TONE">
<element freq1="2100" freq2="0" min="700" max="0"/>
</tone>
<tone name="SIT">
<element freq1="950" freq2="0" min="256" max="400"/>
<element freq1="1400" freq2="0" min="256" max="400"/>
<element freq1="1800" freq2="0" min="256" max="400"/>
</tone>
<tone name="RING_TONE" description="North America ring">
<element freq1="440" freq2="480" min="1200" max="0"/>
</tone>
<tone name="REORDER_TONE">
<element freq1="480" freq2="620" min="224" max="316"/>
<element freq1="0" freq2="0" min="168" max="352"/>
<element freq1="480" freq2="620" min="224" max="316"/>
</tone>
<tone name="BUSY_TONE">
<element freq1="480" freq2="620" min="464" max="536"/>
<element freq1="0" freq2="0" min="464" max="572"/>
<element freq1="480" freq2="620" min="464" max="536"/>
</tone>
</descriptor>
<!-- United Kingdom -->
<descriptor name="44">
<tone name="CED_TONE">
<element freq1="2100" freq2="0" min="500" max="0"/>
</tone>
<tone name="SIT">
<element freq1="950" freq2="0" min="256" max="400"/>
<element freq1="1400" freq2="0" min="256" max="400"/>
<element freq1="1800" freq2="0" min="256" max="400"/>
</tone>
<tone name="REORDER_TONE">
<element freq1="400" freq2="0" min="368" max="416"/>
<element freq1="0" freq2="0" min="336" max="368"/>
<element freq1="400" freq2="0" min="256" max="288"/>
<element freq1="0" freq2="0" min="512" max="544"/>
</tone>
<tone name="BUSY_TONE">
<element freq1="400" freq2="0" min="352" max="384"/>
<element freq1="0" freq2="0" min="352" max="384"/>
<element freq1="400" freq2="0" min="352" max="384"/>
<element freq1="0" freq2="0" min="352" max="384"/>
</tone>
</descriptor>
<!-- Germany -->
<descriptor name="49">
<tone name="CED_TONE">
<element freq1="2100" freq2="0" min="500" max="0"/>
</tone>
<tone name="SIT">
<element freq1="900" freq2="0" min="256" max="400"/>
<element freq1="1400" freq2="0" min="256" max="400"/>
<element freq1="1800" freq2="0" min="256" max="400"/>
</tone>
<tone name="REORDER_TONE">
<element freq1="425" freq2="0" min="224" max="272"/>
<element freq1="0" freq2="0" min="224" max="272"/>
</tone>
<tone name="BUSY_TONE">
<element freq1="425" freq2="0" min="464" max="516"/>
<element freq1="0" freq2="0" min="464" max="516"/>
</tone>
</descriptor>
</descriptors>
</configuration>

View File

@ -1,29 +0,0 @@
<configuration name="ssml.conf" description="SSML parser config">
<!-- voices in order of preference -->
<tts-voices>
<voice name="slt" language="en-US" gender="female" prefix="tts://flite|slt|"/>
<voice name="kal" language="en-US" gender="male" prefix="tts://flite|kal|"/>
<voice name="rms" language="en-US" gender="male" prefix="tts://flite|rms|"/>
<voice name="awb" language="en-US" gender="male" prefix="tts://flite|awb|"/>
</tts-voices>
<!-- maps ISO language to say module -->
<language-map>
<language iso="en-US" say-module="en" language="en"/>
</language-map>
<!-- say voices in order of preference -->
<say-voices>
<voice name="callie" language="en-US" gender="female" prefix="$${sound_prefix}/"/>
</say-voices>
<!-- map interpret-as to say macros -->
<macros>
<macro name="ordinal" type="number" method="counted"/>
<macro name="cardinal" type="number" method="pronounced"/>
<macro name="characters" type="name_spelled" method="pronounced"/>
<macro name="telephone" type="telephone_number" method="pronounced"/>
</macros>
</configuration>

View File

@ -1,192 +0,0 @@
<configuration name="switch.conf" description="Core Configuration">
<cli-keybindings>
<key name="1" value="help"/>
<key name="2" value="status"/>
<key name="3" value="show channels"/>
<key name="4" value="show calls"/>
<key name="5" value="sofia status"/>
<key name="6" value="reloadxml"/>
<key name="7" value="console loglevel 0"/>
<key name="8" value="console loglevel 7"/>
<key name="9" value="sofia status profile internal"/>
<key name="10" value="sofia profile internal siptrace on"/>
<key name="11" value="sofia profile internal siptrace off"/>
<key name="12" value="version"/>
</cli-keybindings>
<default-ptimes>
<!-- Set this to override the 20ms assumption of various codecs in the sdp with no ptime defined -->
<!-- <codec name="G729" ptime="40"/> -->
</default-ptimes>
<settings>
<!-- Colorize the Console -->
<param name="colorize-console" value="true"/>
<!--Include full timestamps in dialplan logs -->
<param name="dialplan-timestamps" value="false"/>
<!-- Run the timer at 20ms by default and drop down as needed unless you set 1m-timer=true which was previous default -->
<!-- <param name="1ms-timer" value="true"/> -->
<!--
Set the Switch Name for HA environments.
When setting the switch name, it will override the system hostname for all DB and CURL requests
allowing cluster environments such as RHCS to have identical FreeSWITCH configurations but run
as different hostnames.
-->
<!-- <param name="switchname" value="freeswitch"/> -->
<!-- Maximum number of simultaneous DB handles open -->
<param name="max-db-handles" value="50"/>
<!-- Maximum number of seconds to wait for a new DB handle before failing -->
<param name="db-handle-timeout" value="10"/>
<!-- Minimum idle CPU before refusing calls -->
<!-- <param name="min-idle-cpu" value="25"/> -->
<!--
Max number of sessions to allow at any given time.
NOTICE: If you're driving 28 T1's in a single box you should set this to 644*2 or 1288
this will ensure you're able to use the entire DS3 without a problem. Otherwise you'll
be 144 channels short of always filling that DS3 up which can translate into waste.
-->
<param name="max-sessions" value="1000"/>
<!--Most channels to create per second -->
<param name="sessions-per-second" value="30"/>
<!-- Default Global Log Level - value is one of debug,info,notice,warning,err,crit,alert -->
<param name="loglevel" value="debug"/>
<!-- Set the core DEBUG level (0-10) -->
<!-- <param name="debug-level" value="10"/> -->
<!-- SQL Buffer length within rage of 32k to 10m -->
<!-- <param name="sql-buffer-len" value="1m"/> -->
<!-- Maximum SQL Buffer length must be greater than sql-buffer-len -->
<!-- <param name="max-sql-buffer-len" value="2m"/> -->
<!--
The min-dtmf-duration specifies the minimum DTMF duration to use on
outgoing events. Events shorter than this will be increased in duration
to match min_dtmf_duration. You cannot configure a dtmf duration on a
profile that is less than this setting. You may increase this value,
but cannot set it lower than 400. This value cannot exceed
max-dtmf-duration. -->
<!-- <param name="min-dtmf-duration" value="400"/> -->
<!--
The max-dtmf-duration caps the playout of a DTMF event at the specified
duration. Events exceeding this duration will be truncated to this
duration. You cannot configure a duration on a profile that exceeds
this setting. This setting can be lowered, but cannot exceed 192000.
This setting cannot be set lower than min_dtmf_duration. -->
<!-- <param name="max-dtmf-duration" value="192000"/> -->
<!--
The default_dtmf_duration specifies the DTMF duration to use on
originated DTMF events or on events that are received without a
duration specified. This value can be increased or lowered. This
value is lower-bounded by min_dtmf_duration and upper-bounded by
max-dtmf-duration\. -->
<!-- <param name="default-dtmf-duration" value="2000"/> -->
<!--
If you want to send out voicemail notifications via Windows you'll need to change the mailer-app
variable to the setting below:
<param name="mailer-app" value="msmtp"/>
Do not change mailer-app-args.
You will also need to download a sendmail clone for Windows (msmtp). This version works without issue:
http://msmtp.sourceforge.net/index.html. Download and copy the .exe to %winddir%\system32.
You'll need to create a small config file for smtp credentials (host name, authentication, tls, etc.) in
%USERPROFILE%\Application Data\ called "msmtprc.txt". Below is a sample copy of this file:
###################################
# The SMTP server of the provider.
account provider
host smtp.myisp.com
from john@myisp.com
auth login
user johndoe
password mypassword
# Set a default account
account default : provider
###################################
-->
<param name="mailer-app" value="sendmail"/>
<param name="mailer-app-args" value="-t"/>
<param name="dump-cores" value="yes"/>
<!-- Enable verbose channel events to include every detail about a channel on every event -->
<!-- <param name="verbose-channel-events" value="no"/> -->
<!-- Enable clock nanosleep -->
<!-- <param name="enable-clock-nanosleep" value="true"/> -->
<!-- Enable monotonic timing -->
<!-- <param name="enable-monotonic-timing" value="true"/> -->
<!-- NEEDS DOCUMENTATION -->
<!-- <param name="enable-softtimer-timerfd" value="true"/> -->
<!-- <param name="enable-cond-yield" value="true"/> -->
<!-- <param name="enable-timer-matrix" value="true"/> -->
<!-- <param name="threaded-system-exec" value="true"/> -->
<!-- <param name="tipping-point" value="0"/> -->
<!-- <param name="timer-affinity" value="disabled"/> -->
<!-- NEEDS DOCUMENTATION -->
<!-- RTP port range -->
<!-- <param name="rtp-start-port" value="16384"/> -->
<!-- <param name="rtp-end-port" value="32768"/> -->
<param name="rtp-enable-zrtp" value="true"/>
<!--
Native PostgreSQL support was removed from the FreeSWITCH Core!
=================================
NOTICE: You MUST enable mod_pgsql
=================================
According to https://www.postgresql.org/docs/9.6/libpq-connect.html#LIBPQ-CONNSTRING
There are two accepted formats for connection strings supported by the libpq library:
* For plain keyword = value strings use pgsql://
pgsql://hostaddr=127.0.0.1 dbname=freeswitch user=freeswitch password='' options='-c client_min_messages=NOTICE' application_name='freeswitch'
* For RFC 3986 URIs use postgresql:// or postgres://
postgresql://
postgresql://localhost
postgresql://localhost:5433
postgresql://localhost/mydb
postgresql://user@localhost
postgresql://user:secret@localhost
postgresql://other@localhost/otherdb?connect_timeout=10&application_name=myapp
postgresql:///mydb?host=localhost&port=5433
-->
<!-- <param name="core-db-dsn" value="pgsql://hostaddr=127.0.0.1 dbname=freeswitch user=freeswitch password='' options='-c client_min_messages=NOTICE' application_name='freeswitch'" /> -->
<!-- <param name="core-db-dsn" value="postgresql://freeswitch:@127.0.0.1/freeswitch?options=-c%20client_min_messages%3DNOTICE&application_name=freeswitch" /> -->
<!-- <param name="core-db-dsn" value="mariadb://Server=localhost;Database=freeswitch;Uid=freeswitch;Pwd=pass;" /> -->
<!-- <param name="core-db-dsn" value="dsn:username:password" /> -->
<!--
Allow to specify the sqlite db at a different location (In this example, move it to ramdrive for
better performance on most linux distro (note, you loose the data if you reboot))
-->
<!-- <param name="core-db-name" value="/dev/shm/core.db" /> -->
<!-- The system will create all the db schemas automatically, set this to false to avoid this behaviour -->
<!-- <param name="auto-create-schemas" value="true"/> -->
<!-- <param name="auto-clear-sql" value="true"/> -->
<!-- <param name="enable-early-hangup" value="true"/> -->
<!-- <param name="core-dbtype" value="MSSQL"/> -->
<!-- Allow multiple registrations to the same account in the central registration table -->
<!-- <param name="multiple-registrations" value="true"/> -->
</settings>
</configuration>

View File

@ -1,551 +0,0 @@
<configuration name="timezones.conf" description="Timezones">
<timezones>
<zone name="Africa/Abidjan" value="GMT0" />
<zone name="Africa/Accra" value="GMT0" />
<zone name="Africa/Addis_Ababa" value="EAT-3" />
<zone name="Africa/Algiers" value="CET-1" />
<zone name="Africa/Asmara" value="EAT-3" />
<zone name="Africa/Asmera" value="EAT-3" />
<zone name="Africa/Bamako" value="GMT0" />
<zone name="Africa/Bangui" value="WAT-1" />
<zone name="Africa/Banjul" value="GMT0" />
<zone name="Africa/Bissau" value="GMT0" />
<zone name="Africa/Blantyre" value="CAT-2" />
<zone name="Africa/Brazzaville" value="WAT-1" />
<zone name="Africa/Bujumbura" value="CAT-2" />
<zone name="Africa/Cairo" value="EET-2EEST,M4.5.5/1,M9.5.5/3" />
<zone name="Africa/Casablanca" value="WET0" />
<zone name="Africa/Ceuta" value="CET-1CEST,M3.5.0,M10.5.0/3" />
<zone name="Africa/Conakry" value="GMT0" />
<zone name="Africa/Dakar" value="GMT0" />
<zone name="Africa/Dar_es_Salaam" value="EAT-3" />
<zone name="Africa/Djibouti" value="EAT-3" />
<zone name="Africa/Douala" value="WAT-1" />
<zone name="Africa/El_Aaiun" value="WET0" />
<zone name="Africa/Freetown" value="GMT0" />
<zone name="Africa/Gaborone" value="CAT-2" />
<zone name="Africa/Harare" value="CAT-2" />
<zone name="Africa/Johannesburg" value="SAST-2" />
<zone name="Africa/Kampala" value="EAT-3" />
<zone name="Africa/Khartoum" value="EAT-3" />
<zone name="Africa/Kigali" value="CAT-2" />
<zone name="Africa/Kinshasa" value="WAT-1" />
<zone name="Africa/Lagos" value="WAT-1" />
<zone name="Africa/Libreville" value="WAT-1" />
<zone name="Africa/Lome" value="GMT0" />
<zone name="Africa/Luanda" value="WAT-1" />
<zone name="Africa/Lubumbashi" value="CAT-2" />
<zone name="Africa/Lusaka" value="CAT-2" />
<zone name="Africa/Malabo" value="WAT-1" />
<zone name="Africa/Maputo" value="CAT-2" />
<zone name="Africa/Maseru" value="SAST-2" />
<zone name="Africa/Mbabane" value="SAST-2" />
<zone name="Africa/Mogadishu" value="EAT-3" />
<zone name="Africa/Monrovia" value="GMT0" />
<zone name="Africa/Nairobi" value="EAT-3" />
<zone name="Africa/Ndjamena" value="WAT-1" />
<zone name="Africa/Niamey" value="WAT-1" />
<zone name="Africa/Nouakchott" value="GMT0" />
<zone name="Africa/Ouagadougou" value="GMT0" />
<zone name="Africa/Porto-Novo" value="WAT-1" />
<zone name="Africa/Sao_Tome" value="GMT0" />
<zone name="Africa/Timbuktu" value="GMT0" />
<zone name="Africa/Tripoli" value="EET-2" />
<zone name="Africa/Tunis" value="CET-1CEST,M3.5.0,M10.5.0/3" />
<zone name="Africa/Windhoek" value="WAT-1WAST,M9.1.0,M4.1.0" />
<zone name="America/Adak" value="HAST10HADT,M3.2.0,M11.1.0" />
<zone name="America/Anchorage" value="AKST9AKDT,M3.2.0,M11.1.0" />
<zone name="America/Anguilla" value="AST4" />
<zone name="America/Antigua" value="AST4" />
<zone name="America/Araguaina" value="BRT3" />
<zone name="America/Argentina/Buenos_Aires" value="ART3ARST,M10.1.0/0,M3.3.0/0" />
<zone name="America/Argentina/Catamarca" value="ART3ARST,M10.1.0/0,M3.3.0/0" />
<zone name="America/Argentina/ComodRivadavia" value="ART3ARST,M10.1.0/0,M3.3.0/0" />
<zone name="America/Argentina/Cordoba" value="ART3ARST,M10.1.0/0,M3.3.0/0" />
<zone name="America/Argentina/Jujuy" value="ART3ARST,M10.1.0/0,M3.3.0/0" />
<zone name="America/Argentina/La_Rioja" value="ART3ARST,M10.1.0/0,M3.3.0/0" />
<zone name="America/Argentina/Mendoza" value="ART3ARST,M10.1.0/0,M3.3.0/0" />
<zone name="America/Argentina/Rio_Gallegos" value="ART3ARST,M10.1.0/0,M3.3.0/0" />
<zone name="America/Argentina/San_Juan" value="ART3ARST,M10.1.0/0,M3.3.0/0" />
<zone name="America/Argentina/San_Luis" value="ART3" />
<zone name="America/Argentina/Tucuman" value="ART3ARST,M10.1.0/0,M3.3.0/0" />
<zone name="America/Argentina/Ushuaia" value="ART3ARST,M10.1.0/0,M3.3.0/0" />
<zone name="America/Aruba" value="AST4" />
<zone name="America/Asuncion" value="PYT4PYST,M10.3.0/0,M3.2.0/0" />
<zone name="America/Atikokan" value="EST5" />
<zone name="America/Atka" value="HAST10HADT,M3.2.0,M11.1.0" />
<zone name="America/Bahia" value="BRT3" />
<zone name="America/Barbados" value="AST4" />
<zone name="America/Belem" value="BRT3" />
<zone name="America/Belize" value="CST6" />
<zone name="America/Blanc-Sablon" value="AST4" />
<zone name="America/Boa_Vista" value="AMT4" />
<zone name="America/Bogota" value="COT5" />
<zone name="America/Boise" value="MST7MDT,M3.2.0,M11.1.0" />
<zone name="America/Buenos_Aires" value="ART3ARST,M10.1.0/0,M3.3.0/0" />
<zone name="America/Cambridge_Bay" value="MST7MDT,M3.2.0,M11.1.0" />
<zone name="America/Campo_Grande" value="AMT4AMST,M10.2.0/0,M2.3.0/0" />
<zone name="America/Cancun" value="CST6CDT,M4.1.0,M10.5.0" />
<zone name="America/Caracas" value="VET4:30" />
<zone name="America/Catamarca" value="ART3ARST,M10.1.0/0,M3.3.0/0" />
<zone name="America/Cayenne" value="GFT3" />
<zone name="America/Cayman" value="EST5" />
<zone name="America/Chicago" value="CST6CDT,M3.2.0,M11.1.0" />
<zone name="America/Chihuahua" value="MST7MDT,M4.1.0,M10.5.0" />
<zone name="America/Coral_Harbour" value="EST5" />
<zone name="America/Cordoba" value="ART3ARST,M10.1.0/0,M3.3.0/0" />
<zone name="America/Costa_Rica" value="CST6" />
<zone name="America/Cuiaba" value="AMT4AMST,M10.2.0/0,M2.3.0/0" />
<zone name="America/Curacao" value="AST4" />
<zone name="America/Danmarkshavn" value="GMT0" />
<zone name="America/Dawson" value="PST8PDT,M3.2.0,M11.1.0" />
<zone name="America/Dawson_Creek" value="MST7" />
<zone name="America/Denver" value="MST7MDT,M3.2.0,M11.1.0" />
<zone name="America/Detroit" value="EST5EDT,M3.2.0,M11.1.0" />
<zone name="America/Dominica" value="AST4" />
<zone name="America/Edmonton" value="MST7MDT,M3.2.0,M11.1.0" />
<zone name="America/Eirunepe" value="ACT5" />
<zone name="America/El_Salvador" value="CST6" />
<zone name="America/Ensenada" value="PST8PDT,M4.1.0,M10.5.0" />
<zone name="America/Fortaleza" value="BRT3" />
<zone name="America/Fort_Wayne" value="EST5EDT,M3.2.0,M11.1.0" />
<zone name="America/Glace_Bay" value="AST4ADT,M3.2.0,M11.1.0" />
<zone name="America/Godthab" value="WGST" />
<zone name="America/Goose_Bay" value="AST4ADT,M3.2.0/0:01,M11.1.0/0:01" />
<zone name="America/Grand_Turk" value="EST5EDT,M3.2.0,M11.1.0" />
<zone name="America/Grenada" value="AST4" />
<zone name="America/Guadeloupe" value="AST4" />
<zone name="America/Guatemala" value="CST6" />
<zone name="America/Guayaquil" value="ECT5" />
<zone name="America/Guyana" value="GYT4" />
<zone name="America/Halifax" value="AST4ADT,M3.2.0,M11.1.0" />
<zone name="America/Havana" value="CST5CDT,M3.3.0/0,M10.5.0/1" />
<zone name="America/Hermosillo" value="MST7" />
<zone name="America/Indiana/Indianapolis" value="EST5EDT,M3.2.0,M11.1.0" />
<zone name="America/Indiana/Knox" value="CST6CDT,M3.2.0,M11.1.0" />
<zone name="America/Indiana/Marengo" value="EST5EDT,M3.2.0,M11.1.0" />
<zone name="America/Indiana/Petersburg" value="EST5EDT,M3.2.0,M11.1.0" />
<zone name="America/Indianapolis" value="EST5EDT,M3.2.0,M11.1.0" />
<zone name="America/Indiana/Tell_City" value="CST6CDT,M3.2.0,M11.1.0" />
<zone name="America/Indiana/Vevay" value="EST5EDT,M3.2.0,M11.1.0" />
<zone name="America/Indiana/Vincennes" value="EST5EDT,M3.2.0,M11.1.0" />
<zone name="America/Indiana/Winamac" value="EST5EDT,M3.2.0,M11.1.0" />
<zone name="America/Inuvik" value="MST7MDT,M3.2.0,M11.1.0" />
<zone name="America/Iqaluit" value="EST5EDT,M3.2.0,M11.1.0" />
<zone name="America/Jamaica" value="EST5" />
<zone name="America/Jujuy" value="ART3ARST,M10.1.0/0,M3.3.0/0" />
<zone name="America/Juneau" value="AKST9AKDT,M3.2.0,M11.1.0" />
<zone name="America/Kentucky/Louisville" value="EST5EDT,M3.2.0,M11.1.0" />
<zone name="America/Kentucky/Monticello" value="EST5EDT,M3.2.0,M11.1.0" />
<zone name="America/Knox_IN" value="CST6CDT,M3.2.0,M11.1.0" />
<zone name="America/La_Paz" value="BOT4" />
<zone name="America/Lima" value="PET5" />
<zone name="America/Los_Angeles" value="PST8PDT,M3.2.0,M11.1.0" />
<zone name="America/Louisville" value="EST5EDT,M3.2.0,M11.1.0" />
<zone name="America/Maceio" value="BRT3" />
<zone name="America/Managua" value="CST6" />
<zone name="America/Manaus" value="AMT4" />
<zone name="America/Marigot" value="AST4" />
<zone name="America/Martinique" value="AST4" />
<zone name="America/Mazatlan" value="MST7MDT,M4.1.0,M10.5.0" />
<zone name="America/Mendoza" value="ART3ARST,M10.1.0/0,M3.3.0/0" />
<zone name="America/Menominee" value="CST6CDT,M3.2.0,M11.1.0" />
<zone name="America/Merida" value="CST6CDT,M4.1.0,M10.5.0" />
<zone name="America/Mexico_City" value="CST6CDT,M4.1.0,M10.5.0" />
<zone name="America/Miquelon" value="PMST3PMDT,M3.2.0,M11.1.0" />
<zone name="America/Moncton" value="AST4ADT,M3.2.0,M11.1.0" />
<zone name="America/Monterrey" value="CST6CDT,M4.1.0,M10.5.0" />
<zone name="America/Montevideo" value="UYT3UYST,M10.1.0,M3.2.0" />
<zone name="America/Montreal" value="EST5EDT,M3.2.0,M11.1.0" />
<zone name="America/Montserrat" value="AST4" />
<zone name="America/Nassau" value="EST5EDT,M3.2.0,M11.1.0" />
<zone name="America/New_York" value="EST5EDT,M3.2.0,M11.1.0" />
<zone name="America/Nipigon" value="EST5EDT,M3.2.0,M11.1.0" />
<zone name="America/Nome" value="AKST9AKDT,M3.2.0,M11.1.0" />
<zone name="America/Noronha" value="FNT2" />
<zone name="America/North_Dakota/Center" value="CST6CDT,M3.2.0,M11.1.0" />
<zone name="America/North_Dakota/New_Salem" value="CST6CDT,M3.2.0,M11.1.0" />
<zone name="America/Panama" value="EST5" />
<zone name="America/Pangnirtung" value="EST5EDT,M3.2.0,M11.1.0" />
<zone name="America/Paramaribo" value="SRT3" />
<zone name="America/Phoenix" value="MST7" />
<zone name="America/Port-au-Prince" value="EST5" />
<zone name="America/Porto_Acre" value="ACT5" />
<zone name="America/Port_of_Spain" value="AST4" />
<zone name="America/Porto_Velho" value="AMT4" />
<zone name="America/Puerto_Rico" value="AST4" />
<zone name="America/Rainy_River" value="CST6CDT,M3.2.0,M11.1.0" />
<zone name="America/Rankin_Inlet" value="CST6CDT,M3.2.0,M11.1.0" />
<zone name="America/Recife" value="BRT3" />
<zone name="America/Regina" value="CST6" />
<zone name="America/Resolute" value="EST5" />
<zone name="America/Rio_Branco" value="ACT5" />
<zone name="America/Rosario" value="ART3ARST,M10.1.0/0,M3.3.0/0" />
<zone name="America/Santiago" value="CLST" />
<zone name="America/Santo_Domingo" value="AST4" />
<zone name="America/Sao_Paulo" value="BRT3" />
<zone name="America/Scoresbysund" value="EGT1EGST,M3.5.0/0,M10.5.0/1" />
<zone name="America/Shiprock" value="MST7MDT,M3.2.0,M11.1.0" />
<zone name="America/St_Barthelemy" value="AST4" />
<zone name="America/St_Johns" value="NST3:30NDT,M3.2.0/0:01,M11.1.0/0:01" />
<zone name="America/St_Kitts" value="AST4" />
<zone name="America/St_Lucia" value="AST4" />
<zone name="America/St_Thomas" value="AST4" />
<zone name="America/St_Vincent" value="AST4" />
<zone name="America/Swift_Current" value="CST6" />
<zone name="America/Tegucigalpa" value="CST6" />
<zone name="America/Thule" value="AST4ADT,M3.2.0,M11.1.0" />
<zone name="America/Thunder_Bay" value="EST5EDT,M3.2.0,M11.1.0" />
<zone name="America/Tijuana" value="PST8PDT,M4.1.0,M10.5.0" />
<zone name="America/Toronto" value="EST5EDT,M3.2.0,M11.1.0" />
<zone name="America/Tortola" value="AST4" />
<zone name="America/Vancouver" value="PST8PDT,M3.2.0,M11.1.0" />
<zone name="America/Virgin" value="AST4" />
<zone name="America/Whitehorse" value="PST8PDT,M3.2.0,M11.1.0" />
<zone name="America/Winnipeg" value="CST6CDT,M3.2.0,M11.1.0" />
<zone name="America/Yakutat" value="AKST9AKDT,M3.2.0,M11.1.0" />
<zone name="America/Yellowknife" value="MST7MDT,M3.2.0,M11.1.0" />
<zone name="Antarctica/Casey" value="WST-8" />
<zone name="Antarctica/Davis" value="DAVT-7" />
<zone name="Antarctica/DumontDUrville" value="DDUT-10" />
<zone name="Antarctica/Mawson" value="MAWT-6" />
<zone name="Antarctica/McMurdo" value="NZST-12NZDT,M9.5.0,M4.1.0/3" />
<zone name="Antarctica/Palmer" value="CLST" />
<zone name="Antarctica/Rothera" value="ROTT3" />
<zone name="Antarctica/South_Pole" value="NZST-12NZDT,M9.5.0,M4.1.0/3" />
<zone name="Antarctica/Syowa" value="SYOT-3" />
<zone name="Antarctica/Vostok" value="VOST-6" />
<zone name="Arctic/Longyearbyen" value="CET-1CEST,M3.5.0,M10.5.0/3" />
<zone name="Asia/Aden" value="AST-3" />
<zone name="Asia/Almaty" value="ALMT-6" />
<zone name="Asia/Amman" value="EET-2EEST,M3.5.4/0,M10.5.5/1" />
<zone name="Asia/Anadyr" value="ANAT-12ANAST,M3.5.0,M10.5.0/3" />
<zone name="Asia/Aqtau" value="AQTT-5" />
<zone name="Asia/Aqtobe" value="AQTT-5" />
<zone name="Asia/Ashgabat" value="TMT-5" />
<zone name="Asia/Ashkhabad" value="TMT-5" />
<zone name="Asia/Baghdad" value="AST-3" />
<zone name="Asia/Bahrain" value="AST-3" />
<zone name="Asia/Baku" value="AZT-4AZST,M3.5.0/4,M10.5.0/5" />
<zone name="Asia/Bangkok" value="ICT-7" />
<zone name="Asia/Beirut" value="EET-2EEST,M3.5.0/0,M10.5.0/0" />
<zone name="Asia/Bishkek" value="KGT-6" />
<zone name="Asia/Brunei" value="BNT-8" />
<zone name="Asia/Calcutta" value="IST-5:30" />
<zone name="Asia/Choibalsan" value="CHOT-9" />
<zone name="Asia/Chongqing" value="CST-8" />
<zone name="Asia/Chungking" value="CST-8" />
<zone name="Asia/Colombo" value="IST-5:30" />
<zone name="Asia/Dacca" value="BDT-6" />
<zone name="Asia/Damascus" value="EET-2EEST,M4.1.5/0,J274/0" />
<zone name="Asia/Dhaka" value="BDT-6" />
<zone name="Asia/Dili" value="TLT-9" />
<zone name="Asia/Dubai" value="GST-4" />
<zone name="Asia/Dushanbe" value="TJT-5" />
<zone name="Asia/Gaza" value="EET-2EEST,J91/0,M9.2.4" />
<zone name="Asia/Harbin" value="CST-8" />
<zone name="Asia/Ho_Chi_Minh" value="ICT-7" />
<zone name="Asia/Hong_Kong" value="HKT-8" />
<zone name="Asia/Hovd" value="HOVT-7" />
<zone name="Asia/Irkutsk" value="IRKT-8IRKST,M3.5.0,M10.5.0/3" />
<zone name="Asia/Istanbul" value="EET-2EEST,M3.5.0/3,M10.5.0/4" />
<zone name="Asia/Jakarta" value="WIT-7" />
<zone name="Asia/Jayapura" value="EIT-9" />
<zone name="Asia/Jerusalem" value="IDDT" />
<zone name="Asia/Kabul" value="AFT-4:30" />
<zone name="Asia/Kamchatka" value="PETT-12PETST,M3.5.0,M10.5.0/3" />
<zone name="Asia/Karachi" value="PKT-5" />
<zone name="Asia/Kashgar" value="CST-8" />
<zone name="Asia/Katmandu" value="NPT-5:45" />
<zone name="Asia/Kolkata" value="IST-5:30" />
<zone name="Asia/Krasnoyarsk" value="KRAT-7KRAST,M3.5.0,M10.5.0/3" />
<zone name="Asia/Kuala_Lumpur" value="MYT-8" />
<zone name="Asia/Kuching" value="MYT-8" />
<zone name="Asia/Kuwait" value="AST-3" />
<zone name="Asia/Macao" value="CST-8" />
<zone name="Asia/Macau" value="CST-8" />
<zone name="Asia/Magadan" value="MAGT-11MAGST,M3.5.0,M10.5.0/3" />
<zone name="Asia/Makassar" value="CIT-8" />
<zone name="Asia/Manila" value="PHT-8" />
<zone name="Asia/Muscat" value="GST-4" />
<zone name="Asia/Nicosia" value="EET-2EEST,M3.5.0/3,M10.5.0/4" />
<zone name="Asia/Novosibirsk" value="NOVT-6NOVST,M3.5.0,M10.5.0/3" />
<zone name="Asia/Omsk" value="OMST-6OMSST,M3.5.0,M10.5.0/3" />
<zone name="Asia/Oral" value="ORAT-5" />
<zone name="Asia/Phnom_Penh" value="ICT-7" />
<zone name="Asia/Pontianak" value="WIT-7" />
<zone name="Asia/Pyongyang" value="KST-9" />
<zone name="Asia/Qatar" value="AST-3" />
<zone name="Asia/Qyzylorda" value="QYZT-6" />
<zone name="Asia/Rangoon" value="MMT-6:30" />
<zone name="Asia/Riyadh" value="AST-3" />
<zone name="Asia/Riyadh87" value="zzz-3:07:04" />
<zone name="Asia/Riyadh88" value="zzz-3:07:04" />
<zone name="Asia/Riyadh89" value="zzz-3:07:04" />
<zone name="Asia/Saigon" value="ICT-7" />
<zone name="Asia/Sakhalin" value="SAKT-10SAKST,M3.5.0,M10.5.0/3" />
<zone name="Asia/Samarkand" value="UZT-5" />
<zone name="Asia/Seoul" value="KST-9" />
<zone name="Asia/Shanghai" value="CST-8" />
<zone name="Asia/Singapore" value="SGT-8" />
<zone name="Asia/Taipei" value="CST-8" />
<zone name="Asia/Tashkent" value="UZT-5" />
<zone name="Asia/Tbilisi" value="GET-4" />
<zone name="Asia/Tehran" value="IRDT" />
<zone name="Asia/Tel_Aviv" value="IDDT" />
<zone name="Asia/Thimbu" value="BTT-6" />
<zone name="Asia/Thimphu" value="BTT-6" />
<zone name="Asia/Tokyo" value="JST-9" />
<zone name="Asia/Ujung_Pandang" value="CIT-8" />
<zone name="Asia/Ulaanbaatar" value="ULAT-8" />
<zone name="Asia/Ulan_Bator" value="ULAT-8" />
<zone name="Asia/Urumqi" value="CST-8" />
<zone name="Asia/Vientiane" value="ICT-7" />
<zone name="Asia/Vladivostok" value="VLAT-10VLAST,M3.5.0,M10.5.0/3" />
<zone name="Asia/Yakutsk" value="YAKT-9YAKST,M3.5.0,M10.5.0/3" />
<zone name="Asia/Yekaterinburg" value="YEKT-5YEKST,M3.5.0,M10.5.0/3" />
<zone name="Asia/Yerevan" value="AMT-4AMST,M3.5.0,M10.5.0/3" />
<zone name="Atlantic/Azores" value="AZOT1AZOST,M3.5.0/0,M10.5.0/1" />
<zone name="Atlantic/Bermuda" value="AST4ADT,M3.2.0,M11.1.0" />
<zone name="Atlantic/Canary" value="WET0WEST,M3.5.0/1,M10.5.0" />
<zone name="Atlantic/Cape_Verde" value="CVT1" />
<zone name="Atlantic/Faeroe" value="WET0WEST,M3.5.0/1,M10.5.0" />
<zone name="Atlantic/Faroe" value="WET0WEST,M3.5.0/1,M10.5.0" />
<zone name="Atlantic/Jan_Mayen" value="CET-1CEST,M3.5.0,M10.5.0/3" />
<zone name="Atlantic/Madeira" value="WET0WEST,M3.5.0/1,M10.5.0" />
<zone name="Atlantic/Reykjavik" value="GMT0" />
<zone name="Atlantic/South_Georgia" value="GST2" />
<zone name="Atlantic/Stanley" value="FKT4FKST,M9.1.0,M4.3.0" />
<zone name="Atlantic/St_Helena" value="GMT0" />
<zone name="Australia/ACT" value="EST-10EST,M10.1.0,M4.1.0/3" />
<zone name="Australia/Adelaide" value="CST-9:30CST,M10.1.0,M4.1.0/3" />
<zone name="Australia/Brisbane" value="EST-10" />
<zone name="Australia/Broken_Hill" value="CST-9:30CST,M10.1.0,M4.1.0/3" />
<zone name="Australia/Canberra" value="EST-10EST,M10.1.0,M4.1.0/3" />
<zone name="Australia/Currie" value="EST-10EST,M10.1.0,M4.1.0/3" />
<zone name="Australia/Darwin" value="CST-9:30" />
<zone name="Australia/Eucla" value="CWST-8:45" />
<zone name="Australia/Hobart" value="EST-10EST,M10.1.0,M4.1.0/3" />
<zone name="Australia/LHI" value="LHST-10:30LHST-11,M10.1.0,M4.1.0" />
<zone name="Australia/Lindeman" value="EST-10" />
<zone name="Australia/Lord_Howe" value="LHST-10:30LHST-11,M10.1.0,M4.1.0" />
<zone name="Australia/Melbourne" value="EST-10EST,M10.1.0,M4.1.0/3" />
<zone name="Australia/North" value="CST-9:30" />
<zone name="Australia/NSW" value="EST-10EST,M10.1.0,M4.1.0/3" />
<zone name="Australia/Perth" value="WST-8" />
<zone name="Australia/Queensland" value="EST-10" />
<zone name="Australia/South" value="CST-9:30CST,M10.1.0,M4.1.0/3" />
<zone name="Australia/Sydney" value="EST-10EST,M10.1.0,M4.1.0/3" />
<zone name="Australia/Tasmania" value="EST-10EST,M10.1.0,M4.1.0/3" />
<zone name="Australia/Victoria" value="EST-10EST,M10.1.0,M4.1.0/3" />
<zone name="Australia/West" value="WST-8" />
<zone name="Australia/Yancowinna" value="CST-9:30CST,M10.1.0,M4.1.0/3" />
<zone name="Brazil/Acre" value="ACT5" />
<zone name="Brazil/DeNoronha" value="FNT2" />
<zone name="Brazil/East" value="BRT3BRST,M10.2.0/0,M2.3.0/0" />
<zone name="Brazil/West" value="AMT4" />
<zone name="Canada/Atlantic" value="AST4ADT,M3.2.0,M11.1.0" />
<zone name="Canada/Central" value="CST6CDT,M3.2.0,M11.1.0" />
<zone name="Canada/Eastern" value="EST5EDT,M3.2.0,M11.1.0" />
<zone name="Canada/East-Saskatchewan" value="CST6" />
<zone name="Canada/Mountain" value="MST7MDT,M3.2.0,M11.1.0" />
<zone name="Canada/Newfoundland" value="NST3:30NDT,M3.2.0/0:01,M11.1.0/0:01" />
<zone name="Canada/Pacific" value="PST8PDT,M3.2.0,M11.1.0" />
<zone name="Canada/Saskatchewan" value="CST6" />
<zone name="Canada/Yukon" value="PST8PDT,M3.2.0,M11.1.0" />
<zone name="Chile/Continental" value="CLST" />
<zone name="Chile/EasterIsland" value="EASST" />
<zone name="Etc/GMT" value="GMT0" />
<zone name="Etc/GMT0" value="GMT0" />
<zone name="Etc/GMT-0" value="GMT0" />
<zone name="Etc/GMT+0" value="GMT0" />
<zone name="Etc/GMT-1" value="GMT-1" />
<zone name="Etc/GMT+1" value="GMT+1" />
<zone name="Etc/GMT-10" value="GMT-10" />
<zone name="Etc/GMT+10" value="GMT+10" />
<zone name="Etc/GMT-11" value="GMT-11" />
<zone name="Etc/GMT+11" value="GMT+11" />
<zone name="Etc/GMT-12" value="GMT-12" />
<zone name="Etc/GMT+12" value="GMT+12" />
<zone name="Etc/GMT-13" value="GMT-13" />
<zone name="Etc/GMT-14" value="GMT-14" />
<zone name="Etc/GMT-2" value="GMT-2" />
<zone name="Etc/GMT+2" value="GMT+2" />
<zone name="Etc/GMT-3" value="GMT-3" />
<zone name="Etc/GMT+3" value="GMT+3" />
<zone name="Etc/GMT-4" value="GMT-4" />
<zone name="Etc/GMT+4" value="GMT+4" />
<zone name="Etc/GMT-5" value="GMT-5" />
<zone name="Etc/GMT+5" value="GMT+5" />
<zone name="Etc/GMT-6" value="GMT-6" />
<zone name="Etc/GMT+6" value="GMT+6" />
<zone name="Etc/GMT-7" value="GMT-7" />
<zone name="Etc/GMT+7" value="GMT+7" />
<zone name="Etc/GMT-8" value="GMT-8" />
<zone name="Etc/GMT+8" value="GMT+8" />
<zone name="Etc/GMT-9" value="GMT-9" />
<zone name="Etc/GMT+9" value="GMT+9" />
<zone name="Etc/Greenwich" value="GMT0" />
<zone name="Etc/UCT" value="UCT0" />
<zone name="Etc/Universal" value="UTC0" />
<zone name="Etc/UTC" value="UTC0" />
<zone name="Etc/Zulu" value="UTC0" />
<zone name="Europe/Amsterdam" value="CET-1CEST,M3.5.0,M10.5.0/3" />
<zone name="Europe/Andorra" value="CET-1CEST,M3.5.0,M10.5.0/3" />
<zone name="Europe/Athens" value="EET-2EEST,M3.5.0/3,M10.5.0/4" />
<zone name="Europe/Belfast" value="GMT0BST,M3.5.0/1,M10.5.0" />
<zone name="Europe/Belgrade" value="CET-1CEST,M3.5.0,M10.5.0/3" />
<zone name="Europe/Berlin" value="CET-1CEST,M3.5.0,M10.5.0/3" />
<zone name="Europe/Bratislava" value="CET-1CEST,M3.5.0,M10.5.0/3" />
<zone name="Europe/Brussels" value="CET-1CEST,M3.5.0,M10.5.0/3" />
<zone name="Europe/Bucharest" value="EET-2EEST,M3.5.0/3,M10.5.0/4" />
<zone name="Europe/Budapest" value="CET-1CEST,M3.5.0,M10.5.0/3" />
<zone name="Europe/Chisinau" value="EET-2EEST,M3.5.0/3,M10.5.0/4" />
<zone name="Europe/Copenhagen" value="CET-1CEST,M3.5.0,M10.5.0/3" />
<zone name="Europe/Dublin" value="GMT0IST,M3.5.0/1,M10.5.0" />
<zone name="Europe/Gibraltar" value="CET-1CEST,M3.5.0,M10.5.0/3" />
<zone name="Europe/Guernsey" value="GMT0BST,M3.5.0/1,M10.5.0" />
<zone name="Europe/Helsinki" value="EET-2EEST,M3.5.0/3,M10.5.0/4" />
<zone name="Europe/Isle_of_Man" value="GMT0BST,M3.5.0/1,M10.5.0" />
<zone name="Europe/Istanbul" value="EET-2EEST,M3.5.0/3,M10.5.0/4" />
<zone name="Europe/Jersey" value="GMT0BST,M3.5.0/1,M10.5.0" />
<zone name="Europe/Kaliningrad" value="EET-2EEST,M3.5.0,M10.5.0/3" />
<zone name="Europe/Kiev" value="EET-2EEST,M3.5.0/3,M10.5.0/4" />
<zone name="Europe/Lisbon" value="WET0WEST,M3.5.0/1,M10.5.0" />
<zone name="Europe/Ljubljana" value="CET-1CEST,M3.5.0,M10.5.0/3" />
<zone name="Europe/London" value="GMT0BST,M3.5.0/1,M10.5.0" />
<zone name="Europe/Luxembourg" value="CET-1CEST,M3.5.0,M10.5.0/3" />
<zone name="Europe/Madrid" value="CET-1CEST,M3.5.0,M10.5.0/3" />
<zone name="Europe/Malta" value="CET-1CEST,M3.5.0,M10.5.0/3" />
<zone name="Europe/Mariehamn" value="EET-2EEST,M3.5.0/3,M10.5.0/4" />
<zone name="Europe/Minsk" value="EET-2EEST,M3.5.0,M10.5.0/3" />
<zone name="Europe/Monaco" value="CET-1CEST,M3.5.0,M10.5.0/3" />
<zone name="Europe/Moscow" value="MSK-3MSD,M3.5.0,M10.5.0/3" />
<zone name="Europe/Nicosia" value="EET-2EEST,M3.5.0/3,M10.5.0/4" />
<zone name="Europe/Oslo" value="CET-1CEST,M3.5.0,M10.5.0/3" />
<zone name="Europe/Paris" value="CET-1CEST,M3.5.0,M10.5.0/3" />
<zone name="Europe/Podgorica" value="CET-1CEST,M3.5.0,M10.5.0/3" />
<zone name="Europe/Prague" value="CET-1CEST,M3.5.0,M10.5.0/3" />
<zone name="Europe/Riga" value="EET-2EEST,M3.5.0/3,M10.5.0/4" />
<zone name="Europe/Rome" value="CET-1CEST,M3.5.0,M10.5.0/3" />
<zone name="Europe/Samara" value="SAMT-4SAMST,M3.5.0,M10.5.0/3" />
<zone name="Europe/San_Marino" value="CET-1CEST,M3.5.0,M10.5.0/3" />
<zone name="Europe/Sarajevo" value="CET-1CEST,M3.5.0,M10.5.0/3" />
<zone name="Europe/Simferopol" value="EET-2EEST,M3.5.0/3,M10.5.0/4" />
<zone name="Europe/Skopje" value="CET-1CEST,M3.5.0,M10.5.0/3" />
<zone name="Europe/Sofia" value="EET-2EEST,M3.5.0/3,M10.5.0/4" />
<zone name="Europe/Stockholm" value="CET-1CEST,M3.5.0,M10.5.0/3" />
<zone name="Europe/Tallinn" value="EET-2EEST,M3.5.0/3,M10.5.0/4" />
<zone name="Europe/Tirane" value="CET-1CEST,M3.5.0,M10.5.0/3" />
<zone name="Europe/Tiraspol" value="EET-2EEST,M3.5.0/3,M10.5.0/4" />
<zone name="Europe/Uzhgorod" value="EET-2EEST,M3.5.0/3,M10.5.0/4" />
<zone name="Europe/Vaduz" value="CET-1CEST,M3.5.0,M10.5.0/3" />
<zone name="Europe/Vatican" value="CET-1CEST,M3.5.0,M10.5.0/3" />
<zone name="Europe/Vienna" value="CET-1CEST,M3.5.0,M10.5.0/3" />
<zone name="Europe/Vilnius" value="EET-2EEST,M3.5.0/3,M10.5.0/4" />
<zone name="Europe/Volgograd" value="VOLT-3VOLST,M3.5.0,M10.5.0/3" />
<zone name="Europe/Warsaw" value="CET-1CEST,M3.5.0,M10.5.0/3" />
<zone name="Europe/Zagreb" value="CET-1CEST,M3.5.0,M10.5.0/3" />
<zone name="Europe/Zaporozhye" value="EET-2EEST,M3.5.0/3,M10.5.0/4" />
<zone name="Europe/Zurich" value="CET-1CEST,M3.5.0,M10.5.0/3" />
<zone name="Indian/Antananarivo" value="EAT-3" />
<zone name="Indian/Chagos" value="IOT-6" />
<zone name="Indian/Christmas" value="CXT-7" />
<zone name="Indian/Cocos" value="CCT-6:30" />
<zone name="Indian/Comoro" value="EAT-3" />
<zone name="Indian/Kerguelen" value="TFT-5" />
<zone name="Indian/Mahe" value="SCT-4" />
<zone name="Indian/Maldives" value="MVT-5" />
<zone name="Indian/Mauritius" value="MUT-4" />
<zone name="Indian/Mayotte" value="EAT-3" />
<zone name="Indian/Reunion" value="RET-4" />
<zone name="Mexico/BajaNorte" value="PST8PDT,M4.1.0,M10.5.0" />
<zone name="Mexico/BajaSur" value="MST7MDT,M4.1.0,M10.5.0" />
<zone name="Mexico/General" value="CST6CDT,M4.1.0,M10.5.0" />
<zone name="Mideast/Riyadh87" value="zzz-3:07:04" />
<zone name="Mideast/Riyadh88" value="zzz-3:07:04" />
<zone name="Mideast/Riyadh89" value="zzz-3:07:04" />
<zone name="Pacific/Apia" value="WST11" />
<zone name="Pacific/Auckland" value="NZST-12NZDT,M9.5.0,M4.1.0/3" />
<zone name="Pacific/Chatham" value="CHAST-12:45CHADT,M9.5.0/2:45,M4.1.0/3:45" />
<zone name="Pacific/Easter" value="EASST" />
<zone name="Pacific/Efate" value="VUT-11" />
<zone name="Pacific/Enderbury" value="PHOT-13" />
<zone name="Pacific/Fakaofo" value="TKT10" />
<zone name="Pacific/Fiji" value="FJT-12" />
<zone name="Pacific/Funafuti" value="TVT-12" />
<zone name="Pacific/Galapagos" value="GALT6" />
<zone name="Pacific/Gambier" value="GAMT9" />
<zone name="Pacific/Guadalcanal" value="SBT-11" />
<zone name="Pacific/Guam" value="ChST-10" />
<zone name="Pacific/Honolulu" value="HST10" />
<zone name="Pacific/Johnston" value="HST10" />
<zone name="Pacific/Kiritimati" value="LINT-14" />
<zone name="Pacific/Kosrae" value="KOST-11" />
<zone name="Pacific/Kwajalein" value="MHT-12" />
<zone name="Pacific/Majuro" value="MHT-12" />
<zone name="Pacific/Marquesas" value="MART9:30" />
<zone name="Pacific/Midway" value="SST11" />
<zone name="Pacific/Nauru" value="NRT-12" />
<zone name="Pacific/Niue" value="NUT11" />
<zone name="Pacific/Norfolk" value="NFT-11:30" />
<zone name="Pacific/Noumea" value="NCT-11" />
<zone name="Pacific/Pago_Pago" value="SST11" />
<zone name="Pacific/Palau" value="PWT-9" />
<zone name="Pacific/Pitcairn" value="PST8" />
<zone name="Pacific/Ponape" value="PONT-11" />
<zone name="Pacific/Port_Moresby" value="PGT-10" />
<zone name="Pacific/Rarotonga" value="CKT10" />
<zone name="Pacific/Saipan" value="ChST-10" />
<zone name="Pacific/Samoa" value="SST11" />
<zone name="Pacific/Tahiti" value="TAHT10" />
<zone name="Pacific/Tarawa" value="GILT-12" />
<zone name="Pacific/Tongatapu" value="TOT-13" />
<zone name="Pacific/Truk" value="TRUT-10" />
<zone name="Pacific/Wake" value="WAKT-12" />
<zone name="Pacific/Wallis" value="WFT-12" />
<zone name="Pacific/Yap" value="TRUT-10" />
<zone name="SystemV/AST4" value="AST4" />
<zone name="SystemV/AST4ADT" value="AST4ADT,M3.2.0,M11.1.0" />
<zone name="SystemV/CST6" value="CST6" />
<zone name="SystemV/CST6CDT" value="CST6CDT,M3.2.0,M11.1.0" />
<zone name="SystemV/EST5" value="EST5" />
<zone name="SystemV/EST5EDT" value="EST5EDT,M3.2.0,M11.1.0" />
<zone name="SystemV/HST10" value="HST10" />
<zone name="SystemV/MST7" value="MST7" />
<zone name="SystemV/MST7MDT" value="MST7MDT,M3.2.0,M11.1.0" />
<zone name="SystemV/PST8" value="PST8" />
<zone name="SystemV/PST8PDT" value="PST8PDT,M3.2.0,M11.1.0" />
<zone name="SystemV/YST9" value="GAMT9" />
<zone name="SystemV/YST9YDT" value="AKST9AKDT,M3.2.0,M11.1.0" />
<zone name="US/Alaska" value="AKST9AKDT,M3.2.0,M11.1.0" />
<zone name="US/Aleutian" value="HAST10HADT,M3.2.0,M11.1.0" />
<zone name="US/Arizona" value="MST7" />
<zone name="US/Central" value="CST6CDT,M3.2.0,M11.1.0" />
<zone name="US/Eastern" value="EST5EDT,M3.2.0,M11.1.0" />
<zone name="US/East-Indiana" value="EST5EDT,M3.2.0,M11.1.0" />
<zone name="US/Hawaii" value="HST10" />
<zone name="US/Indiana-Starke" value="CST6CDT,M3.2.0,M11.1.0" />
<zone name="US/Michigan" value="EST5EDT,M3.2.0,M11.1.0" />
<zone name="US/Mountain" value="MST7MDT,M3.2.0,M11.1.0" />
<zone name="US/Pacific" value="PST8PDT,M3.2.0,M11.1.0" />
<zone name="US/Samoa" value="SST11" />
</timezones>
</configuration>

File diff suppressed because it is too large Load Diff

View File

@ -1,36 +0,0 @@
<include>
<context name="public">
<extension name="unloop">
<condition field="${unroll_loops}" expression="^true$"/>
<condition field="${sip_looped_call}" expression="^true$">
<action application="deflect" data="${destination_number}"/>
</condition>
</extension>
<!--
Tag anything pass thru here as an outside_call so you can make sure not
to create any routing loops based on the conditions that it came from
the outside of the switch.
-->
<extension name="outside_call" continue="true">
<condition>
<action application="set" data="outside_call=true"/>
<action application="export" data="RFC2822_DATE=${strftime(%a, %d %b %Y %T %z)}"/>
</condition>
</extension>
<extension name="call_debug" continue="true">
<condition field="${call_debug}" expression="^true$" break="never">
<action application="info"/>
</condition>
</extension>
<extension name="adhearsion">
<condition>
<action application="rayo" data=""/>
</condition>
</extension>
</context>
</include>

View File

@ -1,39 +0,0 @@
<!--
NOTICE NOTICE NOTICE NOTICE NOTICE NOTICE NOTICE NOTICE NOTICE NOTICE
FreeSWITCH works off the concept of users and domains just like email.
You have users that are in domains for example 1000@domain.com.
When freeswitch gets a register packet it looks for the user in the directory
based on the from or to domain in the packet depending on how your sofia profile
is configured. Out of the box the default domain will be the IP address of the
machine running FreeSWITCH. This IP can be found by typing "sofia status" at the
CLI. You will register your phones to the IP and not the hostname by default.
If you wish to register using the domain please open vars.xml in the root conf
directory and set the default domain to the hostname you desire. Then you would
use the domain name in the client instead of the IP address to register
with FreeSWITCH.
NOTICE NOTICE NOTICE NOTICE NOTICE NOTICE NOTICE NOTICE NOTICE NOTICE
-->
<include>
<!--the domain or ip (the right hand side of the @ in the addr-->
<domain name="$${domain}">
<params>
<param name="dial-string" value="{^^:sip_invite_domain=${dialed_domain}:presence_id=${dialed_user}@${dialed_domain}}${sofia_contact(*/${dialed_user}@${dialed_domain})}"/>
</params>
<variables>
</variables>
<groups>
<group name="default">
<users>
<X-PRE-PROCESS cmd="include" data="default/*.xml"/>
</users>
</group>
</groups>
</domain>
</include>

View File

@ -1,21 +0,0 @@
<include>
<user id="usera">
<!-- Outbound Registrations Related to this user -->
<gateways>
</gateways>
<params>
<!-- omit password for authless registration -->
<param name="password" value="1"/>
</params>
<variables>
<!--all variables here will be set on all inbound calls that originate from this user -->
<variable name="user_context" value="public"/>
<variable name="effective_caller_id_name" value="User A"/>
<variable name="effective_caller_id_number" value="9009095333"/>
</variables>
<vcard>
<!-- insert optional compliant vcard xml here-->
</vcard>
</user>
</include>

View File

@ -1,21 +0,0 @@
<include>
<user id="userb">
<!-- Outbound Registrations Related to this user -->
<gateways>
</gateways>
<params>
<!-- omit password for authless registration -->
<param name="password" value="1"/>
</params>
<variables>
<!--all variables here will be set on all inbound calls that originate from this user -->
<variable name="user_context" value="public"/>
<variable name="effective_caller_id_name" value="User B"/>
<variable name="effective_caller_id_number" value="9009093733"/>
</variables>
<vcard>
<!-- insert optional compliant vcard xml here-->
</vcard>
</user>
</include>

View File

@ -1,21 +0,0 @@
<include>
<user id="userc">
<!-- Outbound Registrations Related to this user -->
<gateways>
</gateways>
<params>
<!-- omit password for authless registration -->
<param name="password" value="1"/>
</params>
<variables>
<!--all variables here will be set on all inbound calls that originate from this user -->
<variable name="user_context" value="public"/>
<variable name="effective_caller_id_name" value="User C"/>
<variable name="effective_caller_id_number" value="8006492568"/>
</variables>
<vcard>
<!-- insert optional compliant vcard xml here-->
</vcard>
</user>
</include>

View File

@ -1,21 +0,0 @@
<include>
<user id="userd">
<!-- Outbound Registrations Related to this user -->
<gateways>
</gateways>
<params>
<!-- omit password for authless registration -->
<param name="password" value="1"/>
</params>
<variables>
<!--all variables here will be set on all inbound calls that originate from this user -->
<variable name="user_context" value="public"/>
<variable name="effective_caller_id_name" value="Jenny"/>
<variable name="effective_caller_id_number" value="2128675309"/>
</variables>
<vcard>
<!-- insert optional compliant vcard xml here-->
</vcard>
</user>
</include>

View File

@ -1,69 +0,0 @@
<?xml version="1.0"?>
<!--
NOTICE NOTICE NOTICE NOTICE NOTICE NOTICE NOTICE NOTICE NOTICE NOTICE
This is the FreeSWITCH default config. Everything you see before you now traverses
down into all the directories including files which include more files. The default
config comes out of the box already working in most situations as a PBX. This will
allow you to get started testing and playing with various things in FreeSWITCH.
Before you start to modify this default please visit this wiki page:
http://wiki.freeswitch.org/wiki/Getting_Started_Guide#Some_stuff_to_try_out.21
If all else fails you can read our FAQ located at:
http://wiki.freeswitch.org/wiki/FreeSwitch_FAQ
NOTICE NOTICE NOTICE NOTICE NOTICE NOTICE NOTICE NOTICE NOTICE NOTICE
-->
<document type="freeswitch/xml">
<!--#comment
All comments starting with #command will be preprocessed and never sent to the xml parser
Valid instructions:
#include ==> Include another file to this exact point
(partial xml should be encased in <include></include> tags)
#set ==> Set a global variable (can be expanded during preprocessing with $$ variables)
(note the double $$ which denotes preprocessor variables)
#comment ==> A general comment such as this
The preprocessor will compile the full xml document to ${prefix}/log/freeswitch.xml.fsxml
Don't modify it while freeswitch is running cos it is mem mapped in most cases =D
The same can be achieved with the <X-PRE-PROCESS> tag where the attrs 'cmd' and 'data' are
parsed in the same way.
-->
<!--#comment
vars.xml contains all the #set directives for the preprocessor.
-->
<X-PRE-PROCESS cmd="include" data="vars.xml"/>
<section name="configuration" description="Various Configuration">
<X-PRE-PROCESS cmd="include" data="autoload_configs/*.xml"/>
</section>
<section name="dialplan" description="Regex/XML Dialplan">
<X-PRE-PROCESS cmd="include" data="dialplan/*.xml"/>
</section>
<!-- mod_dingaling is reliant on the vcard data in the "directory" section. -->
<!-- mod_sofia is reliant on the user data for authorization -->
<section name="directory" description="User Directory">
<X-PRE-PROCESS cmd="include" data="directory/*.xml"/>
</section>
<!-- languages section (under development still) -->
<section name="languages" description="Language Management">
<X-PRE-PROCESS cmd="include" data="lang/de/*.xml"/>
<X-PRE-PROCESS cmd="include" data="lang/en/*.xml"/>
<X-PRE-PROCESS cmd="include" data="lang/fr/*.xml"/>
<X-PRE-PROCESS cmd="include" data="lang/ru/*.xml"/>
<X-PRE-PROCESS cmd="include" data="lang/he/*.xml"/>
<X-PRE-PROCESS cmd="include" data="lang/es/es_ES.xml"/>
<X-NO-PRE-PROCESS cmd="include" data="lang/es/es_MX.xml"/>
<X-PRE-PROCESS cmd="include" data="lang/pt/pt_BR.xml"/>
<X-NO-PRE-PROCESS cmd="include" data="lang/pt/pt_PT.xml"/>
<X-NO-PRE-PROCESS cmd="include" data="lang/sv/*.xml"/>
</section>
</document>

View File

@ -1,22 +0,0 @@
<include>
<language name="de" sound-prefix="/snds" tts-engine="cepstral" tts-voice="david">
<phrases>
<macros>
<X-PRE-PROCESS cmd="include" data="demo/demo.xml"/>
<!--voicemail_de_tts is purely implemented with tts, we need a files based implementation too -->
<X-PRE-PROCESS cmd="include" data="vm/tts.xml"/>
</macros>
</phrases>
</language>
</include>
<!--
For Emacs:
Local Variables:
mode:xml
indent-tabs-mode:nil
tab-width:2
c-basic-offset:2
End:
For VIM:
vim:set softtabstop=2 shiftwidth=2 tabstop=2 expandtab:
-->

View File

@ -1,82 +0,0 @@
<include>
<macro name="msgcount">
<input pattern="(.*)">
<match>
<action function="execute" data="sleep(1000)"/>
<action function="play-file" data="voicemail/vm-you_have.wav"/>
<action function="say" data="$1" method="pronounced" type="items"/>
<action function="play-file" data="voicemail/vm-messages.wav"/>
<!-- or -->
<!--<action function="speak-text" data="Sie haben $1 Nachrichten"/>-->
</match>
</input>
</macro>
<macro name="saydate">
<input pattern="(.*)">
<match>
<action function="say" data="$1" method="pronounced" type="current_date_time"/>
</match>
</input>
</macro>
<macro name="timespec">
<input pattern="(.*)">
<match>
<action function="say" data="$1" method="pronounced" type="time_measurement"/>
</match>
</input>
</macro>
<macro name="ip-addr">
<input pattern="(.*)">
<match>
<action function="say" data="$1" method="iterated" type="ip_address"/>
<action function="say" data="$1" method="pronounced" type="ip_address"/>
</match>
</input>
</macro>
<macro name="spell">
<input pattern="(.*)">
<match>
<action function="say" data="$1" method="pronounced" type="name_spelled"/>
</match>
</input>
</macro>
<macro name="spell-phonetic">
<input pattern="(.*)">
<match>
<action function="say" data="$1" method="pronounced" type="name_phonetic"/>
</match>
</input>
</macro>
<macro name="tts-timeleft">
<!-- The parser will visit each <input> tag and execute the actions in <match> or <nomatch> depending on the pattern param -->
<!-- If the function "break" is encountered all parsing will cease -->
<input pattern="(\d+):(\d+)">
<match>
<action function="speak-text" data="Sie haben $1 Minuten, $2 Sekunden übrig $strftime(%Y-%m-%d)"/>
<action function="break"/>
</match>
<nomatch>
<action function="speak-text" data="Die Eingabe war ungültig."/>
</nomatch>
</input>
<input pattern="(\d+) min (\d+) sek">
<match>
<action function="speak-text" data="Sie haben $1 Minuten, $2 Sekunden übrig $strftime(%Y-%m-%d)"/>
</match>
<nomatch>
<action function="speak-text" data="Die Eingabe war ungültig."/>
</nomatch>
</input>
</macro>
</include>
<!--
For Emacs:
Local Variables:
mode:xml
indent-tabs-mode:nil
tab-width:2
c-basic-offset:2
End:
For VIM:
vim:set softtabstop=2 shiftwidth=2 tabstop=2 expandtab:
-->

View File

@ -1,413 +0,0 @@
<include>
<macro name="voicemail_enter_id">
<input pattern="(.*)">
<match>
<action function="play-file" data="voicemail/vm-enter_id.wav"/>
<action function="say" data="$1" method="pronounced" type="name_spelled"/>
</match>
</input>
</macro>
<macro name="voicemail_enter_pass">
<input pattern="(.*)">
<match>
<action function="play-file" data="voicemail/vm-enter_pass.wav"/>
<action function="say" data="$1" method="pronounced" type="name_spelled"/>
</match>
</input>
</macro>
<macro name="voicemail_fail_auth">
<input pattern="(.*)">
<match>
<action function="play-file" data="voicemail/vm-fail_auth.wav"/>
</match>
</input>
</macro>
<macro name="voicemail_hello">
<input pattern="(.*)">
<match>
<!--<action function="play-file" data="voicemail/vm-hello.wav"/> -->
</match>
</input>
</macro>
<macro name="voicemail_goodbye">
<input pattern="(.*)">
<match>
<action function="play-file" data="voicemail/vm-goodbye.wav"/>
</match>
</input>
</macro>
<macro name="voicemail_abort">
<input pattern="(.*)">
<match>
<action function="play-file" data="voicemail/vm-abort.wav"/>
</match>
</input>
</macro>
<macro name="voicemail_message_count">
<input pattern="^(1):(.*)$" break_on_match="true">
<match>
<action function="play-file" data="voicemail/vm-you_have.wav"/>
<action application="log" data="INFO $1 $2"/>
<action function="say" data="$1" method="pronounced" type="items" gender="feminine"/>
<action function="play-file" data="voicemail/vm-$2.wav"/>
<action function="play-file" data="voicemail/vm-message.wav"/>
</match>
</input>
<input pattern="^(\d+):(.*)$">
<match>
<action function="play-file" data="voicemail/vm-you_have.wav"/>
<action function="say" data="$1" method="pronounced" type="items" gender="feminine"/>
<action function="play-file" data="voicemail/vm-$2.wav"/>
<action function="play-file" data="voicemail/vm-messages.wav"/>
</match>
</input>
</macro>
<macro name="voicemail_menu">
<input pattern="^([0-9#*]):([0-9#*]):([0-9#*]):([0-9#*])$">
<match>
<!-- To listen to new messages -->
<action function="play-file" data="voicemail/vm-listen_new.wav"/>
<action function="play-file" data="voicemail/vm-press.wav"/>
<action function="say" data="$1" method="pronounced" type="name_spelled"/>
<action function="execute" data="sleep(100)"/>
<!-- To listen to saved messages -->
<action function="play-file" data="voicemail/vm-listen_saved.wav"/>
<action function="play-file" data="voicemail/vm-press.wav"/>
<action function="say" data="$2" method="pronounced" type="name_spelled"/>
<action function="execute" data="sleep(100)"/>
<!-- For advanced options -->
<action function="play-file" data="voicemail/vm-advanced.wav"/>
<action function="play-file" data="voicemail/vm-press.wav"/>
<action function="say" data="$3" method="pronounced" type="name_spelled"/>
<action function="execute" data="sleep(100)"/>
<!-- To exit -->
<action function="play-file" data="voicemail/vm-to_exit.wav"/>
<action function="play-file" data="voicemail/vm-press.wav"/>
<action function="say" data="$4" method="pronounced" type="name_phonetic"/>
</match>
</input>
</macro>
<macro name="voicemail_config_menu">
<input pattern="^([0-9#*]):([0-9#*]):([0-9#*]):([0-9#*]):([0-9#*])$">
<match>
<!-- To record a greeting -->
<action function="play-file" data="voicemail/vm-to_record_greeting.wav"/>
<action function="play-file" data="voicemail/vm-press.wav"/>
<action function="say" data="$1" method="pronounced" type="name_spelled"/>
<action function="execute" data="sleep(100)"/>
<!-- To choose greeting -->
<action function="play-file" data="voicemail/vm-choose_greeting.wav"/>
<action function="play-file" data="voicemail/vm-press.wav"/>
<action function="say" data="$2" method="pronounced" type="name_spelled"/>
<action function="execute" data="sleep(100)"/>
<!-- To record your name -->
<action function="play-file" data="voicemail/vm-record_name2.wav"/>
<action function="play-file" data="voicemail/vm-press.wav"/>
<action function="say" data="$3" method="pronounced" type="name_spelled"/>
<action function="execute" data="sleep(100)"/>
<!-- To change password -->
<action function="play-file" data="voicemail/vm-change_password.wav"/>
<action function="play-file" data="voicemail/vm-press.wav"/>
<action function="say" data="$4" method="pronounced" type="name_spelled"/>
<action function="execute" data="sleep(100)"/>
<!-- To return to main menu -->
<action function="play-file" data="voicemail/vm-main_menu.wav"/>
<action function="play-file" data="voicemail/vm-press.wav"/>
<action function="say" data="$5" method="pronounced" type="name_spelled"/>
</match>
</input>
</macro>
<macro name="voicemail_record_name">
<input pattern="^(.*)$">
<match>
<action function="play-file" data="voicemail/vm-record_name1.wav"/>
</match>
</input>
</macro>
<macro name="voicemail_record_file_check">
<input pattern="^([0-9#*]):([0-9#*]):([0-9#*])$">
<match>
<action function="play-file" data="voicemail/vm-press.wav"/>
<action function="say" data="$1" method="pronounced" type="name_spelled"/>
<action function="play-file" data="voicemail/vm-listen_to_recording.wav"/>
<action function="play-file" data="voicemail/vm-press.wav"/>
<action function="say" data="$2" method="pronounced" type="name_spelled"/>
<action function="play-file" data="voicemail/vm-save_recording.wav"/>
<action function="play-file" data="voicemail/vm-press.wav"/>
<action function="say" data="$3" method="pronounced" type="name_spelled"/>
<action function="play-file" data="voicemail/vm-rerecord.wav"/>
</match>
</input>
</macro>
<macro name="voicemail_record_urgent_check">
<input pattern="^([0-9#*]):([0-9#*])$">
<match>
<action function="play-file" data="voicemail/vm-mark-urgent.wav"/>
<action function="play-file" data="voicemail/vm-press.wav"/>
<action function="say" data="$1" method="pronounced" type="name_spelled"/>
<action function="play-file" data="voicemail/vm-continue.wav"/>
<action function="play-file" data="voicemail/vm-press.wav"/>
<action function="say" data="$2" method="pronounced" type="name_spelled"/>
</match>
</input>
</macro>
<macro name="voicemail_forward_prepend">
<input pattern="^([0-9#*]):([0-9#*])$">
<match>
<action function="play-file" data="voicemail/vm-forward_add_intro.wav"/>
<action function="play-file" data="voicemail/vm-press.wav"/>
<action function="say" data="$1" method="pronounced" type="name_spelled"/>
<action function="play-file" data="voicemail/vm-send_message_now.wav"/>
<action function="play-file" data="voicemail/vm-press.wav"/>
<action function="say" data="$2" method="pronounced" type="name_spelled"/>
</match>
</input>
</macro>
<macro name="voicemail_forward_message_enter_extension">
<input pattern="^([0-9#*])$">
<match>
<action function="play-file" data="voicemail/vm-forward_enter_ext.wav"/>
<action function="play-file" data="voicemail/vm-followed_by.wav"/>
<action function="say" data="$1" method="pronounced" type="name_spelled"/>
</match>
</input>
</macro>
<macro name="voicemail_invalid_extension">
<input pattern="^(.*)$">
<match>
<action function="play-file" data="voicemail/vm-that_was_an_invalid_ext.wav"/>
</match>
</input>
</macro>
<macro name="voicemail_listen_file_check">
<input pattern="^([0-9#*]):([0-9#*]):([0-9#*]):([0-9#*]):([0-9#*]):([0-9#*]):(.*)$">
<match>
<action function="play-file" data="voicemail/vm-listen_to_recording.wav"/>
<action function="play-file" data="voicemail/vm-press.wav"/>
<action function="say" data="$1" method="pronounced" type="name_spelled"/>
<action function="play-file" data="voicemail/vm-save_recording.wav"/>
<action function="play-file" data="voicemail/vm-press.wav"/>
<action function="say" data="$2" method="pronounced" type="name_spelled"/>
<action function="play-file" data="voicemail/vm-delete_recording.wav"/>
<action function="play-file" data="voicemail/vm-press.wav"/>
<action function="say" data="$3" method="pronounced" type="name_spelled"/>
<action function="play-file" data="voicemail/vm-forward_to_email.wav"/>
<action function="play-file" data="voicemail/vm-press.wav"/>
<action function="say" data="$4" method="pronounced" type="name_spelled"/>
<action function="play-file" data="voicemail/vm-return_call.wav"/>
<action function="play-file" data="voicemail/vm-press.wav"/>
<action function="say" data="$5" method="pronounced" type="name_spelled"/>
<action function="play-file" data="voicemail/vm-to_forward.wav"/>
<action function="play-file" data="voicemail/vm-press.wav"/>
<action function="say" data="$6" method="pronounced" type="name_spelled"/>
</match>
</input>
<input pattern="^([0-9#*]):([0-9#*]):([0-9#*]):([0-9#*]):([0-9#*]):([0-9#*])$">
<match>
<action function="play-file" data="voicemail/vm-listen_to_recording.wav"/>
<action function="play-file" data="voicemail/vm-press.wav"/>
<action function="say" data="$1" method="pronounced" type="name_spelled"/>
<action function="play-file" data="voicemail/vm-save_recording.wav"/>
<action function="play-file" data="voicemail/vm-press.wav"/>
<action function="say" data="$2" method="pronounced" type="name_spelled"/>
<action function="play-file" data="voicemail/vm-delete_recording.wav"/>
<action function="play-file" data="voicemail/vm-press.wav"/>
<action function="say" data="$3" method="pronounced" type="name_spelled"/>
<action function="play-file" data="voicemail/vm-return_call.wav"/>
<action function="play-file" data="voicemail/vm-press.wav"/>
<action function="say" data="$5" method="pronounced" type="name_spelled"/>
<action function="play-file" data="voicemail/vm-to_forward.wav"/>
<action function="play-file" data="voicemail/vm-press.wav"/>
<action function="say" data="$6" method="pronounced" type="name_spelled"/>
</match>
</input>
</macro>
<macro name="voicemail_choose_greeting">
<input pattern="^(.*)$">
<match>
<action function="play-file" data="voicemail/vm-choose_greeting_choose.wav"/>
</match>
</input>
</macro>
<macro name="voicemail_choose_greeting_fail">
<input pattern="^(.*)$">
<match>
<action function="play-file" data="voicemail/vm-choose_greeting_fail.wav"/>
</match>
</input>
</macro>
<macro name="voicemail_record_greeting">
<input pattern="^(.*)$">
<match>
<action function="play-file" data="voicemail/vm-record_greeting.wav"/>
</match>
</input>
</macro>
<macro name="voicemail_record_message">
<input pattern="^(.*)$">
<match>
<action function="play-file" data="voicemail/vm-record_message.wav"/>
</match>
</input>
</macro>
<macro name="voicemail_greeting_selected">
<input pattern="^(\d+)$">
<match>
<action function="play-file" data="voicemail/vm-greeting.wav"/>
<action function="say" data="$1" method="pronounced" type="items"/>
<action function="play-file" data="voicemail/vm-selected.wav"/>
</match>
</input>
</macro>
<macro name="voicemail_play_greeting">
<input pattern="^(.*)$">
<match>
<action function="play-file" data="voicemail/vm-person.wav"/>
<action function="say" data="$1" method="pronounced" type="name_spelled"/>
<action function="play-file" data="voicemail/vm-not_available.wav"/>
</match>
</input>
</macro>
<macro name="voicemail_say_number">
<input pattern="^(\d+)$">
<match>
<action function="say" data="$1" method="pronounced" type="items"/>
</match>
</input>
</macro>
<macro name="voicemail_say_message_number">
<input pattern="^([a-z]+):(\d+)$">
<match>
<action function="play-file" data="voicemail/vm-$1.wav"/>
<action function="play-file" data="voicemail/vm-message_number.wav"/>
<action application="log" data="INFO $1 $2"/>
<action function="say" data="$2" method="pronounced" type="items"/>
</match>
</input>
</macro>
<macro name="voicemail_say_phone_number">
<input pattern="^(.*)$">
<match>
<action function="say" data="$1" method="pronounced" type="name_spelled"/>
</match>
</input>
</macro>
<macro name="voicemail_say_name">
<input pattern="^(.*)$">
<match>
<action function="say" data="$1" method="pronounced" type="name_spelled"/>
</match>
</input>
</macro>
<!-- Note: Update this to marked-urgent,emailed and saved once new sound files are recorded -->
<macro name="voicemail_ack">
<input pattern="^(too-small)$">
<match>
<action function="play-file" data="voicemail/vm-too-small.wav"/>
</match>
</input>
<input pattern="^(deleted)$">
<match>
<action function="play-file" data="voicemail/vm-message.wav"/>
<action function="play-file" data="voicemail/vm-$1.wav"/>
</match>
</input>
<input pattern="^(saved)$">
<match>
<action function="play-file" data="voicemail/vm-message.wav"/>
<action function="play-file" data="voicemail/vm-$1.wav"/>
</match>
</input>
<input pattern="^(emailed)$">
<match>
<action function="play-file" data="voicemail/vm-message.wav"/>
<action function="play-file" data="voicemail/vm-$1.wav"/>
</match>
</input>
<input pattern="^(marked-urgent)$">
<match>
<action function="play-file" data="voicemail/vm-message.wav"/>
<action function="play-file" data="voicemail/vm-$1.wav"/>
</match>
</input>
</macro>
<macro name="voicemail_say_date">
<input pattern="^(.*)$">
<match>
<action application="log" data="INFO $1"/>
<action function="say" data="$1" method="counted" type="current_date_time"/>
</match>
</input>
</macro>
<macro name="voicemail_disk_quota_exceeded">
<input pattern="^(.*)$">
<match>
<action function="play-file" data="voicemail/vm-mailbox_full.wav"/>
</match>
</input>
</macro>
<macro name="valet_announce_ext">
<input pattern="^([^\:]+):(.*)$">
<match>
<action function="say" data="$2" method="pronounced" type="name_spelled"/>
</match>
</input>
</macro>
<macro name="valet_lot_full">
<input pattern="^(.*)$">
<match>
<action function="play-file" data="tone_stream://%(275,10,600);%(275,100,300)"/>
</match>
</input>
</macro>
<macro name="valet_lot_empty">
<input pattern="^(.*)$">
<match>
<action function="play-file" data="tone_stream://%(275,10,600);%(275,100,300)"/>
</match>
</input>
</macro>
</include>
<!--
For Emacs:
Local Variables:
mode:xml
indent-tabs-mode:nil
tab-width:2
c-basic-offset:2
End:
For VIM:
vim:set softtabstop=2 shiftwidth=2 tabstop=2 expandtab:
-->

View File

@ -1,224 +0,0 @@
<include>
<macro name="voicemail_enter_id">
<input pattern="(.*)">
<match>
<action function="speak-text" data="Bitte geben Sie Ihren Benutzernamen ein, gefolgt von $1."/>
</match>
</input>
</macro>
<macro name="voicemail_enter_pass">
<input pattern="(.*)">
<match>
<action function="speak-text" data="Bitte geben Sie Ihr Passwort ein, gefolgt von $1."/>
</match>
</input>
</macro>
<macro name="voicemail_fail_auth">
<input pattern="(.*)">
<match>
<action function="speak-text" data="Falsche Benutzerdaten."/>
</match>
</input>
</macro>
<macro name="voicemail_hello">
<input pattern="(.*)">
<match>
<action function="speak-text" data="Willkommen in Ihrem Postfach."/>
</match>
</input>
</macro>
<macro name="voicemail_goodbye">
<input pattern="(.*)">
<match>
<action function="speak-text" data="Auf Wiedersehen."/>
</match>
</input>
</macro>
<macro name="voicemail_abort">
<input pattern="(.*)">
<match>
<action function="speak-text" data="Zu viele Fehlversuche."/>
</match>
</input>
</macro>
<macro name="voicemail_message_count">
<input pattern="^1:(.*)$">
<match>
<action function="speak-text" data="Sie haben 1 $2 Nachricht im Ordner ${voicemail_current_folder}."/>
</match>
</input>
<input pattern="^([0,2-9]+):(.*)$">
<match>
<action function="speak-text" data="Sie haben $1 $2 Nachrichten im Ordner ${voicemail_current_folder}."/>
</match>
</input>
</macro>
<macro name="voicemail_menu">
<input pattern="^([0-9#*]):([0-9#*]):([0-9#*]):([0-9#*])$">
<match>
<action function="speak-text"
data="Um neue Nachrichten zu hören, drücken Sie $1. Um gespeicherte Nachrichten zu hören, drücken Sie $2, Für erweiterte Optionen, drücken Sie $3. Zum beenden drücken Sie $4."/>
</match>
</input>
</macro>
<macro name="voicemail_config_menu">
<input pattern="^([0-9#*]):([0-9#*]):([0-9#*]):([0-9#*])$">
<match>
<action function="speak-text"
data="Um eine Ansage aufzunehmen, drücken Sie $1. Um eine Ansage auszuwählen, drücken Sie $2. Um ihren Namen aufzunehmen, drücken Sie $3. Um zum Hauptmenü zurückzukehren, drücken Sie $4."/>
</match>
</input>
</macro>
<macro name="voicemail_record_name">
<input pattern="^(.*)$">
<match>
<action function="speak-text" data="Sprechen Sie Ihren Namen nach dem Ton, drücken Sie eine beliebige Taste oder hören Sie auf zu sprechen um die Aufnahme zu beenden."/>
</match>
</input>
</macro>
<macro name="voicemail_record_file_check">
<input pattern="^([0-9#*]):([0-9#*]):([0-9#*])$">
<match>
<action function="speak-text"
data="Um die Aufzeichnung anzuhören, drücken Sie $1. Um die Aufzeichnung zu speichern, drücken Sie $2. Für eine erneute Aufnahme drücken Sie $3."/>
</match>
</input>
</macro>
<macro name="voicemail_record_urgent_check">
<input pattern="^([0-9#*]):([0-9#*])$">
<match>
<action function="speak-text"
data="Drücken Sie $1 um diese Nachricht als wichtig zu markieren. Um fortzufahren drücken Sie $2."/>
</match>
</input>
</macro>
<macro name="voicemail_listen_file_check">
<input pattern="^([0-9#*]):([0-9#*]):([0-9#*]):([0-9#*])$">
<match>
<action function="speak-text"
data="Drücken Sie $1 um die Nachricht erneut zu hören. Um die Nachricht zu speichern, drücken Sie $2. Zum löschen der Nachricht drücken Sie $3. Für die Weiterleitung als Email, drücken Sie $4."/>
</match>
</input>
</macro>
<macro name="voicemail_choose_greeting">
<input pattern="^(.*)$">
<match>
<action function="speak-text" data="Wählen Sie eine Ansage zwischen 1 und 3."/>
</match>
</input>
</macro>
<macro name="voicemail_choose_greeting_fail">
<input pattern="^(.*)$">
<match>
<action function="speak-text" data="Ungültige Eingabe."/>
</match>
</input>
</macro>
<macro name="voicemail_record_greeting">
<input pattern="^(.*)$">
<match>
<action function="speak-text" data="Zeichnen Sie Ihre Ansage nach dem Ton auf. Drücken Sie eine beliebige Taste oder hören Sie auf zu sprechen um die Aufnahme zu beenden."/>
</match>
</input>
</macro>
<macro name="voicemail_record_message">
<input pattern="^(.*)$">
<match>
<action function="speak-text" data="Sprechen Sie nach dem Ton. Drücken Sie eine beliebige Taste oder hören Sie auf zu sprechen um die Aufnahme zu beenden."/>
</match>
</input>
</macro>
<macro name="voicemail_greeting_selected">
<input pattern="^(.*)$">
<match>
<action function="speak-text" data="Ansage $1 ausgewählt."/>
</match>
</input>
</macro>
<macro name="voicemail_play_greeting">
<input pattern="^(.*)$">
<match>
<action function="speak-text" data="$1 ist nicht verfügbar."/>
</match>
</input>
</macro>
<macro name="voicemail_say_number">
<input pattern="^(.*)$">
<match>
<action function="speak-text" data="$1"/>
</match>
</input>
</macro>
<macro name="voicemail_say_message_number">
<input pattern="^([a-z]+):(.*)$">
<match>
<action function="speak-text" data="$1 Nachricht Nummer $2."/>
</match>
</input>
</macro>
<macro name="voicemail_say_phone_number">
<input pattern="^(.*)$">
<match>
<action function="speak-text" data="$1."/>
</match>
</input>
</macro>
<macro name="voicemail_say_name">
<input pattern="^(.*)$">
<match>
<action function="speak-text" data="$1."/>
</match>
</input>
</macro>
<macro name="voicemail_ack">
<input pattern="^(.*)$">
<match>
<action function="speak-text" data="Nachricht $1"/>
</match>
</input>
</macro>
<macro name="voicemail_say_date">
<input pattern="^(.*)$">
<match>
<action function="speak-text" data="$strftime($1|%A, %B %d %Y, %I %M %p)"/>
</match>
</input>
</macro>
</include>
<!--
For Emacs:
Local Variables:
mode:xml
indent-tabs-mode:nil
tab-width:2
c-basic-offset:2
End:
For VIM:
vim:set softtabstop=2 shiftwidth=2 tabstop=2 expandtab:
-->

View File

@ -1,156 +0,0 @@
<include>
<macro name="demo_ivr_count">
<input pattern="^(\d+)$">
<match>
<action function="play-file" data="voicemail/vm-you_have.wav"/>
<action function="say" data="$1" method="pronounced" type="name_spelled"/>
<action function="play-file" data="voicemail/vm-messages.wav"/>
</match>
</input>
</macro>
<macro name="demo_ivr_main_menu" pause="100"> <!-- See conf/autoload_config/ivr.conf.xml for an example on how to use this macro in an IVR -->
<input pattern="(.*)">
<match>
<!-- string together several existing sound files to create one long greeting -->
<action function="play-file" data="ivr/ivr-welcome_to_freeswitch.wav"/>
<action function="play-file" data="ivr/ivr-this_ivr_will_let_you_test_features.wav"/>
<action function="play-file" data="ivr/ivr-you_may_exit_by_hanging_up.wav"/>
<!-- note that you can do more than just play files, e.g. have pauses and do TTS -->
<!-- Menu option 1: Call FreeSWITCH conference-->
<action function="play-file" data="ivr/ivr-enter_ext_pound.wav"/>
<action function="play-file" data="silence_stream://1500"/>
<action function="play-file" data="ivr/ivr-to_call_the_freeswitch_conference.wav"/>
<action function="play-file" data="ivr/ivr-please.wav"/>
<action function="play-file" data="voicemail/vm-press.wav"/>
<action function="play-file" data="digits/1.wav"/>
<!-- Menu option 2: Do FreeSWITCH echo test -->
<action function="play-file" data="ivr/ivr-to_do_a_freeswitch_echo_test.wav"/>
<action function="play-file" data="ivr/ivr-please.wav"/>
<action function="play-file" data="voicemail/vm-press.wav"/>
<action function="play-file" data="digits/2.wav"/>
<!-- Menu option 3: Listen to Music on Hold -->
<action function="play-file" data="ivr/ivr-to_listen_to_moh.wav"/>
<action function="play-file" data="ivr/ivr-please.wav"/>
<action function="play-file" data="voicemail/vm-press.wav"/>
<action function="play-file" data="digits/3.wav"/>
<!-- Menu option 4: Register for ClueCon -->
<action function="play-file" data="ivr/ivr-register_for_cluecon.wav"/>
<action function="play-file" data="digits/4.wav"/>
<!-- Menu option 5: Listen to screaming monkeys -->
<action function="play-file" data="ivr/ivr-to_hear_screaming_monkeys.wav"/>
<action function="play-file" data="ivr/ivr-please.wav"/>
<action function="play-file" data="voicemail/vm-press.wav"/>
<action function="play-file" data="digits/5.wav"/>
<!-- Menu option 6: Hear a sample submenu -->
<action function="play-file" data="ivr/ivr-to_hear_sample_submenu.wav"/>
<action function="play-file" data="ivr/ivr-please.wav"/>
<action function="play-file" data="voicemail/vm-press.wav"/>
<action function="play-file" data="digits/6.wav"/>
<!-- Menu option 9: Repeat these options -->
<action function="play-file" data="ivr/ivr-to_repeat_these_options.wav"/>
<action function="play-file" data="ivr/ivr-please.wav"/>
<action function="play-file" data="voicemail/vm-press.wav"/>
<action function="play-file" data="digits/9.wav"/>
<action function="play-file" data="silence_stream://2000"/>
</match>
</input>
</macro>
<!-- The following macro is the same as demo_ivr_main_menu except it is the "short" version -->
<!-- The short version has all the options but not the initial greeting -->
<macro name="demo_ivr_main_menu_short" pause="100">
<input pattern="(.*)">
<match>
<!-- Menu option 1: Call FreeSWITCH conference-->
<action function="play-file" data="silence_stream://1000"/>
<action function="play-file" data="ivr/ivr-to_call_the_freeswitch_conference.wav"/>
<action function="play-file" data="ivr/ivr-please.wav"/>
<action function="play-file" data="voicemail/vm-press.wav"/>
<action function="play-file" data="digits/1.wav"/>
<!-- Menu option 2: Do FreeSWITCH echo test -->
<action function="play-file" data="ivr/ivr-to_do_a_freeswitch_echo_test.wav"/>
<action function="play-file" data="ivr/ivr-please.wav"/>
<action function="play-file" data="voicemail/vm-press.wav"/>
<action function="play-file" data="digits/2.wav"/>
<!-- Menu option 3: Listen to Music on Hold -->
<action function="play-file" data="ivr/ivr-to_listen_to_moh.wav"/>
<action function="play-file" data="ivr/ivr-please.wav"/>
<action function="play-file" data="voicemail/vm-press.wav"/>
<action function="play-file" data="digits/3.wav"/>
<!-- Menu option 4: Hear a sample submenu -->
<action function="play-file" data="ivr/ivr-to_hear_sample_submenu.wav"/>
<action function="play-file" data="ivr/ivr-please.wav"/>
<action function="play-file" data="voicemail/vm-press.wav"/>
<action function="play-file" data="digits/4.wav"/>
<!-- Menu option 5: Listen to screaming monkeys -->
<action function="play-file" data="ivr/ivr-to_hear_screaming_monkeys.wav"/>
<action function="play-file" data="ivr/ivr-please.wav"/>
<action function="play-file" data="voicemail/vm-press.wav"/>
<action function="play-file" data="digits/5.wav"/>
<!-- Menu option 9: Repeat these options -->
<action function="play-file" data="ivr/ivr-to_repeat_these_options.wav"/>
<action function="play-file" data="ivr/ivr-please.wav"/>
<action function="play-file" data="voicemail/vm-press.wav"/>
<action function="play-file" data="digits/9.wav"/>
<action function="play-file" data="silence_stream://2000"/>
</match>
</input>
</macro>
<!-- The following macro is the "long" greeting for the demo_ivr_sub_menu -->
<macro name="demo_ivr_sub_menu">
<input pattern="(.*)">
<match>
<action function="play-file" data="ivr/ivr-welcome_to_freeswitch.wav"/>
<action function="play-file" data="ivr/ivr-sample_submenu.wav"/>
<!-- Menu option *: Return to top menu -->
<action function="play-file" data="ivr/ivr-to_return_to_previous_menu.wav"/>
<action function="play-file" data="ivr/ivr-please.wav"/>
<action function="play-file" data="voicemail/vm-press.wav"/>
<action function="play-file" data="digits/star.wav"/>
</match>
</input>
</macro>
<!-- The following macro is the same as demo_ivr_sub_menu except it is the "short" version -->
<!-- The short version has all the options but not the initial greeting -->
<macro name="demo_ivr_sub_menu_short">
<input pattern="(.*)">
<match>
<!-- Menu option *: Return to top menu -->
<action function="play-file" data="ivr/ivr-to_return_to_previous_menu.wav"/>
<action function="play-file" data="ivr/ivr-please.wav"/>
<action function="play-file" data="voicemail/vm-press.wav"/>
<action function="play-file" data="digits/star.wav"/>
</match>
</input>
</macro>
</include>
<!--
For Emacs:
Local Variables:
mode:xml
indent-tabs-mode:nil
tab-width:2
c-basic-offset:2
End:
For VIM:
vim:set softtabstop=2 shiftwidth=2 tabstop=2 expandtab:
-->

View File

@ -1,82 +0,0 @@
<include>
<macro name="msgcount">
<input pattern="(.*)">
<match>
<action function="execute" data="sleep(1000)"/>
<action function="play-file" data="voicemail/vm-you_have.wav"/>
<action function="say" data="$1" method="pronounced" type="items"/>
<action function="play-file" data="voicemail/vm-messages.wav"/>
<!-- or -->
<!--<action function="speak-text" data="you have $1 messages"/>-->
</match>
</input>
</macro>
<macro name="saydate">
<input pattern="(.*)">
<match>
<action function="say" data="$1" method="pronounced" type="current_date_time"/>
</match>
</input>
</macro>
<macro name="timespec">
<input pattern="(.*)">
<match>
<action function="say" data="$1" method="pronounced" type="time_measurement"/>
</match>
</input>
</macro>
<macro name="ip-addr">
<input pattern="(.*)">
<match>
<action function="say" data="$1" method="iterated" type="ip_address"/>
<action function="say" data="$1" method="pronounced" type="ip_address"/>
</match>
</input>
</macro>
<macro name="spell">
<input pattern="(.*)">
<match>
<action function="say" data="$1" method="pronounced" type="name_spelled"/>
</match>
</input>
</macro>
<macro name="spell-phonetic">
<input pattern="(.*)">
<match>
<action function="say" data="$1" method="pronounced" type="name_phonetic"/>
</match>
</input>
</macro>
<macro name="tts-timeleft">
<!-- The parser will visit each <input> tag and execute the actions in <match> or <nomatch> depending on the pattern param -->
<!-- If the function "break" is encountered all parsing will cease -->
<input pattern="(\d+):(\d+)">
<match>
<action function="speak-text" data="You have $1 minutes, $2 seconds remaining $strftime(%Y-%m-%d)"/>
<action function="break"/>
</match>
<nomatch>
<action function="speak-text" data="That input was invalid."/>
</nomatch>
</input>
<input pattern="(\d+) min (\d+) sec">
<match>
<action function="speak-text" data="You have $1 minutes, $2 seconds remaining $strftime(%Y-%m-%d)"/>
</match>
<nomatch>
<action function="speak-text" data="That input was invalid."/>
</nomatch>
</input>
</macro>
</include>
<!--
For Emacs:
Local Variables:
mode:xml
indent-tabs-mode:nil
tab-width:2
c-basic-offset:2
End:
For VIM:
vim:set softtabstop=2 shiftwidth=2 tabstop=2 expandtab:
-->

View File

@ -1,35 +0,0 @@
<include>
<macro name="funny_prompts" pause="750">
<input pattern="(.*)">
<match>
<action function="play-file" data="ivr/ivr-wakey_wakey_sunshine.wav"/>
<action function="play-file" data="ivr/ivr-no_no_no.wav"/>
<action function="play-file" data="ivr/ivr-did_you_mean_to_press_key.wav"/>
<action function="play-file" data="ivr/ivr-seriously_mean_to_press_key.wav"/>
<action function="play-file" data="ivr/ivr-oh_whatever.wav"/>
<action function="play-file" data="ivr/ivr-one_more_mistake.wav"/>
<action function="play-file" data="ivr/ivr-congratulations_you_pressed_star.wav"/>
<action function="play-file" data="ivr/ivr-engineers_busy_assisting_other_sales.wav"/>
<action function="play-file" data="ivr/ivr-message_self_destruct.wav"/>
<action function="play-file" data="ivr/ivr-all_your_call_are_belong_to_us.wav"/>
<action function="play-file" data="ivr/ivr-love_those_touch_tones.wav"/>
<action function="play-file" data="ivr/ivr-yes_we_have_no_bananas.wav"/>
<action function="play-file" data="ivr/ivr-dude_you_suck.wav"/>
<action function="play-file" data="ivr/ivr-on_hold_indefinitely.wav"/>
<action function="play-file" data="ivr/ivr-youre_doing_it_wrong.wav"/>
<action function="play-file" data="ivr/ivr-were_asterisk_free.wav"/>
<action function="play-file" data="ivr/ivr-douche_telecom.wav"/>
<action function="play-file" data="ivr/ivr-asterisk_like_syphilis.wav"/>
<action function="play-file" data="ivr/ivr-freeguipy.wav"/>
<action function="play-file" data="ivr/ivr-terribly_wrong_awkward.wav"/>
<action function="play-file" data="ivr/ivr-it_was_that_bug.wav"/>
<action function="play-file" data="ivr/ivr-concentrate.wav"/>
<action function="play-file" data="ivr/ivr-founder_of_freesource.wav"/>
<action function="play-file" data="ivr/ivr-cold_foolish.wav"/>
<action function="play-file" data="ivr/ivr-trollover_minutes.wav"/>
<action function="play-file" data="ivr/ivr-yuno_silent_drill.wav"/>
<action function="play-file" data="ivr/ivr-beacuase.wav"/>
</match>
</input>
</macro>
</include>

View File

@ -1,171 +0,0 @@
<?xml version="1.0" encoding="Windows-1252"?>
<include><!--This line will be ignored it's here to validate the xml and is optional -->
<macro name="new_demo_ivr_main_menu" pause="100"> <!-- See conf/ivr_menus/ivr.conf.xml for an example on how to use this macro in an IVR -->
<input pattern="(.*)">
<match>
<action function="play-file" data="ivr/ivr-welcome_to_freeswitch.wav"/>
<action function="play-file" data="silence_stream://500"/>
<!-- Menu option 1: For information about FreeSWITCH... -->
<action function="play-file" data="misc/misc-information_about_freeswitch.wav"/>
<action function="play-file" data="digits/1.wav"/>
<!-- Menu option 2: To learn more about FreeSWITCH Solutions... -->
<action function="play-file" data="misc/misc-learn_more_about_freeswitch_solutions.wav"/>
<action function="play-file" data="digits/2.wav"/>
<!-- Menu option 3: To hear about ClueCon -->
<action function="play-file" data="misc/misc-to_hear_about_cluecon.wav"/>
<action function="play-file" data="digits/3.wav"/>
<!-- Menu option 4: For other options -->
<action function="play-file" data="ivr/ivr-for_other_options.wav"/>
<action function="play-file" data="digits/4.wav"/>
<!-- Menu option 9: Repeat these options -->
<action function="play-file" data="ivr/ivr-to_repeat_these_options.wav"/>
<action function="play-file" data="ivr/ivr-please.wav"/>
<action function="play-file" data="voicemail/vm-press.wav"/>
<action function="play-file" data="digits/9.wav"/>
<action function="play-file" data="silence_stream://2000"/>
</match>
</input>
</macro>
<!-- The following macro is the same as new_demo_ivr_main_menu except it is the "short" version -->
<!-- The short version has all the options but not the initial greeting -->
<macro name="new_demo_ivr_main_menu_short" pause="100">
<input pattern="(.*)">
<match>
<!-- Menu option 1: For information about FreeSWITCH... -->
<action function="play-file" data="misc/misc-information_about_freeswitch.wav"/>
<action function="play-file" data="digits/1.wav"/>
<!-- Menu option 2: To learn more about FreeSWITCH Solutions... -->
<action function="play-file" data="misc/misc-learn_more_about_freeswitch_solutions.wav"/>
<action function="play-file" data="digits/2.wav"/>
<!-- Menu option 3: To hear about ClueCon -->
<action function="play-file" data="misc/misc-to_hear_about_cluecon.wav"/>
<action function="play-file" data="digits/3.wav"/>
<!-- Menu option 4: For other options -->
<action function="play-file" data="ivr/ivr-for_other_options.wav"/>
<action function="play-file" data="digits/4.wav"/>
<!-- Menu option 9: Repeat these options -->
<action function="play-file" data="ivr/ivr-to_repeat_these_options.wav"/>
<action function="play-file" data="ivr/ivr-please.wav"/>
<action function="play-file" data="voicemail/vm-press.wav"/>
<action function="play-file" data="digits/9.wav"/>
<action function="play-file" data="silence_stream://2000"/>
</match>
</input>
</macro>
<!-- More information about FreeSWITCH... -->
<macro name="learn_about_freeswitch_sub_menu">
<input pattern="(.*)">
<match>
<!-- Information about FreeSWITCH and OSTAG... -->
<action function="play-file" data="misc-freeswitch_is_state_of_the_art.wav"/>
<action function="play-file" data="silence_stream://50"/>
<action function="play-file" data="misc-it_is_stable_scalable_extensible.wav"/>
<action function="play-file" data="silence_stream://50"/>
<action function="play-file" data="misc-free_to_download.wav"/>
<action function="play-file" data="silence_stream://50"/>
<action function="play-file" data="misc-freeswitch_sponsored_by_ostag.wav"/>
<action function="play-file" data="silence_stream://50"/>
<action function="play-file" data="misc-ostag_learn_more.wav"/>
<action function="play-file" data="silence_stream://50"/>
<!-- Menu option 9: Repeat this information -->
<action function="play-file" data="ivr/ivr-repeat_this_information.wav"/>
<action function="play-file" data="ivr/ivr-please.wav"/>
<action function="play-file" data="voicemail/vm-press.wav"/>
<action function="play-file" data="digits/9.wav"/>
<action function="play-file" data="silence_stream://2000"/>
<!-- Menu option *: Return to top menu -->
<action function="play-file" data="ivr/ivr-to_return_to_previous_menu.wav"/>
<action function="play-file" data="ivr/ivr-please.wav"/>
<action function="play-file" data="voicemail/vm-press.wav"/>
<action function="play-file" data="digits/star.wav"/>
</match>
</input>
</macro>
<!-- More information about FreeSWITCH Solutions... -->
<macro name="learn_about_freeswitch_solutions_sub_menu">
<input pattern="(.*)">
<match>
<!-- Information about FreeSWITCH Solutions... -->
<action function="play-file" data="[[sounds from tony/brian]]"/>
<action function="play-file" data="silence_stream://50"/>
<action function="play-file" data="[[sounds from tony/brian]]"/>
<action function="play-file" data="silence_stream://50"/>
<action function="play-file" data="[[sounds from tony/brian]]"/>
<action function="play-file" data="silence_stream://50"/>
<action function="play-file" data="[[sounds from tony/brian]]"/>
<action function="play-file" data="silence_stream://50"/>
<action function="play-file" data="[[sounds from tony/brian]]"/>
<action function="play-file" data="silence_stream://50"/>
<!-- Menu option 9: Repeat this information -->
<action function="play-file" data="ivr/ivr-repeat_this_information.wav"/>
<action function="play-file" data="ivr/ivr-please.wav"/>
<action function="play-file" data="voicemail/vm-press.wav"/>
<action function="play-file" data="digits/9.wav"/>
<action function="play-file" data="silence_stream://2000"/>
<!-- Menu option *: Return to top menu -->
<action function="play-file" data="ivr/ivr-to_return_to_previous_menu.wav"/>
<action function="play-file" data="ivr/ivr-please.wav"/>
<action function="play-file" data="voicemail/vm-press.wav"/>
<action function="play-file" data="digits/star.wav"/>
</match>
</input>
</macro>
<!-- More information about ClueCon -->
<macro name="learn_about_cluecon_sub_menu">
<input pattern="(.*)">
<match>
<!-- Information about ClueCon... -->
<action function="play-file" data="misc-cluecon_is_premier_conference.wav"/>
<action function="play-file" data="silence_stream://50"/>
<action function="play-file" data="misc-chicago_each_summer.wav"/>
<action function="play-file" data="silence_stream://50"/>
<action function="play-file" data="misc-wide_range_of_persons.wav"/>
<action function="play-file" data="silence_stream://50"/>
<action function="play-file" data="misc-support_open_source_by_attending.wav"/>
<action function="play-file" data="silence_stream://500"/>
<action function="play-file" data="ivr-register_for_cluecon.wav"/>
<action function="play-file" data="ivr/ivr-please.wav"/>
<action function="play-file" data="voicemail/vm-press.wav"/>
<action function="play-file" data="digits/1.wav"/>
<action function="play-file" data="silence_stream://500"/>
<!-- Menu option 9: Repeat this information -->
<action function="play-file" data="ivr/ivr-repeat_this_information.wav"/>
<action function="play-file" data="ivr/ivr-please.wav"/>
<action function="play-file" data="voicemail/vm-press.wav"/>
<action function="play-file" data="digits/9.wav"/>
<action function="play-file" data="silence_stream://2000"/>
<!-- Menu option *: Return to top menu -->
<action function="play-file" data="ivr/ivr-to_return_to_previous_menu.wav"/>
<action function="play-file" data="ivr/ivr-please.wav"/>
<action function="play-file" data="voicemail/vm-press.wav"/>
<action function="play-file" data="digits/star.wav"/>
</match>
</input>
</macro>
</include><!--This line will be ignored it's here to validate the xml and is optional -->

View File

@ -1,130 +0,0 @@
<include>
<macro name="directory_intro">
<input pattern="^(last_name)" break_on_match="false">
<match>
<action function="play-file" data="directory/dir-enter_person.wav"/>
<action function="play-file" data="directory/dir-last_name.wav"/>
</match>
</input>
<input pattern="^(first_name)" break_on_match="false">
<match>
<action function="play-file" data="directory/dir-enter_person.wav"/>
<action function="play-file" data="directory/dir-first_name.wav"/>
</match>
</input>
<input pattern="^(last_name):([0-9#*])$" break_on_match="false">
<match>
<action function="play-file" data="directory/dir-to_search_by.wav"/>
<action function="play-file" data="directory/dir-first_name.wav"/>
<action function="play-file" data="voicemail/vm-press.wav"/>
<action function="say" data="$2" method="pronounced" type="name_spelled"/>
</match>
</input>
<input pattern="^(first_name):([0-9#*])$" break_on_match="false">
<match>
<action function="play-file" data="directory/dir-to_search_by.wav"/>
<action function="play-file" data="directory/dir-last_name.wav"/>
<action function="play-file" data="voicemail/vm-press.wav"/>
<action function="say" data="$2" method="pronounced" type="name_spelled"/>
</match>
</input>
</macro>
<macro name="directory_min_search_digits">
<input pattern="^(.*)$">
<match>
<action function="play-file" data="directory/dir-specify_mininum.wav"/>
<action function="say" data="$1" method="pronounced" type="items"/>
<action function="play-file" data="directory/dir-letters_of_person_name.wav"/>
</match>
</input>
</macro>
<macro name="directory_result_count">
<input pattern="^0$" break_on_match="true">
<match>
<action function="play-file" data="directory/dir-no_matching_results.wav"/>
</match>
</input>
<input pattern="^(.*)$">
<match>
<action function="say" data="$1" method="pronounced" type="items"/>
<action function="play-file" data="directory/dir-result_match.wav"/>
</match>
</input>
</macro>
<macro name="directory_result_count_too_large">
<input pattern="^(.*)$">
<match>
<action function="play-file" data="directory/dir-too_many_result.wav"/>
</match>
</input>
</macro>
<macro name="directory_result_last">
<input pattern="^(.*)$">
<match>
<action function="play-file" data="directory/dir-no_more_results.wav"/>
</match>
</input>
</macro>
<macro name="directory_result_item">
<input pattern="^(.*)$">
<match>
<action function="play-file" data="directory/dir-result_number.wav"/>
<action function="say" data="$1" method="pronounced" type="items"/>
</match>
</input>
</macro>
<macro name="directory_result_at">
<input pattern="^(.*)$">
<match>
<action function="play-file" data="directory/dir-at_extension.wav"/>
<action function="say" data="$1" method="pronounced" type="name_spelled"/>
</match>
</input>
</macro>
<macro name="directory_result_menu">
<input pattern="^([0-9#*]),([0-9#*]),([0-9#*]),([0-9#*])$">
<match>
<action function="play-file" data="directory/dir-to_select_entry.wav"/>
<action function="play-file" data="voicemail/vm-press.wav"/>
<action function="say" data="$1" method="pronounced" type="name_spelled"/>
<action function="play-file" data="directory/dir-for_next.wav"/>
<action function="play-file" data="voicemail/vm-press.wav"/>
<action function="say" data="$2" method="pronounced" type="name_spelled"/>
<action function="play-file" data="directory/dir-for_prev.wav"/>
<action function="play-file" data="voicemail/vm-press.wav"/>
<action function="say" data="$3" method="pronounced" type="name_spelled"/>
<action function="play-file" data="directory/dir-start_new_search.wav"/>
<action function="play-file" data="voicemail/vm-press.wav"/>
<action function="say" data="$4" method="pronounced" type="name_spelled"/>
</match>
</input>
</macro>
<macro name="directory_result_say_name">
<input pattern="^(.*)$">
<match>
<action function="say" data="$1" method="pronounced" type="name_spelled"/>
</match>
</input>
</macro>
</include>
<!--
For Emacs:
Local Variables:
mode:xml
indent-tabs-mode:nil
tab-width:2
c-basic-offset:2
End:
For VIM:
vim:set softtabstop=2 shiftwidth=2 tabstop=2 expandtab:
-->

View File

@ -1,106 +0,0 @@
<include>
<macro name="directory_intro">
<input pattern="^(last_name)" break_on_match="false">
<match>
<action function="speak-text" data="Please enter the first few digit of the person last name"/>
</match>
</input>
<input pattern="^(first_name)" break_on_match="false">
<match>
<action function="speak-text" data="Please enter the first few digit of the person first name"/>
</match>
</input>
<input pattern="^(last_name):([0-9#*])$" break_on_match="false">
<match>
<action function="speak-text" data="to search by first name, press $2"/>
</match>
</input>
<input pattern="^(first_name):([0-9#*])$" break_on_match="false">
<match>
<action function="speak-text" data="to search by last name, press $2"/>
</match>
</input>
</macro>
<macro name="directory_min_search_digits">
<input pattern="^(.*)$">
<match>
<action function="speak-text" data="You need to specify a minimum the first $1 letters of the person name, try again."/>
</match>
</input>
</macro>
<macro name="directory_result_count">
<input pattern="^0$" break_on_match="true">
<match>
<action function="speak-text" data="Your search match no user on this system, try again."/>
</match>
</input>
<input pattern="^(.*)$">
<match>
<action function="speak-text" data="$1 result match your search"/>
</match>
</input>
</macro>
<macro name="directory_result_count_too_large">
<input pattern="^(.*)$">
<match>
<action function="speak-text" data="Your search returned too many result, please try again"/>
</match>
</input>
</macro>
<macro name="directory_result_last">
<input pattern="^(.*)$">
<match>
<action function="speak-text" data="No more result"/>
</match>
</input>
</macro>
<macro name="directory_result_item">
<input pattern="^(.*)$">
<match>
<action function="speak-text" data="Result number $1"/>
</match>
</input>
</macro>
<macro name="directory_result_menu">
<input pattern="^([0-9#*]),([0-9#*]),([0-9#*]),([0-9#*])$">
<match>
<action function="speak-text" data="To select this entry press $1, for the next entry press $2, for the previous entry press $3, to make a new search press $4"/>
</match>
</input>
</macro>
<macro name="directory_result_at">
<input pattern="^(.*)$">
<match>
<action function="speak-text" data="at extension $1"/>
</match>
</input>
</macro>
<macro name="directory_result_say_name">
<input pattern="^(.*)$">
<match>
<action function="speak-text" data="$1"/>
</match>
</input>
</macro>
</include>
<!--
For Emacs:
Local Variables:
mode:xml
indent-tabs-mode:nil
tab-width:2
c-basic-offset:2
End:
For VIM:
vim:set softtabstop=2 shiftwidth=2 tabstop=2 expandtab:
-->

View File

@ -1,25 +0,0 @@
<include>
<language name="en" say-module="en" sound-prefix="$${sound_prefix}" tts-engine="cepstral" tts-voice="callie">
<phrases>
<macros>
<X-PRE-PROCESS cmd="include" data="demo/*.xml"/> <!-- Note: this now grabs whole subdir, previously grabbed only demo.xml -->
<!-- voicemail_en_tts is purely implemented with tts, we have the files based one that is the default. -->
<X-PRE-PROCESS cmd="include" data="vm/sounds.xml"/> <!-- vm/tts.xml if you want to use tts and have cepstral -->
<X-PRE-PROCESS cmd="include" data="dir/sounds.xml"/> <!-- dir/tts.xml if you want to use tts and have cepstral -->
<X-PRE-PROCESS cmd="include" data="ivr/*.xml"/> <!-- IVR and custom phrases go here -->
</macros>
<X-PRE-PROCESS cmd="include" data="vm/voicemail_ivr.xml"/>
</phrases>
</language>
</include>
<!--
For Emacs:
Local Variables:
mode:xml
indent-tabs-mode:nil
tab-width:2
c-basic-offset:2
End:
For VIM:
vim:set softtabstop=2 shiftwidth=2 tabstop=2 expandtab:
-->

View File

@ -1,153 +0,0 @@
<include>
<macro name="queue_position">
<input pattern="^(\d+)$">
<match>
<action function="play-file" data="ivr/ivr-you_are_number.wav"/>
<action function="say" data="$1" method="pronounced" type="items"/>
<action function="play-file" data="ivr/ivr-in_line.wav"/>
</match>
</input>
</macro>
<macro name="has_called_conf">
<input pattern="^(\d+)$">
<match>
<action function="play-file" data="$1"/>
<action function="sleep" data="100"/>
<action function="play-file" data="conference/conf-has_joined.wav"/>
</match>
</input>
</macro>
<macro name="has_left_conf">
<input pattern="^(\d+)$">
<match>
<action function="play-file" data="$1"/>
<action function="sleep" data="100"/>
<action function="play-file" data="conference/conf-has_left.wav"/>
</match>
</input>
</macro>
<macro name="callers_in_conf">
<input pattern="^1$" break_on_match="true">
<match>
<action function="sleep" data="500"/>
<!--<action function="play-file" data="ivr/ivr-there_is.wav"/>-->
<action function="play-file" data="digits/1.wav"/>
<action function="sleep" data="100"/>
<action function="play-file" data="conference/conf-listener_in_conference.wav"/>
</match>
</input>
<input pattern="^(\d+)$">
<match>
<action function="sleep" data="500"/>
<action function="play-file" data="ivr/ivr-there_are.wav"/>
<action function="say" data="$1" method="pronounced" type="items"/>
<action function="sleep" data="100"/>
<action function="play-file" data="conference/conf-members_in_conference.wav"/>
</match>
<nomatch>
<action function="sleep" data="500"/>
<action function="play-file" data="ivr/ivr-there_are.wav"/>
<action function="play-file" data="digits/0.wav"/>
<action function="sleep" data="100"/>
<action function="play-file" data="conference/conf-members_in_conference.wav"/>
</nomatch>
</input>
</macro>
<macro name="enter_dest_number">
<input pattern="^(.*)$">
<match>
<action function="sleep" data="1000"/>
<action function="play-file" data="ivr/ivr-enter_destination_telephone_number.wav"/>
<action function="sleep" data="1000"/>
</match>
</input>
</macro>
<macro name="enter_src_number">
<input pattern="^(.*)$">
<match>
<action function="sleep" data="1000"/>
<action function="play-file" data="ivr/ivr-enter_source_telephone_number.wav"/>
<action function="sleep" data="1000"/>
</match>
</input>
</macro>
<macro name="call_forward_set">
<input pattern="^(\d+):(\d+)$">
<match>
<action function="sleep" data="1000"/>
<action function="play-file" data="ivr/ivr-extension_number.wav"/>
<action function="sleep" data="400"/>
<action function="say" data="$1" method="iterated" type="number"/>
<action function="sleep" data="400"/>
<action function="play-file" data="digits/2.wav"/>
<action function="sleep" data="1000"/>
<action function="play-file" data="ivr/ivr-extension_number.wav"/>
<action function="sleep" data="400"/>
<action function="say" data="$2" method="iterated" type="number"/>
<action function="sleep" data="1000"/>
<action function="play-file" data="ivr/ivr-call_forwarding_has_been_set.wav"/>
<action function="sleep" data="1500"/>
</match>
</input>
</macro>
<macro name="call_forward_cancel">
<input pattern="^(\d+)$">
<match>
<action function="sleep" data="1000"/>
<action function="play-file" data="ivr/ivr-extension_number.wav"/>
<action function="sleep" data="400"/>
<action function="say" data="$1" method="iterated" type="number"/>
<action function="play-file" data="ivr/ivr-call_forwarding_has_been_cancelled.wav"/>
<action function="sleep" data="1500"/>
</match>
</input>
</macro>
<macro name="screen_confirm">
<input pattern="^(.*)$">
<match>
<action function="sleep" data="500"/>
<action function="play-file" data="ivr/ivr-call_from.wav"/>
<action function="sleep" data="250"/>
<!-- Note, be sure to pass in the full path to the file or else!! -->
<action function="play-file" data="$1"/>
<action function="sleep" data="500"/>
<action function="play-file" data="ivr/ivr-to_accept_press_one.wav"/>
<action function="sleep" data="500"/>
<action function="play-file" data="ivr/ivr-to_reject.wav"/>
<action function="sleep" data="50"/>
<action function="play-file" data="ivr/ivr-hang_up.wav"/>
<action function="sleep" data="1500"/>
<action function="play-file" data="ivr/ivr-call_from.wav"/>
<action function="sleep" data="250"/>
<action function="play-file" data="$1"/>
<action function="sleep" data="500"/>
<action function="play-file" data="ivr/ivr-to_accept_press_one.wav"/>
<action function="sleep" data="500"/>
<action function="play-file" data="ivr/ivr-to_reject.wav"/>
<action function="sleep" data="50"/>
<action function="play-file" data="ivr/ivr-hang_up.wav"/>
<action function="sleep" data="1500"/>
</match>
</input>
</macro>
</include>
<!--
For Emacs:
Local Variables:
mode:xml
indent-tabs-mode:nil
tab-width:2
c-basic-offset:2
End:
For VIM:
vim:set softtabstop=2 shiftwidth=2 tabstop=2 expandtab:
-->

Some files were not shown because too many files have changed in this diff Show More