view mod_s2sout_override/README.md @ 5951:d6a695abb33c

mod_ping_muc: Delay ping a configurable amount of time If a server is restarting, checking immediately before it has a chance to complete its restart and get ready would often fail, preventing the possibility of transparent restarts as supported by Prosody's mod_muc. Reconnecting immediately when a connection is closed for being idle, or because the remote server is trying to reclaim some resources, is also counter-productive as the connection may fail. Also, if there is some Internet routing problem affecting s2s, it may help to wait a bit before checking, in case the problem resolved itself in the mean time.
author Kim Alvefur <zash@zash.se>
date Sun, 11 Aug 2024 16:10:24 +0200
parents ae62d92506dc
children
line wrap: on
line source

---
summary: Override s2s connection targets
---

This module replaces [mod_s2soutinjection] and uses more modern and
reliable methods for overriding connection targets.

# Configuration

Enable the module as usual, then specify a map of XMPP remote hostnames
to URIs like `"tcp://host.example:port"`, to have Prosody connect there
instead of doing normal DNS SRV resolution.

Currently supported schemes are `tcp://` and `tls://`.  A future version
could support more methods including alternate SRV lookup targets or
even UNIX sockets.

URIs with IP addresses like `tcp://127.0.0.1:9999` will bypass A/AAAA
DNS lookups.

The special target `"*"` may be used to redirect all servers that don't have
an exact match.

One-level wildcards like `"*.example.net"` also work.

Standard DNS SRV resolution can be restored by specifying a truthy value.

```lua
-- Global section
modules_enabled = {
    -- other global modules
    "s2sout_override";
}

s2sout_override = {
    ["example.com"] = "tcp://other.host.example:5299";
    ["xmpp.example.net"] = "tcp://localhost:5999";
    ["secure.example"] = "tls://127.0.0.1:5270";
    ["*.allthese.example"] = = "tcp://198.51.100.123:9999";

    -- catch-all:
    ["*"] = "tls://127.0.0.1:5370";
    -- bypass the catch-all, use standard DNS SRV:
    ["jabber.example"] = true;
}
```

# Compatibility

Prosody version   status
---------------   ----------
0.12.4            Will work
0.12.3            Will not work
0.11              Will not work