diff --git a/conf/config.yaml b/conf/config.yaml
index ca95704..dce6415 100644
--- a/conf/config.yaml
+++ b/conf/config.yaml
@@ -12,15 +12,20 @@ homeserver:
# updating m.direct.
# asmux: false
asmux: __MATRIX_SERVER_SUPPORTS_ASMUX__
+ # Number of retries for all HTTP requests if the homeserver isn't reachable.
+ http_retry_count: 4
+ # The URL to push real-time bridge status to.
+ # If set, the bridge will make POST requests to this URL whenever a user's Facebook MQTT 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
# 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__
- # When using https:// the TLS certificate and key files for the address.
- tls_cert: false
- tls_key: false
# The hostname and port where this appservice should listen.
hostname: 0.0.0.0
@@ -29,15 +34,19 @@ appservice:
# Usually 1 is enough, but on high-traffic bridges you might need to increase this to avoid 413s
max_body_size: 1
- # The full URI to the database. Only Postgres is currently supported.
+ # The full URI to the database. SQLite and Postgres are supported.
+ # Format examples:
+ # SQLite: sqlite:///filename.db
+ # Postgres: postgres://username:password@hostname/dbname
database: postgres://__MAUTRIX_BRIDGE_USER__:__MAUTRIX_BRIDGE_DB_PWD__@localhost:5432/__MAUTRIX_BRIDGE_DB_NAME__
- # Additional arguments for asyncpg.create_pool()
+ # Additional arguments for asyncpg.create_pool() or sqlite3.connect
# https://magicstack.github.io/asyncpg/current/api/index.html#asyncpg.pool.create_pool
- database_opts:
+ # https://docs.python.org/3/library/sqlite3.html#sqlite3.connect
+ # For sqlite, min_size is used as the connection thread pool size and max_size is ignored.
+ database_opts:
min_size: 5
max_size: 10
-
# Public part of web server for out-of-Matrix interaction with the bridge.
public:
# Whether or not the public-facing endpoints should be enabled.
@@ -51,6 +60,11 @@ appservice:
# If set to "generate", a random string will be generated on the next startup.
# If null, integration manager access to the API will not be possible.
shared_secret: generate
+ # Allow logging in within Matrix. If false, users can only log in using the web interface.
+ allow_matrix_login: true
+ # Segment API key to enable analytics tracking for web server endpoints. Set to null to disable.
+ # Currently the only events are login start, success and fail.
+ segment_key: null
# The unique ID of this appservice.
id: __BOTNAME__
@@ -58,15 +72,9 @@ appservice:
bot_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.
- bot_displayname: FB bridge bot
+ bot_displayname: Facebook bridge bot
bot_avatar: mxc://maunium.net/ygtkteZsXnGJLJHRchUwYWak
- # Community ID for bridged users (changes registration file) and rooms.
- # Must be created manually.
- #
- # Example: "+fb:example.com". Set to false to disable.
- community_id: +fb:__SERVER_NAME__
-
# 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.
@@ -81,18 +89,22 @@ metrics:
enabled: false
listen_port: 8000
+# Manhole config.
+manhole:
+ # Whether or not opening the manhole is allowed.
+ enabled: false
+ # The path for the unix socket.
+ path: /var/tmp/mautrix-facebook.manhole
+ # The list of UIDs who can be added to the whitelist.
+ # If empty, any UIDs can be specified in the open-manhole command.
+ whitelist:
+ - 0
+
# Bridge config
bridge:
# Localpart template of MXIDs for Facebook users.
# {userid} is replaced with the user ID of the Facebook user.
- username_template: "fb_{userid}"
- # Localpart template for per-user room grouping community IDs.
- # The bridge will create these communities and add all of the specific user's portals to the community.
- # {localpart} is the MXID localpart and {server} is the MXID server part of the user.
- # (Note that, by default, non-admins might not have your homeserver's permission to create
- # communities. You should set `enable_group_creation: true` in homeserver.yaml to fix this.)
- # `facebook_{localpart}={server}` is a good value.
- community_template: 'facebook_{localpart}={server}'
+ username_template: "facebook_{userid}"
# Displayname template for Facebook users.
# {displayname} is replaced with the display name of the Facebook user
# as defined below in displayname_preference.
@@ -138,9 +150,9 @@ bridge:
# you must also set the URL in the double_puppet_server_map.
login_shared_secret_map:
example.com: foobar
- # Whether or not to bridge presence in both directions. Facebook allows users not to broadcast
- # presence, but then it won't send other users' presence to the client.
- presence: true
+ # Should presence from Facebook be bridged? This doesn't use the same API as the Android app,
+ # so it might be more suspicious to Facebook.
+ presence_from_facebook: true
# Whether or not to update avatars when syncing all contacts at startup.
update_avatar_initial_sync: true
# End-to-bridge encryption support options. These require matrix-nio to be installed with pip
@@ -171,7 +183,10 @@ bridge:
delivery_receipts: false
# Whether to allow inviting arbitrary mxids to portal rooms
allow_invites: false
- # Settings for backfilling messages from Facebook.
+ # Whether or not created rooms should have federation enabled.
+ # If false, created portal rooms will never be federated.
+ federate_rooms: true
+ # Settings for backfilling messages from Facebook.
backfill:
# Whether or not the Facebook users of logged in Matrix users should be
# invited to private chats when backfilling history from Facebook. This is
@@ -191,29 +206,47 @@ bridge:
# Interval in seconds in which to automatically reconnect all users.
# This can be used to automatically mitigate the bug where Facebook stops sending messages.
# Set to -1 to disable periodic reconnections entirely.
+ # Set to a list of two items to randomize the interval (min, max).
interval: -1
# What to do in periodic reconnects. Either "refresh" or "reconnect"
mode: refresh
# Should even disconnected users be reconnected?
always: false
+ # Only reconnect if the user has been connected for longer than this value
+ min_connected_time: 0
# The number of seconds that a disconnection can last without triggering an automatic re-sync
# and missed message backfilling when reconnecting.
# Set to 0 to always re-sync, or -1 to never re-sync automatically.
resync_max_disconnected_time: 5
+ # Should the bridge do a resync on startup?
+ sync_on_startup: true
# Whether or not temporary disconnections should send notices to the notice room.
# If this is false, disconnections will never send messages and connections will only send
# messages if it was disconnected for more than resync_max_disconnected_time seconds.
temporary_disconnect_notices: true
- # Whether or not the bridge should try to "refresh" the connection if a normal reconnection
- # attempt fails.
- refresh_on_reconnection_fail: false
+ # Disable bridge notices entirely
+ disable_bridge_notices: false
+ on_reconnection_fail:
+ # What to do if a reconnection attempt fails? Options: reconnect, refresh, null
+ action: reconnect
+ # Seconds to wait before attempting to refresh the connection, set a list of two items to
+ # to randomize the interval (min, max).
+ wait_for: 0
# 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
+ # When using double puppeting, should muted chats be muted in Matrix?
+ mute_bridging: false
+ # Whether or not mute status and tags should only be bridged when the portal room is created.
+ tag_only_on_create: true
+ # If set to true, downloading media from the CDN will use a plain aiohttp client without the usual headers or
+ # other configuration. This may be useful if you don't want to use the default proxy for large files.
+ sandbox_media_download: false
# Permissions for using the bridge.
# Permitted values:
+ # relay - Allowed to be relayed through the bridge, no access to commands.
# user - Use the bridge with puppeting.
# admin - Use and administrate the bridge.
# Permitted keys:
@@ -221,9 +254,38 @@ bridge:
# domain - All users on that homeserver
# mxid - Specific user
permissions:
+ "__BOTUSERS__": "relay"
"__BOTUSERS__": "user"
"__BOTADMIN__": "admin"
+ relay:
+ # Whether relay mode should be allowed. If allowed, `!fb set-relay` can be used to turn any
+ # authenticated user into a relaybot for that chat.
+ enabled: true
+ # The formats to use when sending messages to Messenger via a relay user.
+ #
+ # Available variables:
+ # $sender_displayname - The display name of the sender (e.g. Example User)
+ # $sender_username - The username (Matrix ID localpart) of the sender (e.g. exampleuser)
+ # $sender_mxid - The Matrix ID of the sender (e.g. @exampleuser:example.com)
+ # $message - The message content
+ message_formats:
+ m.text: '$sender_displayname: $message'
+ m.notice: '$sender_displayname: $message'
+ m.emote: '* $sender_displayname $message'
+ m.file: '$sender_displayname sent a file'
+ m.image: '$sender_displayname sent an image'
+ m.audio: '$sender_displayname sent an audio file'
+ m.video: '$sender_displayname sent a video'
+ m.location: '$sender_displayname sent a location'
+
+facebook:
+ device_seed: generate
+ default_region_hint: ODN
+ connection_type: WIFI
+ carrier: Verizon
+ hni: 311390
+
# Python logging configuration.
#
# See section 16.7.2 of the Python documentation for more info: