Skip to content

Commit 6baa7ce

Browse files
committed
feat: support mautrix-messenger bridgev2 APIs
1 parent c89c356 commit 6baa7ce

File tree

4 files changed

+53
-0
lines changed

4 files changed

+53
-0
lines changed

group_vars/matrix_servers

+3
Original file line numberDiff line numberDiff line change
@@ -1491,7 +1491,10 @@ matrix_mautrix_meta_messenger_container_labels_traefik_tls_certResolver: "{{ dev
14911491
matrix_mautrix_meta_messenger_container_labels_metrics_middleware_basic_auth_enabled: "{{ matrix_metrics_exposure_http_basic_auth_enabled }}"
14921492
matrix_mautrix_meta_messenger_container_labels_metrics_middleware_basic_auth_users: "{{ matrix_metrics_exposure_http_basic_auth_users }}"
14931493

1494+
matrix_mautrix_meta_messenger_container_labels_bridgev2_traefik_hostname: "{{ matrix_server_fqn_matrix }}"
1495+
14941496
matrix_mautrix_meta_messenger_appservice_token: "{{ '%s' | format(matrix_homeserver_generic_secret_key) | password_hash('sha512', 'mau.meta.fb.as', rounds=655555) | to_uuid }}"
1497+
matrix_mautrix_meta_messenger_appservice_bridgev2_enabled: false
14951498

14961499
matrix_mautrix_meta_messenger_homeserver_address: "{{ matrix_addons_homeserver_client_api_url }}"
14971500

roles/custom/matrix-bridge-mautrix-meta-messenger/defaults/main.yml

+16
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,18 @@ matrix_mautrix_meta_messenger_container_labels_metrics_middleware_basic_auth_ena
5555
# See: https://doc.traefik.io/traefik/middlewares/http/basicauth/#users
5656
matrix_mautrix_meta_messenger_container_labels_metrics_middleware_basic_auth_users: ''
5757

58+
# Controls whether labels will be added that expose the bridge's bridgev2 API endpoints
59+
matrix_mautrix_meta_messenger_container_labels_bridgev2_enabled: "{{ matrix_mautrix_meta_messenger_appservice_bridgev2_enabled }}"
60+
matrix_mautrix_meta_messenger_container_labels_bridgev2_traefik_hostname: ""
61+
# Following two variables should be RegEx-escaped, see https://doc.traefik.io/traefik/middlewares/http/replacepathregex/
62+
matrix_mautrix_meta_messenger_container_labels_bridgev2_traefik_path_external: "/_matrix/{{ matrix_mautrix_meta_messenger_identifier }}/provision"
63+
matrix_mautrix_meta_messenger_container_labels_bridgev2_traefik_path_internal: "/_matrix/provision"
64+
matrix_mautrix_meta_messenger_container_labels_bridgev2_traefik_rule: "Host(`{{ matrix_mautrix_meta_messenger_container_labels_bridgev2_traefik_hostname }}`) && PathPrefix(`{{ matrix_mautrix_meta_messenger_container_labels_bridgev2_traefik_path_external }}`)"
65+
matrix_mautrix_meta_messenger_container_labels_bridgev2_traefik_priority: 0
66+
matrix_mautrix_meta_messenger_container_labels_bridgev2_traefik_entrypoints: "{{ matrix_mautrix_meta_messenger_container_labels_traefik_entrypoints }}"
67+
matrix_mautrix_meta_messenger_container_labels_bridgev2_traefik_tls: "{{ matrix_mautrix_meta_messenger_container_labels_metrics_traefik_entrypoints != 'web' }}"
68+
matrix_mautrix_meta_messenger_container_labels_bridgev2_traefik_tls_certResolver: "{{ matrix_mautrix_meta_messenger_container_labels_traefik_tls_certResolver }}" # noqa var-naming
69+
5870
# matrix_mautrix_meta_messenger_container_labels_additional_labels contains a multiline string with additional labels to add to the container label file.
5971
# See `../templates/labels.j2` for details.
6072
#
@@ -144,6 +156,10 @@ matrix_mautrix_meta_messenger_appservice_database_uri: |-
144156
145157
matrix_mautrix_meta_messenger_appservice_token: ''
146158

