Add mautrix syncproxy to wsproxy for Android SMS
This commit is contained in:
parent
32de006eaf
commit
2b320c128f
@ -10,6 +10,7 @@ Use the following playbook configuration:
|
||||
matrix_mautrix_wsproxy_enabled: true
|
||||
matrix_mautrix_wsproxy_appservice_token: 'random string'
|
||||
matrix_mautrix_wsproxy_homeserver_token: 'random string'
|
||||
matrix_mautrix_wsproxy_syncproxy_shared_secret: 'random string'
|
||||
```
|
||||
|
||||
|
||||
|
||||
@ -1848,6 +1848,12 @@ matrix_postgres_additional_databases: |
|
||||
'password': matrix_mautrix_signal_database_password,
|
||||
}] if (matrix_mautrix_signal_enabled and matrix_mautrix_signal_database_engine == 'postgres' and matrix_mautrix_signal_database_hostname == 'matrix-postgres') else [])
|
||||
+
|
||||
([{
|
||||
'name': matrix_mautrix_wsproxy_syncproxy_database_name,
|
||||
'username': matrix_mautrix_wsproxy_syncproxy_database_username,
|
||||
'password': matrix_mautrix_wsproxy_syncproxy_database_password,
|
||||
}] if (matrix_mautrix_wsproxy_enabled and matrix_mautrix_wsproxy_syncproxy_database_engine == 'postgres' and matrix_mautrix_wsproxy_syncproxy_database_hostname == 'matrix-postgres') else [])
|
||||
+
|
||||
([{
|
||||
'name': matrix_mautrix_telegram_database_name,
|
||||
'username': matrix_mautrix_telegram_database_username,
|
||||
|
||||
@ -33,7 +33,7 @@ matrix_mautrix_wsproxy_systemd_wanted_services_list: []
|
||||
matrix_mautrix_wsproxy_appservice_token: ''
|
||||
matrix_mautrix_wsproxy_homeserver_token: ''
|
||||
|
||||
matrix_mautrix_wsproxy_appservice_bot_username: imessagebot
|
||||
matrix_mautrix_wsproxy_appservice_bot_username: androidsmsbot
|
||||
|
||||
# Default mautrix-wsproxy configuration template which covers the generic use case.
|
||||
# You can customize it by controlling the various variables inside it.
|
||||
@ -58,7 +58,7 @@ matrix_mautrix_wsproxy_configuration_extension: "{{ matrix_mautrix_wsproxy_confi
|
||||
matrix_mautrix_wsproxy_configuration: "{{ matrix_mautrix_wsproxy_configuration_yaml|from_yaml|combine(matrix_mautrix_wsproxy_configuration_extension, recursive=True) }}"
|
||||
|
||||
matrix_mautrix_wsproxy_registration_yaml: |
|
||||
id: imessage
|
||||
id: androidsms
|
||||
url: {{ matrix_mautrix_wsproxy_appservice_address }}
|
||||
as_token: "{{ matrix_mautrix_wsproxy_appservice_token }}"
|
||||
hs_token: "{{ matrix_mautrix_wsproxy_homeserver_token }}"
|
||||
@ -66,9 +66,37 @@ matrix_mautrix_wsproxy_registration_yaml: |
|
||||
rate_limited: false
|
||||
namespaces:
|
||||
users:
|
||||
- regex: '@imessage_.+:{{ matrix_mautrix_wsproxy_homeserver_domain|regex_escape }}$'
|
||||
- regex: '@androidsms_.+:{{ matrix_mautrix_wsproxy_homeserver_domain|regex_escape }}$'
|
||||
exclusive: true
|
||||
- exclusive: true
|
||||
regex: '^@{{ matrix_mautrix_wsproxy_appservice_bot_username|regex_escape }}:{{ matrix_mautrix_wsproxy_homeserver_domain|regex_escape }}$'
|
||||
|
||||
matrix_mautrix_wsproxy_registration: "{{ matrix_mautrix_wsproxy_registration_yaml|from_yaml }}"
|
||||
|
||||
# Syncproxy-related configuration fields
|
||||
matrix_mautrix_wsproxy_syncproxy_version: latest
|
||||
# See: https://mau.dev/mautrix/wsproxy/container_registry
|
||||
matrix_mautrix_wsproxy_syncproxy_docker_image: "dock.mau.dev/mautrix/syncproxy:{{ matrix_mautrix_wsproxy_syncproxy_version }}"
|
||||
matrix_mautrix_wsproxy_syncproxy_docker_image_force_pull: "{{ matrix_mautrix_wsproxy_syncproxy_docker_image.endswith(':latest') }}"
|
||||
matrix_mautrix_wsproxy_syncproxy_container_extra_arguments: []
|
||||
|
||||
matrix_mautrix_wsproxy_syncproxy_systemd_required_services_list: ['docker.service', 'matrix-mautrix-wsproxy.service']
|
||||
matrix_mautrix_wsproxy_syncproxy_systemd_wanted_services_list: []
|
||||
|
||||
matrix_mautrix_wsproxy_syncproxy_shared_secret: ''
|
||||
matrix_mautrix_wsproxy_syncproxy_port: 29332
|
||||
matrix_mautrix_wsproxy_syncproxy_appservice_address: "http://matrix-mautrix-wsproxy-syncproxy:{{ matrix_mautrix_wsproxy_syncproxy_port }}"
|
||||
|
||||
# Database-related configuration fields
|
||||
#
|
||||
# This bridge supports Postgres and SQLite.
|
||||
#
|
||||
matrix_mautrix_wsproxy_syncproxy_database_engine: 'postgres'
|
||||
|
||||
matrix_mautrix_wsproxy_syncproxy_database_username: 'matrix_mautrix_wsproxy_syncproxy'
|
||||
matrix_mautrix_wsproxy_syncproxy_database_password: 'some-password'
|
||||
matrix_mautrix_wsproxy_syncproxy_database_hostname: 'matrix-postgres'
|
||||
matrix_mautrix_wsproxy_syncproxy_database_port: 5432
|
||||
matrix_mautrix_wsproxy_syncproxy_database_name: 'matrix_mautrix_wsproxy_syncproxy'
|
||||
|
||||
matrix_mautrix_signal_wsproxy_syncproxy_connection_string: 'postgres://{{ matrix_mautrix_wsproxy_syncproxy_database_username }}:{{ matrix_mautrix_wsproxy_syncproxy_database_password }}@{{ matrix_mautrix_wsproxy_syncproxy_database_hostname }}:{{ matrix_mautrix_wsproxy_syncproxy_database_port }}/{{ matrix_mautrix_wsproxy_syncproxy_database_name }}'
|
||||
@ -11,6 +11,9 @@
|
||||
- ansible.builtin.set_fact:
|
||||
matrix_mautrix_wsproxy_requires_restart: false
|
||||
|
||||
- ansible.builtin.set_fact:
|
||||
matrix_mautrix_wsproxy_syncproxy_requires_restart: false
|
||||
|
||||
- name: Ensure Mautrix wsproxy image is pulled
|
||||
docker_image:
|
||||
name: "{{ matrix_mautrix_wsproxy_docker_image }}"
|
||||
@ -18,6 +21,13 @@
|
||||
force_source: "{{ matrix_mautrix_wsproxy_docker_image_force_pull if ansible_version.major > 2 or ansible_version.minor >= 8 else omit }}"
|
||||
force: "{{ omit if ansible_version.major > 2 or ansible_version.minor >= 8 else matrix_mautrix_wsproxy_docker_image_force_pull }}"
|
||||
|
||||
- name: Ensure Mautrix syncproxy image is pulled
|
||||
docker_image:
|
||||
name: "{{ matrix_mautrix_wsproxy_syncproxy_docker_image }}"
|
||||
source: "{{ 'pull' if ansible_version.major > 2 or ansible_version.minor > 7 else omit }}"
|
||||
force_source: "{{ matrix_mautrix_wsproxy_syncproxy_docker_image_force_pull if ansible_version.major > 2 or ansible_version.minor >= 8 else omit }}"
|
||||
force: "{{ omit if ansible_version.major > 2 or ansible_version.minor >= 8 else matrix_mautrix_wsproxy_syncproxy_docker_image_force_pull }}"
|
||||
|
||||
- name: Ensure Mautrix wsproxy paths exists
|
||||
ansible.builtin.file:
|
||||
path: "{{ item }}"
|
||||
@ -68,3 +78,21 @@
|
||||
name: "matrix-mautrix-wsproxy.service"
|
||||
state: restarted
|
||||
when: "matrix_mautrix_wsproxy_requires_restart|bool"
|
||||
|
||||
- name: Ensure matrix-mautrix-wsproxy-syncproxy.service installed
|
||||
ansible.builtin.template:
|
||||
src: "{{ role_path }}/templates/systemd/matrix-mautrix-wsproxy-syncproxy.service.j2"
|
||||
dest: "{{ matrix_systemd_path }}/matrix-mautrix-wsproxy.service"
|
||||
mode: 0644
|
||||
register: matrix_mautrix_wsproxy_syncproxy_systemd_service_result
|
||||
|
||||
- name: Ensure systemd reloaded after matrix-mautrix-wsproxy-syncproxy.service installation
|
||||
ansible.builtin.service:
|
||||
daemon_reload: true
|
||||
when: "matrix_mautrix_wsproxy_syncproxy_systemd_service_result.changed"
|
||||
|
||||
- name: Ensure matrix-mautrix-wsproxy-syncproxy.service restarted, if necessary
|
||||
ansible.builtin.service:
|
||||
name: "matrix-mautrix-wsproxy-syncproxy.service"
|
||||
state: restarted
|
||||
when: "matrix_mautrix_wsproxy_syncproxy_requires_restart|bool"
|
||||
|
||||
@ -22,3 +22,26 @@
|
||||
ansible.builtin.service:
|
||||
daemon_reload: true
|
||||
when: "matrix_mautrix_wsproxy_service_stat.stat.exists"
|
||||
|
||||
- name: Check existence of matrix-mautrix-wsproxy-syncproxy service
|
||||
ansible.builtin.stat:
|
||||
path: "{{ matrix_systemd_path }}/matrix-mautrix-wsproxy-syncproxy.service"
|
||||
register: matrix_mautrix_wsproxy_syncproxy_service_stat
|
||||
|
||||
- name: Ensure matrix-mautrix-wsproxy-syncproxy is stopped
|
||||
ansible.builtin.service:
|
||||
name: matrix-mautrix-wsproxy-syncproxy
|
||||
state: stopped
|
||||
daemon_reload: true
|
||||
when: "matrix_mautrix_wsproxy_syncproxy_service_stat.stat.exists"
|
||||
|
||||
- name: Ensure matrix-mautrix-wsproxy-syncproxy.service doesn't exist
|
||||
ansible.builtin.file:
|
||||
path: "{{ matrix_systemd_path }}/matrix-mautrix-wsproxy-syncproxy.service"
|
||||
state: absent
|
||||
when: "matrix_mautrix_wsproxy_syncproxy_service_stat.stat.exists"
|
||||
|
||||
- name: Ensure systemd reloaded after matrix-mautrix-wsproxy-syncproxy.service removal
|
||||
ansible.builtin.service:
|
||||
daemon_reload: true
|
||||
when: "matrix_mautrix_wsproxy_syncproxy_service_stat.stat.exists"
|
||||
|
||||
@ -8,3 +8,4 @@
|
||||
with_items:
|
||||
- "matrix_mautrix_wsproxy_appservice_token"
|
||||
- "matrix_mautrix_wsproxy_homeserver_token"
|
||||
- "matrix_mautrix_wsproxy_syncproxy_shared_secret"
|
||||
|
||||
@ -1,5 +1,11 @@
|
||||
listen_address: 0.0.0.0:29331
|
||||
appservices:
|
||||
- id: imessage
|
||||
- id: androidsms
|
||||
as: "{{ matrix_mautrix_wsproxy_appservice_token }}"
|
||||
hs: "{{ matrix_mautrix_wsproxy_homeserver_token }}"
|
||||
hs: "{{ matrix_mautrix_wsproxy_homeserver_token }}"
|
||||
sync_proxy:
|
||||
# The URL that mautrix-wsproxy can use to reach mautrix-syncproxy
|
||||
url: "{{ matrix_mautrix_wsproxy_syncproxy_appservice_address }}"
|
||||
# The URL that mautrix-syncproxy can use to reach mautrix-wsproxy
|
||||
wsproxy_url: "{{ matrix_mautrix_wsproxy_appservice_address }}"
|
||||
shared_secret: "{{ matrix_mautrix_wsproxy_syncproxy_shared_secret }}"
|
||||
|
||||
@ -0,0 +1,43 @@
|
||||
#jinja2: lstrip_blocks: "True"
|
||||
[Unit]
|
||||
Description=Matrix Mautrix wsproxy bridge
|
||||
{% for service in matrix_mautrix_wsproxy_syncproxy_systemd_required_services_list %}
|
||||
Requires={{ service }}
|
||||
After={{ service }}
|
||||
{% endfor %}
|
||||
{% for service in matrix_mautrix_wsproxy_syncproxy_systemd_wanted_services_list %}
|
||||
Wants={{ service }}
|
||||
{% endfor %}
|
||||
DefaultDependencies=no
|
||||
|
||||
[Service]
|
||||
Type=simple
|
||||
Environment="HOME={{ matrix_systemd_unit_home_path }}"
|
||||
ExecStartPre=-{{ matrix_host_command_sh }} -c '{{ matrix_host_command_docker }} kill matrix-mautrix-wsproxy-syncproxy 2>/dev/null'
|
||||
ExecStartPre=-{{ matrix_host_command_sh }} -c '{{ matrix_host_command_docker }} rm matrix-mautrix-wsproxy-syncproxy 2>/dev/null'
|
||||
|
||||
# Intentional delay, so that the homeserver (we likely depend on) can manage to start.
|
||||
ExecStartPre={{ matrix_host_command_sleep }} 5
|
||||
|
||||
ExecStart={{ matrix_host_command_docker }} run --rm --name matrix-mautrix-wsproxy-syncproxy \
|
||||
--log-driver=none \
|
||||
--user={{ matrix_user_uid }}:{{ matrix_user_gid }} \
|
||||
--cap-drop=ALL \
|
||||
--network={{ matrix_docker_network }} \
|
||||
-p {{ matrix_mautrix_wsproxy_syncproxy_port }}:29331 \
|
||||
-e DATABASE_URL={{ matrix_mautrix_signal_wsproxy_syncproxy_connection_string }}
|
||||
-e HOMESERVER_URL={{ matrix_homeserver_container_url }}
|
||||
-e SHARED_SECRET={{ matrix_mautrix_wsproxy_syncproxy_shared_secret }}
|
||||
{% for arg in matrix_mautrix_wsproxy_syncproxy_container_extra_arguments %}
|
||||
{{ arg }} \
|
||||
{% endfor %}
|
||||
{{ matrix_mautrix_wsproxy_syncproxy_docker_image }}
|
||||
|
||||
ExecStop=-{{ matrix_host_command_sh }} -c '{{ matrix_host_command_docker }} kill matrix-mautrix-wsproxy-syncproxy 2>/dev/null'
|
||||
ExecStop=-{{ matrix_host_command_sh }} -c '{{ matrix_host_command_docker }} rm matrix-mautrix-wsproxy-syncproxy 2>/dev/null'
|
||||
Restart=always
|
||||
RestartSec=30
|
||||
SyslogIdentifier=matrix-mautrix-wsproxy-syncproxy
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
@ -25,7 +25,7 @@ ExecStart={{ matrix_host_command_docker }} run --rm --name matrix-mautrix-wsprox
|
||||
--cap-drop=ALL \
|
||||
--network={{ matrix_docker_network }} \
|
||||
-v {{ matrix_mautrix_wsproxy_config_path }}:/data:z \
|
||||
-p 29331:29331 \
|
||||
-p {{ matrix_mautrix_wsproxy_port }}:29331 \
|
||||
{% for arg in matrix_mautrix_wsproxy_container_extra_arguments %}
|
||||
{{ arg }} \
|
||||
{% endfor %}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user