Kaynağa Gözat

PR response update

pull/5289/head
jasonlaguidice 1 ay önce
ebeveyn
işleme
9528145378
4 değiştirilmiş dosya ile 32 ekleme ve 41 silme
  1. +4
    -14
      docs/configuring-playbook-bridge-rustpush.md
  2. +9
    -8
      roles/custom/matrix-bridge-rustpush/defaults/main.yml
  3. +18
    -18
      roles/custom/matrix-bridge-rustpush/tasks/setup_install.yml
  4. +1
    -1
      roles/custom/matrix-bridge-rustpush/templates/systemd/matrix-rustpush-bridge.service.j2

+ 4
- 14
docs/configuring-playbook-bridge-rustpush.md Dosyayı Görüntüle

@@ -6,9 +6,9 @@ SPDX-License-Identifier: AGPL-3.0-or-later
--> -->


# Setting up RustPush (iMessage) bridging (optional) # Setting up RustPush (iMessage) bridging (optional)
## \*\*\* THIS BRIDGE IS IN EARLY DEVELOPMENT \*\*\*
Be warned, here be ~~dragons~~ bugs. Your use, testing, and feedback of this bridge is appreciated. It may not be desirable to deploy this to a large number of users due to possible stability issues
<hr>
> **Note:** This bridge is in early development and may have stability issues. It may not be desirable to deploy this to a large number of users. Your testing and feedback is appreciated.
<sup>Refer the common guide for configuring mautrix bridges: [Setting up a Generic Mautrix Bridge](configuring-playbook-bridge-mautrix-bridges.md)</sup> <sup>Refer the common guide for configuring mautrix bridges: [Setting up a Generic Mautrix Bridge](configuring-playbook-bridge-mautrix-bridges.md)</sup>


