diff --git a/ejabberd.doap b/ejabberd.doap
index da8678d5e83..9644af2ccab 100644
--- a/ejabberd.doap
+++ b/ejabberd.doap
@@ -759,7 +759,7 @@
0.3.0
- 24.xx
+ 24.06
mod_mam
diff --git a/man/ejabberd.yml.5 b/man/ejabberd.yml.5
index a055935eb96..a4df3222601 100644
--- a/man/ejabberd.yml.5
+++ b/man/ejabberd.yml.5
@@ -2,12 +2,12 @@
.\" Title: ejabberd.yml
.\" Author: [see the "AUTHOR" section]
.\" Generator: DocBook XSL Stylesheets vsnapshot
-.\" Date: 02/24/2024
+.\" Date: 06/27/2024
.\" Manual: \ \&
.\" Source: \ \&
.\" Language: English
.\"
-.TH "EJABBERD\&.YML" "5" "02/24/2024" "\ \&" "\ \&"
+.TH "EJABBERD\&.YML" "5" "06/27/2024" "\ \&" "\ \&"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
@@ -82,17 +82,17 @@ All options can be changed in runtime by running \fIejabberdctl reload\-config\f
.sp
Some options can be specified for particular virtual host(s) only using \fIhost_config\fR or \fIappend_host_config\fR options\&. Such options are called \fIlocal\fR\&. Examples are \fImodules\fR, \fIauth_method\fR and \fIdefault_db\fR\&. The options that cannot be defined per virtual host are called \fIglobal\fR\&. Examples are \fIloglevel\fR, \fIcertfiles\fR and \fIlisten\fR\&. It is a configuration mistake to put \fIglobal\fR options under \fIhost_config\fR or \fIappend_host_config\fR section \- ejabberd will refuse to load such configuration\&.
.sp
-It is not recommended to write ejabberd\&.yml from scratch\&. Instead it is better to start from "default" configuration file available at https://github\&.com/processone/ejabberd/blob/24\&.02/ejabberd\&.yml\&.example\&. Once you get ejabberd running you can start changing configuration options to meet your requirements\&.
+It is not recommended to write ejabberd\&.yml from scratch\&. Instead it is better to start from "default" configuration file available at https://github\&.com/processone/ejabberd/blob/24\&.06/ejabberd\&.yml\&.example\&. Once you get ejabberd running you can start changing configuration options to meet your requirements\&.
.sp
Note that this document is intended to provide comprehensive description of all configuration options that can be consulted to understand the meaning of a particular option, its format and possible values\&. It will be quite hard to understand how to configure ejabberd by reading this document only \- for this purpose the reader is recommended to read online Configuration Guide available at https://docs\&.ejabberd\&.im/admin/configuration\&.
.SH "TOP LEVEL OPTIONS"
.sp
-This section describes top level options of ejabberd\&.
+This section describes top level options of ejabberd 24\&.06\&. The options that changed in this version are marked with 🟤\&.
.PP
\fBaccess_rules\fR: \fI{AccessName: {allow|deny: ACLRules|ACLName}}\fR
.RS 4
This option defines
-Access Rules\&. Each access rule is assigned a name that can be referenced from other parts of the configuration file (mostly from
+\fIbasic\&.md#access\-rules|Access Rules\fR\&. Each access rule is assigned a name that can be referenced from other parts of the configuration file (mostly from
\fIaccess\fR
options of ejabberd modules)\&. Each rule definition may contain arbitrary number of
\fIallow\fR
@@ -247,7 +247,7 @@ is in the form of "regexp", the rule matches any JID with node part matching reg
.PP
\fBacme\fR: \fIOptions\fR
.RS 4
-ACME
+\fIbasic\&.md#acme|ACME\fR
configuration, to automatically obtain SSL certificates for the domains served by ejabberd, which means that certificate requests and renewals are performed to some CA server (aka "ACME server") in a fully automated mode\&. The
\fIOptions\fR
are:
@@ -304,7 +304,7 @@ acme:
\fBallow_contrib_modules\fR: \fItrue | false\fR
.RS 4
Whether to allow installation of third\-party modules or not\&. See
-ejabberd\-contrib
+\fI\&.\&./\&.\&./developer/extending\-ejabberd/modules\&.md#ejabberd\-contrib|ejabberd\-contrib\fR
documentation section\&. The default value is
\fItrue\fR\&.
.RE
@@ -363,7 +363,7 @@ The default value is \fIsasl_anon\fR\&.
\fBapi_permissions\fR: \fI[Permission, \&.\&.\&.]\fR
.RS 4
Define the permissions for API access\&. Please consult the ejabberd Docs web → For Developers → ejabberd ReST API →
-API Permissions\&.
+\fI\&.\&./\&.\&./developer/ejabberd\-api/permissions\&.md|API Permissions\fR\&.
.RE
.PP
\fBappend_host_config\fR: \fI{Host: Options}\fR
@@ -398,12 +398,11 @@ Same as
\fIcache_size\fR
will be used\&.
.RE
-.sp
-\fINote\fR about the next option: added in 23\&.10:
.PP
\fBauth_external_user_exists_check\fR: \fItrue | false\fR
.RS 4
-Supplement check for user existence based on
+\fINote\fR
+about this option: added in 23\&.10\&. Supplement check for user existence based on
\fImod_last\fR
data, for authentication methods that don\(cqt have a way to reliably tell if a user exists (like is the case for
\fIjwt\fR
@@ -425,13 +424,12 @@ that can be installed from the
ejabberd\-contrib
Git repository\&. Please refer to that module\(cqs README file for details\&.
.RE
-.sp
-\fINote\fR about the next option: improved in 20\&.01:
.PP
\fBauth_password_format\fR: \fIplain | scram\fR
.RS 4
-The option defines in what format the users passwords are stored, plain text or in
-SCRAM
+\fINote\fR
+about this option: improved in 20\&.01\&. The option defines in what format the users passwords are stored, plain text or in
+\fIauthentication\&.md#scram|SCRAM\fR
format:
.sp
.RS 4
@@ -464,7 +462,7 @@ The default value is \fIplain\fR\&.
\fBauth_scram_hash\fR: \fIsha | sha256 | sha512\fR
.RS 4
Hash algorithm that should be used to store password in
-SCRAM
+\fIauthentication\&.md#scram|SCRAM\fR
format\&. You shouldn\(cqt change this if you already have passwords generated with a different algorithm \- users that have such passwords will not be able to authenticate\&. The default value is
\fIsha\fR\&.
.RE
@@ -484,9 +482,9 @@ Full path to a file containing one or more CA certificates in PEM format\&. All
field\&. There is no default value\&.
.RE
.sp
-You can use host_config to specify this option per\-vhost\&.
+You can use \fIhost_config\fR to specify this option per\-vhost\&.
.sp
-To set a specific file per listener, use the listener\(cqs cafile option\&. Please notice that \fIc2s_cafile\fR overrides the listener\(cqs \fIcafile\fR option\&.
+To set a specific file per listener, use the listener\(cqs \fIlisten\-options\&.md#cafile|cafile\fR option\&. Please notice that \fIc2s_cafile\fR overrides the listener\(cqs \fIcafile\fR option\&.
.PP
\fBc2s_ciphers\fR: \fI[Cipher, \&.\&.\&.]\fR
.RS 4
@@ -547,7 +545,7 @@ Whether to enable or disable TLS compression for c2s connections\&. The default
Path to a file of CA root certificates\&. The default is to use system defined file if possible\&.
.RE
.sp
-For server connections, this \fIca_file\fR option is overridden by the s2s_cafile option\&.
+For server connections, this \fIca_file\fR option is overridden by the \fIs2s_cafile\fR option\&.
.PP
\fBcache_life_time\fR: \fItimeout()\fR
.RS 4
@@ -580,13 +578,12 @@ A maximum number of items (not memory!) in cache\&. The rule of thumb, for all t
\fIrouter_cache_size\fR, and
\fIsm_cache_size\fR\&.
.RE
-.sp
-\fINote\fR about the next option: improved in 23\&.01:
.PP
\fBcaptcha_cmd\fR: \fIPath | ModuleName\fR
.RS 4
-Full path to a script that generates
-CAPTCHA
+\fINote\fR
+about this option: improved in 23\&.01\&. Full path to a script that generates
+\fIbasic\&.md#captcha|CAPTCHA\fR
images\&.
\fI@VERSION@\fR
is replaced with ejabberd version number in
@@ -595,6 +592,8 @@ format\&.
\fI@SEMVER@\fR
is replaced with ejabberd version number in semver format when compiled with Elixir\(cqs mix, or XX\&.YY format otherwise\&. Alternatively, it can be the name of a module that implements ejabberd CAPTCHA support\&. There is no default value: when this option is not set, CAPTCHA functionality is completely disabled\&.
.sp
+\fBExamples\fR:
+.sp
When using the ejabberd installers or container image, the example captcha scripts can be used like this:
.sp
.if n \{\
@@ -618,17 +617,16 @@ instead\&.
\fBcaptcha_limit\fR: \fIpos_integer() | infinity\fR
.RS 4
Maximum number of
-CAPTCHA
+\fIbasic\&.md#captcha|CAPTCHA\fR
generated images per minute for any given JID\&. The option is intended to protect the server from CAPTCHA DoS\&. The default value is
\fIinfinity\fR\&.
.RE
-.sp
-\fINote\fR about the next option: improved in 23\&.04:
.PP
\fBcaptcha_url\fR: \fIURL | auto | undefined\fR
.RS 4
-An URL where
-CAPTCHA
+\fINote\fR
+about this option: improved in 23\&.04\&. An URL where
+\fIbasic\&.md#captcha|CAPTCHA\fR
requests should be sent\&. NOTE: you need to configure
\fIrequest_handlers\fR
for
@@ -652,6 +650,8 @@ and so on\&. NOTE: if you modify the certificate files or change the value of th
\fIejabberdctl reload\-config\fR
in order to rebuild and reload the certificate chains\&.
.sp
+\fBExamples\fR:
+.sp
If you use
Let\(cqs Encrypt
certificates for your domain "domain\&.tld", the configuration will look like this:
@@ -910,13 +910,12 @@ Disallows the usage of those options in the included file
\fIFilename\fR\&. The options that match this criteria are not accepted\&. The default value is an empty list\&.
.RE
.RE
-.sp
-\fINote\fR about the next option: added in 23\&.10:
.PP
\fBinstall_contrib_modules\fR: \fI[Module, \&.\&.\&.]\fR
.RS 4
-Modules to install from
-ejabberd\-contrib
+\fINote\fR
+about this option: added in 23\&.10\&. Modules to install from
+\fI\&.\&./\&.\&./developer/extending\-ejabberd/modules\&.md#ejabberd\-contrib|ejabberd\-contrib\fR
at start time\&. The default value is an empty list of modules:
\fI[]\fR\&.
.RE
@@ -1071,31 +1070,28 @@ is assumed to be "%u"\&.
\fBlisten\fR: \fI[Options, \&.\&.\&.]\fR
.RS 4
The option for listeners configuration\&. See the
-Listen Modules
+\fIlisten\&.md|Listen Modules\fR
section for details\&.
.RE
-.sp
-\fINote\fR about the next option: added in 22\&.10:
.PP
\fBlog_burst_limit_count\fR: \fINumber\fR
.RS 4
-The number of messages to accept in
+\fINote\fR
+about this option: added in 22\&.10\&. The number of messages to accept in
log_burst_limit_window_time
period before starting to drop them\&. Default 500
.RE
-.sp
-\fINote\fR about the next option: added in 22\&.10:
.PP
\fBlog_burst_limit_window_time\fR: \fINumber\fR
.RS 4
-The time period to rate\-limit log messages by\&. Defaults to 1 second\&.
+\fINote\fR
+about this option: added in 22\&.10\&. The time period to rate\-limit log messages by\&. Defaults to 1 second\&.
.RE
-.sp
-\fINote\fR about the next option: added in 23\&.01:
.PP
\fBlog_modules_fully\fR: \fI[Module, \&.\&.\&.]\fR
.RS 4
-List of modules that will log everything independently from the general loglevel option\&.
+\fINote\fR
+about this option: added in 23\&.01\&. List of modules that will log everything independently from the general loglevel option\&.
.RE
.PP
\fBlog_rotate_count\fR: \fINumber\fR
@@ -1131,7 +1127,7 @@ This option specifies the maximum number of elements in the queue of the FSM (Fi
\fBmodules\fR: \fI{Module: Options}\fR
.RS 4
The option for modules configuration\&. See
-Modules
+\fImodules\&.md|Modules\fR
section for details\&.
.RE
.PP
@@ -1154,7 +1150,7 @@ This option can be used to tune tick time parameter of
Whether to use
\fInew\fR
SQL schema\&. All schemas are located at
-https://github\&.com/processone/ejabberd/tree/24\&.02/sql\&. There are two schemas available\&. The default legacy schema stores one XMPP domain into one ejabberd database\&. The
+https://github\&.com/processone/ejabberd/tree/24\&.06/sql\&. There are two schemas available\&. The default legacy schema stores one XMPP domain into one ejabberd database\&. The
\fInew\fR
schema can handle several XMPP domains in a single ejabberd database\&. Using this
\fInew\fR
@@ -1187,12 +1183,11 @@ Same as
\fIcache_missed\fR
will be used\&.
.RE
-.sp
-\fINote\fR about the next option: added in 21\&.01:
.PP
\fBoauth_cache_rest_failure_life_time\fR: \fItimeout()\fR
.RS 4
-The time that a failure in OAuth ReST is cached\&. The default value is
+\fINote\fR
+about this option: added in 21\&.01\&. The time that a failure in OAuth ReST is cached\&. The default value is
\fIinfinity\fR\&.
.RE
.PP
@@ -1263,29 +1258,26 @@ option)\&. Later, when memory drops below this
\fI80\fR
percents\&.
.RE
-.sp
-\fINote\fR about the next option: changed in 23\&.01:
.PP
\fBoutgoing_s2s_families\fR: \fI[ipv6 | ipv4, \&.\&.\&.]\fR
.RS 4
-Specify which address families to try, in what order\&. The default is
+\fINote\fR
+about this option: changed in 23\&.01\&. Specify which address families to try, in what order\&. The default is
\fI[ipv6, ipv4]\fR
which means it first tries connecting with IPv6, if that fails it tries using IPv4\&. This option is obsolete and irrelevant when using ejabberd 23\&.01 and Erlang/OTP 22, or newer versions of them\&.
.RE
-.sp
-\fINote\fR about the next option: added in 20\&.12:
.PP
\fBoutgoing_s2s_ipv4_address\fR: \fIAddress\fR
.RS 4
-Specify the IPv4 address that will be used when establishing an outgoing S2S IPv4 connection, for example "127\&.0\&.0\&.1"\&. The default value is
+\fINote\fR
+about this option: added in 20\&.12\&. Specify the IPv4 address that will be used when establishing an outgoing S2S IPv4 connection, for example "127\&.0\&.0\&.1"\&. The default value is
\fIundefined\fR\&.
.RE
-.sp
-\fINote\fR about the next option: added in 20\&.12:
.PP
\fBoutgoing_s2s_ipv6_address\fR: \fIAddress\fR
.RS 4
-Specify the IPv6 address that will be used when establishing an outgoing S2S IPv6 connection, for example "::FFFF:127\&.0\&.0\&.1"\&. The default value is
+\fINote\fR
+about this option: added in 20\&.12\&. Specify the IPv6 address that will be used when establishing an outgoing S2S IPv6 connection, for example "::FFFF:127\&.0\&.0\&.1"\&. The default value is
\fIundefined\fR\&.
.RE
.PP
@@ -1455,7 +1447,7 @@ seconds\&.
\fBs2s_access\fR: \fIAccess\fR
.RS 4
This
-Access Rule
+\fIbasic\&.md#access\-rules|Access Rule\fR
defines to what remote servers can s2s connections be established\&. The default value is
\fIall\fR; no restrictions are applied, it is allowed to connect s2s to/from all remote servers\&.
.RE
@@ -1463,11 +1455,11 @@ defines to what remote servers can s2s connections be established\&. The default
\fBs2s_cafile\fR: \fIPath\fR
.RS 4
A path to a file with CA root certificates that will be used to authenticate s2s connections\&. If not set, the value of
-ca_file
+\fIca_file\fR
will be used\&.
.RE
.sp
-You can use host_config to specify this option per\-vhost\&.
+You can use \fIhost_config\fR to specify this option per\-vhost\&.
.PP
\fBs2s_ciphers\fR: \fI[Cipher, \&.\&.\&.]\fR
.RS 4
@@ -1704,12 +1696,11 @@ seconds\&.
An SQL database name\&. For SQLite this must be a full path to a database file\&. The default value is
\fIejabberd\fR\&.
.RE
-.sp
-\fINote\fR about the next option: added in 24\&.02:
.PP
\fBsql_flags\fR: \fI[mysql_alternative_upsert]\fR
.RS 4
-This option accepts a list of SQL flags, and is empty by default\&.
+\fINote\fR
+about this option: added in 24\&.02\&. This option accepts a list of SQL flags, and is empty by default\&.
\fImysql_alternative_upsert\fR
forces the alternative upsert implementation in MySQL\&.
.RE
@@ -1718,12 +1709,11 @@ forces the alternative upsert implementation in MySQL\&.
.RS 4
An interval to make a dummy SQL request to keep alive the connections to the database\&. There is no default value, so no keepalive requests are made\&.
.RE
-.sp
-\fINote\fR about the next option: added in 20\&.12:
.PP
\fBsql_odbc_driver\fR: \fIPath\fR
.RS 4
-Path to the ODBC driver to use to connect to a Microsoft SQL Server database\&. This option only applies if the
+\fINote\fR
+about this option: added in 20\&.12\&. Path to the ODBC driver to use to connect to a Microsoft SQL Server database\&. This option only applies if the
\fIsql_type\fR
option is set to
\fImssql\fR
@@ -1755,12 +1745,11 @@ for PostgreSQL and
\fI1433\fR
for MS SQL\&. The option has no effect for SQLite\&.
.RE
-.sp
-\fINote\fR about the next option: added in 20\&.01:
.PP
\fBsql_prepared_statements\fR: \fItrue | false\fR
.RS 4
-This option is
+\fINote\fR
+about this option: added in 20\&.01\&. This option is
\fItrue\fR
by default, and is useful to disable prepared statements\&. The option is valid for PostgreSQL and MySQL\&.
.RE
@@ -1783,22 +1772,27 @@ or
if the latter is not set\&.
.RE
.PP
-\fBsql_server\fR: \fIHost\fR
+\fBsql_server 🟤\fR: \fIHost | IP Address | ODBC Connection String | Unix Socket Path\fR
.RS 4
-The hostname or IP address of the SQL server\&. For
+\fINote\fR
+about this option: improved in 24\&.06\&. The hostname or IP address of the SQL server\&. For
\fIsql_type\fR
\fImssql\fR
or
\fIodbc\fR
-this can also be an ODBC connection string\&. The default value is
+this can also be an ODBC connection string\&. When
+\fIsql_type\fR
+is
+\fImysql\fR
+or
+\fIpgsql\fR, this can be the path to a unix domain socket expressed like: "unix:/path/to/socket"\&.The default value is
\fIlocalhost\fR\&.
.RE
-.sp
-\fINote\fR about the next option: improved in 20\&.03:
.PP
\fBsql_ssl\fR: \fItrue | false\fR
.RS 4
-Whether to use SSL encrypted connections to the SQL server\&. The option is only available for MySQL, MS SQL and PostgreSQL\&. The default value is
+\fINote\fR
+about this option: improved in 20\&.03\&. Whether to use SSL encrypted connections to the SQL server\&. The option is only available for MySQL, MS SQL and PostgreSQL\&. The default value is
\fIfalse\fR\&.
.RE
.PP
@@ -1861,9 +1855,10 @@ to allow all proxies, or specify a list of IPs, possibly with masks\&. The defau
header if you enable this option as, otherwise, the client can set it itself and as a result the IP value cannot be trusted for security rules in ejabberd\&.
.RE
.PP
-\fBupdate_sql_schema\fR: \fItrue | false\fR
+\fBupdate_sql_schema 🟤\fR: \fItrue | false\fR
.RS 4
-Allow ejabberd to update SQL schema\&. The default value is
+\fINote\fR
+about this option: updated in 24\&.06\&. Allow ejabberd to update SQL schema\&. This option was added in ejabberd 23\&.10, and enabled by default since 24\&.06\&. The default value is
\fItrue\fR\&.
.RE
.PP
@@ -1918,7 +1913,7 @@ seconds\&.
.RE
.SH "MODULES"
.sp
-This section describes options of all ejabberd modules\&.
+This section describes modules options of ejabberd 24\&.06\&. The modules that changed in this version are marked with 🟤\&.
.SS "mod_adhoc"
.sp
This module implements XEP\-0050: Ad\-Hoc Commands\&. It\(cqs an auxiliary module and is only needed by some of the other modules\&.
@@ -1963,7 +1958,9 @@ Details for some commands:
.IP \(bu 2.3
.\}
\fIpushroster\fR: (and
-\fIpushroster\-all\fR) The roster file must be placed, if using Windows, on the directory where you installed ejabberd: C:/Program Files/ejabberd or similar\&. If you use other Operating System, place the file on the same directory where the \&.beam files are installed\&. See below an example roster file\&.
+\fIpushroster\-all\fR) The roster file must be placed, if using Windows, on the directory where you installed ejabberd:
+C:/Program Files/ejabberd
+or similar\&. If you use other Operating System, place the file on the same directory where the \&.beam files are installed\&. See below an example roster file\&.
.RE
.sp
.RS 4
@@ -2048,7 +2045,7 @@ ejabberdctl srg\-create g1 example\&.org "\*(AqGroup number 1\*(Aq" this_is_g1 g
.RE
.SS "mod_admin_update_sql"
.sp
-This module can be used to update existing SQL database from the default to the new schema\&. Check the section Default and New Schemas for details\&. Please note that only MS SQL, MySQL, and PostgreSQL are supported\&. When the module is loaded use \fIupdate_sql\fR API\&.
+This module can be used to update existing SQL database from the default to the new schema\&. Check the section \fIdatabase\&.md#default\-and\-new\-schemas|Default and New Schemas\fR for details\&. Please note that only MS SQL, MySQL, and PostgreSQL are supported\&. When the module is loaded use \fIupdate_sql\fR API\&.
.sp
The module has no options\&.
.SS "mod_announce"
@@ -2257,7 +2254,7 @@ and some server\(cqs JID is in user\(cqs roster, then messages from any user of
\fBcaptcha\fR: \fItrue | false\fR
.RS 4
Whether to generate CAPTCHA or not in response to messages from strangers\&. See also section
-CAPTCHA
+\fIbasic\&.md#captcha|CAPTCHA\fR
of the Configuration Guide\&. The default value is
\fIfalse\fR\&.
.RE
@@ -2482,18 +2479,18 @@ While a client is inactive, queue presence stanzas that indicate (un)availabilit
.RE
.SS "mod_configure"
.sp
-The module provides server configuration functionality via XEP\-0050: Ad\-Hoc Commands\&. This module requires \fImod_adhoc\fR to be loaded\&.
+The module provides server configuration functionality via XEP\-0050: Ad\-Hoc Commands\&. Implements many commands as defined in XEP\-0133: Service Administration\&. This module requires \fImod_adhoc\fR to be loaded\&.
.sp
The module has no options\&.
.SS "mod_conversejs"
.sp
-This module serves a simple page for the Converse XMPP web browser client\&.
+\fINote\fR about this option: added in 21\&.12 and improved in 22\&.05\&.
.sp
-This module is available since ejabberd 21\&.12\&. Several options were improved in ejabberd 22\&.05\&.
+This module serves a simple page for the Converse XMPP web browser client\&.
.sp
-To use this module, in addition to adding it to the \fImodules\fR section, you must also enable it in \fIlisten\fR → \fIejabberd_http\fR → request_handlers\&.
+To use this module, in addition to adding it to the \fImodules\fR section, you must also enable it in \fIlisten\fR → \fIejabberd_http\fR → \fIlisten\-options\&.md#request_handlers|request_handlers\fR\&.
.sp
-Make sure either \fImod_bosh\fR or \fIejabberd_http_ws\fR request_handlers are enabled\&.
+Make sure either \fImod_bosh\fR or \fIejabberd_http_ws\fR \fIlisten\-options\&.md#request_handlers|request_handlers\fR are enabled\&.
.sp
When \fIconversejs_css\fR and \fIconversejs_script\fR are \fIauto\fR, by default they point to the public Converse client\&.
.sp
@@ -2521,20 +2518,18 @@ Converse CSS URL\&. The keyword
is replaced with the hostname\&. The default value is
\fIauto\fR\&.
.RE
-.sp
-\fINote\fR about the next option: added in 22\&.05:
.PP
\fBconversejs_options\fR: \fI{Name: Value}\fR
.RS 4
-Specify additional options to be passed to Converse\&. See
+\fINote\fR
+about this option: added in 22\&.05\&. Specify additional options to be passed to Converse\&. See
Converse configuration\&. Only boolean, integer and string values are supported; lists are not supported\&.
.RE
-.sp
-\fINote\fR about the next option: added in 22\&.05:
.PP
\fBconversejs_resources\fR: \fIPath\fR
.RS 4
-Local path to the Converse files\&. If not set, the public Converse client will be used instead\&.
+\fINote\fR
+about this option: added in 22\&.05\&. Local path to the Converse files\&. If not set, the public Converse client will be used instead\&.
.RE
.PP
\fBconversejs_script\fR: \fIauto | URL\fR
@@ -2727,7 +2722,6 @@ acl:
server: sat\-pubsub\&.example\&.org
modules:
- \&.\&.\&.
mod_delegation:
namespaces:
urn:xmpp:mam:1:
@@ -2879,11 +2873,11 @@ The number of C2S authentication failures to trigger the IP ban\&. The default v
.RE
.SS "mod_host_meta"
.sp
-This module serves small \fIhost\-meta\fR files as described in XEP\-0156: Discovering Alternative XMPP Connection Methods\&.
+\fINote\fR about this option: added in 22\&.05\&.
.sp
-This module is available since ejabberd 22\&.05\&.
+This module serves small \fIhost\-meta\fR files as described in XEP\-0156: Discovering Alternative XMPP Connection Methods\&.
.sp
-To use this module, in addition to adding it to the \fImodules\fR section, you must also enable it in \fIlisten\fR → \fIejabberd_http\fR → request_handlers\&.
+To use this module, in addition to adding it to the \fImodules\fR section, you must also enable it in \fIlisten\fR → \fIejabberd_http\fR → \fIlisten\-options\&.md#request_handlers|request_handlers\fR\&.
.sp
Notice it only works if ejabberd_http has tls enabled\&.
.sp
@@ -2949,9 +2943,9 @@ modules:
.RE
.SS "mod_http_api"
.sp
-This module provides a ReST interface to call ejabberd API commands using JSON data\&.
+This module provides a ReST interface to call \fI\&.\&./\&.\&./developer/ejabberd\-api/index\&.md|ejabberd API\fR commands using JSON data\&.
.sp
-To use this module, in addition to adding it to the \fImodules\fR section, you must also enable it in \fIlisten\fR → \fIejabberd_http\fR → request_handlers\&.
+To use this module, in addition to adding it to the \fImodules\fR section, you must also enable it in \fIlisten\fR → \fIejabberd_http\fR → \fIlisten\-options\&.md#request_handlers|request_handlers\fR\&.
.sp
To use a specific API version N, when defining the URL path in the request_handlers, add a \fIvN\fR\&. For example: \fI/api/v2: mod_http_api\fR
.sp
@@ -3077,18 +3071,13 @@ This example configuration will serve the files from the local directory \fI/var
.\}
.nf
listen:
- \&.\&.\&.
\-
port: 5280
module: ejabberd_http
request_handlers:
- \&.\&.\&.
/pub/content: mod_http_fileserver
- \&.\&.\&.
- \&.\&.\&.
modules:
- \&.\&.\&.
mod_http_fileserver:
docroot: /var/www
accesslog: /var/log/ejabberd/access\&.log
@@ -3102,7 +3091,6 @@ modules:
\&.ogg: audio/ogg
\&.png: image/png
default_content_type: text/html
- \&.\&.\&.
.fi
.if n \{\
.RE
@@ -3112,7 +3100,7 @@ modules:
.sp
This module allows for requesting permissions to upload a file via HTTP as described in XEP\-0363: HTTP File Upload\&. If the request is accepted, the client receives a URL for uploading the file and another URL from which that file can later be downloaded\&.
.sp
-In order to use this module, it must be enabled in \fIlisten\fR → \fIejabberd_http\fR → request_handlers\&.
+In order to use this module, it must be enabled in \fIlisten\fR → \fIejabberd_http\fR → \fIlisten\-options\&.md#request_handlers|request_handlers\fR\&.
.sp
.it 1 an-trap
.nr an-no-space-flag 1
@@ -3245,30 +3233,22 @@ A custom vCard of the service that will be displayed by some XMPP clients in Ser
\fIvCard\fR
is a YAML map constructed from an XML representation of vCard\&. Since the representation has no attributes, the mapping is straightforward\&.
.sp
-For example, the following XML representation of vCard:
-.sp
-.if n \{\
-.RS 4
-.\}
-.nf
-
- Conferences
-
-
- Elm Street
-
-
-.fi
-.if n \{\
-.RE
-.\}
-.sp
-will be translated to:
+\fBExample\fR:
.sp
.if n \{\
.RS 4
.\}
.nf
+# This XML representation of vCard:
+#
+# Conferences
+#
+#
+# Elm Street
+#
+#
+#
+# is translated to:
vcard:
fn: Conferences
adr:
@@ -3295,23 +3275,17 @@ vcard:
.\}
.nf
listen:
- \&.\&.\&.
\-
port: 5443
module: ejabberd_http
tls: true
request_handlers:
- \&.\&.\&.
/upload: mod_http_upload
- \&.\&.\&.
- \&.\&.\&.
modules:
- \&.\&.\&.
mod_http_upload:
docroot: /ejabberd/upload
put_url: "https://@HOST@:5443/upload"
- \&.\&.\&.
.fi
.if n \{\
.RE
@@ -3370,19 +3344,15 @@ Please note that it\(cqs not necessary to specify the \fIaccess_hard_quota\fR an
.\}
.nf
shaper_rules:
- \&.\&.\&.
soft_upload_quota:
1000: all # MiB
hard_upload_quota:
1100: all # MiB
- \&.\&.\&.
modules:
- \&.\&.\&.
mod_http_upload: {}
mod_http_upload_quota:
max_days: 100
- \&.\&.\&.
.fi
.if n \{\
.RE
@@ -3476,7 +3446,7 @@ This type of authentication was obsoleted in 2008 and you unlikely need this mod
The module has no options\&.
.SS "mod_mam"
.sp
-This module implements XEP\-0313: Message Archive Management\&. Compatible XMPP clients can use it to store their chat history on the server\&.
+This module implements XEP\-0313: Message Archive Management and XEP\-0441: Message Archive Management Preferences\&. Compatible XMPP clients can use it to store their chat history on the server\&.
.sp
.it 1 an-trap
.nr an-no-space-flag 1
@@ -3577,9 +3547,9 @@ When this option is disabled, for each individual subscriber a separa mucsub mes
.RE
.SS "mod_matrix_gw"
.sp
-Matrix gateway\&.
+\fINote\fR about this option: added in 24\&.02\&.
.sp
-This module is available since ejabberd 24\&.02\&.
+Matrix gateway\&.
.sp
.it 1 an-trap
.nr an-no-space-flag 1
@@ -3792,9 +3762,11 @@ An internet port number at which the backend is listening for incoming connectio
.RE
.SS "mod_mix"
.sp
-This module is an experimental implementation of XEP\-0369: Mediated Information eXchange (MIX)\&. MIX support was added in ejabberd 16\&.03 as an experimental feature, updated in 19\&.02, and is not yet ready to use in production\&. It\(cqs asserted that the MIX protocol is going to replace the MUC protocol in the future (see \fImod_muc\fR)\&.
+\fINote\fR about this option: added in 16\&.03 and improved in 19\&.02\&.
.sp
-To learn more about how to use that feature, you can refer to our tutorial: Getting started with XEP\-0369: Mediated Information eXchange (MIX) v0\&.1\&.
+This module is an experimental implementation of XEP\-0369: Mediated Information eXchange (MIX)\&. It\(cqs asserted that the MIX protocol is going to replace the MUC protocol in the future (see \fImod_muc\fR)\&.
+.sp
+To learn more about how to use that feature, you can refer to our tutorial: \fI\&.\&./\&.\&./tutorials/mix\-010\&.md|Getting started with MIX\fR
.sp
The module depends on \fImod_mam\fR\&.
.sp
@@ -3906,7 +3878,7 @@ option, but applied to this module only\&.
.RE
.SS "mod_mqtt"
.sp
-This module adds support for the MQTT protocol version \fI3\&.1\&.1\fR and \fI5\&.0\fR\&. Remember to configure \fImod_mqtt\fR in \fImodules\fR and \fIlisten\fR sections\&.
+This module adds \fI\&.\&./guide/mqtt/index\&.md|support for the MQTT\fR protocol version \fI3\&.1\&.1\fR and \fI5\&.0\fR\&. Remember to configure \fImod_mqtt\fR in \fImodules\fR and \fIlisten\fR sections\&.
.sp
.it 1 an-trap
.nr an-no-space-flag 1
@@ -4050,7 +4022,6 @@ section with username/password field or certfile pointing to client certificate\
.\}
.nf
modules:
- \&.\&.\&.
mod_mqtt_bridge:
servers:
"mqtt://server\&.com":
@@ -4062,7 +4033,6 @@ modules:
authentication:
certfile: "/etc/ejabberd/mqtt_server\&.pem"
replication_user: "mqtt@xmpp\&.server\&.com"
- \&.\&.\&.
.fi
.if n \{\
.RE
@@ -4118,21 +4088,19 @@ To configure who is allowed to modify the
room option\&. The default value is
\fIall\fR, which means everyone is allowed to modify that option\&.
.RE
-.sp
-\fINote\fR about the next option: improved in 23\&.10:
.PP
\fBaccess_register\fR: \fIAccessName\fR
.RS 4
-This option specifies who is allowed to register nickname within the Multi\-User Chat service and rooms\&. The default is
+\fINote\fR
+about this option: improved in 23\&.10\&. This option specifies who is allowed to register nickname within the Multi\-User Chat service and rooms\&. The default is
\fIall\fR
for backward compatibility, which means that any user is allowed to register any free nick in the MUC service and in the rooms\&.
.RE
-.sp
-\fINote\fR about the next option: added in 22\&.05:
.PP
\fBcleanup_affiliations_on_start\fR: \fItrue | false\fR
.RS 4
-Remove affiliations for non\-existing local users on startup\&. The default value is
+\fINote\fR
+about this option: added in 22\&.05\&. Remove affiliations for non\-existing local users on startup\&. The default value is
\fIfalse\fR\&.
.RE
.PP
@@ -4142,8 +4110,6 @@ Same as top\-level
\fIdefault_db\fR
option, but applied to this module only\&.
.RE
-.sp
-\fINote\fR about the next option: improved in 22\&.05:
.PP
\fBdefault_room_options\fR: \fIOptions\fR
.RS 4
@@ -4173,7 +4139,7 @@ Occupants can send IQ queries to other occupants\&. The default value is
\fBallow_subscription\fR: \fItrue | false\fR
.RS 4
Allow users to subscribe to room events as described in
-Multi\-User Chat Subscriptions\&. The default value is
+\fI\&.\&./\&.\&./developer/xmpp\-clients\-bots/extensions/muc\-sub\&.md|Multi\-User Chat Subscriptions\fR\&. The default value is
\fIfalse\fR\&.
.RE
.PP
@@ -4216,7 +4182,7 @@ The room is anonymous: occupants don\(cqt see the real JIDs of other occupants\&
\fBcaptcha_protected\fR: \fItrue | false\fR
.RS 4
When a user tries to join a room where they have no affiliation (not owner, admin or member), the room requires them to fill a CAPTCHA challenge (see section
-CAPTCHA
+\fIbasic\&.md#captcha|CAPTCHA\fR
in order to accept their join in the room\&. The default value is
\fIfalse\fR\&.
.RE
@@ -4379,20 +4345,18 @@ option is not specified, the only Jabber ID will be the hostname of the virtual
\fI@HOST@\fR
is replaced with the real virtual host name\&.
.RE
-.sp
-\fINote\fR about the next option: added in 21\&.01:
.PP
\fBmax_captcha_whitelist\fR: \fINumber\fR
.RS 4
-This option defines the maximum number of characters that Captcha Whitelist can have when configuring the room\&. The default value is
+\fINote\fR
+about this option: added in 21\&.01\&. This option defines the maximum number of characters that Captcha Whitelist can have when configuring the room\&. The default value is
\fIinfinity\fR\&.
.RE
-.sp
-\fINote\fR about the next option: added in 21\&.01:
.PP
\fBmax_password\fR: \fINumber\fR
.RS 4
-This option defines the maximum number of characters that Password can have when configuring the room\&. The default value is
+\fINote\fR
+about this option: added in 21\&.01\&. This option defines the maximum number of characters that Password can have when configuring the room\&. The default value is
\fIinfinity\fR\&.
.RE
.PP
@@ -4511,30 +4475,22 @@ A custom vCard of the service that will be displayed by some XMPP clients in Ser
\fIvCard\fR
is a YAML map constructed from an XML representation of vCard\&. Since the representation has no attributes, the mapping is straightforward\&.
.sp
-For example, the following XML representation of vCard:
-.sp
-.if n \{\
-.RS 4
-.\}
-.nf
-
- Conferences
-
-
- Elm Street
-
-
-.fi
-.if n \{\
-.RE
-.\}
-.sp
-will be translated to:
+\fBExample\fR:
.sp
.if n \{\
.RS 4
.\}
.nf
+# This XML representation of vCard:
+#
+# Conferences
+#
+#
+# Elm Street
+#
+#
+#
+# is translated to:
vcard:
fn: Conferences
adr:
@@ -4560,12 +4516,11 @@ This module depends on \fImod_muc\fR\&.
.ps +1
\fBAvailable options:\fR
.RS 4
-.sp
-\fINote\fR about the next option: added in 22\&.05:
.PP
\fBsubscribe_room_many_max_users\fR: \fINumber\fR
.RS 4
-How many users can be subscribed to a room at once using the
+\fINote\fR
+about this option: added in 22\&.05\&. How many users can be subscribed to a room at once using the
\fIsubscribe_room_many\fR
command\&. The default value is
\fI50\fR\&.
@@ -4825,21 +4780,21 @@ otherwise\&. There is no default value\&.
.RE
.SS "mod_muc_occupantid"
.sp
+\fINote\fR about this option: added in 23\&.10\&.
+.sp
This module implements XEP\-0421: Anonymous unique occupant identifiers for MUCs\&.
.sp
When the module is enabled, the feature is enabled in all semi\-anonymous rooms\&.
.sp
-This module is available since ejabberd 23\&.10\&.
-.sp
The module has no options\&.
.SS "mod_muc_rtbl"
.sp
+\fINote\fR about this option: added in 23\&.04\&.
+.sp
This module implement Real\-time blocklists for MUC rooms\&.
.sp
It works by observing remote pubsub node conforming with specification described in https://xmppbl\&.org/\&.
.sp
-This module is available since ejabberd 23\&.04\&.
-.sp
.it 1 an-trap
.nr an-no-space-flag 1
.nr an-break-flag 1
@@ -5038,7 +4993,7 @@ This module implements XEP\-0160: Best Practices for Handling Offline Messages a
.ps -1
.br
.sp
-\fIejabberdctl\fR has a command to delete expired messages (see chapter Managing an ejabberd server in online documentation\&.
+\fIejabberdctl\fR has a command to delete expired messages (see chapter \fI\&.\&./guide/managing\&.md|Managing an ejabberd server\fR in online documentation\&.
.sp .5v
.RE
.sp
@@ -5225,12 +5180,10 @@ is loaded and stream management is enabled by a client, killing the client conne
.\}
.nf
modules:
- \&.\&.\&.
mod_ping:
send_pings: true
ping_interval: 4 min
timeout_action: kill
- \&.\&.\&.
.fi
.if n \{\
.RE
@@ -5279,11 +5232,9 @@ minute\&.
.\}
.nf
modules:
- \&.\&.\&.
mod_pres_counter:
count: 5
interval: 30 secs
- \&.\&.\&.
.fi
.if n \{\
.RE
@@ -5358,7 +5309,7 @@ This module adds support for XEP\-0049: Private XML Storage\&.
.sp
Using this method, XMPP entities can store private data on the server, retrieve it whenever necessary and share it between multiple connected clients of the same user\&. The data stored might be anything, as long as it is a valid XML\&. One typical usage is storing a bookmark of all user\(cqs conferences (XEP\-0048: Bookmarks)\&.
.sp
-It also implements the bookmark conversion described in XEP\-0402: PEP Native Bookmarks, see the command bookmarks_to_pep\&.
+It also implements the bookmark conversion described in XEP\-0402: PEP Native Bookmarks, see the command \fIbookmarks_to_pep\fR API\&.
.sp
.it 1 an-trap
.nr an-no-space-flag 1
@@ -5522,7 +5473,6 @@ Sets write access to a user\(cqs roster\&. The default value is
.\}
.nf
modules:
- \&.\&.\&.
mod_privilege:
roster:
get: all
@@ -5530,7 +5480,6 @@ modules:
managed_entity: all
message:
outgoing: all
- \&.\&.\&.
.fi
.if n \{\
.RE
@@ -5644,41 +5593,6 @@ bytes\&.
A custom vCard of the service that will be displayed by some XMPP clients in Service Discovery\&. The value of
\fIvCard\fR
is a YAML map constructed from an XML representation of vCard\&. Since the representation has no attributes, the mapping is straightforward\&.
-.sp
-For example, the following XML representation of vCard:
-.sp
-.if n \{\
-.RS 4
-.\}
-.nf
-
- Conferences
-
-
- Elm Street
-
-
-.fi
-.if n \{\
-.RE
-.\}
-.sp
-will be translated to:
-.sp
-.if n \{\
-.RS 4
-.\}
-.nf
-vcard:
- fn: Conferences
- adr:
- \-
- work: true
- street: Elm Street
-.fi
-.if n \{\
-.RE
-.\}
.RE
.RE
.sp
@@ -5713,7 +5627,6 @@ shaper:
proxyrate: 10240
modules:
- \&.\&.\&.
mod_proxy65:
host: proxy1\&.example\&.org
name: "File Transfer Proxy"
@@ -5724,7 +5637,6 @@ modules:
shaper: proxy65_shaper
recbuf: 10240
sndbuf: 10240
- \&.\&.\&.
.fi
.if n \{\
.RE
@@ -5815,12 +5727,11 @@ To specify whether or not pubsub should cache last items\&. Value is
or
\fIfalse\fR\&. If not defined, pubsub does not cache last items\&. On systems with not so many nodes, caching last items speeds up pubsub and allows you to raise the user connection rate\&. The cost is memory usage, as every item is stored in memory\&.
.RE
-.sp
-\fINote\fR about the next option: added in 21\&.12:
.PP
\fBmax_item_expire_node\fR: \fItimeout() | infinity\fR
.RS 4
-Specify the maximum item epiry time\&. Default value is:
+\fINote\fR
+about this option: added in 21\&.12\&. Specify the maximum item epiry time\&. Default value is:
\fIinfinity\fR\&.
.RE
.PP
@@ -5957,32 +5868,24 @@ A custom vCard of the server that will be displayed by some XMPP clients in Serv
\fIvCard\fR
is a YAML map constructed from an XML representation of vCard\&. Since the representation has no attributes, the mapping is straightforward\&.
.sp
-The following XML representation of vCard:
-.sp
-.if n \{\
-.RS 4
-.\}
-.nf
-
- PubSub Service
-
-
- Elm Street
-
-
-.fi
-.if n \{\
-.RE
-.\}
-.sp
-will be translated to:
+\fBExample\fR:
.sp
.if n \{\
.RS 4
.\}
.nf
+# This XML representation of vCard:
+#
+# Conferences
+#
+#
+# Elm Street
+#
+#
+#
+# is translated to:
vcard:
- fn: PubSub Service
+ fn: Conferences
adr:
\-
work: true
@@ -6009,7 +5912,6 @@ Example of configuration that uses flat nodes as default, and allows use of flat
.\}
.nf
modules:
- \&.\&.\&.
mod_pubsub:
access_createnode: pubsub_createnode
max_subscriptions_node: 100
@@ -6020,7 +5922,6 @@ modules:
plugins:
\- flat
\- pep
- \&.\&.\&.
.fi
.if n \{\
.RE
@@ -6033,7 +5934,6 @@ Using relational database requires using mod_pubsub with db_type \fIsql\fR\&. On
.\}
.nf
modules:
- \&.\&.\&.
mod_pubsub:
db_type: sql
access_createnode: pubsub_createnode
@@ -6042,7 +5942,6 @@ modules:
plugins:
\- flat
\- pep
- \&.\&.\&.
.fi
.if n \{\
.RE
@@ -6101,12 +6000,11 @@ If this option is set to
\fItrue\fR, the sender\(cqs JID is included with push notifications generated for incoming messages with a body\&. The default value is
\fIfalse\fR\&.
.RE
-.sp
-\fINote\fR about the next option: added in 23\&.10:
.PP
\fBnotify_on\fR: \fImessages | all\fR
.RS 4
-If this option is set to
+\fINote\fR
+about this option: added in 23\&.10\&. If this option is set to
\fImessages\fR, notifications are generated only for actual chat messages with a body text (or some encrypted payload)\&. If it\(cqs set to
\fIall\fR, any kind of XMPP stanza will trigger a notification\&. If unsure, it\(cqs strongly recommended to stick to
\fIall\fR, which is the default value\&.
@@ -6225,12 +6123,11 @@ doesn\(cqt allow the client to register new accounts from s2s or existing c2s se
.RS 4
Specify rules to restrict access for user unregistration\&. By default any user is able to unregister their account\&.
.RE
-.sp
-\fINote\fR about the next option: added in 21\&.12:
.PP
\fBallow_modules\fR: \fIall | [Module, \&.\&.\&.]\fR
.RS 4
-List of modules that can register accounts, or
+\fINote\fR
+about this option: added in 21\&.12\&. List of modules that can register accounts, or
\fIall\fR\&. The default value is
\fIall\fR, which is equivalent to something like
\fI[mod_register, mod_register_web]\fR\&.
@@ -6239,7 +6136,7 @@ List of modules that can register accounts, or
\fBcaptcha_protected\fR: \fItrue | false\fR
.RS 4
Protect registrations with
-CAPTCHA\&. The default is
+\fIbasic\&.md#captcha|CAPTCHA\fR\&. The default is
\fIfalse\fR\&.
.RE
.PP
@@ -6318,11 +6215,11 @@ Change the password from an existing account on the server\&.
Unregister an existing account on the server\&.
.RE
.sp
-This module supports CAPTCHA to register a new account\&. To enable this feature, configure the top\-level \fIcaptcha_cmd\fR and top\-level \fIcaptcha_url\fR options\&.
+This module supports \fIbasic\&.md#captcha|CAPTCHA\fR to register a new account\&. To enable this feature, configure the top\-level \fIcaptcha_cmd\fR and top\-level \fIcaptcha_url\fR options\&.
.sp
As an example usage, the users of the host \fIlocalhost\fR can visit the page: \fIhttps://localhost:5280/register/\fR It is important to include the last / character in the URL, otherwise the subpages URL will be incorrect\&.
.sp
-This module is enabled in \fIlisten\fR → \fIejabberd_http\fR → request_handlers, no need to enable in \fImodules\fR\&. The module depends on \fImod_register\fR where all the configuration is performed\&.
+This module is enabled in \fIlisten\fR → \fIejabberd_http\fR → \fIlisten\-options\&.md#request_handlers|request_handlers\fR, no need to enable in \fImodules\fR\&. The module depends on \fImod_register\fR where all the configuration is performed\&.
.sp
The module has no options\&.
.sp
@@ -6442,11 +6339,9 @@ Enables/disables Roster Versioning\&. The default value is
.\}
.nf
modules:
- \&.\&.\&.
mod_roster:
versioning: true
store_current_id: false
- \&.\&.\&.
.fi
.if n \{\
.RE
@@ -6500,14 +6395,12 @@ An access rule that can be used to restrict dialback for some servers\&. The def
.\}
.nf
modules:
- \&.\&.\&.
mod_s2s_dialback:
access:
allow:
server: legacy\&.domain\&.tld
server: invalid\-cert\&.example\&.org
deny: all
- \&.\&.\&.
.fi
.if n \{\
.RE
@@ -6544,12 +6437,10 @@ A list of servers or connected components to which stanzas will be forwarded\&.
.\}
.nf
modules:
- \&.\&.\&.
mod_service_log:
loggers:
\- xmpp\-server\&.tld
\- component\&.domain\&.tld
- \&.\&.\&.
.fi
.if n \{\
.RE
@@ -6791,11 +6682,11 @@ Control parameters:
.IP \(bu 2.3
.\}
Connection parameters: The module also accepts the connection parameters, all of which default to the top\-level parameter of the same name, if unspecified\&. See
-LDAP Connection
+\fIldap\&.md#ldap\-connection|LDAP Connection\fR
section for more information about them\&.
.RE
.sp
-Check also the Configuration examples section to get details about retrieving the roster, and configuration examples including Flat DIT and Deep DIT\&.
+Check also the \fIldap\&.md#ldap\-examples|Configuration examples\fR section to get details about retrieving the roster, and configuration examples including Flat DIT and Deep DIT\&.
.sp
.it 1 an-trap
.nr an-no-space-flag 1
@@ -6865,7 +6756,7 @@ option, but applied to this module only\&.
\fBldap_filter\fR
.RS 4
Additional filter which is AND\-ed together with "User Filter" and "Group Filter"\&. For more information check the LDAP
-Filters
+\fIldap\&.md#filters|Filters\fR
section\&.
.RE
.PP
@@ -6917,7 +6808,7 @@ A globbing format for extracting user ID from the value of the attribute named b
.RS 4
A regex for extracting user ID from the value of the attribute named by
\fIldap_memberattr\fR\&. Check the LDAP
-Control Parameters
+\fIldap\&.md#control\-parameters|Control Parameters\fR
section\&.
.RE
.PP
@@ -6990,7 +6881,7 @@ option, but applied to this module only\&.
\fIldap_userdesc\fR
and
\fIldap_useruid\fR\&. For more information check the LDAP
-Filters
+\fIldap\&.md#filters|Filters\fR
section\&.
.RE
.PP
@@ -7064,7 +6955,7 @@ This module adds SIP proxy/registrar support for the corresponding virtual host\
.ps -1
.br
.sp
-It is not enough to just load this module\&. You should also configure listeners and DNS records properly\&. For details see the section about the ejabberd_sip listen module in the ejabberd Documentation\&.
+It is not enough to just load this module\&. You should also configure listeners and DNS records properly\&. For details see the section about the \fIlisten\&.md#ejabberd_sip|ejabberd_sip\fR listen module in the ejabberd Documentation\&.
.sp .5v
.RE
.sp
@@ -7144,7 +7035,6 @@ are mandatory (e\&.g\&. you cannot omit "port" or "scheme")\&.
.\}
.nf
modules:
- \&.\&.\&.
mod_sip:
always_record_route: false
record_route: "sip:example\&.com;lr"
@@ -7157,7 +7047,6 @@ modules:
\- tls://sip\-tls\&.example\&.com:5061
\- tcp://sip\-tcp\&.example\&.com:5060
\- udp://sip\-udp\&.example\&.com:5060
- \&.\&.\&.
.fi
.if n \{\
.RE
@@ -7308,7 +7197,9 @@ minutes\&.
.RE
.SS "mod_stun_disco"
.sp
-This module allows XMPP clients to discover STUN/TURN services and to obtain temporary credentials for using them as per XEP\-0215: External Service Discovery\&. This module is included in ejabberd since version 20\&.04\&.
+\fINote\fR about this option: added in 20\&.04\&.
+.sp
+This module allows XMPP clients to discover STUN/TURN services and to obtain temporary credentials for using them as per XEP\-0215: External Service Discovery\&.
.sp
.it 1 an-trap
.nr an-no-space-flag 1
@@ -7549,30 +7440,24 @@ A custom vCard of the server that will be displayed by some XMPP clients in Serv
\fIvCard\fR
is a YAML map constructed from an XML representation of vCard\&. Since the representation has no attributes, the mapping is straightforward\&.
.sp
-For example, the following XML representation of vCard:
-.sp
-.if n \{\
-.RS 4
-.\}
-.nf
-
- Conferences
-
-
- Elm Street
-
-
-.fi
-.if n \{\
-.RE
-.\}
-.sp
-will be translated to:
+\fBExample\fR:
.sp
.if n \{\
.RS 4
.\}
.nf
+# This XML representation of vCard:
+#
+#
+# Conferences
+#
+#
+# Elm Street
+#
+#
+#
+# is translated to:
+#
vcard:
fn: Conferences
adr:
@@ -7661,6 +7546,8 @@ for available words)\&.
is the LDAP attribute or the pattern
\fI%u\fR\&.
.sp
+\fBExamples\fR:
+.sp
The default is:
.sp
.if n \{\
@@ -7697,6 +7584,8 @@ is the vCard field name defined in the
\fIldap_vcard_map\fR
option\&.
.sp
+\fBExamples\fR:
+.sp
The default is:
.sp
.if n \{\
@@ -7784,6 +7673,8 @@ will be replaced with the user part of a JID, and
\fI%d\fR
will be replaced with the domain part of a JID\&.
.sp
+\fBExamples\fR:
+.sp
The default is:
.sp
.if n \{\
@@ -7913,7 +7804,7 @@ Should the operating system be revealed or not\&. The default value is
.RE
.SH "LISTENERS"
.sp
-This section describes options of all ejabberd listeners\&.
+This section describes listeners options of ejabberd 24\&.06\&.
.sp
TODO
.SH "AUTHOR"
@@ -7921,13 +7812,13 @@ TODO
ProcessOne\&.
.SH "VERSION"
.sp
-This document describes the configuration file of ejabberd 24\&.02\&. Configuration options of other ejabberd versions may differ significantly\&.
+This document describes the configuration file of ejabberd 24\&.06\&. Configuration options of other ejabberd versions may differ significantly\&.
.SH "REPORTING BUGS"
.sp
Report bugs to https://github\&.com/processone/ejabberd/issues
.SH "SEE ALSO"
.sp
-Default configuration file: https://github\&.com/processone/ejabberd/blob/24\&.02/ejabberd\&.yml\&.example
+Default configuration file: https://github\&.com/processone/ejabberd/blob/24\&.06/ejabberd\&.yml\&.example
.sp
Main site: https://ejabberd\&.im
.sp
diff --git a/mix.exs b/mix.exs
index 47e49682bba..002f8628c74 100644
--- a/mix.exs
+++ b/mix.exs
@@ -140,12 +140,12 @@ defmodule Ejabberd.MixProject do
{:fast_yaml, "~> 1.0"},
{:idna, "~> 6.0"},
{:mqtree, "~> 1.0"},
- {:p1_acme, git: "https://github.com/processone/p1_acme", branch: "master"},
+ {:p1_acme, "~> 1.0"},
{:p1_oauth2, "~> 0.6"},
{:p1_utils, "~> 1.0"},
- {:pkix, git: "https://github.com/processone/pkix"},
+ {:pkix, "~> 1.0"},
{:stringprep, ">= 1.0.26"},
- {:xmpp, git: "https://github.com/processone/xmpp", override: true},
+ {:xmpp, ">= 1.8.2"},
{:yconf, "~> 1.0"}]
++ cond_deps()
end
@@ -171,12 +171,12 @@ defmodule Ejabberd.MixProject do
{config(:sip), {:esip, "~> 1.0"}},
{config(:zlib), {:ezlib, "~> 1.0"}},
{if_version_above(~c"23", true), {:jose, "~> 1.11.10"}},
- {if_version_below(~c"24", true), {:jose, "1.11.1"}},
+ {if_version_below(~c"24", true), {:jose, "1.11.1", override: true}},
{if_version_below(~c"27", true), {:jiffy, "~> 1.1.1"}},
{if_version_below(~c"22", true), {:lager, "~> 3.9.1"}},
{config(:lua), {:luerl, "~> 1.2.0"}},
- {config(:mysql), {:p1_mysql, git: "https://github.com/processone/p1_mysql" }},
- {config(:pgsql), {:p1_pgsql, git: "https://github.com/processone/p1_pgsql"}},
+ {config(:mysql), {:p1_mysql, ">= 1.0.24"}},
+ {config(:pgsql), {:p1_pgsql, ">= 1.1.26"}},
{config(:sqlite), {:sqlite3, "~> 1.1"}},
{config(:stun), {:stun, "~> 1.0"}}], do:
dep
diff --git a/mix.lock b/mix.lock
index 72b96da2208..4078a6bf363 100644
--- a/mix.lock
+++ b/mix.lock
@@ -1,39 +1,39 @@
%{
"base64url": {:hex, :base64url, "1.0.1", "f8c7f2da04ca9a5d0f5f50258f055e1d699f0e8bf4cfdb30b750865368403cf6", [:rebar3], [], "hexpm", "f9b3add4731a02a9b0410398b475b33e7566a695365237a6bdee1bb447719f5c"},
- "cache_tab": {:hex, :cache_tab, "1.0.30", "6d35eecfb65fbe5fc85988503a27338d32de01243f3fc8ea3ee7161af08725a4", [:rebar3], [{:p1_utils, "1.0.25", [hex: :p1_utils, repo: "hexpm", optional: false]}], "hexpm", "6d8a5e00d8f84c42627706a6dbedb02e34d58495f3ed61935c8475ca0531cda0"},
+ "cache_tab": {:hex, :cache_tab, "1.0.31", "e4097b50a6f373ab1e0a5f01bab0bef6626771a4cd6c93404ed6d54810e11fbc", [:rebar3], [{:p1_utils, "1.0.26", [hex: :p1_utils, repo: "hexpm", optional: false]}], "hexpm", "8582b60a4a09b247ef86355ba9e07fce9e11edc0345a775c9171f971c72b6351"},
"dialyxir": {:hex, :dialyxir, "1.4.3", "edd0124f358f0b9e95bfe53a9fcf806d615d8f838e2202a9f430d59566b6b53b", [:mix], [{:erlex, ">= 0.2.6", [hex: :erlex, repo: "hexpm", optional: false]}], "hexpm", "bf2cfb75cd5c5006bec30141b131663299c661a864ec7fbbc72dfa557487a986"},
"earmark_parser": {:hex, :earmark_parser, "1.4.39", "424642f8335b05bb9eb611aa1564c148a8ee35c9c8a8bba6e129d51a3e3c6769", [:mix], [], "hexpm", "06553a88d1f1846da9ef066b87b57c6f605552cfbe40d20bd8d59cc6bde41944"},
- "eimp": {:hex, :eimp, "1.0.22", "fa9b376ef0b50e8455db15c7c11dea4522c6902e04412288aab436d26335f6eb", [:rebar3], [{:p1_utils, "1.0.25", [hex: :p1_utils, repo: "hexpm", optional: false]}], "hexpm", "b3b9ffb1d9a5f4a2ba88ac418a819164932d9a9d3a2fc3d32ca338ce855c4392"},
+ "eimp": {:hex, :eimp, "1.0.23", "aaf32efab061143403dadbaa63e699ef8e81702fbfa96fd436d5e9be4d6a8d3a", [:rebar3], [{:p1_utils, "1.0.26", [hex: :p1_utils, repo: "hexpm", optional: false]}], "hexpm", "907c780023cb2893e4fc4bdbe6a4f02c355913862ac67f0ecc26605e816b628a"},
"epam": {:hex, :epam, "1.0.14", "aa0b85d27f4ef3a756ae995179df952a0721237e83c6b79d644347b75016681a", [:rebar3], [], "hexpm", "2f3449e72885a72a6c2a843f561add0fc2f70d7a21f61456930a547473d4d989"},
"eredis": {:hex, :eredis, "1.2.0", "0b8e9cfc2c00fa1374cd107ea63b49be08d933df2cf175e6a89b73dd9c380de4", [:rebar3], [], "hexpm", "d9b5abef2c2c8aba8f32aa018203e0b3dc8b1157773b254ab1d4c2002317f1e1"},
- "erlex": {:hex, :erlex, "0.2.6", "c7987d15e899c7a2f34f5420d2a2ea0d659682c06ac607572df55a43753aa12e", [:mix], [], "hexpm", "2ed2e25711feb44d52b17d2780eabf998452f6efda104877a3881c2f8c0c0c75"},
- "esip": {:hex, :esip, "1.0.52", "a2840287c493a4280e6fba57a257706843b025c315875e38b03fd07190e22dba", [:rebar3], [{:fast_tls, "1.1.19", [hex: :fast_tls, repo: "hexpm", optional: false]}, {:p1_utils, "1.0.25", [hex: :p1_utils, repo: "hexpm", optional: false]}, {:stun, "1.2.12", [hex: :stun, repo: "hexpm", optional: false]}], "hexpm", "6f00165395900500aa262ce0297162d93931c78c1464d89fd0edc6e3d6bc011f"},
- "ex_doc": {:hex, :ex_doc, "0.33.0", "690562b153153c7e4d455dc21dab86e445f66ceba718defe64b0ef6f0bd83ba0", [:mix], [{:earmark_parser, "~> 1.4.39", [hex: :earmark_parser, repo: "hexpm", optional: false]}, {:makeup_c, ">= 0.1.0", [hex: :makeup_c, repo: "hexpm", optional: true]}, {:makeup_elixir, "~> 0.14 or ~> 1.0", [hex: :makeup_elixir, repo: "hexpm", optional: false]}, {:makeup_erlang, "~> 0.1 or ~> 1.0", [hex: :makeup_erlang, repo: "hexpm", optional: false]}, {:makeup_html, ">= 0.1.0", [hex: :makeup_html, repo: "hexpm", optional: true]}], "hexpm", "3f69adc28274cb51be37d09b03e4565232862a4b10288a3894587b0131412124"},
+ "erlex": {:hex, :erlex, "0.2.7", "810e8725f96ab74d17aac676e748627a07bc87eb950d2b83acd29dc047a30595", [:mix], [], "hexpm", "3ed95f79d1a844c3f6bf0cea61e0d5612a42ce56da9c03f01df538685365efb0"},
+ "esip": {:hex, :esip, "1.0.53", "482786a79d8f5b0aefc60ca68b8c6c7f074f6ede2653705e4206c6779edc5a56", [:rebar3], [{:fast_tls, "1.1.20", [hex: :fast_tls, repo: "hexpm", optional: false]}, {:p1_utils, "1.0.26", [hex: :p1_utils, repo: "hexpm", optional: false]}, {:stun, "1.2.13", [hex: :stun, repo: "hexpm", optional: false]}], "hexpm", "a9a1bd5ea52b0e2d1b1d1fec5fb7f0301e90610db1ecfeb205a18cc4e1cb3fc7"},
+ "ex_doc": {:hex, :ex_doc, "0.34.1", "9751a0419bc15bc7580c73fde506b17b07f6402a1e5243be9e0f05a68c723368", [:mix], [{:earmark_parser, "~> 1.4.39", [hex: :earmark_parser, repo: "hexpm", optional: false]}, {:makeup_c, ">= 0.1.0", [hex: :makeup_c, repo: "hexpm", optional: true]}, {:makeup_elixir, "~> 0.14 or ~> 1.0", [hex: :makeup_elixir, repo: "hexpm", optional: false]}, {:makeup_erlang, "~> 0.1 or ~> 1.0", [hex: :makeup_erlang, repo: "hexpm", optional: false]}, {:makeup_html, ">= 0.1.0", [hex: :makeup_html, repo: "hexpm", optional: true]}], "hexpm", "d441f1a86a235f59088978eff870de2e815e290e44a8bd976fe5d64470a4c9d2"},
"exsync": {:hex, :exsync, "0.4.1", "0a14fe4bfcb80a509d8a0856be3dd070fffe619b9ba90fec13c58b316c176594", [:mix], [{:file_system, "~> 0.2 or ~> 1.0", [hex: :file_system, repo: "hexpm", optional: false]}], "hexpm", "cefb22aa805ec97ffc5b75a4e1dc54bcaf781e8b32564bf74abbe5803d1b5178"},
- "ezlib": {:hex, :ezlib, "1.0.12", "ffe906ba10d03aaee7977e1e0e81d9ffc3bb8b47fb9cd8e2e453507a2e56221f", [:rebar3], [{:p1_utils, "1.0.25", [hex: :p1_utils, repo: "hexpm", optional: false]}], "hexpm", "30e94355fb42260aab6e12582cb0c56bf233515e655c8aeaf48760e7561e4ebb"},
- "fast_tls": {:hex, :fast_tls, "1.1.19", "f52731a4b35259fa06cf23e2a0732920ad9efce7c3d68377f129a474998747bb", [:rebar3], [{:p1_utils, "1.0.25", [hex: :p1_utils, repo: "hexpm", optional: false]}], "hexpm", "db34322c8782d4c5139ccb80709d8ec8c38089b44262edd0c2f660ac495bd389"},
- "fast_xml": {:hex, :fast_xml, "1.1.51", "a7f8c6942591632309099386d5c339c89997ac2bbdd1216f6c196dee6d7828a9", [:rebar3], [{:p1_utils, "1.0.25", [hex: :p1_utils, repo: "hexpm", optional: false]}], "hexpm", "7fce41b7d1a4ba438a2d7a088dabe74a3ca0739f1af2abcb77e62daf43e0409a"},
- "fast_yaml": {:hex, :fast_yaml, "1.0.36", "65413a34a570fd4e205a460ba602e4ee7a682f35c22d2e1c839025dbf515105c", [:rebar3], [{:p1_utils, "1.0.25", [hex: :p1_utils, repo: "hexpm", optional: false]}], "hexpm", "1abe8f758fc2a86b08edff80bbc687cfd41ebc1412cfec0ef4a0acfcd032052f"},
+ "ezlib": {:hex, :ezlib, "1.0.13", "3c7f62862850a241159c10b218ecf580bce54d0890601b65144dacc2633be2b0", [:rebar3], [{:p1_utils, "1.0.26", [hex: :p1_utils, repo: "hexpm", optional: false]}], "hexpm", "9ee62ab3f8ed55a0fd11a9569fcb8e458683f95575417272192b069f092abfbb"},
+ "fast_tls": {:hex, :fast_tls, "1.1.20", "d6f12d9ae4fe57e880b144b912e735af89343a8463d39b7eb4be3f6ca6163879", [:rebar3], [{:p1_utils, "1.0.26", [hex: :p1_utils, repo: "hexpm", optional: false]}], "hexpm", "d09a12472a56a34c5eecaaed33ea283f00fcdf9dc2e8282ecbaae827f13fc21b"},
+ "fast_xml": {:hex, :fast_xml, "1.1.52", "0289daafbf1190b0e53b444d4885cccf41e4b05768d4b3acc76dd8d143668e10", [:rebar3], [{:p1_utils, "1.0.26", [hex: :p1_utils, repo: "hexpm", optional: false]}], "hexpm", "795192390e06d2b65016a6990bbfa5727f4a26d2914808b1c3c9a32eedcd1bfd"},
+ "fast_yaml": {:hex, :fast_yaml, "1.0.37", "f71d472fbf787ccd161b914d1eb486116a0f4f2e835337a378fbd31b59d2e74b", [:rebar3], [{:p1_utils, "1.0.26", [hex: :p1_utils, repo: "hexpm", optional: false]}], "hexpm", "8de868721bf7e2172414f7d3148ede0f3c922b496455cd625dd5c4429515a769"},
"file_system": {:hex, :file_system, "1.0.0", "b689cc7dcee665f774de94b5a832e578bd7963c8e637ef940cd44327db7de2cd", [:mix], [], "hexpm", "6752092d66aec5a10e662aefeed8ddb9531d79db0bc145bb8c40325ca1d8536d"},
"idna": {:hex, :idna, "6.1.1", "8a63070e9f7d0c62eb9d9fcb360a7de382448200fbbd1b106cc96d3d8099df8d", [:rebar3], [{:unicode_util_compat, "~> 0.7.0", [hex: :unicode_util_compat, repo: "hexpm", optional: false]}], "hexpm", "92376eb7894412ed19ac475e4a86f7b413c1b9fbb5bd16dccd57934157944cea"},
- "jiffy": {:hex, :jiffy, "1.1.1", "aca10f47aa91697bf24ab9582c74e00e8e95474c7ef9f76d4f1a338d0f5de21b", [:rebar3], [], "hexpm", "62e1f0581c3c19c33a725c781dfa88410d8bff1bbafc3885a2552286b4785c4c"},
+ "jiffy": {:hex, :jiffy, "1.1.2", "a9b6c9a7ec268e7cf493d028f0a4c9144f59ccb878b1afe42841597800840a1b", [:rebar3], [], "hexpm", "bb61bc42a720bbd33cb09a410e48bb79a61012c74cb8b3e75f26d988485cf381"},
"jose": {:hex, :jose, "1.11.10", "a903f5227417bd2a08c8a00a0cbcc458118be84480955e8d251297a425723f83", [:mix, :rebar3], [], "hexpm", "0d6cd36ff8ba174db29148fc112b5842186b68a90ce9fc2b3ec3afe76593e614"},
"luerl": {:hex, :luerl, "1.2.0", "60f05f4240f0e7c148ddb79b67b8ff972734aad237aa74c83d0748b8214c8ef0", [:rebar3], [], "hexpm", "9cafd4f6094ff0f5a9d278fd81d60d3e026c820bdfb6cacd4b1bd909f21b525d"},
"makeup": {:hex, :makeup, "1.1.2", "9ba8837913bdf757787e71c1581c21f9d2455f4dd04cfca785c70bbfff1a76a3", [:mix], [{:nimble_parsec, "~> 1.2.2 or ~> 1.3", [hex: :nimble_parsec, repo: "hexpm", optional: false]}], "hexpm", "cce1566b81fbcbd21eca8ffe808f33b221f9eee2cbc7a1706fc3da9ff18e6cac"},
"makeup_elixir": {:hex, :makeup_elixir, "0.16.2", "627e84b8e8bf22e60a2579dad15067c755531fea049ae26ef1020cad58fe9578", [:mix], [{:makeup, "~> 1.0", [hex: :makeup, repo: "hexpm", optional: false]}, {:nimble_parsec, "~> 1.2.3 or ~> 1.3", [hex: :nimble_parsec, repo: "hexpm", optional: false]}], "hexpm", "41193978704763f6bbe6cc2758b84909e62984c7752b3784bd3c218bb341706b"},
"makeup_erlang": {:hex, :makeup_erlang, "1.0.0", "6f0eff9c9c489f26b69b61440bf1b238d95badae49adac77973cbacae87e3c2e", [:mix], [{:makeup, "~> 1.0", [hex: :makeup, repo: "hexpm", optional: false]}], "hexpm", "ea7a9307de9d1548d2a72d299058d1fd2339e3d398560a0e46c27dab4891e4d2"},
- "mqtree": {:hex, :mqtree, "1.0.16", "f8f8b4971e4ca94313ba9bcaaa1aa1077daaba5e3fd3468ffb491420a4cc3593", [:rebar3], [{:p1_utils, "1.0.25", [hex: :p1_utils, repo: "hexpm", optional: false]}], "hexpm", "c87d1c95575db65af29b795c9daa3bed43f5c1bf84072a74469659bcf53594eb"},
+ "mqtree": {:hex, :mqtree, "1.0.17", "82f54b8f2d22b4445db1d6cccb7fe9ead049d61410c29e32475f3ceb3ee62a89", [:rebar3], [{:p1_utils, "1.0.26", [hex: :p1_utils, repo: "hexpm", optional: false]}], "hexpm", "5fe8b7cf8fbc4783d0fceb94654ac2bbf3242a58cd0397d249ded8ae021be2a3"},
"nimble_parsec": {:hex, :nimble_parsec, "1.4.0", "51f9b613ea62cfa97b25ccc2c1b4216e81df970acd8e16e8d1bdc58fef21370d", [:mix], [], "hexpm", "9c565862810fb383e9838c1dd2d7d2c437b3d13b267414ba6af33e50d2d1cf28"},
- "p1_acme": {:git, "https://github.com/processone/p1_acme", "176b4a8c67627c3229fbea3c05d82a5d567e6e49", [branch: "master"]},
- "p1_mysql": {:git, "https://github.com/processone/p1_mysql", "0dccb755a60cda61d41e7b092b344d38d1ebc802", []},
+ "p1_acme": {:hex, :p1_acme, "1.0.23", "791aef0f79dc7f768b228808250c349fa9ce585cd8779da50ca93106eb3394d0", [:rebar3], [{:base64url, "~> 1.0", [hex: :base64url, repo: "hexpm", optional: false]}, {:idna, "~> 6.0", [hex: :idna, repo: "hexpm", optional: false]}, {:jiffy, "~> 1.1.1", [hex: :jiffy, repo: "hexpm", optional: false]}, {:jose, "~> 1.11.10", [hex: :jose, repo: "hexpm", optional: false]}, {:yconf, "~> 1.0.15", [hex: :yconf, repo: "hexpm", optional: false]}], "hexpm", "8ce196f26e3d22ea10b7809122950465878c127f80767e325207aed7e8d0dd59"},
+ "p1_mysql": {:hex, :p1_mysql, "1.0.24", "0ed1e098c5a4525032448c65a2715f30980aae725615a4d255fd25f26bb22507", [:rebar3], [], "hexpm", "f058865f64257f507a2c6a5aff369b1375dbcb30b3d4258dad4f1b3eaffb655f"},
"p1_oauth2": {:hex, :p1_oauth2, "0.6.14", "1c5f82535574de87e2059695ac4b91f8f9aebacbc1c80287dae6f02552d47aea", [:rebar3], [], "hexpm", "1fd3ac474e43722d9d5a87c6df8d36f698ed87af7bb81cbbb66361451d99ae8f"},
- "p1_pgsql": {:git, "https://github.com/processone/p1_pgsql", "fe0bb2a2a2ae21cd9fc48b81520cfce508520a56", []},
- "p1_utils": {:hex, :p1_utils, "1.0.25", "2d39b5015a567bbd2cc7033eeb93a7c60d8c84efe1ef69a3473faa07fa268187", [:rebar3], [], "hexpm", "9219214428f2c6e5d3187ff8eb9a8783695c2427420be9a259840e07ada32847"},
- "pkix": {:git, "https://github.com/processone/pkix", "03be27c7168449bdfeb8c5b6cc0f800f71f8cfe9", []},
- "sqlite3": {:hex, :sqlite3, "1.1.14", "f9ea0cff8540865fdfdb7e24eef34dc46677364b1c070896e99b5bf08c8a7fd7", [:rebar3], [], "hexpm", "85054b6ca297343c159ed6794a473ff2c8eeabd854b6fe02f711c0bfd373ce86"},
- "stringprep": {:hex, :stringprep, "1.0.29", "02f23e8c3a219a3dfe40a22e908bece3a2f68af0ff599ea8a7b714ecb21e62ee", [:rebar3], [{:p1_utils, "1.0.25", [hex: :p1_utils, repo: "hexpm", optional: false]}], "hexpm", "928eba304c3006eb1512110ebd7b87db163b00859a09375a1e4466152c6c462a"},
- "stun": {:hex, :stun, "1.2.12", "a65df67a8aaaecb6a94d687977b2e9f161820819910cb97bbe26a3525356525b", [:rebar3], [{:fast_tls, "1.1.19", [hex: :fast_tls, repo: "hexpm", optional: false]}, {:p1_utils, "1.0.25", [hex: :p1_utils, repo: "hexpm", optional: false]}], "hexpm", "a2055032b6d338d0454142004bcb12fafb0c64ab1f273f1d0c6923ebbc8ede40"},
+ "p1_pgsql": {:hex, :p1_pgsql, "1.1.26", "d3c3748c3638a1d7db5644e4fc63a6da7614b3009e172ef92a01d0217c3bec65", [:rebar3], [{:xmpp, "~> 1.8.0", [hex: :xmpp, repo: "hexpm", optional: false]}], "hexpm", "85f230db530333106b8a1f9e5d5af032e6c3dd23b432e03d68e9d29013a6dcfc"},
+ "p1_utils": {:hex, :p1_utils, "1.0.26", "67b0c4ac9fa3ba3ef563b31aa111b0a004439a37fac85e027f1c3617e1c7ec6c", [:rebar3], [], "hexpm", "d0379e8c1156b98bd64f8129c1de022fcca4f2fdb7486ce73bf0ed2c3376b04c"},
+ "pkix": {:hex, :pkix, "1.0.10", "d3bfadf7b7cfe2a3636f1b256c9cce5f646a07ce31e57ee527668502850765a0", [:rebar3], [], "hexpm", "e02164f83094cb124c41b1ab28988a615d54b9adc38575f00f19a597a3ac5d0e"},
+ "sqlite3": {:hex, :sqlite3, "1.1.15", "e819defd280145c328457d7af897d2e45e8e5270e18812ee30b607c99cdd21af", [:rebar3], [], "hexpm", "3c0ba4e13322c2ad49de4e2ddd28311366adde54beae8dba9d9e3888f69d2857"},
+ "stringprep": {:hex, :stringprep, "1.0.30", "46cf0ff631b3e7328f61f20b454d59428d87738f25d709798b5dcbb9b83c23f1", [:rebar3], [{:p1_utils, "1.0.26", [hex: :p1_utils, repo: "hexpm", optional: false]}], "hexpm", "f6fc9b3384a03877830f89b2f38580caf3f4a27448a4a333d6a8c3975c220b9a"},
+ "stun": {:hex, :stun, "1.2.13", "c3e855f10f6b0c3ac150bce3d6c96c04a85207a3a5c7a7207876d8b36db2b0a4", [:rebar3], [{:fast_tls, "1.1.20", [hex: :fast_tls, repo: "hexpm", optional: false]}, {:p1_utils, "1.0.26", [hex: :p1_utils, repo: "hexpm", optional: false]}], "hexpm", "9cf4191491a60573ed6197e636530af1d25c9b064845aabed0c02f780d33ea3f"},
"unicode_util_compat": {:hex, :unicode_util_compat, "0.7.0", "bc84380c9ab48177092f43ac89e4dfa2c6d62b40b8bd132b1059ecc7232f9a78", [:rebar3], [], "hexpm", "25eee6d67df61960cf6a794239566599b09e17e668d3700247bc498638152521"},
- "xmpp": {:git, "https://github.com/processone/xmpp", "a1fb778bd385d832f913e564558152ea507dac37", []},
- "yconf": {:hex, :yconf, "1.0.15", "e22998b3d7728270bdd06162a9515bd142b14fae8927cbdbd3ef639c32aa6f7a", [:rebar3], [{:fast_yaml, "1.0.36", [hex: :fast_yaml, repo: "hexpm", optional: false]}], "hexpm", "7ff2ab24d3c9833842716b9aaaa01a8f96641a7695cbb701b03445c4def01117"},
+ "xmpp": {:hex, :xmpp, "1.8.2", "7c26fae7ca83b307bab99624595dce706d427a17eed9c6305980550f8120a3a3", [:rebar3], [{:ezlib, "~> 1.0.12", [hex: :ezlib, repo: "hexpm", optional: false]}, {:fast_tls, "~> 1.1.19", [hex: :fast_tls, repo: "hexpm", optional: false]}, {:fast_xml, "~> 1.1.51", [hex: :fast_xml, repo: "hexpm", optional: false]}, {:idna, "~> 6.0", [hex: :idna, repo: "hexpm", optional: false]}, {:p1_utils, "~> 1.0.25", [hex: :p1_utils, repo: "hexpm", optional: false]}, {:stringprep, "~> 1.0.29", [hex: :stringprep, repo: "hexpm", optional: false]}], "hexpm", "53a9f85ad44103a358dc173225bc96d08076d4e78506f87d838337b2fa3b381f"},
+ "yconf": {:hex, :yconf, "1.0.16", "d59521d66ff89f219411b6e9277cd6feec7cc6fce11554e67de02a8d0a470479", [:rebar3], [{:fast_yaml, "1.0.37", [hex: :fast_yaml, repo: "hexpm", optional: false]}], "hexpm", "e947813273f38711c7b2e5a8e4acc9a51c7bbe854f744a345f60300b38586c89"},
}
diff --git a/rebar.config b/rebar.config
index 7f7b77622c5..bbb02af5693 100644
--- a/rebar.config
+++ b/rebar.config
@@ -26,19 +26,19 @@
{if_version_below, "24",
{base64url, "~> 1.0", {git, "https://github.com/dvv/base64url", {tag, "1.0.1"}}}
}},
- {cache_tab, "~> 1.0.30", {git, "https://github.com/processone/cache_tab", {tag, "1.0.30"}}},
- {eimp, "~> 1.0.22", {git, "https://github.com/processone/eimp", {tag, "1.0.22"}}},
+ {cache_tab, "~> 1.0.30", {git, "https://github.com/processone/cache_tab", {tag, "1.0.31"}}},
+ {eimp, "~> 1.0.22", {git, "https://github.com/processone/eimp", {tag, "1.0.23"}}},
{if_var_true, pam,
{epam, "~> 1.0.14", {git, "https://github.com/processone/epam", {tag, "1.0.14"}}}},
{if_var_true, redis,
{eredis, "~> 1.2.0", {git, "https://github.com/wooga/eredis", {tag, "v1.2.0"}}}},
{if_var_true, sip,
- {esip, "~> 1.0.52", {git, "https://github.com/processone/esip", {tag, "1.0.52"}}}},
+ {esip, "~> 1.0.52", {git, "https://github.com/processone/esip", {tag, "1.0.53"}}}},
{if_var_true, zlib,
- {ezlib, "~> 1.0.12", {git, "https://github.com/processone/ezlib", {tag, "1.0.12"}}}},
- {fast_tls, "~> 1.1.19", {git, "https://github.com/processone/fast_tls", {tag, "1.1.19"}}},
- {fast_xml, "~> 1.1.51", {git, "https://github.com/processone/fast_xml", {tag, "1.1.51"}}},
- {fast_yaml, "~> 1.0.36", {git, "https://github.com/processone/fast_yaml", {tag, "1.0.36"}}},
+ {ezlib, "~> 1.0.12", {git, "https://github.com/processone/ezlib", {tag, "1.0.13"}}}},
+ {fast_tls, "~> 1.1.19", {git, "https://github.com/processone/fast_tls", {tag, "1.1.20"}}},
+ {fast_xml, "~> 1.1.51", {git, "https://github.com/processone/fast_xml", {tag, "1.1.52"}}},
+ {fast_yaml, "~> 1.0.36", {git, "https://github.com/processone/fast_yaml", {tag, "1.0.37"}}},
{idna, "~> 6.0", {git, "https://github.com/benoitc/erlang-idna", {tag, "6.0.0"}}},
{if_version_below, "27",
{jiffy, "~> 1.1.1", {git, "https://github.com/davisp/jiffy", {tag, "1.1.1"}}}
@@ -55,22 +55,22 @@
{luerl, "1.0.0", {git, "https://github.com/rvirding/luerl", {tag, "1.0"}}},
{luerl, "~> 1.2.0", {git, "https://github.com/rvirding/luerl", {tag, "1.2"}}}
}},
- {mqtree, "~> 1.0.16", {git, "https://github.com/processone/mqtree", {tag, "1.0.16"}}},
- {p1_acme, ".*", {git, "https://github.com/processone/p1_acme", {branch, "master"}}},
+ {mqtree, "~> 1.0.16", {git, "https://github.com/processone/mqtree", {tag, "1.0.17"}}},
+ {p1_acme, "~> 1.0.23", {git, "https://github.com/processone/p1_acme", {tag, "1.0.23"}}},
{if_var_true, mysql,
- {p1_mysql, ".*", {git, "https://github.com/processone/p1_mysql", {branch, "master"}}}},
+ {p1_mysql, "~> 1.0.24", {git, "https://github.com/processone/p1_mysql", {tag, "1.0.24"}}}},
{p1_oauth2, "~> 0.6.14", {git, "https://github.com/processone/p1_oauth2", {tag, "0.6.14"}}},
{if_var_true, pgsql,
- {p1_pgsql, ".*", {git, "https://github.com/processone/p1_pgsql", {branch, "master"}}}},
- {p1_utils, "~> 1.0.25", {git, "https://github.com/processone/p1_utils", {tag, "1.0.25"}}},
- {pkix, ".*", {git, "https://github.com/processone/pkix", {branch, "master"}}},
+ {p1_pgsql, "~> 1.1.26", {git, "https://github.com/processone/p1_pgsql", {tag, "1.1.26"}}}},
+ {p1_utils, "~> 1.0.25", {git, "https://github.com/processone/p1_utils", {tag, "1.0.26"}}},
+ {pkix, "~> 1.0.10", {git, "https://github.com/processone/pkix", {tag, "1.0.10"}}},
{if_var_true, sqlite,
- {sqlite3, "~> 1.1.14", {git, "https://github.com/processone/erlang-sqlite3", {tag, "1.1.14"}}}},
- {stringprep, "~> 1.0.29", {git, "https://github.com/processone/stringprep", {tag, "1.0.29"}}},
+ {sqlite3, "~> 1.1.14", {git, "https://github.com/processone/erlang-sqlite3", {tag, "1.1.15"}}}},
+ {stringprep, "~> 1.0.29", {git, "https://github.com/processone/stringprep", {tag, "1.0.30"}}},
{if_var_true, stun,
- {stun, "~> 1.2.12", {git, "https://github.com/processone/stun", {tag, "1.2.12"}}}},
- {xmpp, ".*", {git, "https://github.com/processone/xmpp", {branch, "master"}}},
- {yconf, "~> 1.0.15", {git, "https://github.com/processone/yconf", {tag, "1.0.15"}}}
+ {stun, "~> 1.2.12", {git, "https://github.com/processone/stun", {tag, "1.2.13"}}}},
+ {xmpp, "~> 1.8.2", {git, "https://github.com/processone/xmpp", {tag, "1.8.2"}}},
+ {yconf, "~> 1.0.15", {git, "https://github.com/processone/yconf", {tag, "1.0.16"}}}
]}.
{gitonly_deps, [ejabberd_po]}.
diff --git a/src/ejabberd_admin.erl b/src/ejabberd_admin.erl
index eb33d2e0f9b..37d5e622fd1 100644
--- a/src/ejabberd_admin.erl
+++ b/src/ejabberd_admin.erl
@@ -251,7 +251,7 @@ get_commands_spec() ->
#ejabberd_commands{name = join_cluster, tags = [cluster],
desc = "Join our local node into the cluster handled by Node",
- note = "improved in 24.xx",
+ note = "improved in 24.06",
module = ?MODULE, function = join_cluster,
args_desc = ["Nodename of the node to join"],
args_example = [<<"ejabberd1@machine7">>],
@@ -259,7 +259,7 @@ get_commands_spec() ->
result = {res, restuple}},
#ejabberd_commands{name = join_cluster_here, tags = [cluster],
desc = "Join a remote Node here, into our cluster",
- note = "added in 24.xx",
+ note = "added in 24.06",
module = ?MODULE, function = join_cluster_here,
args_desc = ["Nodename of the node to join here"],
args_example = [<<"ejabberd1@machine7">>],
@@ -286,7 +286,7 @@ get_commands_spec() ->
result = {nodes, {list, {node, atom}}}},
#ejabberd_commands{name = list_cluster_detailed, tags = [cluster],
desc = "List nodes (both running and known) and some stats",
- note = "added in 24.xx",
+ note = "added in 24.06",
module = ?MODULE, function = list_cluster_detailed,
args = [],
result_example = [{'ejabberd@localhost', "true",
@@ -427,7 +427,7 @@ get_commands_spec() ->
result = {res, rescode}},
#ejabberd_commands{name = get_master, tags = [cluster],
desc = "Get master node of the clustered Mnesia tables",
- note = "added in 24.xx",
+ note = "added in 24.06",
longdesc = "If there is no master, returns `none`.",
module = ?MODULE, function = get_master,
result = {nodename, atom}},
diff --git a/src/ejabberd_options_doc.erl b/src/ejabberd_options_doc.erl
index bd80461c028..061b1dccb1c 100644
--- a/src/ejabberd_options_doc.erl
+++ b/src/ejabberd_options_doc.erl
@@ -923,9 +923,11 @@ doc() ->
[binary:part(ejabberd_config:version(), {0,5})]}}},
{update_sql_schema,
#{value => "true | false",
- note => "added in 23.10",
+ note => "updated in 24.06",
desc =>
?T("Allow ejabberd to update SQL schema. "
+ "This option was added in ejabberd 23.10, "
+ "and enabled by default since 24.06. "
"The default value is 'true'.")}},
{oauth_access,
#{value => ?T("AccessName"),
@@ -1379,7 +1381,7 @@ doc() ->
"or 'ram' if the latter is not set.")}},
{sql_server,
#{value => "Host | IP Address | ODBC Connection String | Unix Socket Path",
- note => "improved in 24.xx",
+ note => "improved in 24.06",
desc =>
?T("The hostname or IP address of the SQL server. For _`sql_type`_ "
"'mssql' or 'odbc' this can also be an ODBC connection string. "
diff --git a/src/ejabberd_sm.erl b/src/ejabberd_sm.erl
index 93973dba187..91fcc5896cc 100644
--- a/src/ejabberd_sm.erl
+++ b/src/ejabberd_sm.erl
@@ -1054,7 +1054,7 @@ get_commands_spec() ->
desc = "Disconnect user's active sessions",
module = ?MODULE, function = kick_user_restuple,
version = 2,
- note = "modified in 24.xx",
+ note = "modified in 24.06",
args = [{user, binary}, {host, binary}],
args_desc = ["User name", "Server name"],
args_example = [<<"user1">>, <<"example.com">>],
diff --git a/src/mod_admin_extra.erl b/src/mod_admin_extra.erl
index 1bfbeb4d1a6..7a592462c01 100644
--- a/src/mod_admin_extra.erl
+++ b/src/mod_admin_extra.erl
@@ -279,7 +279,7 @@ get_commands_spec() ->
"and `_unban_account`_ API.",
module = ?MODULE, function = ban_account_v2,
version = 2,
- note = "improved in 24.xx",
+ note = "improved in 24.06",
args = [{user, binary}, {host, binary}, {reason, binary}],
args_example = [<<"attacker">>, <<"myserver.com">>, <<"Spaming other users">>],
args_desc = ["User name to ban", "Server name",
@@ -291,7 +291,7 @@ get_commands_spec() ->
longdesc = "Check _`ban_account`_ API.",
module = ?MODULE, function = get_ban_details,
version = 2,
- note = "added in 24.xx",
+ note = "added in 24.06",
args = [{user, binary}, {host, binary}],
args_example = [<<"attacker">>, <<"myserver.com">>],
args_desc = ["User name to unban", "Server name"],
@@ -309,7 +309,7 @@ get_commands_spec() ->
longdesc = "Check _`ban_account`_ API.",
module = ?MODULE, function = unban_account,
version = 2,
- note = "added in 24.xx",
+ note = "added in 24.06",
args = [{user, binary}, {host, binary}],
args_example = [<<"gooduser">>, <<"myserver.com">>],
args_desc = ["User name to unban", "Server name"],
@@ -692,7 +692,7 @@ get_commands_spec() ->
]}}}}},
#ejabberd_commands{name = get_roster_count, tags = [roster],
desc = "Get number of contacts in a local user roster",
- note = "added in 24.xx",
+ note = "added in 24.06",
policy = user,
module = ?MODULE, function = get_roster_count,
args = [],
@@ -810,7 +810,7 @@ get_commands_spec() ->
#ejabberd_commands{name = srg_add, tags = [shared_roster_group],
desc = "Add/Create a Shared Roster Group (without details)",
module = ?MODULE, function = srg_add,
- note = "added in 24.xx",
+ note = "added in 24.06",
args = [{group, binary}, {host, binary}],
args_example = [<<"group3">>, <<"myserver.com">>],
args_desc = ["Group identifier", "Group server name"],
@@ -843,7 +843,7 @@ get_commands_spec() ->
#ejabberd_commands{name = srg_set_info, tags = [shared_roster_group],
desc = "Set info of a Shared Roster Group",
module = ?MODULE, function = srg_set_info,
- note = "added in 24.xx",
+ note = "added in 24.06",
args = [{group, binary}, {host, binary}, {key, binary}, {value, binary}],
args_example = [<<"group3">>, <<"myserver.com">>, <<"label">>, <<"Family">>],
args_desc = ["Group identifier", "Group server name",
@@ -854,7 +854,7 @@ get_commands_spec() ->
#ejabberd_commands{name = srg_get_displayed, tags = [shared_roster_group],
desc = "Get displayed groups of a Shared Roster Group",
module = ?MODULE, function = srg_get_displayed,
- note = "added in 24.xx",
+ note = "added in 24.06",
args = [{group, binary}, {host, binary}],
args_example = [<<"group3">>, <<"myserver.com">>],
args_desc = ["Group identifier", "Group server name"],
@@ -864,7 +864,7 @@ get_commands_spec() ->
#ejabberd_commands{name = srg_add_displayed, tags = [shared_roster_group],
desc = "Add a group to displayed_groups of a Shared Roster Group",
module = ?MODULE, function = srg_add_displayed,
- note = "added in 24.xx",
+ note = "added in 24.06",
args = [{group, binary}, {host, binary},
{add, binary}],
args_example = [<<"group3">>, <<"myserver.com">>, <<"group1">>],
@@ -874,7 +874,7 @@ get_commands_spec() ->
#ejabberd_commands{name = srg_del_displayed, tags = [shared_roster_group],
desc = "Delete a group from displayed_groups of a Shared Roster Group",
module = ?MODULE, function = srg_del_displayed,
- note = "added in 24.xx",
+ note = "added in 24.06",
args = [{group, binary}, {host, binary},
{del, binary}],
args_example = [<<"group3">>, <<"myserver.com">>, <<"group1">>],
diff --git a/src/mod_mam.erl b/src/mod_mam.erl
index 57a6d94c915..77baecac3dd 100644
--- a/src/mod_mam.erl
+++ b/src/mod_mam.erl
@@ -28,7 +28,7 @@
-protocol({xep, 313, '0.6.1', '15.06', "", ""}).
-protocol({xep, 334, '0.2'}).
-protocol({xep, 359, '0.5.0'}).
--protocol({xep, 425, '0.3.0', '24.xx', "", ""}).
+-protocol({xep, 425, '0.3.0', '24.06', "", ""}).
-protocol({xep, 441, '0.2.0'}).
-behaviour(gen_mod).
diff --git a/src/mod_muc_admin.erl b/src/mod_muc_admin.erl
index b9e8400224d..be397fbd895 100644
--- a/src/mod_muc_admin.erl
+++ b/src/mod_muc_admin.erl
@@ -247,7 +247,7 @@ get_commands_spec() ->
longdesc = "The MUC service argument can be `global` to get all hosts.",
module = ?MODULE, function = rooms_empty_destroy_restuple,
version = 2,
- note = "modified in 24.xx",
+ note = "modified in 24.06",
args_desc = ["MUC service, or `global` for all"],
args_example = ["conference.example.com"],
result_desc = "List of empty rooms that have been destroyed",