From c5d80643ffa556af48f317bff7d488b3a43f8290 Mon Sep 17 00:00:00 2001 From: Attila Gulyas Date: Fri, 13 Sep 2024 04:28:27 +0000 Subject: [PATCH 1/2] Re-work Modules article + custom styling [..] + add clear instructions on how to add modules + custom style to highlight modules. paths / configuration files, and commands differently, and reset links to their default visual behaviour (and adding some flair) --- .../XML-Modules-Configuration_13173211.mdx | 29 -- docs/FreeSWITCH-Explained/Modules/index.mdx | 396 ++++++++++-------- src/css/custom.scss | 62 ++- 3 files changed, 293 insertions(+), 194 deletions(-) delete mode 100644 docs/FreeSWITCH-Explained/Modules/XML-Modules-Configuration_13173211.mdx diff --git a/docs/FreeSWITCH-Explained/Modules/XML-Modules-Configuration_13173211.mdx b/docs/FreeSWITCH-Explained/Modules/XML-Modules-Configuration_13173211.mdx deleted file mode 100644 index 33480b3d..00000000 --- a/docs/FreeSWITCH-Explained/Modules/XML-Modules-Configuration_13173211.mdx +++ /dev/null @@ -1,29 +0,0 @@ - -# XML Modules Configuration - - - -TODO This should be incorporated with [Modules](index.mdx#about). Also, I don't think there is a main description on how to enable a module; all the steps are either with a specific module or non-existent.That is, there is a general part (uncomment or put line in `modules.conf.xml` , restart freeswitch (or just `reloadxml` ?), etc), and specific part (e.g., with [mod\_erlang\_event](mod_erlang_event_1048926.mdx#api), Erlang has to be pre-installed with its developer headers, etc). - -## XML Modules Configuration - -modules.conf.xml is a configuration entity that exists in the "configuration" section of [freeswitch.xml](../Introduction/Understanding-the-Configuration-Files.mdx#xml). It denotes which modules to load, and in what order. - -In order for a module to be loaded, it needs to have been compiled and installed to the proper location on the system. If you do not know how to compile/install a specific module, please read the [Installation Guide](../Installation/index.mdx#about). - -Modules are only loaded if the above conditions are met. Simply including a module's configuration in freeswitch.xml will not cause a module to load. - -As an example: - -* We want to load syslog to be get logging if something fails during production. -* We'll load mod\_cdr to get call data records out of the system (nice for billing). -* We'll use mod\_event\_socket to be able to get events for all connected user agents (and later on controlling them) -* We'll use the xml dialplan for simplicity. -* Finally we load spidermonkey to be able to write javascript ivr applications and mod\_cepstral to get TTS. - -The rest of the modules are pretty standard and should not be removed - -[See here to see what the current version of modules.conf looks like](http://fisheye.freeswitch.org/browse/freeswitch.git/conf/autoload%5Fconfigs/modules.conf.xml) - - - diff --git a/docs/FreeSWITCH-Explained/Modules/index.mdx b/docs/FreeSWITCH-Explained/Modules/index.mdx index 6a927ac8..9e29168d 100644 --- a/docs/FreeSWITCH-Explained/Modules/index.mdx +++ b/docs/FreeSWITCH-Explained/Modules/index.mdx @@ -1,197 +1,265 @@ +--- +# Display h2 to h5 headings +toc_min_heading_level: 2 +toc_max_heading_level: 5 +--- -# Modules +# Modules +## 0. About -## About +The functionality of FreeSWITCH can be expanded through the addition of modules that perform a particular task, whether that task is simple or complex. The modules are grouped into broad categories depending on -The functionality of FreeSWITCH can be expanded through the addition of modules that perform a particular task, whether that task is simple or complex. The modules can be grouped into broad categories as tagged with labels on their individual module pages. ++ their **purpose** (e.g., application, codec, event handler) -## Configuration ++ whether they reside withing the FreeSWITCH source code (*"**in-source**" modules*) or not (*"**out-of-source**" modules*). -### Setting a module to 'critical' +### 0.1 "in-source" vs. "out-of-source" modules -If, for some reason, you need to prevent FreeSWITCH from starting at all on the failure of a specific module to load at startup then use the 'critical' attribute: +The *"**in-source**" modules* are the ones that reside within the [FreeSWITCH source code](https://github.com/signalwire/freeswitch) in the [src/mod][srcmod] directory. + +The *"**out-of-source**" modules*' source code is located outside the FreeSWITCH source code and may be maintained by other than the FreeSWITCH developers. + +## 1. Installing modules + +:::warning + +These general steps should work for most FreeSWITCH modules out of the box, but make sure to check the module's page that you would like to install for any extra steps or requirements. + +::: + +### 1.1 FreeSWITCH installed from source + +1. Add / uncomment module's name in modules.conf in the FreeSWITCH source directory +2. Run `make` +3. Run `make install` +4. Add / uncomment module in \/autoload_configs/[modules.conf.xml](#modules.conf.xml) (see [Module configuration](#modules.conf.xml) below) +5. Load module in [fs_cli][fs_cli] using `load ` +6. (optional) Check module's status in [fs_cli][fs_cli] with `module_exists ` + +#### 1.1.1 `modules.conf` and syntax + +:::note[doc to-do] + +Explain how `module.conf` works and why it is needed to add modules in there. I (toraritte) only have a rudimentary knowledge of Automake, Autoconf, and Autotools. + +::: + +[modules.conf.in](https://github.com/signalwire/freeswitch/blob/master/build/modules.conf.in) (which will become `modules.conf` when compiled from source) will always contain the most up-to-date list of FreeSWITCH modules maintained by FreeSWITCH developers. + +Lines starting with `#` are ignored. + ++ *"**In-source**" modules* are declared using their relative path within [src/mod][srcmod] in the FreeSWITCH source. + + Examples: + + applications/mod_commands + + event_handlers/mod_event_socket + + formats/mod_sndfile + ++ *"**Out-of-source**" modules* use the `| -b ` syntax. + + Examples: + + `mod_freetdm|https://github.com/freeswitch/freetdm.git -b master` + + `mod_kazoo|https://github.com/freeswitch/mod_kazoo.git -b master` + +### 1.2 FreeSWITCH installed using package manager + +:::note[doc to-do] + +(toraritte) As far as I know, when there is a FreeSWITCH package available for a package manager, then packages of individual FreeSWITCH modules are also available. I presume one install the desired packages and applies [steps 4. through 6.](#11-freeswitch-installed-from-source) for each. + +::: + +## 2. Important modules + +:::info + +FreeSWITCH can be compiled without modules, hence the use of "_important_" and not "_essential_". The only required dependencies are the C libraries provided by + ++ [`spandsp`](https://github.com/freeswitch/spandsp), ++ [`sofia-sip`](https://github.com/freeswitch/sofia-sip), and ++ [`curl`](https://github.com/curl/curl). + +Nevertheless, it is just easier to include the module wrapping them and adding extra functionality, without which it would probably be difficult (impossible?) to properly manage a FreeSWITCH instance. + +::: + +The list of "quality of admin-life" modules: + ++ The aforementioned "wrapper" modules: + + [mod_spandsp](./mod_spandsp_6587021.mdx) + + [mod_sofia](./mod_sofia_1048707.mdx) + + [mod_curl](./mod_curl_3965033.mdx) + ++ [mod_event_socket](./mod_event_socket_1048924.mdx) + + [fs_cli][fs_cli] needs this to connect to the running FreeSWITCH instance. + ++ [mod_commands](./mod_commands_1966741.mdx) + + Without this, there are only some very basic commands available on the [freeswitch][freeswitch] console. + + :::note[doc to-do] + + Would such an instance even be able to do anything functional? Maybe as a "headless" installation? + + ::: + ++ [mod_console](./mod_console_1048950.mdx) + + Makes [freeswitch][freeswitch] console (and [fs_cli][fs_cli]) friendlier. (Also controls the log levels.) + ++ [mod_sndfile](./mod_sndfile_32178375.mdx) + + From https://lists.freeswitch.org/pipermail/freeswitch-users/2010-November/064708.html + > It provides support for reading most of the sound file formats that FS + > supports. Almost anything that involves a sound file (e.g. voicemail, + > playback, IVR, record etc) requires it. It isn't necessary if you're + > just routing calls between endpoints, but anything more complex + > probably requires it. + > + > -Steve \[Ayre] + +## 3. Module configuration (modules.conf.xml) {#modules.conf.xml} + +modules.conf.xml is a configuration entity that exists in the `configuration` section of [freeswitch.xml](../Introduction/Understanding-the-Configuration-Files.mdx). It denotes which modules to load, and in what order. + +In order for a module to be loaded, it needs to have been compiled and installed to the proper location on the system. If you do not know how to compile/install a specific module, please read the [1. Installing modules](#1-installing-modules) section above. + +:::warning +Modules are only loaded if the above conditions are met. Simply including a module's configuration in freeswitch.xml will not cause a module to load. +::: + +[See the default modules.conf.xml](https://github.com/xrmx/freeswitch/blob/master/conf/autoload_configs/modules.conf.xml) that is used during most installations. + +### 3.1 Setting a module to 'critical' + +To prevent FreeSWITCH from starting at all if a specific module fails to load at startup, then use the `critical` attribute: ```xml ``` -If module _mod\_really\_important_ fails to load then FreeSWITCH will abort. +If module `mod_really_important` fails to load, then FreeSWITCH will abort. -### Locating the module file in a different path +:::info +This is why the default [modules.conf.xml](https://github.com/xrmx/freeswitch/blob/master/conf/autoload_configs/modules.conf.xml) will always work: none of the enabled modules are marked as `critical`, so their failure to load (should it happen) will be ignored. +::: -If you use commercial module mod\_com\_g729, you should move it into a separate folder like mod\_com and set the following for your entry. This will serve to still delete the folder lib bin mod and do make install from the freeswitch folder and not lose your mod\_com\_g729: +### 3.2 Installing modules to a custom filesystem location + +If the module mod_mymodule is installed into /opt/fs/mod_mymodule, then it can be configured like so: ```xml - + ``` -## Module List +## 4. Available modules + +:::note[doc to-do] -**Applications** +Incomplete and categories also do not correspond to how modules are listed in the FreeSWITCH source. A table with tags would be better. Or, given that Docusaurus is a React app, probably a quicksearch list for name and/or tag would be even better. -* Page: -[mod\_signalwire](./mod_signalwire_19595544.mdx) (FreeSWITCH) +::: -**Script Languages** +### 4.1 Applications -* Page: -[mod\_java](./mod_java_3966491.mdx) -* Page: -[mod\_lua](./mod_lua_1048944.mdx) -* Page: -[mod\_perl](./mod_perl_1048930.mdx) -* Page: -[mod\_python](./mod_python_1048940.mdx) -* Page: -[mod\_ruby](./mod_ruby_5046429.mdx) -* Page: -[mod\_v8](./mod_v8_1048935.mdx) +* [`mod_signalwire`](./mod_signalwire_19595544.mdx) (FreeSWITCH) -**Codecs** +### 4.2 Script Languages + +* [`mod_java`](./mod_java_3966491.mdx) +* [`mod_lua`](./mod_lua_1048944.mdx) +* [`mod_perl`](./mod_perl_1048930.mdx) +* [`mod_python`](./mod_python_1048940.mdx) +* [`mod_ruby`](./mod_ruby_5046429.mdx) +* [`mod_v8`](./mod_v8_1048935.mdx) + +### 4.3 Codecs Codecs [Overview](../Codecs-and-Media/index.mdx) -* Page: -[mod\_amr](./mod_amr_3964984.mdx) -* Page: -[mod\_amr\_wb](./mod_amr_wb_3964987.mdx) -* Page: -[mod\_av](./mod_av_27591638.mdx) -* Page: -[mod\_celt](./mod_celt_3964992.mdx) -* Page: -[mod\_codec2](./mod_codec2_6587354.mdx) -* Page: -[mod\_com\_g729](./mod_com_g729_1049284.mdx) -* Page: -[mod\_g711](./mod_g711_3375592.mdx) -* Page: -[mod\_g723\_1](./mod_g723_1_3375594.mdx) -* Page: -[mod\_g729](./mod_g729_3375549.mdx) -* Page: -[mod\_iLBC](./mod_iLBC_3375542.mdx) - -**Databases** +* [`mod_amr`](./mod_amr_3964984.mdx) +* [`mod_amr_wb`](./mod_amr_wb_3964987.mdx) +* [`mod_av`](./mod_av_27591638.mdx) +* [`mod_celt`](./mod_celt_3964992.mdx) +* [`mod_codec2`](./mod_codec2_6587354.mdx) +* [`mod_com_g729`](./mod_com_g729_1049284.mdx) +* [`mod_g711`](./mod_g711_3375592.mdx) +* [`mod_g723_1`](./mod_g723_1_3375594.mdx) +* [`mod_g729`](./mod_g729_3375549.mdx) +* [`mod_iLBC`](./mod_iLBC_3375542.mdx) + +### 4.4 Databases Databases [Overview](../Databases/index.mdx) -* Page: -[mod\_cdr\_mongodb](./mod_cdr_mongodb_3965094.mdx) -* Page: -[mod\_cidlookup](./mod_cidlookup_1966667.mdx) -* Page: -[mod\_curl](./mod_curl_3965033.mdx) - -* Page: -[mod\_db](./mod_db_6586567.mdx) -* Page: -[mod\_memcache](./mod_memcache_6587131.mdx) -* Page: -[mod\_mongo](./mod_mongo_6587158.mdx) -* Page: -[mod\_odbc\_query](./mod_odbc_query_6587371.mdx) -* Page: -[mod\_xml\_curl](./mod_xml_curl_1049001.mdx) - - -**High Volume Systems** - -* Page: -[Call Center](../Configuration/Call-Center_7143525.mdx) -* Page: -[mod\_avmd](./mod_avmd_1049372.mdx) -* Page: -[mod\_callcenter](./mod_callcenter_1049389.mdx) -* Page: -[mod\_com\_amd](./mod_com_amd_4653131.mdx) -* Page: -[mod\_distributor](./mod_distributor_3966220.mdx) -* Page: -[mod\_easyroute](./mod_easyroute_3966222.mdx) -* Page: -[mod\_fifo](./mod_fifo_3966031.mdx) -* Page: -[mod\_memcache](./mod_memcache_6587131.mdx) -* Page: -[mod\_redis](./mod_redis_3964957.mdx) - -**Event Socket Layer** - -* Page: -[mod\_erlang\_event](./mod_erlang_event_1048926.mdx) -* Page: -[mod\_event\_socket](./mod_event_socket_1048924.mdx) -* Page: -[mod\_event\_zmq](./mod_event_zmq_3966418.mdx) -* Page: -[mod\_kazoo](./mod_kazoo_10683641.mdx) - -**Logging** - -* Page: -[mod\_cdr\_mongodb](./mod_cdr_mongodb_3965094.mdx) -* Page: -[mod\_json\_cdr](./mod_json_cdr_4653124.mdx) -* Page: -[mod\_logfile](./mod_logfile_1048990.mdx) -* Page: -[mod\_odbc\_cdr](./mod_odbc_cdr_7143449.mdx) -* Page: -[mod\_osp](./mod_osp_6587434.mdx) - -**Endpoints** - -* Page: -[Creating a New Endpoint: Lifecycle of a Session](../Community/Contributing-Code/Creating-New-Modules/9634354.mdx) -* Page: -[Endpoints](../Introduction/Endpoints.mdx) -* Page: -[mod\_gsmopen](./mod_gsmopen_7143567.mdx) -* Page: -[mod\_opal](./mod_opal_6587390.mdx) -* Page: -[mod\_rtmp](./mod_rtmp_5046427.mdx) -* Page: -[mod\_skypopen](./mod_skypopen_3966336.mdx) -* Page: -[mod\_sofia](./mod_sofia_1048707.mdx) -* Page: -[mod\_verto](./mod_verto_3964934.mdx) - -**Dialplans** +* [`mod_cdr_mongodb`](./mod_cdr_mongodb_3965094.mdx) +* [`mod_cidlookup`](./mod_cidlookup_1966667.mdx) +* [`mod_curl`](./mod_curl_3965033.mdx) + +* [`mod_db`](./mod_db_6586567.mdx) +* [`mod_memcache`](./mod_memcache_6587131.mdx) +* [`mod_mongo`](./mod_mongo_6587158.mdx) +* [`mod_odbc_query`](./mod_odbc_query_6587371.mdx) +* [`mod_xml_curl`](./mod_xml_curl_1049001.mdx) + +### 4.5 High Volume Systems + +* [Call Center](../Configuration/Call-Center_7143525.mdx) +* [`mod_avmd`](./mod_avmd_1049372.mdx) +* [`mod_callcenter`](./mod_callcenter_1049389.mdx) +* [`mod_com_amd`](./mod_com_amd_4653131.mdx) +* [`mod_distributor`](./mod_distributor_3966220.mdx) +* [`mod_easyroute`](./mod_easyroute_3966222.mdx) +* [`mod_fifo`](./mod_fifo_3966031.mdx) +* [`mod_memcache`](./mod_memcache_6587131.mdx) +* [`mod_redis`](./mod_redis_3964957.mdx) + +### 4.6 Event Socket Layer + +* [`mod_erlang_event`](./mod_erlang_event_1048926.mdx) +* [`mod_event_socket`](./mod_event_socket_1048924.mdx) +* [`mod_event_zmq`](./mod_event_zmq_3966418.mdx) +* [`mod_kazoo`](./mod_kazoo_10683641.mdx) + +### 4.7 Logging + +* [`mod_cdr_mongodb`](./mod_cdr_mongodb_3965094.mdx) +* [`mod_json_cdr`](./mod_json_cdr_4653124.mdx) +* [`mod_logfile`](./mod_logfile_1048990.mdx) +* [`mod_odbc_cdr`](./mod_odbc_cdr_7143449.mdx) +* [`mod_osp`](./mod_osp_6587434.mdx) + +### 4.8 Endpoints + +* [Creating a New Endpoint: Lifecycle of a Session](../Community/Contributing-Code/Creating-New-Modules/9634354.mdx) +* [Endpoints](../Introduction/Endpoints.mdx) +* [`mod_gsmopen`](./mod_gsmopen_7143567.mdx) +* [`mod_opal`](./mod_opal_6587390.mdx) +* [`mod_rtmp`](./mod_rtmp_5046427.mdx) +* [`mod_skypopen`](./mod_skypopen_3966336.mdx) +* [`mod_sofia`](./mod_sofia_1048707.mdx) +* [`mod_verto`](./mod_verto_3964934.mdx) + +### 4.9 Dialplans Dialplans [Overview](../Dialplan/index.mdx) -* Page: -[mod\_dialplan\_asterisk](./mod_dialplan_asterisk_3966416.mdx) -* Page: -[mod\_dptools](./mod_dptools_1970333.mdx) -* Page: -[mod\_dptools: cng\_plc](./mod-dptools/6586541) -* Page: -[mod\_dptools: log](./mod-dptools/6586596.mdx) -* Page: -[mod\_dptools: media\_reset](./mod-dptools/6586619.mdx) -* Page: -[mod\_dptools: mkdir](./mod-dptools/6586626.mdx) -* Page: -[mod\_dptools: multiset](./mod-dptools/6586655.mdx) -* Page: -[mod\_dptools: mutex](./mod-dptools/6586674.mdx) - - -**Clients** - -* Page: -[mod\_console](./mod_console_1048950.mdx) - -**Language-related** - -**Content by label** - -There is no content with the specified labels - - +* [`mod_dialplan_asterisk`](./mod_dialplan_asterisk_3966416.mdx) +* [`mod_dptools`](./mod_dptools_1970333.mdx) +* [`mod_dptools: cng_plc`](./mod-dptools/6586541) +* [`mod_dptools: log`](./mod-dptools/6586596.mdx) +* [`mod_dptools: media_reset`](./mod-dptools/6586619.mdx) +* [`mod_dptools: mkdir`](./mod-dptools/6586626.mdx) +* [`mod_dptools: multiset`](./mod-dptools/6586655.mdx) +* [`mod_dptools: mutex`](./mod-dptools/6586674.mdx) + +### 4.10 Clients + +* [`mod_console`](./mod_console_1048950.mdx) + +[srcmod]: https://github.com/signalwire/freeswitch/tree/master/src/mod +[fs_cli]: ../Client-and-Developer-Interfaces/1048948.mdx +[freeswitch]: ../Configuration/Command-Line-Switches_6587362.mdx diff --git a/src/css/custom.scss b/src/css/custom.scss index 29241b95..a3f0c13e 100644 --- a/src/css/custom.scss +++ b/src/css/custom.scss @@ -36,6 +36,66 @@ h1, h2 { font-weight: var(--ifm-font-weight-semibold); } +.common-mono { + border-radius: var(--ifm-code-border-radius); + font-family: var(--ifm-font-family-monospace); + font-size: var(--ifm-code-font-size); + padding: var(--ifm-code-padding-vertical) var(--ifm-code-padding-horizontal); + vertical-align: middle; +} + +.fs-mod-names { + @extend .common-mono; + background-color: rgb(244 233 255); + border: 0.1rem solid rgb(159 62 255); +} + +.fs-path { + @extend .common-mono; + background-color: rgb(243 243 243); + border: 0.1rem solid rgb(167 167 167); + font-weight: bold; +} + +.fs-terminal-commands { + @extend .common-mono; + background-color: rgb(233 238 245); + border: 0.1rem solid rgb(117 175 255); + font-weight: bold; + color: steelblue; +} + +article a { +} + +article a:link { + text-decoration: underline; + text-underline-offset: 0.5rem; + text-decoration-thickness: 0.15rem; +} + +article a:visited { + color: #551a8b; +} + +article a:focus { +} + +article a:hover { +} + +article a:active { +} + +article a::after { + content: "🡽"; + display: inline-block; + width: 0.8em; + height: 0.8em; + margin-right: 0.3em; + background-size: 100%; +} + /* Neue Einstellung font-face */ @font-face { font-family:"Neue Einstellung";font-style:normal;font-weight:500;font-display:swap;src:url(//cdn.signalwire.com/fonts/neue-einstellung/NeueEinstellung-Medium.woff2) format("woff2"),url(//cdn.signalwire.com/fonts/neue-einstellung/NeueEinstellung-Medium.woff) format("woff")}@font-face{font-family:"Neue Einstellung";font-style:normal;font-weight:700;font-display:swap;src:url(//cdn.signalwire.com/fonts/neue-einstellung/NeueEinstellung-Bold.woff2) format("woff2"),url(//cdn.signalwire.com/fonts/neue-einstellung/NeueEinstellung-Bold.woff) format("woff")}@font-face{font-family:"Neue Einstellung";font-style:normal;font-weight:100;font-display:swap;src:url(//cdn.signalwire.com/fonts/neue-einstellung/NeueEinstellung-Thin.woff2) format("woff2"),url(//cdn.signalwire.com/fonts/neue-einstellung/NeueEinstellung-Thin.woff) format("woff"),url(//cdn.signalwire.com/fonts/neue-einstellung/NeueEinstellung-Thin.eot) format("eot"),url(//cdn.signalwire.com/fonts/neue-einstellung/NeueEinstellung-Thin.ttf) format("ttf")}@font-face{font-family:"Neue Einstellung";font-style:normal;font-weight:200;font-display:swap;src:url(//cdn.signalwire.com/fonts/neue-einstellung/NeueEinstellung-Light.woff2) format("woff2"),url(//cdn.signalwire.com/fonts/neue-einstellung/NeueEinstellung-Light.woff) format("woff"),url(//cdn.signalwire.com/fonts/neue-einstellung/NeueEinstellung-Light.eot) format("eot"),url(//cdn.signalwire.com/fonts/neue-einstellung/NeueEinstellung-Light.ttf) format("ttf")}@font-face{font-family:"Neue Einstellung";font-style:normal;font-weight:300;font-display:swap;src:url(//cdn.signalwire.com/fonts/neue-einstellung/NeueEinstellung-Normal.woff2) format("woff2"),url(//cdn.signalwire.com/fonts/neue-einstellung/NeueEinstellung-Normal.woff) format("woff"),url(//cdn.signalwire.com/fonts/neue-einstellung/NeueEinstellung-Normal.eot) format("eot"),url(//cdn.signalwire.com/fonts/neue-einstellung/NeueEinstellung-Normal.ttf) format("ttf")}@font-face{font-family:"Neue Einstellung";font-style:normal;font-weight:400;font-display:swap;src:url(//cdn.signalwire.com/fonts/neue-einstellung/NeueEinstellung-Regular.woff2) format("woff2"),url(//cdn.signalwire.com/fonts/neue-einstellung/NeueEinstellung-Regular.woff) format("woff"),url(//cdn.signalwire.com/fonts/neue-einstellung/NeueEinstellung-Regular.eot) format("eot"),url(//cdn.signalwire.com/fonts/neue-einstellung/NeueEinstellung-Regular.ttf) format("ttf")}@font-face{font-family:"Neue Einstellung";font-style:normal;font-weight:500;font-display:swap;src:url(//cdn.signalwire.com/fonts/neue-einstellung/NeueEinstellung-Medium.woff2) format("woff2"),url(//cdn.signalwire.com/fonts/neue-einstellung/NeueEinstellung-Medium.woff) format("woff"),url(//cdn.signalwire.com/fonts/neue-einstellung/NeueEinstellung-Medium.eot) format("eot"),url(//cdn.signalwire.com/fonts/neue-einstellung/NeueEinstellung-Medium.ttf) format("ttf")}@font-face{font-family:"Neue Einstellung";font-style:normal;font-weight:600;font-display:swap;src:url(//cdn.signalwire.com/fonts/neue-einstellung/NeueEinstellung-SemiBold.woff2) format("woff2"),url(//cdn.signalwire.com/fonts/neue-einstellung/NeueEinstellung-SemiBold.woff) format("woff"),url(//cdn.signalwire.com/fonts/neue-einstellung/NeueEinstellung-SemiBold.eot) format("eot"),url(//cdn.signalwire.com/fonts/neue-einstellung/NeueEinstellung-SemiBold.ttf) format("ttf")}@font-face{font-family:"Neue Einstellung";font-style:normal;font-weight:700;font-display:swap;src:url(//cdn.signalwire.com/fonts/neue-einstellung/NeueEinstellung-Bold.woff2) format("woff2"),url(//cdn.signalwire.com/fonts/neue-einstellung/NeueEinstellung-Bold.woff) format("woff"),url(//cdn.signalwire.com/fonts/neue-einstellung/NeueEinstellung-Bold.eot) format("eot"),url(//cdn.signalwire.com/fonts/neue-einstellung/NeueEinstellung-Bold.ttf) format("ttf")}@font-face{font-family:"Neue Einstellung";font-style:normal;font-weight:800;font-display:swap;src:url(//cdn.signalwire.com/fonts/neue-einstellung/NeueEinstellung-ExtraBold.woff2) format("woff2"),url(//cdn.signalwire.com/fonts/neue-einstellung/NeueEinstellung-ExtraBold.woff) format("woff"),url(//cdn.signalwire.com/fonts/neue-einstellung/NeueEinstellung-ExtraBold.eot) format("eot"),url(//cdn.signalwire.com/fonts/neue-einstellung/NeueEinstellung-ExtraBold.ttf) format("ttf")}@font-face{font-family:"Neue Einstellung";font-style:normal;font-weight:900;font-display:swap;src:url(//cdn.signalwire.com/fonts/neue-einstellung/NeueEinstellung-Black.woff2) format("woff2"),url(//cdn.signalwire.com/fonts/neue-einstellung/NeueEinstellung-Black.woff) format("woff"),url(//cdn.signalwire.com/fonts/neue-einstellung/NeueEinstellung-Black.eot) format("eot"),url(//cdn.signalwire.com/fonts/neue-einstellung/NeueEinstellung-Black.ttf) format("ttf") @@ -64,4 +124,4 @@ h1, h2 { text-align: center; font-style: italic; } -} \ No newline at end of file +} From 84b20e7f22de02ed8c0a3aa7c0bd2e6245c20f43 Mon Sep 17 00:00:00 2001 From: Attila Gulyas Date: Fri, 13 Sep 2024 04:33:28 +0000 Subject: [PATCH 2/2] Update mod_yaml and related pages --- .../Vanilla-installation-files_27591294.mdx | 5 +---- .../Miscellaneous/FAQ/index.mdx | 21 ++++++++++++------- .../Modules/mod_yaml_32178409.mdx | 11 +++++----- 3 files changed, 19 insertions(+), 18 deletions(-) diff --git a/docs/FreeSWITCH-Explained/Installation/Linux/Vanilla-installation-files_27591294.mdx b/docs/FreeSWITCH-Explained/Installation/Linux/Vanilla-installation-files_27591294.mdx index f730ddbf..a38459e8 100644 --- a/docs/FreeSWITCH-Explained/Installation/Linux/Vanilla-installation-files_27591294.mdx +++ b/docs/FreeSWITCH-Explained/Installation/Linux/Vanilla-installation-files_27591294.mdx @@ -52,8 +52,5 @@ General information, and security advice to consider before going live. ### 2.1 `./yaml/` -Seems to be created for people who complained regarding XML and/or wanted to use Asterisk style configuration. See this [FAQ entry](../../Miscellaneous/FAQ/index.mdx#q-xml-sucks-do-i-have-any-other-options). - -Committed by Anthony Minessale II in 2008 with commit message "[Yet Another Mega Labotomy](https://github.com/signalwire/freeswitch/commit/35dc909cf69191d51af26e26adb4d4d5bcbfcdaa)", and it hasn't been touched since. [mod\_yaml](../../Modules/mod_yaml_32178409.mdx) also hasn't been documented since 2008. - +See [mod_yaml](../../Modules/mod_yaml_32178409.mdx). diff --git a/docs/FreeSWITCH-Explained/Miscellaneous/FAQ/index.mdx b/docs/FreeSWITCH-Explained/Miscellaneous/FAQ/index.mdx index 9e46f8c9..4f0db560 100644 --- a/docs/FreeSWITCH-Explained/Miscellaneous/FAQ/index.mdx +++ b/docs/FreeSWITCH-Explained/Miscellaneous/FAQ/index.mdx @@ -86,7 +86,7 @@ * [Q: How do I use a single domain for the entire server](#q-how-do-i-use-a-single-domain-for-the-entire-server) * [Configuring FreeSWITCH](#configuring-freeswitch) * [Q: Is there a GUI for configuring FreeSWITCH?](#q-is-there-a-gui-for-configuring-freeswitch) -* [Q: XML sucks! Do I have any other options?](#q-xml-sucks-do-i-have-any-other-options) +* [Q: XML sucks! Do I have any other options?](#xml-sucks) ### Q: So where do I find wishlists for the developers of this awesome software? @@ -541,19 +541,24 @@ If you want all registrations to be listed/stored at the same domain then: use f There are several free open source projects being actively maintained, an older abandoned one, and several commercial options. See [Freeswitch Gui](https://wiki.freeswitch.org/wiki/Freeswitch%5FGui "Freeswitch Gui") -### Q: XML sucks! Do I have any other options? +### Q: XML sucks! Do I have any other options? {#xml-sucks} Yes and no. There are other options, but they may not be _better_ options. The discussion about the use of XML in the FreeSWITCH configuration is plentiful. Check out these threads for some background: * [Anthony's explanation of why we chose XML](http://www.freeswitch.org/node/123) (dead link) -See [saved copy](https://web.archive.org/web/20130412200610/http://www.freeswitch.org/node/123) on Internet Archive or [XML it's not all bad.](./27591425.mdx) -* [Anthony discusses creating mod\_yaml to prove a point](http://lists.freeswitch.org/pipermail/freeswitch-users/2008-June/004021.html) -[mod\_yaml](../../Modules/mod_yaml_32178409.mdx) not documented yet. -See also [mod\_dialplan\_asterisk](https://wiki.freeswitch.org/wiki/Mod%5Fdialplan%5Fasterisk "Mod dialplan asterisk") for more information on configuring FreeSWITCH's dialplan using the extensions.conf INI-style configuration. (NOTE: this is less flexible and less powerful than using the XML configuration.) + See [saved copy](https://web.archive.org/web/20130412200610/http://www.freeswitch.org/node/123) on Internet Archive or [XML it's not all bad.](./27591425.mdx) -That all being said, if XML is the _only_ reason you're holding off from trying FreeSWITCH then we recommend you try it out with the default configuration and give it a test drive. You'll be surprised at how much you can do with a minimal amount of tinkering in the XML configs. And you'll be downright amazed at what you can do with a healthy amount of tinkering in the XML configs. +* [Anthony discusses creating mod_yaml to prove a point](http://lists.freeswitch.org/pipermail/freeswitch-users/2008-June/004021.html). (See also: [mod_yaml](../../Modules/mod_yaml_32178409.mdx).) -NOTE: Another way to program your call logic without using [Dialplan XML](https://wiki.freeswitch.org/wiki/Dialplan%5FXML "Dialplan XML") is to use [mod\_dptools](https://wiki.freeswitch.org/wiki/Mod%5Fdptools "Mod dptools") and/or [mod\_commands](https://wiki.freeswitch.org/wiki/Mod%5Fcommands "Mod commands") through [mod\_event\_socket](https://wiki.freeswitch.org/wiki/Mod%5Fevent%5Fsocket "Mod event socket") or [ESL](https://wiki.freeswitch.org/wiki/Event%5FSocket%5FLibrary "Event Socket Library"). This way you can avoid using Dialplan XML and you can do all your call logic from a compiled or interpreted programming language. +* See also [mod_dialplan_asterisk](../../Modules/mod_dialplan_asterisk) for more information on configuring FreeSWITCH's dialplan using the `extensions.conf`'s INI-style configuration. + :::warning + This is less flexible and less powerful than using the FreeSWITCH's XML configuration.) + ::: +That all being said, if XML is the _only_ reason you're holding off from trying FreeSWITCH, then we recommend you try it out with the default configuration and give it a test drive. You'll be surprised at how much you can do with a minimal amount of tinkering in the XML configs. And you'll be downright amazed at what you can do with a healthy amount of tinkering in the XML configs. + +:::info +Another way to program your call logic without using the [XML Dialplan](../../Dialplan/XML-Dialplan/) is to use [mod_dptools](../../Modules/mod_dptools_1970333.mdx) and/or [mod_commands](../../Modules/mod_commands_1966741.mdx) through [mod_event_socket](../../Modules/mod_event_socket_1048924.mdx) or the [Event Socket Library (ESL)](../../Client-and-Developer-Interfaces/Event-Socket-Library/). This way you can avoid using the [XML Dialplan](../../Dialplan/XML-Dialplan/), and you can do all your call logic from a compiled or interpreted programming language. +::: diff --git a/docs/FreeSWITCH-Explained/Modules/mod_yaml_32178409.mdx b/docs/FreeSWITCH-Explained/Modules/mod_yaml_32178409.mdx index b7224d9c..26514d0b 100644 --- a/docs/FreeSWITCH-Explained/Modules/mod_yaml_32178409.mdx +++ b/docs/FreeSWITCH-Explained/Modules/mod_yaml_32178409.mdx @@ -1,9 +1,8 @@ -# mod_yaml +# `mod_yaml` - - -See **2.1 ./yaml/** section in [Vanilla installation files](../Installation/Linux/Vanilla-installation-files_27591294.mdx#0-about), and [source code](https://github.com/signalwire/freeswitch/tree/master/src/mod/languages/mod%5Fyaml). - - +:::info[INFO (in lieu of any official documentation)] +Seems to have been created as a jest in response to criticism regarding XML being used as the default configuration language. See the [Q: XML sucks! Do I have any other options?](../Miscellaneous/FAQ/index.mdx#xml-sucks) section in the [FAQ](../Miscellaneous/FAQ/index.mdx) for more. +The [source of mod_yaml](https://github.com/signalwire/freeswitch/tree/master/src/mod/languages/mod%5Fyaml) was committed by Anthony Minessale II in 2008 with commit message "[Yet Another Mega Labotomy](https://github.com/signalwire/freeswitch/commit/35dc909cf69191d51af26e26adb4d4d5bcbfcdaa)" and has remained unchanged since then. +:::