|
|
|
@ -1,10 +1,9 @@
|
|
|
|
|
# Homeserver details
|
|
|
|
|
# Homeserver details.
|
|
|
|
|
homeserver:
|
|
|
|
|
# The address that this appservice can use to connect to the homeserver.
|
|
|
|
|
address: https://__DOMAIN__
|
|
|
|
|
# The domain of the homeserver (also known as server_name, used for MXIDs, etc).
|
|
|
|
|
domain: __SERVER_NAME__
|
|
|
|
|
|
|
|
|
|
# What software is the homeserver running?
|
|
|
|
|
# Standard Matrix homeservers like Synapse, Dendrite and Conduit should just use "standard" here.
|
|
|
|
|
software: standard
|
|
|
|
@ -16,21 +15,17 @@ homeserver:
|
|
|
|
|
message_send_checkpoint_endpoint: null
|
|
|
|
|
# Does the homeserver support https://github.com/matrix-org/matrix-spec-proposals/pull/2246?
|
|
|
|
|
async_media: __ASYNC_MEDIA__
|
|
|
|
|
|
|
|
|
|
# Application service host/registration related details.
|
|
|
|
|
# Changing these values requires regeneration of the registration.
|
|
|
|
|
appservice:
|
|
|
|
|
# The address that the homeserver can use to connect to this appservice.
|
|
|
|
|
address: http://localhost:__PORT__
|
|
|
|
|
|
|
|
|
|
# The hostname and port where this appservice should listen.
|
|
|
|
|
hostname: 0.0.0.0
|
|
|
|
|
port: __PORT__
|
|
|
|
|
|
|
|
|
|
# Database config.
|
|
|
|
|
database:
|
|
|
|
|
# The database type. "sqlite3-fk-wal" and "postgres" are supported.
|
|
|
|
|
#type: sqlite3
|
|
|
|
|
type: postgres
|
|
|
|
|
# The database URI.
|
|
|
|
|
# SQLite: A raw file path is supported, but `file:<path>?_txlock=immediate` is recommended.
|
|
|
|
@ -45,46 +40,37 @@ appservice:
|
|
|
|
|
# Parsed with https://pkg.go.dev/time#ParseDuration
|
|
|
|
|
max_conn_idle_time: null
|
|
|
|
|
max_conn_lifetime: null
|
|
|
|
|
|
|
|
|
|
# The unique ID of this appservice.
|
|
|
|
|
#id: whatsapp
|
|
|
|
|
id: __APPSERVICEID__
|
|
|
|
|
# Appservice bot details.
|
|
|
|
|
bot:
|
|
|
|
|
# Username of the appservice bot.
|
|
|
|
|
#username: whatsappbot
|
|
|
|
|
username: __BOTNAME__
|
|
|
|
|
# Display name and avatar for bot. Set to "remove" to remove display name/avatar, leave empty
|
|
|
|
|
# to leave display name/avatar as-is.
|
|
|
|
|
displayname: __DISPLAYNAME__
|
|
|
|
|
avatar: __AVATAR__
|
|
|
|
|
|
|
|
|
|
# Whether or not to receive ephemeral events via appservice transactions.
|
|
|
|
|
# Requires MSC2409 support (i.e. Synapse 1.22+).
|
|
|
|
|
# You should disable bridge -> sync_with_custom_puppets when this is enabled.
|
|
|
|
|
ephemeral_events: __EPHEMERAL_EVENTS__
|
|
|
|
|
|
|
|
|
|
# Should incoming events be handled asynchronously?
|
|
|
|
|
# This may be necessary for large public instances with lots of messages going through.
|
|
|
|
|
# However, messages will not be guaranteed to be bridged in the same order they were sent in.
|
|
|
|
|
async_transactions: false
|
|
|
|
|
|
|
|
|
|
# Authentication tokens for AS <-> HS communication. Autogenerated; do not modify.
|
|
|
|
|
as_token: "This value is generated when generating the registration"
|
|
|
|
|
hs_token: "This value is generated when generating the registration"
|
|
|
|
|
|
|
|
|
|
# Segment API key to track some events, like provisioning API login and encryption errors.
|
|
|
|
|
segment_key: null
|
|
|
|
|
# Optional user_id to use when sending Segment events. If null, defaults to using mxID.
|
|
|
|
|
segment_user_id: null
|
|
|
|
|
|
|
|
|
|
# Prometheus config.
|
|
|
|
|
metrics:
|
|
|
|
|
# Enable prometheus metrics?
|
|
|
|
|
enabled: __ENABLE_METRICS__
|
|
|
|
|
# IP and port where the metrics listener should be. The path is always /metrics
|
|
|
|
|
listen: __LISTEN_PORT__
|
|
|
|
|
|
|
|
|
|
# Config for things that are directly sent to WhatsApp.
|
|
|
|
|
whatsapp:
|
|
|
|
|
# Device name that's shown in the "WhatsApp Web" section in the mobile app.
|
|
|
|
@ -93,7 +79,6 @@ whatsapp:
|
|
|
|
|
# Must be "unknown" for a generic icon or a valid browser name if you want a specific icon.
|
|
|
|
|
# List of valid browser names: https://github.com/tulir/whatsmeow/blob/8b34d886d543b72e5f4699cf5b2797f68d598f78/binary/proto/def.proto#L38-L51
|
|
|
|
|
browser_name: __BROWSER_NAME__
|
|
|
|
|
|
|
|
|
|
# Bridge config
|
|
|
|
|
bridge:
|
|
|
|
|
# Localpart template of MXIDs for WhatsApp users.
|
|
|
|
@ -123,14 +108,15 @@ bridge:
|
|
|
|
|
portal_message_buffer: 128
|
|
|
|
|
# Settings for handling history sync payloads.
|
|
|
|
|
history_sync:
|
|
|
|
|
# Should the bridge create portals for chats in the history sync payload?
|
|
|
|
|
create_portals: true
|
|
|
|
|
# Enable backfilling history sync payloads from WhatsApp using batch sending?
|
|
|
|
|
# This requires a server with MSC2716 support, which is currently an experimental feature in synapse.
|
|
|
|
|
# It can be enabled by setting experimental_features -> msc2716_enabled to true in homeserver.yaml.
|
|
|
|
|
# Note that prior to Synapse 1.49, there were some bugs with the implementation, especially if using event persistence workers.
|
|
|
|
|
# There are also still some issues in Synapse's federation implementation.
|
|
|
|
|
backfill: false
|
|
|
|
|
# Should the bridge create portals for chats in the history sync payload?
|
|
|
|
|
# This has no effect unless backfill is enabled.
|
|
|
|
|
create_portals: true
|
|
|
|
|
# Use double puppets for backfilling?
|
|
|
|
|
# In order to use this, the double puppets must be in the appservice's user ID namespace
|
|
|
|
|
# (because the bridge can't use the double puppet access token with batch sending).
|
|
|
|
@ -257,9 +243,11 @@ bridge:
|
|
|
|
|
# manually.
|
|
|
|
|
login_shared_secret_map:
|
|
|
|
|
example.com: foobar
|
|
|
|
|
# Should the bridge explicitly set the avatar and room name for private chat portal rooms?
|
|
|
|
|
# This is implicitly enabled in encrypted rooms.
|
|
|
|
|
private_chat_portal_meta: false
|
|
|
|
|
# Whether to explicitly set the avatar and room name for private chat portal rooms.
|
|
|
|
|
# If set to `default`, this will be enabled in encrypted rooms and disabled in unencrypted rooms.
|
|
|
|
|
# If set to `always`, all DM rooms will have explicit names and avatars set.
|
|
|
|
|
# If set to `never`, DM rooms will never have names and avatars set.
|
|
|
|
|
private_chat_portal_meta: default
|
|
|
|
|
# Should group members be synced in parallel? This makes member sync faster
|
|
|
|
|
parallel_member_sync: false
|
|
|
|
|
# Should Matrix m.notice-type messages be bridged?
|
|
|
|
@ -312,9 +300,11 @@ bridge:
|
|
|
|
|
caption_in_message: false
|
|
|
|
|
# Should polls be sent using MSC3381 event types?
|
|
|
|
|
extev_polls: false
|
|
|
|
|
# Should Matrix edits be bridged to WhatsApp edits?
|
|
|
|
|
# Official WhatsApp clients don't render edits yet, but once they do, the bridge should work with them right away.
|
|
|
|
|
send_whatsapp_edits: false
|
|
|
|
|
# Should cross-chat replies from WhatsApp be bridged? Most servers and clients don't support this.
|
|
|
|
|
cross_room_replies: false
|
|
|
|
|
# Disable generating reply fallbacks? Some extremely bad clients still rely on them,
|
|
|
|
|
# but they're being phased out and will be completely removed in the future.
|
|
|
|
|
disable_reply_fallbacks: false
|
|
|
|
|
# Maximum time for handling Matrix events. Duration strings formatted for https://pkg.go.dev/time#ParseDuration
|
|
|
|
|
# Null means there's no enforced timeout.
|
|
|
|
|
message_handling_timeout:
|
|
|
|
@ -325,10 +315,8 @@ bridge:
|
|
|
|
|
# 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.
|
|
|
|
|
command_prefix: "!wa"
|
|
|
|
|
|
|
|
|
|
# Messages sent upon joining a management room.
|
|
|
|
|
# Markdown is supported. The defaults are listed below.
|
|
|
|
|
management_room_text:
|
|
|
|
@ -340,7 +328,6 @@ bridge:
|
|
|
|
|
welcome_unconnected: "Use `help` for help or `login` to log in."
|
|
|
|
|
# Optional extra text sent when joining a management room.
|
|
|
|
|
additional_help: ""
|
|
|
|
|
|
|
|
|
|
# End-to-bridge encryption support options.
|
|
|
|
|
#
|
|
|
|
|
# See https://docs.mau.fi/bridges/general/end-to-bridge-encryption.html for more info.
|
|
|
|
@ -349,7 +336,6 @@ bridge:
|
|
|
|
|
allow: __ENCRYPTION__
|
|
|
|
|
# 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.
|
|
|
|
|
# It is recommended to also set private_chat_portal_meta to true when using this.
|
|
|
|
|
default: __ENCRYPTION_DEFAULT__
|
|
|
|
|
# Whether to use MSC2409/MSC3202 instead of /sync long polling for receiving encryption-related data.
|
|
|
|
|
appservice: false
|
|
|
|
@ -358,6 +344,25 @@ bridge:
|
|
|
|
|
# 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.
|
|
|
|
|
allow_key_sharing: false
|
|
|
|
|
# Should users mentions be in the event wire content to enable the server to send push notifications?
|
|
|
|
|
plaintext_mentions: false
|
|
|
|
|
# Options for deleting megolm sessions from the bridge.
|
|
|
|
|
delete_keys:
|
|
|
|
|
# Beeper-specific: delete outbound sessions when hungryserv confirms
|
|
|
|
|
# that the user has uploaded the key to key backup.
|
|
|
|
|
delete_outbound_on_ack: false
|
|
|
|
|
# Don't store outbound sessions in the inbound table.
|
|
|
|
|
dont_store_outbound: false
|
|
|
|
|
# Ratchet megolm sessions forward after decrypting messages.
|
|
|
|
|
ratchet_on_decrypt: false
|
|
|
|
|
# Delete fully used keys (index >= max_messages) after decrypting messages.
|
|
|
|
|
delete_fully_used_on_decrypt: false
|
|
|
|
|
# Delete previous megolm sessions from same device when receiving a new one.
|
|
|
|
|
delete_prev_on_new_session: false
|
|
|
|
|
# Delete megolm sessions received from a device when the device is deleted.
|
|
|
|
|
delete_on_device_delete: false
|
|
|
|
|
# Periodically delete megolm sessions when 2x max_age has passed since receiving the session.
|
|
|
|
|
periodically_delete_expired: false
|
|
|
|
|
# What level of device verification should be required from users?
|
|
|
|
|
#
|
|
|
|
|
# Valid levels:
|
|
|
|
@ -392,7 +397,6 @@ bridge:
|
|
|
|
|
# session before changing it. The Matrix spec recommends 100 as the
|
|
|
|
|
# default.
|
|
|
|
|
messages: 100
|
|
|
|
|
|
|
|
|
|
# Settings for provisioning API
|
|
|
|
|
provisioning:
|
|
|
|
|
# Prefix for the provisioning API paths.
|
|
|
|
@ -400,7 +404,6 @@ bridge:
|
|
|
|
|
# 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.
|
|
|
|
|
shared_secret: generate
|
|
|
|
|
|
|
|
|
|
# Permissions for using the bridge.
|
|
|
|
|
# Permitted values:
|
|
|
|
|
# relay - Talk through the relaybot (if enabled), no access otherwise
|
|
|
|
@ -414,12 +417,10 @@ bridge:
|
|
|
|
|
"__LISTRELAY__": relay
|
|
|
|
|
"__LISTUSER__": user
|
|
|
|
|
"__LISTADMIN__": admin
|
|
|
|
|
|
|
|
|
|
# Settings for relay mode
|
|
|
|
|
relay:
|
|
|
|
|
# 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.
|
|
|
|
|
#enabled: false
|
|
|
|
|
enabled: __ENABLE_RELAYBOT__
|
|
|
|
|
# Should only admins be allowed to set themselves as relay users?
|
|
|
|
|
admin_only: __ADMIN_ONLY__
|
|
|
|
@ -433,22 +434,15 @@ bridge:
|
|
|
|
|
m.audio: "<b>{{ .Sender.Displayname }}</b> sent an audio file"
|
|
|
|
|
m.video: "<b>{{ .Sender.Displayname }}</b> sent a video"
|
|
|
|
|
m.location: "<b>{{ .Sender.Displayname }}</b> sent a location"
|
|
|
|
|
|
|
|
|
|
# Logging config.
|
|
|
|
|
# Logging config. See https://github.com/tulir/zeroconfig for details.
|
|
|
|
|
logging:
|
|
|
|
|
# The directory for log files. Will be created if not found.
|
|
|
|
|
#directory: ./logs
|
|
|
|
|
directory: /var/log/__APP__
|
|
|
|
|
# Available variables: .Date for the file date and .Index for different log files on the same day.
|
|
|
|
|
# Set this to null to disable logging to file.
|
|
|
|
|
#file_name_format: "{{.Date}}-{{.Index}}.log"
|
|
|
|
|
file_name_format: null
|
|
|
|
|
# Date format for file names in the Go time format: https://golang.org/pkg/time/#pkg-constants
|
|
|
|
|
#file_date_format: "2006-01-02"
|
|
|
|
|
# Log file permissions.
|
|
|
|
|
file_mode: 0o600
|
|
|
|
|
# Timestamp format for log entries in the Go time format.
|
|
|
|
|
timestamp_format: "Jan _2, 2006 15:04:05"
|
|
|
|
|
# Minimum severity for log messages printed to stdout/stderr. This doesn't affect the log file.
|
|
|
|
|
# Options: debug, info, warn, error, fatal
|
|
|
|
|
print_level: __PRINT_LEVEL__
|
|
|
|
|
min_level: __PRINT_LEVEL__
|
|
|
|
|
writers:
|
|
|
|
|
- type: stdout
|
|
|
|
|
format: pretty-colored
|
|
|
|
|
- type: file
|
|
|
|
|
format: json
|
|
|
|
|
filename: /var/log/__APP__
|
|
|
|
|
max_size: 100
|
|
|
|
|
max_backups: 10
|
|
|
|
|
compress: true
|
|
|
|
|