The playbook can install and configure [rustpush bridge to iMessage](https://github.com/jasonlaguidice/imessage) for you using Apple's push notification service. The playbook can install and configure [rustpush bridge to iMessage](https://github.com/jasonlaguidice/imessage) for you using Apple's push notification service.
@@ -74,20 +74,10 @@ ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,start


## Usage ## Usage


To use the bridge, you need to start a chat with `@imessagebot:example.com` (where `example.com` is your base domain, not the `matrix.` domain).
To use the bridge, you need to start a chat with `@rustpushbot:example.com` (where `example.com` is your base domain, not the `matrix.` domain).


After logging in, the bridge will start receiving iMessages and creating portal rooms. After logging in, the bridge will start receiving iMessages and creating portal rooms.


## Interference With Mautrix-iMessage & WSproxy

By default, this bridge uses the same bot user name (`@imessagebot:example.com`) and same localpart for puppet users (`imessage_{{.}}`) as the mautrix-imessage bridge. If you use this bridge on your homeserver have a few options:

1. Change the bot and appservice name templates:

Set `matrix_rustpush_bridge_appservice_bot_username` and to a non-default value `matrix_rustpush_bridge_appservice_username_template`

2. After deactivating mautrix-imessage, delete the bot user and all its portal rooms from the database, then re-start the server (more difficult)

## Troubleshooting ## Troubleshooting


As with all other services, you can find the logs in [systemd-journald](https://www.freedesktop.org/software/systemd/man/systemd-journald.service.html) by logging in to the server with SSH and running `journalctl -fu matrix-rustpush-bridge`. As with all other services, you can find the logs in [systemd-journald](https://www.freedesktop.org/software/systemd/man/systemd-journald.service.html) by logging in to the server with SSH and running `journalctl -fu matrix-rustpush-bridge`.


+ 9
- 8
roles/custom/matrix-bridge-rustpush/defaults/main.yml Dosyayı Görüntüle

@@ -15,14 +15,15 @@ matrix_rustpush_bridge_container_image_self_build_repo_version: "{{ 'master' if


# Adjust to pin to releases # Adjust to pin to releases
matrix_rustpush_bridge_version: v0.0.1 matrix_rustpush_bridge_version: v0.0.1
matrix_rustpush_bridge_docker_image: "{{ matrix_rustpush_bridge_docker_image_registry_prefix }}jasonlaguidice/imessage:{{ matrix_rustpush_bridge_version }}"
matrix_rustpush_bridge_docker_image_registry_prefix: "ghcr.io/"
matrix_rustpush_bridge_docker_image_force_pull: "{{ matrix_rustpush_bridge_docker_image.endswith(':latest') }}"
matrix_rustpush_bridge_container_image: "{{ matrix_rustpush_bridge_container_image_registry_prefix }}jasonlaguidice/imessage:{{ matrix_rustpush_bridge_version }}"
matrix_rustpush_bridge_container_image_registry_prefix: "{{ 'localhost/' if matrix_rustpush_bridge_container_image_self_build else matrix_rustpush_bridge_container_image_registry_prefix_upstream }}"
matrix_rustpush_bridge_container_image_registry_prefix_upstream: "{{ matrix_rustpush_bridge_container_image_registry_prefix_upstream_default }}"
matrix_rustpush_bridge_container_image_registry_prefix_upstream_default: "ghcr.io/"


matrix_rustpush_bridge_base_path: "{{ matrix_base_data_path }}/matrix-rustpush-bridge" matrix_rustpush_bridge_base_path: "{{ matrix_base_data_path }}/matrix-rustpush-bridge"
matrix_rustpush_bridge_config_path: "{{ matrix_rustpush_bridge_base_path }}/config" matrix_rustpush_bridge_config_path: "{{ matrix_rustpush_bridge_base_path }}/config"
matrix_rustpush_bridge_data_path: "{{ matrix_rustpush_bridge_base_path }}/data" matrix_rustpush_bridge_data_path: "{{ matrix_rustpush_bridge_base_path }}/data"
matrix_rustpush_bridge_docker_src_files_path: "{{ matrix_rustpush_bridge_base_path }}/docker-src"
matrix_rustpush_bridge_container_src_files_path: "{{ matrix_rustpush_bridge_base_path }}/docker-src"


matrix_rustpush_bridge_homeserver_address: "" matrix_rustpush_bridge_homeserver_address: ""
# Whether asynchronous uploads via MSC2246 should be enabled for media. # Whether asynchronous uploads via MSC2246 should be enabled for media.
@@ -148,13 +149,13 @@ matrix_rustpush_bridge_double_puppet_secrets: "{{ matrix_rustpush_bridge_double_
matrix_rustpush_bridge_double_puppet_secrets_auto: {} matrix_rustpush_bridge_double_puppet_secrets_auto: {}
matrix_rustpush_bridge_double_puppet_secrets_custom: {} matrix_rustpush_bridge_double_puppet_secrets_custom: {}


matrix_rustpush_bridge_appservice_bot_username: imessagebot
matrix_rustpush_bridge_appservice_bot_displayname: iMessage bridge bot
matrix_rustpush_bridge_appservice_bot_username: rustpushbot
matrix_rustpush_bridge_appservice_bot_displayname: RustPush bridge bot
matrix_rustpush_bridge_appservice_bot_avatar: '' matrix_rustpush_bridge_appservice_bot_avatar: ''


# Localpart template for MXIDs of remote (iMessage) users. # Localpart template for MXIDs of remote (iMessage) users.
# The `{{.}}` placeholder expands to the iMessage handle (phone/email). # The `{{.}}` placeholder expands to the iMessage handle (phone/email).
matrix_rustpush_bridge_appservice_username_template: "{% raw %}imessage_{{.}}{% endraw %}"
matrix_rustpush_bridge_appservice_username_template: "{% raw %}rustpush_{{.}}{% endraw %}"


# Backfill is disabled by default because Linux Docker cannot access chat.db. # Backfill is disabled by default because Linux Docker cannot access chat.db.
# On macOS with Full Disk Access, this can be set to true. # On macOS with Full Disk Access, this can be set to true.
@@ -216,7 +217,7 @@ matrix_rustpush_bridge_registration_yaml: |
namespaces: namespaces:
users: users:
- exclusive: true - exclusive: true
regex: '^@imessage_.+:{{ matrix_rustpush_bridge_homeserver_domain | regex_escape }}$'
regex: '^@rustpush_.+:{{ matrix_rustpush_bridge_homeserver_domain | regex_escape }}$'
- exclusive: true - exclusive: true
regex: '^@{{ matrix_rustpush_bridge_appservice_bot_username | regex_escape }}:{{ matrix_rustpush_bridge_homeserver_domain | regex_escape }}$' regex: '^@{{ matrix_rustpush_bridge_appservice_bot_username | regex_escape }}:{{ matrix_rustpush_bridge_homeserver_domain | regex_escape }}$'
url: {{ matrix_rustpush_bridge_appservice_address }} url: {{ matrix_rustpush_bridge_appservice_address }}


+ 18
- 18
roles/custom/matrix-bridge-rustpush/tasks/setup_install.yml Dosyayı Görüntüle

@@ -16,14 +16,14 @@
- {path: "{{ matrix_rustpush_bridge_base_path }}", when: true} - {path: "{{ matrix_rustpush_bridge_base_path }}", when: true}
- {path: "{{ matrix_rustpush_bridge_config_path }}", when: true} - {path: "{{ matrix_rustpush_bridge_config_path }}", when: true}
- {path: "{{ matrix_rustpush_bridge_data_path }}", when: true} - {path: "{{ matrix_rustpush_bridge_data_path }}", when: true}
- {path: "{{ matrix_rustpush_bridge_docker_src_files_path }}", when: "{{ matrix_rustpush_bridge_container_image_self_build }}"}
- {path: "{{ matrix_rustpush_bridge_container_src_files_path }}", when: "{{ matrix_rustpush_bridge_container_image_self_build }}"}
when: item.when | bool when: item.when | bool


- name: Ensure RustPush repository is present on self-build - name: Ensure RustPush repository is present on self-build
ansible.builtin.git: ansible.builtin.git:
repo: "{{ matrix_rustpush_bridge_container_image_self_build_repo }}" repo: "{{ matrix_rustpush_bridge_container_image_self_build_repo }}"
version: "{{ matrix_rustpush_bridge_container_image_self_build_repo_version }}" version: "{{ matrix_rustpush_bridge_container_image_self_build_repo_version }}"
dest: "{{ matrix_rustpush_bridge_docker_src_files_path }}"
dest: "{{ matrix_rustpush_bridge_container_src_files_path }}"
force: "yes" force: "yes"
become: true become: true
become_user: "{{ matrix_user_name }}" become_user: "{{ matrix_user_name }}"
@@ -33,34 +33,34 @@
- name: Ensure RustPush Dockerfile is installed - name: Ensure RustPush Dockerfile is installed
ansible.builtin.template: ansible.builtin.template:
src: "{{ role_path }}/templates/Dockerfile.j2" src: "{{ role_path }}/templates/Dockerfile.j2"
dest: "{{ matrix_rustpush_bridge_docker_src_files_path }}/Dockerfile"
dest: "{{ matrix_rustpush_bridge_container_src_files_path }}/Dockerfile"
mode: 0640 mode: 0640
owner: "{{ matrix_user_name }}" owner: "{{ matrix_user_name }}"
group: "{{ matrix_group_name }}" group: "{{ matrix_group_name }}"
when: "matrix_rustpush_bridge_enabled | bool and matrix_rustpush_bridge_container_image_self_build | bool" when: "matrix_rustpush_bridge_enabled | bool and matrix_rustpush_bridge_container_image_self_build | bool"


- name: Ensure RustPush Docker image is built - name: Ensure RustPush Docker image is built
community.docker.docker_image:
name: "{{ matrix_rustpush_bridge_docker_image }}"
source: build
force_source: "{{ matrix_rustpush_bridge_git_pull_results.changed if matrix_rustpush_bridge_git_pull_results is defined else true }}"
build:
dockerfile: Dockerfile
path: "{{ matrix_rustpush_bridge_docker_src_files_path }}"
pull: true
args:
BUILD_VERSION: "{{ matrix_rustpush_bridge_container_image_self_build_repo_version }}"
BUILD_COMMIT: "{{ matrix_rustpush_bridge_git_pull_results.after[:8] if matrix_rustpush_bridge_git_pull_results is defined and matrix_rustpush_bridge_git_pull_results.after is defined else 'unknown' }}"
community.docker.docker_image_build:
name: "{{ matrix_rustpush_bridge_container_image }}"
dockerfile: Dockerfile
path: "{{ matrix_rustpush_bridge_container_src_files_path }}"
pull: true
rebuild: "{{ 'always' if matrix_rustpush_bridge_git_pull_results.changed | bool else 'never' }}"
build_args:
BUILD_VERSION: "{{ matrix_rustpush_bridge_container_image_self_build_repo_version }}"
BUILD_COMMIT: "{{ matrix_rustpush_bridge_git_pull_results.after[:8] if matrix_rustpush_bridge_git_pull_results is defined and matrix_rustpush_bridge_git_pull_results.after is defined else 'unknown' }}"
register: matrix_rustpush_bridge_container_image_build_result register: matrix_rustpush_bridge_container_image_build_result
when: "matrix_rustpush_bridge_enabled | bool and matrix_rustpush_bridge_container_image_self_build | bool" when: "matrix_rustpush_bridge_enabled | bool and matrix_rustpush_bridge_container_image_self_build | bool"


- name: Ensure RustPush container image is pulled - name: Ensure RustPush container image is pulled
community.docker.docker_image:
name: "{{ matrix_rustpush_bridge_docker_image }}"
source: pull
force_source: "{{ matrix_rustpush_bridge_container_image_force_pull if matrix_rustpush_bridge_container_image_force_pull is defined else true }}"
community.docker.docker_image_pull:
name: "{{ matrix_rustpush_bridge_container_image }}"
pull: always
register: matrix_rustpush_bridge_container_image_pull_result register: matrix_rustpush_bridge_container_image_pull_result
when: "matrix_rustpush_bridge_enabled | bool and not matrix_rustpush_bridge_container_image_self_build | bool" when: "matrix_rustpush_bridge_enabled | bool and not matrix_rustpush_bridge_container_image_self_build | bool"
retries: "{{ devture_playbook_help_container_retries_count }}"
delay: "{{ devture_playbook_help_container_retries_delay }}"
until: matrix_rustpush_bridge_container_image_pull_result is not failed
ignore_errors: "{{ ansible_check_mode }}" ignore_errors: "{{ ansible_check_mode }}"


- name: Ensure rustpush-bridge config.yaml installed - name: Ensure rustpush-bridge config.yaml installed


+ 1
- 1
roles/custom/matrix-bridge-rustpush/templates/systemd/matrix-rustpush-bridge.service.j2 Dosyayı Görüntüle

@@ -32,7 +32,7 @@ ExecStartPre={{ devture_systemd_docker_base_host_command_docker }} create \
{% for arg in matrix_rustpush_bridge_container_extra_arguments %} {% for arg in matrix_rustpush_bridge_container_extra_arguments %}
{{ arg }} \ {{ arg }} \
{% endfor %} {% endfor %}
{{ matrix_rustpush_bridge_docker_image }} \
{{ matrix_rustpush_bridge_container_image }} \
-c /config/config.yaml -r /config/registration.yaml -c /config/config.yaml -r /config/registration.yaml


{% for network in matrix_rustpush_bridge_container_additional_networks %} {% for network in matrix_rustpush_bridge_container_additional_networks %}


Yükleniyor…
İptal
Kaydet