Configuration¶
Note
For legacy module-specific options, refer to their own docs: matridge, matteridge, messlidger, skidge, sleamdge, slidcord, slidge-whatsapp, slidgnal, slidgram.
Note
For the debian package, just edit the /etc/slidge/conf.d/common.conf
and
/etc/slidge/*.conf
files, and use Debian packages (systemd) to
launch slidge.
By default, slidge uses all config files found in /etc/slidge/conf.d/*
.
You can change this using the SLIDGE_CONF_DIR
env var, eg
SLIDGE_CONF_DIR=/path/dir1:/path/dir2:/path/dir3
.
It is recommended to use /etc/slidge/conf.d/
to store configuration options
common to all slidge components (eg, attachment handling, logging options,
etc.), and to specify a plugin-specific file on startup, eg:
slidge -c /etc/slidge/superduper.conf
Warning
Because of an ugly mess that will soon™ be fixed, it is impossible to use
the config file to turn off boolean arguments that are true by default.
As a workaround, use CLI args instead, e.g., --some-opt=false
.
Common config¶
Slidge can be configured via CLI args, environment variables and/or INI files.
To use env vars, use this convention: --home-dir
becomes HOME_DIR
.
Everything in /etc/slidge/conf.d/*
is automatically used.
To use a plugin-specific INI file, put it in another dir,
and launch slidge with -c /path/to/plugin-specific.conf
.
Use the long version of the CLI arg without the double dash prefix inside this
INI file, eg debug=true
.
An example configuration file is available at https://git.sr.ht/~nicoco/slidge/tree/master/item/dev/confs/slidge-example.ini
usage: slidge [-h] [-c CONFIG] [-q] [-d] [--version] --jid JID --legacy-module
LEGACY_MODULE --secret SECRET [--admins [ADMINS ...]]
[--always-invite-when-adding-bookmarks]
[--attachment-maximum-file-name-length ATTACHMENT_MAXIMUM_FILE_NAME_LENGTH]
[--avatar-resampling-threads AVATAR_RESAMPLING_THREADS]
[--avatar-size AVATAR_SIZE]
[--correction-empty-body-as-retraction] [--db-url DB_URL]
[--dev-mode] [--fix-filename-suffix-mime-type]
[--home-dir HOME_DIR]
[--ignore-delay-threshold IGNORE_DELAY_THRESHOLD]
[--last-message-correction-retraction-workaround]
[--last-seen-fallback] [--log-file LOG_FILE]
[--log-format LOG_FORMAT] [--mam-max-days MAM_MAX_DAYS]
[--no-roster-push] [--no-upload-file-read-others]
[--no-upload-method NO_UPLOAD_METHOD]
[--no-upload-path NO_UPLOAD_PATH]
[--no-upload-url-prefix NO_UPLOAD_URL_PREFIX]
[--partial-registration-timeout PARTIAL_REGISTRATION_TIMEOUT]
[--port PORT] [--qr-timeout QR_TIMEOUT]
[--roster-push-presence-subscription-request-fallback]
[--secret-key SECRET_KEY] [--server SERVER]
[--strip-leading-emoji-adhoc]
[--upload-requester UPLOAD_REQUESTER]
[--upload-service UPLOAD_SERVICE]
[--user-jid-validator USER_JID_VALIDATOR]
[--use-attachment-original-urls]
Named Arguments¶
- -c, --config
Path to a INI config file.
- -q, --quiet
loglevel=WARNING
Default: 20
- -d, --debug
loglevel=DEBUG
- --version
show program’s version number and exit
- --jid, -j
The gateway component’s JID
- --legacy-module
Importable python module containing (at least) a BaseGateway and a LegacySession subclass
- --secret
The gateway component’s secret (required to connect to the XMPP server)
- --admins
JIDs of the gateway admins
Default: ()
- --always-invite-when-adding-bookmarks
Send an invitation to join MUCs when adding them to the bookmarks. While this should not be necessary, it helps with clients that do not support XEP-0402 or that do not respect the auto-join flag.
Default: True
- --attachment-maximum-file-name-length
Some legacy network provide ridiculously long filenames, strip above this limit, preserving suffix.
Default: 200
- --avatar-resampling-threads
Number of additional threads to use for avatar resampling. Even in a single-core context, this makes avatar resampling non-blocking.
Default: 2
- --avatar-size
Maximum image size (width and height), image ratio will be preserved
Default: 200
- --correction-empty-body-as-retraction
Treat last message correction to empty message as a retraction. (this is what cheogram do for retraction)
Default: True
- --db-url
Database URL, see <https://docs.sqlalchemy.org/en/20/core/engines.html#database-urls>. Defaults to sqlite:///${HOME_DIR}/slidge.sqlite
- --dev-mode
Enables an interactive python shell via chat commands, for admins.Not safe to use in prod, but great during dev.
Default: False
- --fix-filename-suffix-mime-type
Fix the Filename suffix based on the Mime Type of the file. Some clients (eg Conversations) may not inline files that have a wrong suffix for the MIME Type. Therefore the MIME Type of the file is checked, if the suffix is not valid for that MIME Type, a valid one will be picked.
Default: False
- --home-dir
Directory where slidge will writes it persistent data and cache. Defaults to /var/lib/slidge/${SLIDGE_JID}.
- --ignore-delay-threshold
Threshold, in seconds, below which the <delay> information is stripped out of emitted stanzas.
Default: 0:05:00
- --last-message-correction-retraction-workaround
If the legacy service does not support last message correction but supports message retractions, slidge can ‘retract’ the edited message when you edit from an XMPP client, as a workaround. This may only work for editing messages once. If the legacy service does not support retractions and this is set to true, when XMPP clients attempt to correct, this will send a new message.
Default: False
- --last-seen-fallback
When using XEP-0319 (Last User Interaction in Presence), use the presence status to display the last seen information in the presence status. Useful for clients that do not implement XEP-0319. Because of implementation details, this can increase RAM usage and might be deprecated in the future. Ask your client dev for XEP-0319 support ;o).
Default: False
- --log-file
Log to a file instead of stdout/err
- --log-format
Optionally, a format string for logging messages. Refer to https://docs.python.org/3/library/logging.html#logrecord-attributes for available options.
Default: “%(levelname)s:%(name)s:%(message)s”
- --mam-max-days
Maximum number of days for group archive retention.
Default: 7
- --no-roster-push
Do not fill users’ rosters with legacy contacts automatically
Default: False
- --no-upload-file-read-others
After writing a file in NO_UPLOAD_PATH, change its permission so that ‘others’ can read it.
Default: False
- --no-upload-method
Whether to ‘copy’, ‘move’, ‘hardlink’ or ‘symlink’ the files in no-upload-path.
Default: “copy”
- --no-upload-path
Instead of using the XMPP server’s HTTP upload component, copy files to this dir. You need to set NO_UPLOAD_URL_PREFIX too if you use this option, and configure an web server to serve files in this dir.
- --no-upload-url-prefix
Base URL that servers files in the dir set in the no-upload-path option, eg https://example.com:666/slidge-attachments/
- --partial-registration-timeout
Timeout before registration and login. Only useful for legacy networks where a single step registration process is not enough.
Default: 3600
- --port, -p
The XMPP server’s port for incoming component connections
Default: “5347”
- --qr-timeout
Timeout for QR code flashing confirmation.
Default: 60
- --roster-push-presence-subscription-request-fallback
If True, legacy contacts will send a presence request subscription when privileged roster push does not work, eg, if XEP-0356 (privileged entity) is not available for the component.
Default: True
- --secret-key
Encryption for disk storage. Deprecated.
- --server, -s
The XMPP server’s host name. Defaults to localhost, which is the standard way of running slidge, on the same host as the XMPP server. The ‘Jabber Component Protocol’ (XEP-0114) does not mention encryption, so you should provide encryption another way, eg via port forwarding, if you change this.
Default: “localhost”
- --strip-leading-emoji-adhoc
Strip the leading emoji in ad-hoc command names, if present, in case you are a emoji-hater.
Default: False
- --upload-requester
Set which JID should request the upload slots. Defaults to the component JID.
- --upload-service
JID of an HTTP upload service the gateway can use. This is optional, as it should be automatically determined via servicediscovery.
- --user-jid-validator
Regular expression to restrict users that can register to the gateway, by JID. Defaults to .*@${SLIDGE_SERVER}, but since SLIDGE_SERVER is usually localhost, you probably want to change that to .*@example.com
- --use-attachment-original-urls
For legacy plugins in which attachments are publicly downloadable URLs, let XMPP clients directly download them from this URL. Note that this will probably leak your client IP to the legacy network.
Default: False