From 0f70d603f34c201dd75b419b82bef2448bd23710 Mon Sep 17 00:00:00 2001 From: Jean-Marie Mineau Date: Sun, 6 Mar 2022 16:38:05 +0100 Subject: [PATCH] move matrix-bridge-facebook to a submodule --- .gitmodules | 3 + roles/matrix-bridge-facebook | 1 + .../matrix-bridge-facebook/handlers/main.yml | 5 - roles/matrix-bridge-facebook/tasks/main.yml | 89 ------ .../templates/bridge_facebook.service | 12 - .../templates/config.yaml | 265 ------------------ 6 files changed, 4 insertions(+), 371 deletions(-) create mode 160000 roles/matrix-bridge-facebook delete mode 100644 roles/matrix-bridge-facebook/handlers/main.yml delete mode 100644 roles/matrix-bridge-facebook/tasks/main.yml delete mode 100644 roles/matrix-bridge-facebook/templates/bridge_facebook.service delete mode 100644 roles/matrix-bridge-facebook/templates/config.yaml diff --git a/.gitmodules b/.gitmodules index 53a5843..6d39623 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,3 +1,6 @@ [submodule "roles/matrix-bridge-discord"] path = roles/matrix-bridge-discord url = ssh://git@gitea.auro.re:2222/Pains-Perdus/matrix-bridge-discord.git +[submodule "roles/matrix-bridge-facebook"] + path = roles/matrix-bridge-facebook + url = ssh://git@gitea.auro.re:2222/Pains-Perdus/matrix-bridge-facebook.git diff --git a/roles/matrix-bridge-facebook b/roles/matrix-bridge-facebook new file mode 160000 index 0000000..88f59ed --- /dev/null +++ b/roles/matrix-bridge-facebook @@ -0,0 +1 @@ +Subproject commit 88f59ed6ddc1d3b2610cfad97bd00543c206e7c6 diff --git a/roles/matrix-bridge-facebook/handlers/main.yml b/roles/matrix-bridge-facebook/handlers/main.yml deleted file mode 100644 index 0c8fa05..0000000 --- a/roles/matrix-bridge-facebook/handlers/main.yml +++ /dev/null @@ -1,5 +0,0 @@ ---- -- name: Restart the facebook bridge - systemd: - name: bridge_facebook - state: restarted diff --git a/roles/matrix-bridge-facebook/tasks/main.yml b/roles/matrix-bridge-facebook/tasks/main.yml deleted file mode 100644 index 4a4decf..0000000 --- a/roles/matrix-bridge-facebook/tasks/main.yml +++ /dev/null @@ -1,89 +0,0 @@ ---- - -- name: Setup postgres - include_role: - name: postgre - vars: - postgres_users: - - name: bridge_facebook_user - password: "{{ matrix_bridge_facebook_postgre_user_pwd }}" - databases: - - name: bridge_facebook - owner: bridge_facebook_user - local: C - template: template0 - no_log: true - -- name: Install dependencies - apt: - name: - - python3 - - python3-virtualenv - - python3-pip - state: latest - update_cache: true - register: apt_result - retries: 3 - until: apt_result is succeeded - -- name: Create the mautrix-facebook user - user: - name: mautrix-facebook - home: /opt/mautrix-facebook - password_lock: yes - system: yes - -- name: Install bridge - become: yes - become_user: mautrix-facebook - pip: - name: mautrix-facebook[animated_stickers] - virtualenv: /opt/mautrix-facebook - virtualenv_command: virtualenv - virtualenv_python: /usr/bin/python3 - -- name: Configure the bridge - template: - src: config.yaml - dest: /opt/mautrix-facebook/config.yaml - owner: mautrix-facebook - group: nogroup - mode: '0600' - notify: Restart the facebook bridge - no_log: true - -- name: Generate facebook-registration.yaml - become: yes - become_user: mautrix-facebook - shell: - cmd: "/opt/mautrix-facebook/bin/python -m mautrix_facebook -g" - chdir: /opt/mautrix-facebook - creates: /opt/mautrix-facebook/registration.yaml - notify: Restart synapse - no_log: true - -- name: Copy config for synapse - file: - src: /opt/mautrix-facebook/registration.yaml - dest: /etc/matrix-synapse/facebook-registration.yaml - state: link - -- name: Ensure the log directory exists - file: - path: /var/log/bridge_facebook - state: directory - group: nogroup - owner: mautrix-facebook - mode: u=rwx,g=rx,o= - -- name: Copy the daemon configuration - template: - src: bridge_facebook.service - dest: /etc/systemd/system/bridge_facebook.service - notify: Restart the facebook bridge - -- name: Enable the daemon - systemd: - name: bridge_facebook - state: started - enabled: yes diff --git a/roles/matrix-bridge-facebook/templates/bridge_facebook.service b/roles/matrix-bridge-facebook/templates/bridge_facebook.service deleted file mode 100644 index a5350e6..0000000 --- a/roles/matrix-bridge-facebook/templates/bridge_facebook.service +++ /dev/null @@ -1,12 +0,0 @@ -{{ ansible_managed | comment }} - -[Unit] -Description=mautrix-facebook bridge - -[Service] -WorkingDirectory=~ -ExecStart=/opt/mautrix-facebook/bin/python -m mautrix_facebook -User=mautrix-facebook - -[Install] -WantedBy=multi-user.target diff --git a/roles/matrix-bridge-facebook/templates/config.yaml b/roles/matrix-bridge-facebook/templates/config.yaml deleted file mode 100644 index 8e0e594..0000000 --- a/roles/matrix-bridge-facebook/templates/config.yaml +++ /dev/null @@ -1,265 +0,0 @@ -{{ ansible_managed | comment }} - -# Homeserver details -homeserver: - # The address that this appservice can use to connect to the homeserver. - address: "https://{{ matrix_server_name }}" - # The domain of the homeserver (for MXIDs, etc). - domain: "{{ matrix_server_name }}" - # Whether or not to verify the SSL certificate of the homeserver. - # Only applies if address starts with https:// - verify_ssl: true - # Whether or not the homeserver supports asmux-specific endpoints, - # such as /_matrix/client/unstable/net.maunium.asmux/dms for atomically - # updating m.direct. - asmux: false - # 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: - -# 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:29319 - - # The hostname and port where this appservice should listen. - hostname: localhost - port: 29319 - # The maximum body size of appservice API requests (from the homeserver) in mebibytes - # 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. - database: postgres://bridge_facebook_user:{{ matrix_bridge_facebook_postgre_user_pwd }}@localhost/bridge_facebook - # Additional arguments for asyncpg.create_pool() - # https://magicstack.github.io/asyncpg/current/api/index.html#asyncpg.pool.create_pool - 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. - enabled: false - # The prefix to use in the public-facing endpoints. - prefix: /public - # The base URL where the public-facing endpoints are available. The prefix is not added - # implicitly. - external: - # Shared secret for integration managers such as mautrix-manager. - # 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: {{ matrix_bridge_facebook_integration_manager_shared_secret }} - # Allow logging in within Matrix. If false, users can only log in using the web interface. - allow_matrix_login: true - - # The unique ID of this appservice. - id: facebook - # Username of the appservice bot. - bot_username: facebookbot - # 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: Facebook bridge bot - bot_avatar: mxc://maunium.net/ygtkteZsXnGJLJHRchUwYWak - - # Community ID for bridged users (changes registration file) and rooms. - # Must be created manually. Example: "+facebook:example.com" - community_id: - - # 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: false - - # Authentication tokens for AS <-> HS communication. Autogenerated; do not modify. - as_token: {{ matrix_bridge_facebook_as_token }} - hs_token: {{ matrix_bridge_facebook_hs_token }} - -# Prometheus telemetry config. Requires prometheus-client to be installed. -metrics: - enabled: false - listen_port: 8000 - -# Bridge config -bridge: - # Localpart template of MXIDs for Facebook users. - # {userid} is replaced with the user ID of the Facebook user. - username_template: facebook_{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} - # Displayname template for Facebook users. - # {displayname} is replaced with the display name of the Facebook user - # as defined below in displayname_preference. - # Keys available for displayname_preference are also available here. - displayname_template: '{displayname} (FB)' - # Available keys: - # "name" (full name) - # "first_name" - # "last_name" - # "nickname" - # "own_nickname" (user-specific!) - displayname_preference: - - name - - first_name - - # The prefix for commands. Only required in non-management rooms. - command_prefix: '!fb' - - # Number of chats to sync (and create portals for) on startup/login. - # Set 0 to disable automatic syncing. - initial_chat_sync: 20 - # Whether or not the Facebook users of logged in Matrix users should be - # invited to private chats when the user sends a message from another client. - invite_own_puppet_to_pm: false - # Whether or not to use /sync to get presence, read receipts and typing notifications - # when double puppeting is enabled - sync_with_custom_puppets: true - # Whether or not to 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 - # Servers to always allow double puppeting from - double_puppet_server_map: - # 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, custom puppets will be enabled automatically for local users - # instead of users having to find an access token and run `login-matrix` - # manually. - # If using this for other servers than the bridge's server, - # you must also set the URL in the double_puppet_server_map. - login_shared_secret_map: - # 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 - # 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 - # and login_shared_secret to be configured in order to get a device for the bridge bot. - # - # Additionally, https://github.com/matrix-org/synapse/pull/5758 is required if using a normal - # application service. - encryption: - # Allow encryption, work in group chat rooms with e2ee enabled - allow: false - # 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: false - # Options for automatic key sharing. - key_sharing: - # 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: false - # Require the requesting device to have a valid cross-signing signature? - # This doesn't require that the bridge has verified the device, only that the user has verified it. - # Not yet implemented. - require_cross_signing: false - # Require devices to be verified by the bridge? - # Verification by the bridge is not yet implemented. - require_verification: true - # Whether or not the bridge should send a read receipt from the bridge bot when a message has - # been sent to Facebook. - delivery_receipts: false - # Whether to allow inviting arbitrary mxids to portal rooms - allow_invites: false - # 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 - # usually needed to prevent rate limits and to allow timestamp massaging. - invite_own_puppet: true - # Maximum number of messages to backfill initially. - # Set to 0 to disable backfilling when creating portal. - initial_limit: 0 - # Maximum number of messages to backfill if messages were missed while - # the bridge was disconnected. - # Set to 0 to disable backfilling missed messages. - missed_limit: 1000 - # If using double puppeting, should notifications be disabled - # while the initial backfill is in progress? - disable_notifications: false - periodic_reconnect: - # 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. - interval: 3600 - # What to do in periodic reconnects. Either "refresh" or "reconnect" - mode: refresh - # Should even disconnected users be reconnected? - always: false - # 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 - # 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 - # Disable bridge notices entirely - disable_bridge_notices: false - # Whether or not the bridge should try to "refresh" the connection if a normal reconnection - # attempt fails. - refresh_on_reconnection_fail: 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 - # 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 - - # Permissions for using the bridge. - # Permitted values: - # user - Use the bridge with puppeting. - # admin - Use and administrate the bridge. - # Permitted keys: - # * - All Matrix users - # domain - All users on that homeserver - # mxid - Specific user - permissions: - {{ matrix_server_name }}: user -{% for user in matrix_bridge_facebook_allowed_external_user %} - '{{ user }}': user -{% endfor %} -{% for admin in matrix_bridge_facebook_admins %} - '@{{ admin }}:{{ matrix_server_name }}': admin -{% endfor %} -logging: - version: 1 - formatters: - colored: - (): mautrix_facebook.util.ColorFormatter - format: '[%(asctime)s] [%(levelname)s@%(name)s] %(message)s' - normal: - format: '[%(asctime)s] [%(levelname)s@%(name)s] %(message)s' - handlers: - file: - class: logging.handlers.RotatingFileHandler - formatter: normal - filename: /var/log/bridge_facebook/mautrix-facebook.log - maxBytes: 10485760 - backupCount: 10 - console: - class: logging.StreamHandler - formatter: colored - loggers: - mau: - level: DEBUG - paho: - level: INFO - aiohttp: - level: INFO - root: - level: DEBUG - handlers: [file, console]