update configuration file

This commit is contained in:
Sebastian Hugentobler 2022-08-18 11:16:09 +02:00
parent 735195d88e
commit 4e3dd7b86f
Signed by: shu
GPG Key ID: BB32CF3CA052C2F0

View File

@ -1,64 +1,64 @@
# Homeserver details. # Homeserver details.
homeserver: homeserver:
# The address that this appservice can use to connect to the homeserver. # The address that this appservice can use to connect to the homeserver.
address: "{{ getenv "SERVER_URL" }}" address: "{{ getenv "SERVER_URL" }}"
# The domain of the homeserver (for MXIDs, etc). # The domain of the homeserver (for MXIDs, etc).
domain: "{{ getenv "SERVER_DOMAIN" }}" domain: "{{ getenv "SERVER_DOMAIN" }}"
# Is the homeserver actually mautrix-asmux? # Is the homeserver actually mautrix-asmux?
asmux: false asmux: false
# The URL to push real-time bridge status to. # The URL to push real-time bridge status to.
# If set, the bridge will make POST requests to this URL whenever a user's whatsapp connection state changes. # If set, the bridge will make POST requests to this URL whenever a user's whatsapp connection state changes.
# The bridge will use the appservice as_token to authorize requests. # The bridge will use the appservice as_token to authorize requests.
status_endpoint: null status_endpoint: null
# Endpoint for reporting per-message status. # Endpoint for reporting per-message status.
message_send_checkpoint_endpoint: null message_send_checkpoint_endpoint: null
# Does the homeserver support https://github.com/matrix-org/matrix-spec-proposals/pull/2246? # Does the homeserver support https://github.com/matrix-org/matrix-spec-proposals/pull/2246?
async_media: false async_media: false
# Application service host/registration related details. # Application service host/registration related details.
# Changing these values requires regeneration of the registration. # Changing these values requires regeneration of the registration.
appservice: appservice:
# The address that the homeserver can use to connect to this appservice. # The address that the homeserver can use to connect to this appservice.
address: http://{{getenv "HOSTNAME"}}:29318 address: http://{{getenv "HOSTNAME"}}:29318
# The hostname and port where this appservice should listen. # The hostname and port where this appservice should listen.
hostname: 0.0.0.0 hostname: 0.0.0.0
port: 29318 port: 29318
# Database config. # Database config.
database: database:
# The database type. Only "sqlite3" is supported. # The database type. Only "sqlite3" is supported.
type: postgres type: postgres
# The database URI. Usually file name. https://github.com/mattn/go-sqlite3#connection-string # The database URI. Usually file name. https://github.com/mattn/go-sqlite3#connection-string
uri: {{ getenv "DATABASE_DATASOURCE" }} uri: {{ getenv "DATABASE_DATASOURCE" }}
max_open_conns: 20 max_open_conns: 20
max_idle_conns: 2 max_idle_conns: 2
# Maximum connection idle time and lifetime before they're closed. Disabled if null. # Maximum connection idle time and lifetime before they're closed. Disabled if null.
# Parsed with https://pkg.go.dev/time#ParseDuration # Parsed with https://pkg.go.dev/time#ParseDuration
max_conn_idle_time: null max_conn_idle_time: null
max_conn_lifetime: null max_conn_lifetime: null
# The unique ID of this appservice. # The unique ID of this appservice.
id: whatsapp id: whatsapp
# Appservice bot details. # Appservice bot details.
bot: bot:
# Username of the appservice bot. # Username of the appservice bot.
username: whatsappbot username: whatsappbot
# Display name and avatar for bot. Set to "remove" to remove display name/avatar, leave empty # Display name and avatar for bot. Set to "remove" to remove display name/avatar, leave empty
# to leave display name/avatar as-is. # to leave display name/avatar as-is.
displayname: WhatsApp bridge bot displayname: WhatsApp bridge bot
avatar: mxc://maunium.net/NeXNQarUbrlYBiPCpprYsRqr avatar: mxc://maunium.net/NeXNQarUbrlYBiPCpprYsRqr
# Whether or not to receive ephemeral events via appservice transactions. # Whether or not to receive ephemeral events via appservice transactions.
# Requires MSC2409 support (i.e. Synapse 1.22+). # Requires MSC2409 support (i.e. Synapse 1.22+).
# You should disable bridge -> sync_with_custom_puppets when this is enabled. # You should disable bridge -> sync_with_custom_puppets when this is enabled.
ephemeral_events: false ephemeral_events: false
# Authentication tokens for AS <-> HS communication. Autogenerated; do not modify. # Authentication tokens for AS <-> HS communication. Autogenerated; do not modify.
as_token: "{{ getenv "AS_TOKEN" }}" as_token: "{{ getenv "AS_TOKEN" }}"
hs_token: "{{ getenv "HS_TOKEN" }}" hs_token: "{{ getenv "HS_TOKEN" }}"
# Prometheus config. # Prometheus config.
metrics: metrics:
@ -78,319 +78,312 @@ whatsapp:
# Bridge config # Bridge config
bridge: bridge:
# Localpart template of MXIDs for WhatsApp users. # Localpart template of MXIDs for WhatsApp users.
# {{.}} is replaced with the phone number of the WhatsApp user. username_template: whatsapp_{{"{{"}}.{{"}}"}}
username_template: whatsapp_{{"{{"}}.{{"}}"}} # Displayname template for WhatsApp users.
# Displayname template for WhatsApp users. displayname_template: "{{"{{"}}if .PushName{{"}}"}}{{"{{"}}.PushName{{"}}"}}{{"{{"}}else if .BusinessName{{"}}"}}{{"{{"}}.BusinessName{{"}}"}}{{"{{"}}else{{"}}"}}{{"{{"}}.JID{{"}}"}}{{"{{"}}end{{"}}"}} (WA)"
# {{.PushName}} - nickname set by the WhatsApp user # Should the bridge create a space for each logged-in user and add bridged rooms to it?
# {{.BusinessName}} - validated WhatsApp business name # Users who logged in before turning this on should run `!wa sync space` to create and fill the space for the first time.
# {{.Phone}} - phone number (international format) personal_filtering_spaces: false
# The following variables are also available, but will cause problems on multi-user instances: # Should the bridge send a read receipt from the bridge bot when a message has been sent to WhatsApp?
# {{.FullName}} - full name from contact list delivery_receipts: false
# {{.FirstName}} - first name from contact list # Whether the bridge should send the message status as a custom com.beeper.message_send_status event.
displayname_template: "{{"{{"}}if .PushName{{"}}"}}{{"{{"}}.PushName{{"}}"}}{{"{{"}}else if .BusinessName{{"}}"}}{{"{{"}}.BusinessName{{"}}"}}{{"{{"}}else{{"}}"}}{{"{{"}}.JID{{"}}"}}{{"{{"}}end{{"}}"}} (WA)" message_status_events: false
# Should the bridge create a space for each logged-in user and add bridged rooms to it? # Whether the bridge should send error notices via m.notice events when a message fails to bridge.
# Users who logged in before turning this on should run `!wa sync space` to create and fill the space for the first time. message_error_notices: true
personal_filtering_spaces: false # Should incoming calls send a message to the Matrix room?
# Should the bridge send a read receipt from the bridge bot when a message has been sent to WhatsApp? call_start_notices: true
delivery_receipts: false # Should another user's cryptographic identity changing send a message to Matrix?
# Whether the bridge should send the message status as a custom com.beeper.message_send_status event. identity_change_notices: false
message_status_events: false portal_message_buffer: 128
# Whether the bridge should send error notices via m.notice events when a message fails to bridge. # Settings for handling history sync payloads. These settings only apply right after login,
message_error_notices: true # because the phone only sends the history sync data once, and there's no way to re-request it
# Should incoming calls send a message to the Matrix room? # (other than logging out and back in again).
call_start_notices: true history_sync:
# Should another user's cryptographic identity changing send a message to Matrix? # Should the bridge create portals for chats in the history sync payload?
identity_change_notices: false create_portals: true
portal_message_buffer: 128 # Enable backfilling history sync payloads from WhatsApp using batch sending?
# Settings for handling history sync payloads. These settings only apply right after login, # This requires a server with MSC2716 support, which is currently an experimental feature in synapse.
# because the phone only sends the history sync data once, and there's no way to re-request it # It can be enabled by setting experimental_features -> msc2716_enabled to true in homeserver.yaml.
# (other than logging out and back in again). # Note that prior to Synapse 1.49, there were some bugs with the implementation, especially if using event persistence workers.
history_sync: # There are also still some issues in Synapse's federation implementation.
# Should the bridge create portals for chats in the history sync payload? backfill: false
create_portals: true # Use double puppets for backfilling?
# Enable backfilling history sync payloads from WhatsApp using batch sending? # In order to use this, the double puppets must be in the appservice's user ID namespace
# This requires a server with MSC2716 support, which is currently an experimental feature in synapse. # (because the bridge can't use the double puppet access token with batch sending).
# It can be enabled by setting experimental_features -> msc2716_enabled to true in homeserver.yaml. # This only affects double puppets on the local server, double puppets on other servers will never be used.
# Note that prior to Synapse 1.49, there were some bugs with the implementation, especially if using event persistence workers. double_puppet_backfill: false
# There are also still some issues in Synapse's federation implementation. # Should the bridge request a full sync from the phone when logging in?
backfill: false # This bumps the size of history syncs from 3 months to 1 year.
# Use double puppets for backfilling? request_full_sync: false
# In order to use this, the double puppets must be in the appservice's user ID namespace # Settings for media requests. If the media expired, then it will not
# (because the bridge can't use the double puppet access token with batch sending). # be on the WA servers.
# This only affects double puppets on the local server, double puppets on other servers will never be used. # Media can always be requested by reacting with the ♻️ (recycle) emoji.
double_puppet_backfill: false # These settings determine if the media requests should be done
# Should the bridge request a full sync from the phone when logging in? # automatically during or after backfill.
# This bumps the size of history syncs from 3 months to 1 year. media_requests:
request_full_sync: false # Should expired media be automatically requested from the server as
# Settings for media requests. If the media expired, then it will not # part of the backfill process?
# be on the WA servers. auto_request_media: true
# Media can always be requested by reacting with the ♻️ (recycle) emoji. # Whether to request the media immediately after the media message
# These settings determine if the media requests should be done # is backfilled ("immediate") or at a specific time of the day
# automatically during or after backfill. # ("local_time").
media_requests: request_method: immediate
# Should expired media be automatically requested from the server as # If request_method is "local_time", what time should the requests
# part of the backfill process? # be sent (in minutes after midnight)?
auto_request_media: true request_local_time: 120
# Whether to request the media immediately after the media message # The maximum number of initial conversations that should be synced.
# is backfilled ("immediate") or at a specific time of the day # Other conversations will be backfilled on demand when the start PM
# ("local_time"). # provisioning endpoint is used or when a message comes in from that
request_method: immediate # chat.
# If request_method is "local_time", what time should the requests max_initial_conversations: -1
# be sent (in minutes after midnight)? # Settings for immediate backfills. These backfills should generally be
request_local_time: 120 # small and their main purpose is to populate each of the initial chats
# The maximum number of initial conversations that should be synced. # (as configured by max_initial_conversations) with a few messages so
# Other conversations will be backfilled on demand when the start PM # that you can continue conversations without loosing context.
# provisioning endpoint is used or when a message comes in from that immediate:
# chat. # The number of concurrent backfill workers to create for immediate
max_initial_conversations: -1 # backfills. Note that using more than one worker could cause the
# Settings for immediate backfills. These backfills should generally be # room list to jump around since there are no guarantees about the
# small and their main purpose is to populate each of the initial chats # order in which the backfills will complete.
# (as configured by max_initial_conversations) with a few messages so worker_count: 1
# that you can continue conversations without loosing context. # The maximum number of events to backfill initially.
immediate: max_events: 10
# The number of concurrent backfill workers to create for immediate # Settings for deferred backfills. The purpose of these backfills are
# backfills. Note that using more than one worker could cause the # to fill in the rest of the chat history that was not covered by the
# room list to jump around since there are no guarantees about the # immediate backfills. These backfills generally should happen at a
# order in which the backfills will complete. # slower pace so as not to overload the homeserver.
worker_count: 1 # Each deferred backfill config should define a "stage" of backfill
# The maximum number of events to backfill initially. # (i.e. the last week of messages). The fields are as follows:
max_events: 10 # - start_days_ago: the number of days ago to start backfilling from.
# Settings for deferred backfills. The purpose of these backfills are # To indicate the start of time, use -1. For example, for a week ago, use 7.
# to fill in the rest of the chat history that was not covered by the # - max_batch_events: the number of events to send per batch.
# immediate backfills. These backfills generally should happen at a # - batch_delay: the number of seconds to wait before backfilling each batch.
# slower pace so as not to overload the homeserver. deferred:
# Each deferred backfill config should define a "stage" of backfill # Last Week
# (i.e. the last week of messages). The fields are as follows: - start_days_ago: 7
# - start_days_ago: the number of days ago to start backfilling from. max_batch_events: 20
# To indicate the start of time, use -1. For example, for a week ago, use 7. batch_delay: 5
# - max_batch_events: the number of events to send per batch. # Last Month
# - batch_delay: the number of seconds to wait before backfilling each batch. - start_days_ago: 30
deferred: max_batch_events: 50
# Last Week batch_delay: 10
- start_days_ago: 7 # Last 3 months
max_batch_events: 20 - start_days_ago: 90
batch_delay: 5 max_batch_events: 100
# Last Month batch_delay: 10
- start_days_ago: 30 # The start of time
max_batch_events: 50 - start_days_ago: -1
batch_delay: 10 max_batch_events: 500
# Last 3 months batch_delay: 10
- start_days_ago: 90 # Should puppet avatars be fetched from the server even if an avatar is already set?
max_batch_events: 100 user_avatar_sync: true
batch_delay: 10 # Should Matrix users leaving groups be bridged to WhatsApp?
# The start of time bridge_matrix_leave: true
- start_days_ago: -1 # Should the bridge sync with double puppeting to receive EDUs that aren't normally sent to appservices.
max_batch_events: 500 sync_with_custom_puppets: true
batch_delay: 10 # Should the bridge update the m.direct account data event when double puppeting is enabled.
# Should puppet avatars be fetched from the server even if an avatar is already set? # Note that updating the m.direct event is not atomic (except with mautrix-asmux)
user_avatar_sync: true # and is therefore prone to race conditions.
# Should Matrix users leaving groups be bridged to WhatsApp? sync_direct_chat_list: false
bridge_matrix_leave: true # Should the bridge use MSC2867 to bridge manual "mark as unread"s from
# Should the bridge sync with double puppeting to receive EDUs that aren't normally sent to appservices. # WhatsApp and set the unread status on initial backfill?
sync_with_custom_puppets: true # This will only work on clients that support the m.marked_unread or
# Should the bridge update the m.direct account data event when double puppeting is enabled. # com.famedly.marked_unread room account data.
# Note that updating the m.direct event is not atomic (except with mautrix-asmux) sync_manual_marked_unread: true
# and is therefore prone to race conditions. # When double puppeting is enabled, users can use `!wa toggle` to change whether
sync_direct_chat_list: false # presence and read receipts are bridged. These settings set the default values.
# Should the bridge use MSC2867 to bridge manual "mark as unread"s from # Existing users won't be affected when these are changed.
# WhatsApp and set the unread status on initial backfill? default_bridge_receipts: true
# This will only work on clients that support the m.marked_unread or default_bridge_presence: true
# com.famedly.marked_unread room account data. # Send the presence as "available" to whatsapp when users start typing on a portal.
sync_manual_marked_unread: true # This works as a workaround for homeservers that do not support presence, and allows
# When double puppeting is enabled, users can use `!wa toggle` to change whether # users to see when the whatsapp user on the other side is typing during a conversation.
# presence and read receipts are bridged. These settings set the default values. send_presence_on_typing: false
# Existing users won't be affected when these are changed. # Should the bridge always send "active" delivery receipts (two gray ticks on WhatsApp)
default_bridge_receipts: true # even if the user isn't marked as online (e.g. when presence bridging isn't enabled)?
default_bridge_presence: true #
# Send the presence as "available" to whatsapp when users start typing on a portal. # By default, the bridge acts like WhatsApp web, which only sends active delivery
# This works as a workaround for homeservers that do not support presence, and allows # receipts when it's in the foreground.
# users to see when the whatsapp user on the other side is typing during a conversation. force_active_delivery_receipts: false
send_presence_on_typing: false # Servers to always allow double puppeting from
# Should the bridge always send "active" delivery receipts (two gray ticks on WhatsApp) double_puppet_server_map:
# even if the user isn't marked as online (e.g. when presence bridging isn't enabled)? example.com: https://example.com
# # Allow using double puppeting from any server with a valid client .well-known file.
# By default, the bridge acts like WhatsApp web, which only sends active delivery double_puppet_allow_discovery: false
# receipts when it's in the foreground. # Shared secrets for https://github.com/devture/matrix-synapse-shared-secret-auth
force_active_delivery_receipts: false #
# Servers to always allow double puppeting from # If set, double puppeting will be enabled automatically for local users
double_puppet_server_map: # instead of users having to find an access token and run `login-matrix`
example.com: https://example.com # manually.
# Allow using double puppeting from any server with a valid client .well-known file. login_shared_secret_map:
double_puppet_allow_discovery: false example.com: foobar
# Shared secrets for https://github.com/devture/matrix-synapse-shared-secret-auth # Should the bridge explicitly set the avatar and room name for private chat portal rooms?
# private_chat_portal_meta: false
# If set, double puppeting will be enabled automatically for local users # Should Matrix m.notice-type messages be bridged?
# instead of users having to find an access token and run `login-matrix` bridge_notices: true
# manually. # Set this to true to tell the bridge to re-send m.bridge events to all rooms on the next run.
login_shared_secret_map: # This field will automatically be changed back to false after it, except if the config file is not writable.
example.com: foobar resend_bridge_info: false
# Should the bridge explicitly set the avatar and room name for private chat portal rooms? # When using double puppeting, should muted chats be muted in Matrix?
private_chat_portal_meta: false mute_bridging: false
# Should Matrix m.notice-type messages be bridged? # When using double puppeting, should archived chats be moved to a specific tag in Matrix?
bridge_notices: true # Note that WhatsApp unarchives chats when a message is received, which will also be mirrored to Matrix.
# Set this to true to tell the bridge to re-send m.bridge events to all rooms on the next run. # This can be set to a tag (e.g. m.lowpriority), or null to disable.
# This field will automatically be changed back to false after it, except if the config file is not writable. archive_tag: null
resend_bridge_info: false # Same as above, but for pinned chats. The favorite tag is called m.favourite
# When using double puppeting, should muted chats be muted in Matrix? pinned_tag: null
mute_bridging: false # Should mute status and tags only be bridged when the portal room is created?
# When using double puppeting, should archived chats be moved to a specific tag in Matrix? tag_only_on_create: true
# Note that WhatsApp unarchives chats when a message is received, which will also be mirrored to Matrix. # Should WhatsApp status messages be bridged into a Matrix room?
# This can be set to a tag (e.g. m.lowpriority), or null to disable. # Disabling this won't affect already created status broadcast rooms.
archive_tag: null enable_status_broadcast: true
# Same as above, but for pinned chats. The favorite tag is called m.favourite # Should sending WhatsApp status messages be allowed?
pinned_tag: null # This can cause issues if the user has lots of contacts, so it's disabled by default.
# Should mute status and tags only be bridged when the portal room is created? disable_status_broadcast_send: true
tag_only_on_create: true # Should the status broadcast room be muted and moved into low priority by default?
# Should WhatsApp status messages be bridged into a Matrix room? # This is only applied when creating the room, the user can unmute/untag it later.
# Disabling this won't affect already created status broadcast rooms. mute_status_broadcast: true
enable_status_broadcast: true # Tag to apply to the status broadcast room.
# Should sending WhatsApp status messages be allowed? status_broadcast_tag: m.lowpriority
# This can cause issues if the user has lots of contacts, so it's disabled by default. # Should the bridge use thumbnails from WhatsApp?
disable_status_broadcast_send: true # They're disabled by default due to very low resolution.
# Should the status broadcast room be muted and moved into low priority by default? whatsapp_thumbnail: false
# This is only applied when creating the room, the user can unmute/untag it later. # Allow invite permission for user. User can invite any bots to room with whatsapp
mute_status_broadcast: true # users (private chat and groups)
# Tag to apply to the status broadcast room. allow_user_invite: false
status_broadcast_tag: m.lowpriority # Whether or not created rooms should have federation enabled.
# Should the bridge use thumbnails from WhatsApp? # If false, created portal rooms will never be federated.
# They're disabled by default due to very low resolution. federate_rooms: true
whatsapp_thumbnail: false # Whether to enable disappearing messages in groups. If enabled, then the expiration time of
# Allow invite permission for user. User can invite any bots to room with whatsapp # the messages will be determined by the first user to read the message, rather than individually.
# users (private chat and groups) # If the bridge only has a single user, this can be turned on safely.
allow_user_invite: false disappearing_messages_in_groups: false
# Whether or not created rooms should have federation enabled. # Should the bridge never send alerts to the bridge management room?
# If false, created portal rooms will never be federated. # These are mostly things like the user being logged out.
federate_rooms: true disable_bridge_alerts: false
# Whether to enable disappearing messages in groups. If enabled, then the expiration time of # Should the bridge detect URLs in outgoing messages, ask the homeserver to generate a preview,
# the messages will be determined by the first user to read the message, rather than individually. # and send it to WhatsApp? URL previews can always be sent using the `com.beeper.linkpreviews`
# If the bridge only has a single user, this can be turned on safely. # key in the event content even if this is disabled.
disappearing_messages_in_groups: false url_previews: false
# Should the bridge never send alerts to the bridge management room? # Send captions in the same message as images. This will send data compatible with both MSC2530 and MSC3552.
# These are mostly things like the user being logged out. # This is currently not supported in most clients.
disable_bridge_alerts: false caption_in_message: false
# Should the bridge detect URLs in outgoing messages, ask the homeserver to generate a preview, # Maximum time for handling Matrix events. Duration strings formatted for https://pkg.go.dev/time#ParseDuration
# and send it to WhatsApp? URL previews can always be sent using the `com.beeper.linkpreviews` # Null means there's no enforced timeout.
# key in the event content even if this is disabled. message_handling_timeout:
url_previews: false # Send an error message after this timeout, but keep waiting for the response until the deadline.
# Send captions in the same message as images. This will send data compatible with both MSC2530 and MSC3552. # This is counted from the origin_server_ts, so the warning time is consistent regardless of the source of delay.
# This is currently not supported in most clients. # If the message is older than this when it reaches the bridge, the message won't be handled at all.
caption_in_message: false error_after: null
# Maximum time for handling Matrix events. Duration strings formatted for https://pkg.go.dev/time#ParseDuration # Drop messages after this timeout. They may still go through if the message got sent to the servers.
# Null means there's no enforced timeout. # This is counted from the time the bridge starts handling the message.
message_handling_timeout: deadline: 120s
# Send an error message after this timeout, but keep waiting for the response until the deadline.
# This is counted from the origin_server_ts, so the warning time is consistent regardless of the source of delay.
# If the message is older than this when it reaches the bridge, the message won't be handled at all.
error_after: null
# Drop messages after this timeout. They may still go through if the message got sent to the servers.
# This is counted from the time the bridge starts handling the message.
deadline: 120s
# The prefix for commands. Only required in non-management rooms. # The prefix for commands. Only required in non-management rooms.
command_prefix: "!wa" command_prefix: "!wa"
# Messages sent upon joining a management room. # Messages sent upon joining a management room.
# Markdown is supported. The defaults are listed below. # Markdown is supported. The defaults are listed below.
management_room_text: management_room_text:
# Sent when joining a room. # Sent when joining a room.
welcome: "Hello, I'm a WhatsApp bridge bot." welcome: "Hello, I'm a WhatsApp bridge bot."
# Sent when joining a management room and the user is already logged in. # Sent when joining a management room and the user is already logged in.
welcome_connected: "Use `help` for help." welcome_connected: "Use `help` for help."
# Sent when joining a management room and the user is not logged in. # Sent when joining a management room and the user is not logged in.
welcome_unconnected: "Use `help` for help or `login` to log in." welcome_unconnected: "Use `help` for help or `login` to log in."
# Optional extra text sent when joining a management room. # Optional extra text sent when joining a management room.
additional_help: "" additional_help: ""
# End-to-bridge encryption support options. # End-to-bridge encryption support options.
# #
# See https://docs.mau.fi/bridges/general/end-to-bridge-encryption.html for more info. # See https://docs.mau.fi/bridges/general/end-to-bridge-encryption.html for more info.
encryption: encryption:
# Allow encryption, work in group chat rooms with e2ee enabled # Allow encryption, work in group chat rooms with e2ee enabled
allow: true allow: true
# Default to encryption, force-enable encryption in all portals the bridge creates # Default to encryption, force-enable encryption in all portals the bridge creates
# This will cause the bridge bot to be in private chats for the encryption to work properly. # This will cause the bridge bot to be in private chats for the encryption to work properly.
# It is recommended to also set private_chat_portal_meta to true when using this. # It is recommended to also set private_chat_portal_meta to true when using this.
default: true default: true
# Require encryption, drop any unencrypted messages. # Require encryption, drop any unencrypted messages.
require: false require: false
# Enable key sharing? If enabled, key requests for rooms where users are in will be fulfilled. # Enable key sharing? If enabled, key requests for rooms where users are in will be fulfilled.
# You must use a client that supports requesting keys from other users to use this feature. # You must use a client that supports requesting keys from other users to use this feature.
allow_key_sharing: false allow_key_sharing: false
# What level of device verification should be required from users? # What level of device verification should be required from users?
# #
# Valid levels: # Valid levels:
# unverified - Send keys to all device in the room. # unverified - Send keys to all device in the room.
# cross-signed-untrusted - Require valid cross-signing, but trust all cross-signing keys. # cross-signed-untrusted - Require valid cross-signing, but trust all cross-signing keys.
# cross-signed-tofu - Require valid cross-signing, trust cross-signing keys on first use (and reject changes). # cross-signed-tofu - Require valid cross-signing, trust cross-signing keys on first use (and reject changes).
# cross-signed-verified - Require valid cross-signing, plus a valid user signature from the bridge bot. # cross-signed-verified - Require valid cross-signing, plus a valid user signature from the bridge bot.
# Note that creating user signatures from the bridge bot is not currently possible. # Note that creating user signatures from the bridge bot is not currently possible.
# verified - Require manual per-device verification # verified - Require manual per-device verification
# (currently only possible by modifying the `trust` column in the `crypto_device` database table). # (currently only possible by modifying the `trust` column in the `crypto_device` database table).
verification_levels: verification_levels:
# Minimum level for which the bridge should send keys to when bridging messages from WhatsApp to Matrix. # Minimum level for which the bridge should send keys to when bridging messages from WhatsApp to Matrix.
receive: unverified receive: unverified
# Minimum level that the bridge should accept for incoming Matrix messages. # Minimum level that the bridge should accept for incoming Matrix messages.
send: unverified send: unverified
# Minimum level that the bridge should require for accepting key requests. # Minimum level that the bridge should require for accepting key requests.
share: cross-signed-tofu share: cross-signed-tofu
# Options for Megolm room key rotation. These options allow you to # Options for Megolm room key rotation. These options allow you to
# configure the m.room.encryption event content. See: # configure the m.room.encryption event content. See:
# https://spec.matrix.org/v1.3/client-server-api/#mroomencryption for # https://spec.matrix.org/v1.3/client-server-api/#mroomencryption for
# more information about that event. # more information about that event.
rotation: rotation:
# Enable custom Megolm room key rotation settings. Note that these # Enable custom Megolm room key rotation settings. Note that these
# settings will only apply to rooms created after this option is # settings will only apply to rooms created after this option is
# set. # set.
enable_custom: false enable_custom: false
# The maximum number of milliseconds a session should be used # The maximum number of milliseconds a session should be used
# before changing it. The Matrix spec recommends 604800000 (a week) # before changing it. The Matrix spec recommends 604800000 (a week)
# as the default. # as the default.
milliseconds: 604800000 milliseconds: 604800000
# The maximum number of messages that should be sent with a given a # The maximum number of messages that should be sent with a given a
# session before changing it. The Matrix spec recommends 100 as the # session before changing it. The Matrix spec recommends 100 as the
# default. # default.
messages: 100 messages: 100
# Settings for provisioning API # Settings for provisioning API
provisioning: provisioning:
# Prefix for the provisioning API paths. # Prefix for the provisioning API paths.
prefix: /_matrix/provision prefix: /_matrix/provision
# Shared secret for authentication. If set to "generate", a random secret will be generated, # Shared secret for authentication. If set to "generate", a random secret will be generated,
# or if set to "disable", the provisioning API will be disabled. # or if set to "disable", the provisioning API will be disabled.
shared_secret: generate shared_secret: generate
# Permissions for using the bridge. # Permissions for using the bridge.
# Permitted values: # Permitted values:
# user - Access to use the bridge to chat with a WhatsApp account. # user - Access to use the bridge to chat with a WhatsApp account.
# admin - User level and some additional administration tools # admin - User level and some additional administration tools
# Permitted keys: # Permitted keys:
# * - All Matrix users # * - All Matrix users
# domain - All users on that homeserver # domain - All users on that homeserver
# mxid - Specific user # mxid - Specific user
permissions: permissions:
"*": relay "*": relay
"{{ getenv "SERVER_DOMAIN" }}": user "{{ getenv "SERVER_DOMAIN" }}": user
"{{ getenv "ADMIN_USER" }}": admin "{{ getenv "ADMIN_USER" }}": admin
# Settings for relay mode # Settings for relay mode
relay: relay:
# Whether relay mode should be allowed. If allowed, `!wa set-relay` can be used to turn any # Whether relay mode should be allowed. If allowed, `!wa set-relay` can be used to turn any
# authenticated user into a relaybot for that chat. # authenticated user into a relaybot for that chat.
enabled: false enabled: false
# Should only admins be allowed to set themselves as relay users? # Should only admins be allowed to set themselves as relay users?
admin_only: true admin_only: true
# The formats to use when sending messages to WhatsApp via the relaybot. # The formats to use when sending messages to WhatsApp via the relaybot.
message_formats: message_formats:
m.text: "<b>{{"{{"}} .Sender.Displayname {{"}}"}}</b>: {{"{{"}} .Message {{"}}"}}" m.text: "<b>{{"{{"}} .Sender.Displayname {{"}}"}}</b>: {{"{{"}} .Message {{"}}"}}"
m.notice: "<b>{{"{{"}} .Sender.Displayname {{"}}"}}</b>: {{"{{"}} .Message {{"}}"}}" m.notice: "<b>{{"{{"}} .Sender.Displayname {{"}}"}}</b>: {{"{{"}} .Message {{"}}"}}"
m.emote: "* <b>{{"{{"}} .Sender.Displayname {{"}}"}}</b> {{"{{"}} .Message {{"}}"}}" m.emote: "* <b>{{"{{"}} .Sender.Displayname {{"}}"}}</b> {{"{{"}} .Message {{"}}"}}"
m.file: "<b>{{"{{"}} .Sender.Displayname {{"}}"}}</b> sent a file" m.file: "<b>{{"{{"}} .Sender.Displayname {{"}}"}}</b> sent a file"
m.image: "<b>{{"{{"}} .Sender.Displayname {{"}}"}}</b> sent an image" m.image: "<b>{{"{{"}} .Sender.Displayname {{"}}"}}</b> sent an image"
m.audio: "<b>{{"{{"}} .Sender.Displayname {{"}}"}}</b> sent an audio file" m.audio: "<b>{{"{{"}} .Sender.Displayname {{"}}"}}</b> sent an audio file"
m.video: "<b>{{"{{"}} .Sender.Displayname {{"}}"}}</b> sent a video" m.video: "<b>{{"{{"}} .Sender.Displayname {{"}}"}}</b> sent a video"
m.location: "<b>{{"{{"}} .Sender.Displayname {{"}}"}}</b> sent a location" m.location: "<b>{{"{{"}} .Sender.Displayname {{"}}"}}</b> sent a location"
# Logging config. # Logging config.
logging: logging: