You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: doc/configuration/configuration-files.md
+1-1
Original file line number
Diff line number
Diff line change
@@ -30,7 +30,7 @@ The section names above are links to the detailed documentation of each section.
30
30
!!! Warning
31
31
It is recommended to use the same configuration file for all nodes in the cluster, but there is no protection against using different option values for each node, because it can happen in two cases:
32
32
33
-
* During a [rolling upgrade](../../operation-and-maintenance/Rolling-upgrade) procedure, when nodes are restarted one by one with new configuration.
33
+
* During a [rolling upgrade](../operation-and-maintenance/Rolling-upgrade.md) procedure, when nodes are restarted one by one with new configuration.
34
34
* When you need different network-specific parameters (e.g. listening IP addresses) for each node.
Copy file name to clipboardExpand all lines: doc/configuration/general.md
+2-2
Original file line number
Diff line number
Diff line change
@@ -44,7 +44,7 @@ In order to configure these hosts independently, use the [`host_config` section]
44
44
45
45
This is the list of names for the types of hosts that will serve dynamic XMPP domains.
46
46
Each host type can be seen as a label for a group of independent domains that use the same server configuration.
47
-
In order to configure these host types independently, use the [`host_config` section](./host_config.md). The domains can be added or removed dynamically with the [command line interface](../../developers-guide/domain_management#command-line-interface) or using the [API](../../developers-guide/domain_management#api).
47
+
In order to configure these host types independently, use the [`host_config` section](./host_config.md). The domains can be added or removed dynamically with the [command line interface](../developers-guide/domain_management.md#command-line-interface) or using the [API](../developers-guide/domain_management.md#api).
48
48
49
49
If you use the host type mechanism, make sure you only configure modules which support dynamic domains in the [`modules`](./Modules.md) or [`host_config.modules`](./host_config.md#host_configmodules) sections.
50
50
MongooseIM will **not** start otherwise.
@@ -170,7 +170,7 @@ If a stanza is addressed to a subdomain of the served domain and this option is
Provides an ordered list of modules used for routing messages. All available modules are enabled by default, and you can change their order or disable some of them by providing your own list. See the [Message routing](../../developers-guide/Stanza-routing/#3-message-routing) section of the developer's guide for more information.
173
+
Provides an ordered list of modules used for routing messages. All available modules are enabled by default, and you can change their order or disable some of them by providing your own list. See the [Message routing](../developers-guide/Stanza-routing.md#3-message-routing) section of the developer's guide for more information.
Copy file name to clipboardExpand all lines: doc/developers-guide/Stanza-routing.md
+2-2
Original file line number
Diff line number
Diff line change
@@ -19,7 +19,7 @@ Next, depending on the type of the stanza, one of the following hooks is called:
19
19
*`user_send_iq` for IQ (info/query) stanzas,
20
20
*`user_send_xmlel` for other XML elements.
21
21
22
-
Each hook can be handled by multiple modules subscribed to it. Those modules do various complementary tasks, like storing the message in an archive, sending carbon copies, checking the stanza against privacy lists etc. It is possible for a handler to immediately stop routing at this point, preventing execution of any subsequent handlers or hooks. See [hooks description](../hooks_description/#hooks-called-for-session_established) for more information.
22
+
Each hook can be handled by multiple modules subscribed to it. Those modules do various complementary tasks, like storing the message in an archive, sending carbon copies, checking the stanza against privacy lists etc. It is possible for a handler to immediately stop routing at this point, preventing execution of any subsequent handlers or hooks. See [hooks description](hooks_description.md#hooks-called-for-session_established) for more information.
23
23
24
24
## 3. Message routing
25
25
@@ -28,7 +28,7 @@ The stanza is routed by `ejabberd_router:route/3`, which passes it through a cha
28
28
1.`Mod:filter/3`, which either drops the stanza, stopping the routing chain, or returns it for further processing, modifying it if necessary.
29
29
2.`Mod:route/3`, which either handles the stanza, stopping the routing chain, or returns it for further processing, modifying it if necessary.
30
30
31
-
A list of routing modules can be set in the [`routing_modules`](../../configuration/general#generalrouting_modules) option.
31
+
A list of routing modules can be set in the [`routing_modules`](../configuration/general.md#generalrouting_modules) option.
32
32
The default behaviour is the following:
33
33
34
34
*`mongoose_router_global`: runs a global `filter_packet` hook.
Copy file name to clipboardExpand all lines: doc/developers-guide/domain_management.md
+2-2
Original file line number
Diff line number
Diff line change
@@ -146,5 +146,5 @@ Run `./mongooseimctl domain` to get more information about all supported operati
146
146
147
147
You can manage domains with one of our API's:
148
148
149
-
* The [GraphQL API](../../graphql-api/Admin-GraphQL) has the same funtionality as the command line interface. The <ahref="../../graphql-api/admin-graphql-doc.html#query-domain">queries</a> and <ahref="../../graphql-api/admin-graphql-doc.html#mutation-domain">mutations</a> for domains are grouped under the `domain` category.
150
-
* The [REST API](../../rest-api/Administration-backend) (deprecated) supports domain management as well. See <ahref="../../swagger/index.html#/Dynamic_domains">Dynamic Domains</a> for details.
149
+
* The [GraphQL API](../graphql-api/Admin-GraphQL.md) has the same funtionality as the command line interface. The <ahref="../../graphql-api/admin-graphql-doc.html#query-domain">queries</a> and <ahref="../../graphql-api/admin-graphql-doc.html#mutation-domain">mutations</a> for domains are grouped under the `domain` category.
150
+
* The [REST API](../rest-api/Administration-backend.md) (deprecated) supports domain management as well. See <ahref="../../swagger/index.html#/Dynamic_domains">Dynamic Domains</a> for details.
Copy file name to clipboardExpand all lines: doc/developers-guide/hooks_description.md
+1-1
Original file line number
Diff line number
Diff line change
@@ -65,7 +65,7 @@ mongoose_hooks:filter_packet({From, To, Acc, Packet})
65
65
mongoose_hooks:filter_local_packet({From, To, Acc, Packet})
66
66
```
67
67
68
-
These hooks are run when the packet is being [routed](../Stanza-routing/#3-message-routing) by `ejaberd_router:route/4`, which is the most general function used to route stanzas across the entire cluster. For example, `mongoose_c2s` calls it after calling the `user_send_message` or `user_send_iq` hook, and multiple modules use it for sending replies and errors.
68
+
These hooks are run when the packet is being [routed](Stanza-routing.md#3-message-routing) by `ejaberd_router:route/4`, which is the most general function used to route stanzas across the entire cluster. For example, `mongoose_c2s` calls it after calling the `user_send_message` or `user_send_iq` hook, and multiple modules use it for sending replies and errors.
69
69
70
70
*`filter_packet` is run by `mongoose_router_global` for all routed packets. It is called at the start of the routing procedure.
71
71
*`filter_local_packet` is run by `mongoose_local_delivery` when the packet is being routed to a domain hosted by the local server.
Other commands shown above correspond to the [GraphQL Admin API](../../graphql-api/Admin-GraphQL/) operations, and they are grouped into the following categories:
416
+
Other commands shown above correspond to the [GraphQL Admin API](../graphql-api/Admin-GraphQL.md) operations, and they are grouped into the following categories:
Copy file name to clipboardExpand all lines: doc/migrations/6.0.0_6.1.0.md
+9-9
Original file line number
Diff line number
Diff line change
@@ -4,17 +4,17 @@ With the new implementation of the client-to-server (C2S) state machine, `mongoo
4
4
5
5
* The `zlib` option for supporting [stream compression](https://xmpp.org/extensions/xep-0138.html), which was present in the default configuration file, is removed, and **you need to delete it** from your listener configuration unless you have already done so. The extension is [obsolete due to security vulnerability](https://xmpp.org/extensions/xep-0138.html#revision-history-v2.1), and the [CRIME](https://en.wikipedia.org/wiki/CRIME) vulnerability has been found [a long time ago](https://blog.thijsalkema.de/blog/2014/08/07/https-attacks-and-xmpp-2-crime-and-breach/).
6
6
* Support for [`listen.http.handlers.mod_websockets.service`] has been removed, the component connection over WebSockets did not correspond to any XEP/RFC, and neither it was properly described anywhere in the MIM documentation. It was present in the default configuration file, and **you need to delete it** from your listener configuration unless you have already done so.
7
-
* The `max_fsm_queue` option is no longer supported for C2S listeners. It is incompatible with the new `gen_statem` state machine, and if you need to limit incoming traffic, you should use [traffic shapers](../../configuration/shaper) instead. You need to remove this option from your C2S configuration if you are using it.
7
+
* The `max_fsm_queue` option is no longer supported for C2S listeners. It is incompatible with the new `gen_statem` state machine, and if you need to limit incoming traffic, you should use [traffic shapers](../configuration/shaper.md) instead. You need to remove this option from your C2S configuration if you are using it.
8
8
* The default value of the [`backlog`](../configuration/listen.md#listenbacklog) option for all XMPP listeners has been increased from 100 to 1024 for performance reasons.
9
9
* You might be interested in the new C2S listener options: [`max_connections`](../listeners/listen-c2s.md#listenc2smax_connections), [`c2s_state_timeout`](../listeners/listen-c2s.md#listenc2sstate_timeout), [`reuse_port`](../listeners/listen-c2s.md#listenc2sreuse_port) and [`backwards_compatible_session`](../listeners/listen-c2s.md#listenc2sbackwards_compatible_session). The first two options can be set for [websockets](../listeners/listen-http.md#handler-types-websockets-mod_websockets) as well.
10
10
11
11
## Module configuration
12
12
13
13
The `mongoose_c2s` module, which provides the core XMPP features, is now separated from modules which used to have their parts hardcoded into the old C2S implementation:
14
14
15
-
* Presence handling has been exported to a separate module [`mod_presence`](../../modules/mod_presence), which is enabled in the default configuration file. **Enable `mod_presence` in your configuration file** unless you are sure that you don't need server-side presence handling, in which case you could gain some performance by not using this module.
16
-
* Stream management is now handled completely by [`mod_stream_management`](../../modules/mod_stream_management), and if you don't need it, you can now gain more performance than before by disabling it.
17
-
* Client state indication is now handled completely by [`mod_csi`](../../modules/mod_csi), and if you don't need it, you can now gain more performance than before by disabling it.
15
+
* Presence handling has been exported to a separate module [`mod_presence`](../modules/mod_presence.md), which is enabled in the default configuration file. **Enable `mod_presence` in your configuration file** unless you are sure that you don't need server-side presence handling, in which case you could gain some performance by not using this module.
16
+
* Stream management is now handled completely by [`mod_stream_management`](../modules/mod_stream_management.md), and if you don't need it, you can now gain more performance than before by disabling it.
17
+
* Client state indication is now handled completely by [`mod_csi`](../modules/mod_csi.md), and if you don't need it, you can now gain more performance than before by disabling it.
18
18
19
19
## Database migration
20
20
@@ -30,26 +30,26 @@ Since we don't know whether a compressed/encrypted packet contains a single stan
30
30
* `global.data.xmpp.received.encrypted_size` - impractical, has no value but consumes calculation resources.
31
31
* `global.data.xmpp.sent.encrypted_size` - impractical, has no value but consumes calculation resources.
32
32
33
-
A set of `global.data.xmpp.received.**` and `global.data.xmpp.sent.**` spiral [data metrics](../../operation-and-maintenance/MongooseIM-metrics#data-metrics) has been introduced instead.
33
+
A set of `global.data.xmpp.received.**` and `global.data.xmpp.sent.**` spiral [data metrics](../operation-and-maintenance/MongooseIM-metrics.md#data-metrics) has been introduced instead.
34
34
35
35
## Hooks
36
36
37
-
Multiple hooks have been added, removed or changed because of the introduction of `mongoose_c2s` - the most important change is the increased granularity of the `user_send_*` and `user_receive_*` hooks. If you have some custom modules (e.g. that implement some XMPP extensions) using the hooks mechanism, please refactor your handlers to be compliant with the new hooks. Refer to [Hooks Description](../../developers-guide/hooks_description) and [Message routing](../../developers-guide/Stanza-routing) for more details.
37
+
Multiple hooks have been added, removed or changed because of the introduction of `mongoose_c2s` - the most important change is the increased granularity of the `user_send_*` and `user_receive_*` hooks. If you have some custom modules (e.g. that implement some XMPP extensions) using the hooks mechanism, please refactor your handlers to be compliant with the new hooks. Refer to [Hooks Description](../developers-guide/hooks_description.md) and [Message routing](../developers-guide/Stanza-routing.md) for more details.
38
38
39
39
## Upgrade procedure
40
40
41
-
As long as you are not using Mnesia for persistent storage (it is not recommended to do so), the safest option would be to prepare a new cluster with version 6.1.0, and switch the traffic to it on a load balancer. The only downside is that clients connected to different clusters would see each other as offline. If you are limited to one cluster, it is recommended to do a split-cluster rolling upgrade by [removing](../../operation-and-maintenance/Cluster-configuration-and-node-management/#leaving-cluster) each node from the cluster before stopping and upgrading it, and gradually forming a **new separate cluster** from the upgraded nodes. This means that for each newly started node except the first one, you should [join](../../operation-and-maintenance/Cluster-configuration-and-node-management/#new-node-joining-cluster) one of the previously started nodes.
41
+
As long as you are not using Mnesia for persistent storage (it is not recommended to do so), the safest option would be to prepare a new cluster with version 6.1.0, and switch the traffic to it on a load balancer. The only downside is that clients connected to different clusters would see each other as offline. If you are limited to one cluster, it is recommended to do a split-cluster rolling upgrade by [removing](../operation-and-maintenance/Cluster-configuration-and-node-management.md#leaving-cluster) each node from the cluster before stopping and upgrading it, and gradually forming a **new separate cluster** from the upgraded nodes. This means that for each newly started node except the first one, you should [join](../operation-and-maintenance/Cluster-configuration-and-node-management.md#new-node-joining-cluster) one of the previously started nodes.
42
42
43
43
### Rolling upgrade issues
44
44
45
-
If you want to perform a typical [rolling upgrade](../../operation-and-maintenance/Rolling-upgrade) instead, there are a few potential issues caused by the introduction of `mongoose_c2s`. When a node is stopped, upgraded and started again, it reconnects to the cluster. When a stanza is routed between users connected to different nodes of the cluster, an internal message is sent between the nodes. In version 6.1.0 that message has a different format, and routing a stanza between nodes with versions 6.0.0 and 6.1.0 would fail, resulting in a warning message for each stanza. This means that after upgrading the first node you might get a huge amount of warning messages on all nodes, causing a performance drop. What is more, the sender's node would still assume that the recipient is online, and some actions (e.g. responding with the `service-unavailable` error) would be omitted.
45
+
If you want to perform a typical [rolling upgrade](../operation-and-maintenance/Rolling-upgrade.md) instead, there are a few potential issues caused by the introduction of `mongoose_c2s`. When a node is stopped, upgraded and started again, it reconnects to the cluster. When a stanza is routed between users connected to different nodes of the cluster, an internal message is sent between the nodes. In version 6.1.0 that message has a different format, and routing a stanza between nodes with versions 6.0.0 and 6.1.0 would fail, resulting in a warning message for each stanza. This means that after upgrading the first node you might get a huge amount of warning messages on all nodes, causing a performance drop. What is more, the sender's node would still assume that the recipient is online, and some actions (e.g. responding with the `service-unavailable` error) would be omitted.
46
46
47
47
!!! Info "Changing the log level"
48
48
You can set the log level to `error` during the upgrade to silence the excess warnings.
49
49
Before the upgrade, set the log level on all nodes:
50
50
```bash
51
51
mongooseimctl server setLoglevel --level ERROR
52
52
```
53
-
Before starting the upgraded node, set the [`loglevel`](../../configuration/general/#generalloglevel) option to `error` in the configuration file.
53
+
Before starting the upgraded node, set the [`loglevel`](../configuration/general.md#generalloglevel) option to `error` in the configuration file.
54
54
After the whole upgrade procedure, use `mongooseimctl` to change the log level back to the previous value (`warning` by default).
55
55
Change the values in the configuration files as well to make the setting permanent.
Copy file name to clipboardExpand all lines: doc/modules/mod_inbox.md
+1-1
Original file line number
Diff line number
Diff line change
@@ -32,7 +32,7 @@ A list of supported inbox boxes by the server. This can be used by clients to cl
32
32
!!! note
33
33
`inbox`, `archive`, and `bin` are reserved box names and are always enabled, therefore they don't need to –and must not– be specified in this section. `all` has a special meaning in the box query and therefore is also not allowed as a box name.
34
34
35
-
If the asynchronous backend is configured, automatic removals become moves to the `bin` box, also called "Trash bin". This is to ensure eventual consistency. Then the bin can be emptied, either on a [user request](../open-extensions/inbox.md#examples-emptying-the-trash-bin), with the `mongooseimctl inbox` command, through the [GraphQL API](../../graphql-api/Admin-GraphQL), or through the [REST API](../../rest-api/Administration-backend).
35
+
If the asynchronous backend is configured, automatic removals become moves to the `bin` box, also called "Trash bin". This is to ensure eventual consistency. Then the bin can be emptied, either on a [user request](../open-extensions/inbox.md#examples-emptying-the-trash-bin), with the `mongooseimctl inbox` command, through the [GraphQL API](../graphql-api/Admin-GraphQL.md), or through the [REST API](../rest-api/Administration-backend.md).
36
36
37
37
#### `modules.mod_inbox.bin_ttl`
38
38
***Syntax:** non-negative integer, expressed in days.
0 commit comments