159+
# Whether to make public the bridgev2 API endpoints.
160+
# See https://spec.mau.fi/megabridge/
161+
matrix_mautrix_meta_messenger_appservice_bridgev2_enabled: false
162+
147163
# Controls which service this bridge is for.
148164
# Valid options:
149165
# * facebook - connect to FB Messenger via facebook.com

roles/custom/matrix-bridge-mautrix-meta-messenger/tasks/validate_config.yml

+1
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
with_items:
99
- {'name': 'matrix_mautrix_meta_messenger_metrics_proxying_hostname', when: "{{ matrix_mautrix_meta_messenger_metrics_proxying_enabled }}"}
1010
- {'name': 'matrix_mautrix_meta_messenger_metrics_proxying_path_prefix', when: "{{ matrix_mautrix_meta_messenger_metrics_proxying_enabled }}"}
11+
- {'name': 'matrix_mautrix_meta_messenger_container_labels_bridgev2_traefik_hostname', when: "{{ matrix_mautrix_meta_messenger_metrics_proxying_enabled }}"}
1112
- {'name': 'matrix_mautrix_meta_messenger_appservice_token', when: true}
1213
- {'name': 'matrix_mautrix_meta_messenger_homeserver_token', when: true}
1314
- {'name': 'matrix_mautrix_meta_messenger_container_network', when: true}

roles/custom/matrix-bridge-mautrix-meta-messenger/templates/labels.j2

+33
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,39 @@ traefik.http.routers.{{ matrix_mautrix_meta_messenger_identifier }}-metrics.tls.
4343
{% endif %}
4444

4545

46+
{% if matrix_mautrix_meta_messenger_container_labels_bridgev2_enabled %}
47+
############################################################
48+
# #
49+
# Appservice Bridgev2 API #
50+
# #
51+
############################################################
52+
53+
traefik.http.middlewares.{{ matrix_mautrix_meta_messenger_identifier }}-bridgev2-replacepathregex.replacepathregex.regex=^{{ matrix_mautrix_meta_messenger_container_labels_bridgev2_traefik_path_external }}/(.*)
54+
traefik.http.middlewares.{{ matrix_mautrix_meta_messenger_identifier }}-bridgev2-replacepathregex.replacepathregex.replacement={{ matrix_mautrix_meta_messenger_container_labels_bridgev2_traefik_path_internal }}/$1
55+
traefik.http.routers.{{ matrix_mautrix_meta_messenger_identifier }}-bridgev2.middlewares={{ matrix_mautrix_meta_messenger_identifier }}-bridgev2-replacepathregex
56+
57+
traefik.http.routers.{{ matrix_mautrix_meta_messenger_identifier }}-bridgev2.rule={{ matrix_mautrix_meta_messenger_container_labels_bridgev2_traefik_rule }}
58+
59+
{% if matrix_mautrix_meta_messenger_container_labels_bridgev2_traefik_priority | int > 0 %}
60+
traefik.http.routers.{{ matrix_mautrix_meta_messenger_identifier }}-bridgev2.priority={{ matrix_mautrix_meta_messenger_container_labels_bridgev2_traefik_priority }}
61+
{% endif %}
62+
63+
traefik.http.routers.{{ matrix_mautrix_meta_messenger_identifier }}-bridgev2.service={{ matrix_mautrix_meta_messenger_identifier }}-appservice
64+
traefik.http.routers.{{ matrix_mautrix_meta_messenger_identifier }}-bridgev2.entrypoints={{ matrix_mautrix_meta_messenger_container_labels_bridgev2_traefik_entrypoints }}
65+
66+
traefik.http.routers.{{ matrix_mautrix_meta_messenger_identifier }}-bridgev2.tls={{ matrix_mautrix_meta_messenger_container_labels_bridgev2_traefik_tls | to_json }}
67+
{% if matrix_mautrix_meta_messenger_container_labels_bridgev2_traefik_tls %}
68+
traefik.http.routers.{{ matrix_mautrix_meta_messenger_identifier }}-bridgev2.tls.certResolver={{ matrix_mautrix_meta_messenger_container_labels_bridgev2_traefik_tls_certResolver }}
69+
{% endif %}
70+
71+
############################################################
72+
# #
73+
# /Appservice Bridgev2 API #
74+
# #
75+
############################################################
76+
{% endif %}
77+
78+
4679
{% endif %}
4780

4881
{{ matrix_mautrix_meta_messenger_container_labels_additional_labels }}

0 commit comments

Comments
 (0)