-
Notifications
You must be signed in to change notification settings - Fork 48
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
3 changed files
with
50 additions
and
327 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,320 +1,50 @@ | ||
# Homeserver details. | ||
homeserver: | ||
# The address that this appservice can use to connect to the homeserver. | ||
address: {{ .HungryAddress }} | ||
# The domain of the homeserver (also known as server_name, used for MXIDs, etc). | ||
domain: beeper.local | ||
|
||
# What software is the homeserver running? | ||
# Standard Matrix homeservers like Synapse, Dendrite and Conduit should just use "standard" here. | ||
software: hungry | ||
# The URL to push real-time bridge status to. | ||
# If set, the bridge will make POST requests to this URL whenever a user's FB/IG connection state changes. | ||
# The bridge will use the appservice as_token to authorize requests. | ||
status_endpoint: null | ||
# Endpoint for reporting per-message status. | ||
message_send_checkpoint_endpoint: null | ||
# Does the homeserver support https://github.com/matrix-org/matrix-spec-proposals/pull/2246? | ||
async_media: true | ||
|
||
# Should the bridge use a websocket for connecting to the homeserver? | ||
# The server side is currently not documented anywhere and is only implemented by mautrix-wsproxy, | ||
# mautrix-asmux (deprecated), and hungryserv (proprietary). | ||
websocket: {{ .Websocket }} | ||
# How often should the websocket be pinged? Pinging will be disabled if this is zero. | ||
ping_interval_seconds: 180 | ||
|
||
# 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: null | ||
|
||
# The hostname and port where this appservice should listen. | ||
hostname: {{ if .Websocket }}null{{ else }}{{ .ListenAddr }}{{ end }} | ||
port: {{ if .Websocket }}null{{ else }}{{ .ListenPort }}{{ end }} | ||
|
||
# Database config. | ||
database: | ||
# The database type. "sqlite3-fk-wal" and "postgres" are supported. | ||
type: sqlite3-fk-wal | ||
# The database URI. | ||
# SQLite: A raw file path is supported, but `file:<path>?_txlock=immediate` is recommended. | ||
# https://github.com/mattn/go-sqlite3#connection-string | ||
# Postgres: Connection string. For example, postgres://user:password@host/database?sslmode=disable | ||
# To connect via Unix socket, use something like postgres:///dbname?host=/var/run/postgresql | ||
uri: file:{{.DatabasePrefix}}mautrix-meta.db?_txlock=immediate | ||
# Maximum number of connections. Mostly relevant for Postgres. | ||
max_open_conns: 5 | ||
max_idle_conns: 2 | ||
# Maximum connection idle time and lifetime before they're closed. Disabled if null. | ||
# Parsed with https://pkg.go.dev/time#ParseDuration | ||
max_conn_idle_time: null | ||
max_conn_lifetime: null | ||
|
||
# The unique ID of this appservice. | ||
id: {{ .AppserviceID }} | ||
# Appservice bot details. | ||
bot: | ||
# Username of the appservice bot. | ||
username: {{ .BridgeName }}bot | ||
# Display name and avatar for bot. Set to "remove" to remove display name/avatar, leave empty | ||
# to leave display name/avatar as-is. | ||
displayname: {{ if eq .Params.meta_platform "facebook" }}Facebook{{ else }}Instagram{{ end }} bridge bot | ||
avatar: mxc://maunium.net/{{ if eq .Params.meta_platform "facebook" }}ygtkteZsXnGJLJHRchUwYWak{{ else }}JxjlbZUlCPULEeHZSwleUXQv{{ end }} | ||
|
||
# Whether or not to receive ephemeral events via appservice transactions. | ||
# Requires MSC2409 support (i.e. Synapse 1.22+). | ||
ephemeral_events: true | ||
|
||
# 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: {{ .ASToken }} | ||
hs_token: {{ .HSToken }} | ||
|
||
# Prometheus config. | ||
metrics: | ||
# Enable prometheus metrics? | ||
enabled: false | ||
# IP and port where the metrics listener should be. The path is always /metrics | ||
listen: 127.0.0.1:8000 | ||
|
||
meta: | ||
# Which service is this bridge for? Either "facebook" or "instagram". | ||
# Remember to change the appservice id, bot profile info and bridge username_template too. | ||
# Network-specific config options | ||
network: | ||
# Which service is this bridge for? Available options: | ||
# * unset - allow users to pick any service when logging in (except facebook-tor) | ||
# * facebook - connect to FB Messenger via facebook.com | ||
# * facebook-tor - connect to FB Messenger via facebookwkhpilnemxj7asaniu7vnjjbiltxjqhye3mhbshg7kx5tfyd.onion | ||
# (note: does not currently proxy media downloads) | ||
# * messenger - connect to FB Messenger via messenger.com (can be used with the facebook side deactivated) | ||
# * instagram - connect to Instagram DMs via instagram.com | ||
# | ||
# Remember to change the appservice id, bot profile info, bridge username_template and management_room_text too. | ||
mode: {{ .Params.meta_platform }} | ||
# When in Instagram mode, should the bridge connect to WhatsApp servers for encrypted chats? | ||
# In FB/Messenger mode encryption is always enabled, this option only affects Instagram mode. | ||
ig_e2ee: true | ||
ig_e2ee: false | ||
# Displayname template for FB/IG users. Available variables: | ||
# .DisplayName - The display name set by the user. | ||
# .Username - The username set by the user. | ||
# .ID - The internal user ID of the user. | ||
displayname_template: {{ `'{{or .DisplayName .Username "Unknown user"}}'` }} | ||
# Static proxy address (HTTP or SOCKS5) for connecting to Meta. | ||
proxy: {{ .Params.proxy }} | ||
proxy: | ||
# HTTP endpoint to request new proxy address from, for dynamically assigned proxies. | ||
# The endpoint must return a JSON body with a string field called proxy_url. | ||
get_proxy_from: | ||
|
||
# Bridge config | ||
bridge: | ||
# Localpart template of MXIDs for FB/IG users. | ||
username_template: {{ .BridgeName }}_{{ "{{.}}" }} | ||
# Displayname template for FB/IG users. This is also used as the room name in DMs if private_chat_portal_meta is enabled. | ||
displayname_template: {{ `'{{or .DisplayName .Username "Unknown user" }}'` }} | ||
# 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 | ||
|
||
portal_message_buffer: 128 | ||
|
||
# Should the bridge create a space for each logged-in user and add bridged rooms to it? | ||
# Users who logged in before turning this on should run `!meta sync-space` to create and fill the space for the first time. | ||
personal_filtering_spaces: true | ||
# Should Matrix m.notice-type messages be bridged? | ||
bridge_notices: true | ||
# Should the bridge send a read receipt from the bridge bot when a message has been sent to FB/IG? | ||
delivery_receipts: false | ||
# Whether the bridge should send the message status as a custom com.beeper.message_send_status event. | ||
message_status_events: true | ||
# Whether the bridge should send error notices via m.notice events when a message fails to bridge. | ||
message_error_notices: false | ||
# Should the bridge never send alerts to the bridge management room? | ||
# These are mostly things like the user being logged out. | ||
disable_bridge_alerts: true | ||
# Should the bridge update the m.direct account data event when double puppeting is enabled. | ||
# Note that updating the m.direct event is not atomic (except with mautrix-asmux) | ||
# and is therefore prone to race conditions. | ||
sync_direct_chat_list: false | ||
# Set this to true to tell the bridge to re-send m.bridge events to all rooms on the next run. | ||
# This field will automatically be changed back to false after it, except if the config file is not writable. | ||
resend_bridge_info: false | ||
# Send captions in the same message as images. This will send data compatible with both MSC2530. | ||
# This is currently not supported in most clients. | ||
caption_in_message: true | ||
# Whether or not created rooms should have federation enabled. | ||
# If false, created portal rooms will never be federated. | ||
federate_rooms: false | ||
# Should mute status be bridged? Allowed options: always, on-create, never | ||
mute_bridging: on-create | ||
|
||
# Servers to always allow double puppeting from | ||
double_puppet_server_map: | ||
{{ .BeeperDomain }}: {{ .HungryAddress }} | ||
# Allow using double puppeting from any server with a valid client .well-known file. | ||
double_puppet_allow_discovery: false | ||
# Shared secrets for https://github.com/devture/matrix-synapse-shared-secret-auth | ||
# | ||
# If set, double puppeting will be enabled automatically for local users | ||
# instead of users having to find an access token and run `login-matrix` | ||
# manually. | ||
login_shared_secret_map: | ||
{{ .BeeperDomain }}: "as_token:{{ .ASToken }}" | ||
|
||
# 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: | ||
# 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. | ||
command_prefix: default | ||
|
||
backfill: | ||
# If disabled, old messages will never be bridged. | ||
enabled: true | ||
# By default, Meta sends info about approximately 20 recent threads. If this is set to something else than 0, | ||
# the bridge will request more threads on first login, until it reaches the specified number of pages | ||
# or the end of the inbox. | ||
inbox_fetch_pages: 0 | ||
# By default, Meta only sends one old message per thread. If this is set to a something else than 0, | ||
# the bridge will delay handling the one automatically received message and request more messages to backfill. | ||
# One page usually contains 20 messages. This can technically be set to -1 to fetch all messages, | ||
# but that will block bridging messages until the entire backfill is completed. | ||
history_fetch_pages: 0 | ||
# Same as above, but for catchup backfills (i.e. when the bridge is restarted). | ||
catchup_fetch_pages: 5 | ||
# Maximum age of chats to leave as unread when backfilling. 0 means all chats can be left as unread. | ||
# If non-zero, chats that are older than this will be marked as read, even if they're still unread on Meta. | ||
unread_hours_threshold: 720 | ||
# Backfill queue settings. Only relevant for Beeper, because standard Matrix servers | ||
# don't support inserting messages into room history. | ||
queue: | ||
# How many pages of messages to request in one go (without sleeping between requests)? | ||
pages_at_once: 5 | ||
# Maximum number of pages to fetch. -1 to fetch all pages until the start of the chat. | ||
max_pages: -1 | ||
# How long to sleep after fetching a bunch of pages ("bunch" defined by pages_at_once). | ||
sleep_between_tasks: 180s | ||
# Disable fetching XMA media (reels, stories, etc) when backfilling. | ||
dont_fetch_xma: true | ||
|
||
# Messages sent upon joining a management room. | ||
# Markdown is supported. The defaults are listed below. | ||
management_room_text: | ||
# Sent when joining a room. | ||
welcome: "Hello, I'm {{ if eq .Params.meta_platform "facebook" }}a Facebook{{ else }}an Instagram{{ end }} bridge bot." | ||
# Sent when joining a management room and the user is already logged in. | ||
welcome_connected: "Use `help` for help." | ||
# Sent when joining a management room and the user is not logged in. | ||
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. | ||
encryption: | ||
# Allow encryption, work in group chat rooms with e2ee enabled | ||
allow: true | ||
# 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. | ||
default: true | ||
# Whether to use MSC2409/MSC3202 instead of /sync long polling for receiving encryption-related data. | ||
appservice: true | ||
# Require encryption, drop any unencrypted messages. | ||
require: true | ||
# 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: true | ||
# 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: true | ||
# Don't store outbound sessions in the inbound table. | ||
dont_store_outbound: false | ||
# Ratchet megolm sessions forward after decrypting messages. | ||
ratchet_on_decrypt: true | ||
# Delete fully used keys (index >= max_messages) after decrypting messages. | ||
delete_fully_used_on_decrypt: true | ||
# Delete previous megolm sessions from same device when receiving a new one. | ||
delete_prev_on_new_session: true | ||
# Delete megolm sessions received from a device when the device is deleted. | ||
delete_on_device_delete: true | ||
# Periodically delete megolm sessions when 2x max_age has passed since receiving the session. | ||
periodically_delete_expired: true | ||
# Delete inbound megolm sessions that don't have the received_at field used for | ||
# automatic ratcheting and expired session deletion. This is meant as a migration | ||
# to delete old keys prior to the bridge update. | ||
delete_outdated_inbound: false | ||
# What level of device verification should be required from users? | ||
# | ||
# Valid levels: | ||
# unverified - Send keys to all device in the room. | ||
# 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-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. | ||
# verified - Require manual per-device verification | ||
# (currently only possible by modifying the `trust` column in the `crypto_device` database table). | ||
verification_levels: | ||
# Minimum level for which the bridge should send keys to when bridging messages from FB/IG to Matrix. | ||
receive: cross-signed-tofu | ||
# Minimum level that the bridge should accept for incoming Matrix messages. | ||
send: cross-signed-tofu | ||
# Minimum level that the bridge should require for accepting key requests. | ||
share: cross-signed-tofu | ||
# Options for Megolm room key rotation. These options allow you to | ||
# configure the m.room.encryption event content. See: | ||
# https://spec.matrix.org/v1.3/client-server-api/#mroomencryption for | ||
# more information about that event. | ||
rotation: | ||
# Enable custom Megolm room key rotation settings. Note that these | ||
# settings will only apply to rooms created after this option is | ||
# set. | ||
enable_custom: true | ||
# The maximum number of milliseconds a session should be used | ||
# before changing it. The Matrix spec recommends 604800000 (a week) | ||
# as the default. | ||
milliseconds: 2592000000 | ||
# The maximum number of messages that should be sent with a given a | ||
# session before changing it. The Matrix spec recommends 100 as the | ||
# default. | ||
messages: 10000 | ||
|
||
# Disable rotating keys when a user's devices change? | ||
# You should not enable this option unless you understand all the implications. | ||
disable_device_change_key_rotation: true | ||
|
||
# Settings for provisioning API | ||
provisioning: | ||
# Prefix for the provisioning API paths. | ||
prefix: /_matrix/provision | ||
# 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: {{ .ProvisioningSecret }} | ||
# Enable debug API at /debug with provisioning authentication. | ||
debug_endpoints: false | ||
|
||
# Permissions for using the bridge. | ||
# Permitted values: | ||
# relay - Talk through the relaybot (if enabled), no access otherwise | ||
# user - Access to use the bridge to chat with a Meta account. | ||
# admin - User level and some additional administration tools | ||
# Permitted keys: | ||
# * - All Matrix users | ||
# domain - All users on that homeserver | ||
# mxid - Specific user | ||
permissions: | ||
"{{ .UserID }}": admin | ||
|
||
# Logging config. See https://github.com/tulir/zeroconfig for details. | ||
logging: | ||
min_level: debug | ||
writers: | ||
- type: stdout | ||
format: pretty-colored | ||
- type: file | ||
format: json | ||
filename: ./logs/mautrix-meta.log | ||
max_size: 100 | ||
max_backups: 10 | ||
compress: false | ||
# Minimum interval between full reconnects in seconds, default is 1 hour | ||
min_full_reconnect_interval_seconds: 3600 | ||
# Interval to force refresh the connection (full reconnect), default is 20 hours. Set 0 to disable force refreshes. | ||
force_refresh_interval_seconds: 72000 | ||
# Disable fetching XMA media (reels, stories, etc) when backfilling. | ||
disable_xma_backfill: true | ||
# Disable fetching XMA media entirely. | ||
disable_xma_always: false | ||
|
||
{{ setfield . "DatabaseFileName" "mautrix-meta" -}} | ||
{{ setfield . "DefaultPickleKey" "mautrix.bridge.e2ee" -}} | ||
{{ if eq .Params.meta_platform "facebook" "facebook-tor" "messenger" -}} | ||
{{ setfield . "CommandPrefix" "!fb" -}} | ||
{{ setfield . "BridgeTypeName" "Facebook" -}} | ||
{{ setfield . "BridgeTypeIcon" "mxc://maunium.net/ygtkteZsXnGJLJHRchUwYWak" -}} | ||
{{ else if eq .Params.meta_platform "instagram" -}} | ||
{{ setfield . "CommandPrefix" "!ig" -}} | ||
{{ setfield . "BridgeTypeName" "Instagram" -}} | ||
{{ setfield . "BridgeTypeIcon" "mxc://maunium.net/JxjlbZUlCPULEeHZSwleUXQv" -}} | ||
{{ else -}} | ||
{{ setfield . "CommandPrefix" "!meta" -}} | ||
{{ setfield . "BridgeTypeName" "Meta" -}} | ||
{{ setfield . "BridgeTypeIcon" "mxc://maunium.net/DxpVrwwzPUwaUSazpsjXgcKB" -}} | ||
{{ end -}} | ||
{{ template "bridgev2.tpl.yaml" . }} |
Oops, something went wrong.