diff --git a/src/ejabberd_admin.erl b/src/ejabberd_admin.erl index e482960d3..d8b1e2d1c 100644 --- a/src/ejabberd_admin.erl +++ b/src/ejabberd_admin.erl @@ -131,7 +131,7 @@ get_commands_spec() -> "only on log files generated by some modules.\n" "This can be useful when an external tool is " "used for log rotation. See " - "[Log Files](https://docs.ejabberd.im/admin/guide/troubleshooting/#log-files).", + "_`../../admin/guide/troubleshooting.md#log-files|Log Files`_.", policy = admin, module = ?MODULE, function = reopen_log, args = [], result = {res, rescode}}, diff --git a/src/ejabberd_oauth.erl b/src/ejabberd_oauth.erl index 08c1f0f7f..026597f00 100644 --- a/src/ejabberd_oauth.erl +++ b/src/ejabberd_oauth.erl @@ -81,7 +81,7 @@ get_commands_spec() -> [ #ejabberd_commands{name = oauth_issue_token, tags = [oauth], - desc = "Issue an [OAuth](https://docs.ejabberd.im/developer/ejabberd-api/oauth/) token for the given jid", + desc = "Issue an _`oauth.md|OAuth`_ token for the given jid", module = ?MODULE, function = oauth_issue_token, args = [{jid, string},{ttl, integer}, {scopes, string}], policy = restricted, @@ -92,7 +92,7 @@ get_commands_spec() -> result = {result, {tuple, [{token, string}, {scopes, string}, {expires_in, string}]}} }, #ejabberd_commands{name = oauth_issue_token, tags = [oauth], - desc = "Issue an [OAuth](https://docs.ejabberd.im/developer/ejabberd-api/oauth/) token for the given jid", + desc = "Issue an _`oauth.md|OAuth`_ optionredir token for the given jid", module = ?MODULE, function = oauth_issue_token, version = 1, note = "updated in 24.02", @@ -105,7 +105,7 @@ get_commands_spec() -> result = {result, {tuple, [{token, string}, {scopes, {list, {scope, string}}}, {expires_in, string}]}} }, #ejabberd_commands{name = oauth_list_tokens, tags = [oauth], - desc = "List [OAuth](https://docs.ejabberd.im/developer/ejabberd-api/oauth/) tokens, user, scope, and seconds to expire (only Mnesia)", + desc = "List _`oauth.md|OAuth`_ tokens, user, scope, and seconds to expire (only Mnesia)", longdesc = "List OAuth tokens, their user and scope, and how many seconds remain until expirity", module = ?MODULE, function = oauth_list_tokens, args = [], @@ -113,7 +113,7 @@ get_commands_spec() -> result = {tokens, {list, {token, {tuple, [{token, string}, {user, string}, {scope, string}, {expires_in, string}]}}}} }, #ejabberd_commands{name = oauth_revoke_token, tags = [oauth], - desc = "Revoke authorization for an [OAuth](https://docs.ejabberd.im/developer/ejabberd-api/oauth/) token", + desc = "Revoke authorization for an _`oauth.md|OAuth`_ token", note = "changed in 22.05", module = ?MODULE, function = oauth_revoke_token, args = [{token, binary}], @@ -122,7 +122,7 @@ get_commands_spec() -> result_desc = "Result code" }, #ejabberd_commands{name = oauth_add_client_password, tags = [oauth], - desc = "Add [OAuth](https://docs.ejabberd.im/developer/ejabberd-api/oauth/) client_id with password grant type", + desc = "Add _`oauth.md|OAuth`_ client_id with password grant type", module = ?MODULE, function = oauth_add_client_password, args = [{client_id, binary}, {client_name, binary}, @@ -131,7 +131,7 @@ get_commands_spec() -> result = {res, restuple} }, #ejabberd_commands{name = oauth_add_client_implicit, tags = [oauth], - desc = "Add [OAuth](https://docs.ejabberd.im/developer/ejabberd-api/oauth/) client_id with implicit grant type", + desc = "Add _`oauth.md|OAuth`_ client_id with implicit grant type", module = ?MODULE, function = oauth_add_client_implicit, args = [{client_id, binary}, {client_name, binary}, @@ -140,7 +140,7 @@ get_commands_spec() -> result = {res, restuple} }, #ejabberd_commands{name = oauth_remove_client, tags = [oauth], - desc = "Remove [OAuth](https://docs.ejabberd.im/developer/ejabberd-api/oauth/) client_id", + desc = "Remove _`oauth.md|OAuth`_ client_id", module = ?MODULE, function = oauth_remove_client, args = [{client_id, binary}], policy = restricted, diff --git a/src/ejabberd_options_doc.erl b/src/ejabberd_options_doc.erl index b005111a4..5bb1b3b9b 100644 --- a/src/ejabberd_options_doc.erl +++ b/src/ejabberd_options_doc.erl @@ -37,13 +37,13 @@ doc() -> #{value => "[Options, ...]", desc => ?T("The option for listeners configuration. See the " - "http://../listen/[Listen Modules] section " + "_`listen.md|Listen Modules`_ section " "for details.")}}, {modules, #{value => "{Module: Options}", desc => ?T("The option for modules configuration. See " - "http://../modules/[Modules] section " + "_`modules.md|Modules`_ section " "for details.")}}, {loglevel, #{value => @@ -221,7 +221,7 @@ doc() -> #{value => "{AccessName: {allow|deny: ACLRules|ACLName}}", desc => ?T("This option defines " - "http://../basic/#access-rules[Access Rules]. " + "_`basic.md#access-rules|Access Rules`_. " "Each access rule is " "assigned a name that can be referenced from other parts " "of the configuration file (mostly from 'access' options of " @@ -255,7 +255,7 @@ doc() -> {acme, #{value => ?T("Options"), desc => - ?T("http://../basic/#acme[ACME] configuration, to automatically " + ?T("_`basic.md#acme|ACME`_ 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 " @@ -303,8 +303,8 @@ doc() -> #{value => "true | false", desc => ?T("Whether to allow installation of third-party modules or not. " - "See https://docs.ejabberd.im/developer/extending-ejabberd/modules/#ejabberd-contrib" - "[ejabberd-contrib] documentation section. " + "See _`../../developer/extending-ejabberd/modules.md#ejabberd-contrib|ejabberd-contrib`_ " + "documentation section. " "The default value is 'true'.")}}, {allow_multiple_connections, #{value => "true | false", @@ -328,8 +328,7 @@ doc() -> desc => ?T("Define the permissions for API access. Please consult the " "ejabberd Docs web -> For Developers -> ejabberd ReST API -> " - "https://docs.ejabberd.im/developer/ejabberd-api/permissions/" - "[API Permissions].")}}, + "_`../../developer/ejabberd-api/permissions.md|API Permissions`_.")}}, {append_host_config, #{value => "{Host: Options}", desc => @@ -373,7 +372,7 @@ doc() -> note => "improved in 20.01", desc => [?T("The option defines in what format the users passwords " - "are stored, plain text or in http://../authentication/#scram[SCRAM] format:"), "", + "are stored, plain text or in _`authentication.md#scram|SCRAM`_ format:"), "", ?T("* 'plain': The password is stored as plain text " "in the database. This is risky because the passwords " "can be read if your database gets compromised. " @@ -392,7 +391,7 @@ doc() -> {auth_scram_hash, #{value => "sha | sha256 | sha512", desc => - ?T("Hash algorithm that should be used to store password in http://../authentication/#scram[SCRAM] format. " + ?T("Hash algorithm that should be used to store password in _`authentication.md#scram|SCRAM`_ format. " "You shouldn't 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 'sha'.")}}, @@ -418,7 +417,7 @@ doc() -> "corresponding JID(s) in 'subjectAltName' field. " "There is no default value."), "", ?T("You can use _`host_config`_ to specify this option per-vhost."), "", - ?T("To set a specific file per listener, use the listener's http://../listen-options/#cafile[cafile] option. Please notice that 'c2s_cafile' overrides the listener's 'cafile' option."), "" + ?T("To set a specific file per listener, use the listener's _`listen-options.md#cafile|cafile`_ option. Please notice that 'c2s_cafile' overrides the listener's 'cafile' option."), "" ]}}, {c2s_ciphers, #{value => "[Cipher, ...]", @@ -468,7 +467,7 @@ doc() -> #{value => ?T("Path | ModuleName"), note => "improved in 23.01", desc => - ?T("Full path to a script that generates http://../basic/#captcha[CAPTCHA] images. " + ?T("Full path to a script that generates _`basic.md#captcha|CAPTCHA`_ images. " "'@VERSION@' is replaced with ejabberd version number in 'XX.YY' format. " "'@SEMVER@' is replaced with ejabberd version number in semver format " "when compiled with Elixir's mix, or XX.YY format otherwise. " @@ -481,7 +480,7 @@ doc() -> {captcha_limit, #{value => "pos_integer() | infinity", desc => - ?T("Maximum number of http://../basic/#captcha[CAPTCHA] generated images per minute for " + ?T("Maximum number of _`basic.md#captcha|CAPTCHA`_ generated images per minute for " "any given JID. The option is intended to protect the server " "from CAPTCHA DoS. The default value is 'infinity'.")}}, {captcha_host, @@ -491,7 +490,7 @@ doc() -> #{value => ?T("URL | auto | undefined"), note => "improved in 23.04", desc => - ?T("An URL where http://../basic/#captcha[CAPTCHA] requests should be sent. NOTE: you need " + ?T("An URL where _`basic.md#captcha|CAPTCHA`_ requests should be sent. NOTE: you need " "to configure 'request_handlers' for 'ejabberd_http' listener " "as well. " "If set to 'auto', it builds the URL using a 'request_handler' " @@ -696,8 +695,8 @@ doc() -> note => "added in 23.10", desc => ?T("Modules to install from " - "https://docs.ejabberd.im/developer/extending-ejabberd/modules/#ejabberd-contrib" - "[ejabberd-contrib] at start time. " + "_`../../developer/extending-ejabberd/modules.md#ejabberd-contrib|ejabberd-contrib`_ " + "at start time. " "The default value is an empty list of modules: '[]'.")}}, {jwt_auth_only_rule, #{value => ?T("AccessName"), @@ -1156,7 +1155,7 @@ doc() -> {s2s_access, #{value => ?T("Access"), desc => - ?T("This http://../basic/#access-rules[Access Rule] defines to " + ?T("This _`basic.md#access-rules|Access Rule`_ defines to " "what remote servers can s2s connections be established. " "The default value is 'all'; no restrictions are applied, it is" " allowed to connect s2s to/from all remote servers.")}}, diff --git a/src/ejabberd_xmlrpc.erl b/src/ejabberd_xmlrpc.erl index 84a724423..e0e922166 100644 --- a/src/ejabberd_xmlrpc.erl +++ b/src/ejabberd_xmlrpc.erl @@ -410,6 +410,5 @@ listen_options() -> " method may be removed in a future ejabberd release. You are " "encouraged to define ejabberd_xmlrpc inside request_handlers " "option of ejabberd_http listen module. See the ejabberd " - "documentation for details: https://docs.ejabberd.im/admin/" - "configuration/listen/#ejabberd-xmlrpc", []), + "documentation for details: _`/admin/configuration/listen/#ejabberd-xmlrpc|ejabberd_xmlrpc listener`_.", []), []. diff --git a/src/mod_admin_update_sql.erl b/src/mod_admin_update_sql.erl index 2f9e1e92e..85d039495 100644 --- a/src/mod_admin_update_sql.erl +++ b/src/mod_admin_update_sql.erl @@ -632,6 +632,6 @@ mod_doc() -> #{desc => ?T("This module can be used to update existing SQL database " "from the default to the new schema. Check the section " - "http://../database/#default-and-new-schemas[Default and New Schemas] for details. " + "_`database.md#default-and-new-schemas|Default and New Schemas`_ for details. " "Please note that only MS SQL, MySQL, and PostgreSQL are supported. " "When the module is loaded use _`update_sql`_ API.")}. diff --git a/src/mod_block_strangers.erl b/src/mod_block_strangers.erl index c8ea332f0..c7a436c24 100644 --- a/src/mod_block_strangers.erl +++ b/src/mod_block_strangers.erl @@ -301,6 +301,6 @@ mod_doc() -> desc => ?T("Whether to generate CAPTCHA or not in response to " "messages from strangers. See also section " - "http://../#captcha" - "[CAPTCHA] of the Configuration Guide. " + "_`basic.md#captcha|CAPTCHA`_" + " of the Configuration Guide. " "The default value is 'false'.")}}]}. diff --git a/src/mod_conversejs.erl b/src/mod_conversejs.erl index 3ae7d9747..f2dcf43b8 100644 --- a/src/mod_conversejs.erl +++ b/src/mod_conversejs.erl @@ -256,9 +256,9 @@ mod_doc() -> ?T("Several options were improved in ejabberd 22.05."), "", ?T("To use this module, in addition to adding it to the 'modules' " "section, you must also enable it in 'listen' -> 'ejabberd_http' -> " - "http://../listen-options/#request_handlers[request_handlers]."), "", + "_`listen-options.md#request_handlers|request_handlers`_."), "", ?T("Make sure either 'mod_bosh' or 'ejabberd_http_ws' " - "http://../listen-options/#request_handlers[request_handlers] " + "_`listen-options.md#request_handlers|request_handlers`_ " "are enabled."), "", ?T("When 'conversejs_css' and 'conversejs_script' are 'auto', " "by default they point to the public Converse client.") diff --git a/src/mod_host_meta.erl b/src/mod_host_meta.erl index 43efdcf9e..7be3e81fe 100644 --- a/src/mod_host_meta.erl +++ b/src/mod_host_meta.erl @@ -214,7 +214,7 @@ mod_doc() -> ?T("This module is available since ejabberd 22.05."), "", ?T("To use this module, in addition to adding it to the 'modules' " "section, you must also enable it in 'listen' -> 'ejabberd_http' -> " - "http://../listen-options/#request_handlers[request_handlers]."), "", + "_`listen-options.md#request_handlers|request_handlers`_."), "", ?T("Notice it only works if ejabberd_http has tls enabled.")], example => ["listen:", diff --git a/src/mod_http_api.erl b/src/mod_http_api.erl index 77055eafa..5a61ad1c3 100644 --- a/src/mod_http_api.erl +++ b/src/mod_http_api.erl @@ -534,11 +534,11 @@ mod_options(_) -> mod_doc() -> #{desc => [?T("This module provides a ReST interface to call " - "https://docs.ejabberd.im/developer/ejabberd-api[ejabberd API] " + "_`../../developer/ejabberd-api/index.md|ejabberd API`_ " "commands using JSON data."), "", ?T("To use this module, in addition to adding it to the 'modules' " "section, you must also enable it in 'listen' -> 'ejabberd_http' -> " - "http://../listen-options/#request_handlers[request_handlers]."), "", + "_`listen-options.md#request_handlers|request_handlers`_."), "", ?T("To use a specific API version N, when defining the URL path " "in the request_handlers, add a 'vN'. " "For example: '/api/v2: mod_http_api'"), "", diff --git a/src/mod_http_upload.erl b/src/mod_http_upload.erl index fba6cf7cd..7cf404946 100644 --- a/src/mod_http_upload.erl +++ b/src/mod_http_upload.erl @@ -234,7 +234,7 @@ mod_doc() -> "another URL from which that file can later be downloaded."), "", ?T("In order to use this module, it must be enabled " "in 'listen' -> 'ejabberd_http' -> " - "http://../listen-options/#request_handlers[request_handlers].")], + "_`listen-options.md#request_handlers|request_handlers`_.")], opts => [{host, #{desc => ?T("Deprecated. Use 'hosts' instead.")}}, diff --git a/src/mod_mix.erl b/src/mod_mix.erl index 7066911b9..57e78dbc2 100644 --- a/src/mod_mix.erl +++ b/src/mod_mix.erl @@ -108,9 +108,7 @@ mod_doc() -> "the MIX protocol is going to replace the MUC protocol " "in the future (see _`mod_muc`_)."), "", ?T("To learn more about how to use that feature, you can refer to " - "our tutorial: https://docs.ejabberd.im/tutorials/mix-010/" - "[Getting started with XEP-0369: Mediated Information " - "eXchange (MIX) v0.1]."), "", + "our tutorial: _`../../tutorials/mix-010.md|Getting started with MIX`_"), "", ?T("The module depends on _`mod_mam`_.")], opts => [{access_create, diff --git a/src/mod_mqtt.erl b/src/mod_mqtt.erl index 6f9563c64..974b03549 100644 --- a/src/mod_mqtt.erl +++ b/src/mod_mqtt.erl @@ -282,7 +282,7 @@ listen_options() -> mod_doc() -> #{desc => ?T("This module adds " - "https://docs.ejabberd.im/admin/guide/mqtt/[support for the MQTT] " + "_`../guide/mqtt/index.md|support for the MQTT`_ " "protocol version '3.1.1' and '5.0'. Remember to configure " "'mod_mqtt' in 'modules' and 'listen' sections."), opts => diff --git a/src/mod_muc.erl b/src/mod_muc.erl index d3f37b3d4..216c1277b 100644 --- a/src/mod_muc.erl +++ b/src/mod_muc.erl @@ -1732,7 +1732,7 @@ mod_doc() -> ?T("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 " - "http://../#captcha[CAPTCHA] " + "_`basic.md#captcha|CAPTCHA`_ " "in order to accept their join in the room. " "The default value is 'false'.")}}, {description, @@ -1824,8 +1824,7 @@ mod_doc() -> #{value => "true | false", desc => ?T("Allow users to subscribe to room events as described in " - "https://docs.ejabberd.im/developer/xmpp-clients-bots/extensions/muc-sub/" - "[Multi-User Chat Subscriptions]. " + "_`../../developer/xmpp-clients-bots/extensions/muc-sub.md|Multi-User Chat Subscriptions`_. " "The default value is 'false'.")}}, {title, #{value => ?T("Room Title"), diff --git a/src/mod_offline.erl b/src/mod_offline.erl index ff48b162a..f626d8d24 100644 --- a/src/mod_offline.erl +++ b/src/mod_offline.erl @@ -1247,8 +1247,8 @@ mod_doc() -> "are currently open."), "", ?T("NOTE: 'ejabberdctl' has a command to " "delete expired messages (see chapter " - "https://docs.ejabberd.im/admin/guide/managing" - "[Managing an ejabberd server] in online documentation.")], + "_`../guide/managing.md|Managing an ejabberd server`_ " + "in online documentation.")], opts => [{access_max_user_messages, #{value => ?T("AccessName"), diff --git a/src/mod_register.erl b/src/mod_register.erl index 8ffb512d6..0e595991f 100644 --- a/src/mod_register.erl +++ b/src/mod_register.erl @@ -671,7 +671,7 @@ mod_doc() -> {captcha_protected, #{value => "true | false", desc => - ?T("Protect registrations with http://../basic/#captcha[CAPTCHA]. " + ?T("Protect registrations with _`basic.md#captcha|CAPTCHA`_. " "The default is 'false'.")}}, {ip_access, #{value => ?T("AccessName"), diff --git a/src/mod_register_web.erl b/src/mod_register_web.erl index f50b6f2f3..76d84d068 100644 --- a/src/mod_register_web.erl +++ b/src/mod_register_web.erl @@ -615,7 +615,7 @@ mod_doc() -> ?T("- Register a new account on the server."), "", ?T("- Change the password from an existing account on the server."), "", ?T("- Unregister an existing account on the server."), "", - ?T("This module supports http://../basic/#captcha[CAPTCHA] " + ?T("This module supports _`basic.md#captcha|CAPTCHA`_ " "to register a new account. " "To enable this feature, configure the " "top-level _`captcha_cmd`_ and " @@ -625,7 +625,7 @@ mod_doc() -> "important to include the last / character in the URL, " "otherwise the subpages URL will be incorrect."), "", ?T("This module is enabled in 'listen' -> 'ejabberd_http' -> " - "http://../listen-options/#request_handlers[request_handlers], " + "_`listen-options.md#request_handlers|request_handlers`_, " "no need to enable in 'modules'."), ?T("The module depends on _`mod_register`_ where all the " "configuration is performed.")], diff --git a/src/mod_shared_roster_ldap.erl b/src/mod_shared_roster_ldap.erl index 0cabc0809..bad252e9f 100644 --- a/src/mod_shared_roster_ldap.erl +++ b/src/mod_shared_roster_ldap.erl @@ -678,10 +678,10 @@ mod_doc() -> ?T("- 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 http://../ldap/#ldap-connection[LDAP Connection] " + "See _`ldap.md#ldap-connection|LDAP Connection`_ " "section for more information about them."), "", - ?T("Check also the http://../ldap/#ldap-examples" - "[Configuration examples] section to get details about " + ?T("Check also the _`ldap.md#ldap-examples|Configuration examples`_ " + "section to get details about " "retrieving the roster, " "and configuration examples including Flat DIT and Deep DIT.")], opts => @@ -710,13 +710,13 @@ mod_doc() -> "name of roster entries (usually full names of people in " "the roster). See also the parameters 'ldap_userdesc' and " "'ldap_useruid'. For more information check the LDAP " - "http://../ldap/#filters[Filters] section.")}}, + "_`ldap.md#filters|Filters`_ section.")}}, {ldap_filter, #{desc => ?T("Additional filter which is AND-ed together " "with \"User Filter\" and \"Group Filter\". " "For more information check the LDAP " - "http://../ldap/#filters[Filters] section.")}}, + "_`ldap.md#filters|Filters`_ section.")}}, %% Attributes: {ldap_groupattr, #{desc => @@ -774,8 +774,7 @@ mod_doc() -> #{desc => ?T("A regex for extracting user ID from the value of the " "attribute named by 'ldap_memberattr'. Check the LDAP " - "http://../ldap/#control-parameters" - "[Control Parameters] section.")}}, + "_`ldap.md#control-parameters|Control Parameters`_ section.")}}, {ldap_auth_check, #{value => "true | false", desc => diff --git a/src/mod_sip.erl b/src/mod_sip.erl index 16390ff72..e8b7cb2f8 100644 --- a/src/mod_sip.erl +++ b/src/mod_sip.erl @@ -383,7 +383,7 @@ mod_doc() -> ?T("NOTE: 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 " - "http://../listen/#ejabberd_sip[ejabberd_sip] listen module " + "_`listen.md#ejabberd_sip|ejabberd_sip`_ listen module " "in the ejabberd Documentation.")], opts => [{always_record_route,