From d38f9b5f0186b2e36d72296e6b842e1b36fbe75a Mon Sep 17 00:00:00 2001
From: Greg Sutcliffe <gwmngilfen@emeraldreverie.org>
Date: Wed, 15 Sep 2021 20:16:59 +0000
Subject: [PATCH] Move Generic instructions for APPSERVICES above notes for
 specific bridges and tidy up.

---
 APPSERVICES.md | 84 +++++++++++++++++++++++++++-----------------------
 1 file changed, 46 insertions(+), 38 deletions(-)

diff --git a/APPSERVICES.md b/APPSERVICES.md
index 8e57bc2d4..26c34cc48 100644
--- a/APPSERVICES.md
+++ b/APPSERVICES.md
@@ -4,44 +4,7 @@ ## Getting help
 
 If you run into any problems while setting up an Appservice, write an email to `timo@koesters.xyz`, ask us in `#conduit:matrix.org` or [open an issue on GitLab](https://gitlab.com/famedly/conduit/-/issues/new).
 
-## Tested appservices
-
-Here are some appservices we tested and that work with Conduit:
-- [matrix-appservice-discord](https://github.com/Half-Shot/matrix-appservice-discord)
-- [mautrix-hangouts](https://github.com/mautrix/hangouts/)
-- [mautrix-telegram](https://github.com/mautrix/telegram/)
-- [mautrix-signal](https://github.com/mautrix/signal)
-
-There are a few things you need to do, in order for the bridge (at least up to version `0.2.0`) to work. Before following the bridge installation guide, you need to map apply a patch to bridges `portal.py`. How you do this depends upon whether you are running the bridge in `Docker` or `virtualenv`.
-  - Find / create the changed file:
-    - For Docker:
-      -  Go to [portal.py](https://github.com/mautrix/signal/blob/master/mautrix_signal/portal.py) at [mautrix-signal](https://github.com/mautrix/signal) (don't forget to change to the correct commit/version of the file) and copy its content, create a `portal.py` on your host system and paste it in
-    - For virtualenv
-      - Find `./lib/python3.7/site-packages/mautrix_signal/portal.py` (the exact version of Python may be different on your system).
-  - Once you have `portal.py` you now need to change two lines. Lines numbers given here are approximate, you may need to look nearby:
-    - [Edit Line 1020](https://github.com/mautrix/signal/blob/4ea831536f154aba6419d13292479eb383ea3308/mautrix_signal/portal.py#L1020)
-  ```diff
-  --- levels.users[self.main_intent.mxid] = 9001 if is_initial else 100
-  +++ levels.users[self.main_intent.mxid] = 100 if is_initial else 100
-  ```
-   - Add a new line between [Lines 1041 and 1042](https://github.com/mautrix/signal/blob/4ea831536f154aba6419d13292479eb383ea3308/mautrix_signal/portal.py#L1041-L1042)
-
-  ```diff
-      "type": str(EventType.ROOM_POWER_LEVELS),
-  +++ "state_key": "",
-      "content": power_levels.serialize(),
-  ```
-  - Deploy the change
-    - Docker:
-      - Now you just need to map the patched `portal.py` into the `mautrix-signal` container
-      ```yml
-      volumes:
-        - ./<your>/<path>/<on>/<host>/portal.py:/usr/lib/python3.9/site-packages/mautrix_signal/portal.py
-      ```
-    - For virtualenv, that's all you need to do - it uses the edited file directly
-  - Now continue with the bridge [installation instructions](https://docs.mau.fi/bridges/index.html) and the notes below.
-
-## Set up the appservice
+## Set up the appservice - general instructions
 
 Follow whatever instructions are given by the appservice. This usually includes
 downloading, changing its config (setting domain, homeserver url, port etc.)
@@ -76,3 +39,48 @@ ## Set up the appservice
 appservice can send requests to the homeserver. You don't need to restart
 Conduit, but if it doesn't work, restarting while the appservice is running
 could help.
+
+## Appservice-specific instructions
+
+### Tested appservices
+
+These appservices have been tested and work with Conduit without any extra steps:
+
+- [matrix-appservice-discord](https://github.com/Half-Shot/matrix-appservice-discord)
+- [mautrix-hangouts](https://github.com/mautrix/hangouts/)
+- [mautrix-telegram](https://github.com/mautrix/telegram/)
+
+### [mautrix-signal](https://github.com/mautrix/signal)
+
+There are a few things you need to do, in order for the Signal bridge (at least
+up to version `0.2.0`) to work. How you do this depends on whether you use
+Docker or `virtualenv` to run it. In either case you need to modify
+[portal.py](https://github.com/mautrix/signal/blob/master/mautrix_signal/portal.py).
+Do this **before** following the bridge installation guide.
+
+1. **Create a copy of `portal.py`**. Go to
+   [portal.py](https://github.com/mautrix/signal/blob/master/mautrix_signal/portal.py)
+at [mautrix-signal](https://github.com/mautrix/signal) (make sure you change to
+the correct commit/version of mautrix-signal you're using) and copy its
+content. Create a new `portal.py` on your system and paste the content in.
+2. **Patch the copy**. Exact line numbers may be slightly different, look nearby if they don't match: 
+  - [Line 1020](https://github.com/mautrix/signal/blob/4ea831536f154aba6419d13292479eb383ea3308/mautrix_signal/portal.py#L1020)
+    ```diff
+    --- levels.users[self.main_intent.mxid] = 9001 if is_initial else 100
+    +++ levels.users[self.main_intent.mxid] = 100 if is_initial else 100
+    ```
+  - [Between lines 1041 and 1042](https://github.com/mautrix/signal/blob/4ea831536f154aba6419d13292479eb383ea3308/mautrix_signal/portal.py#L1041-L1042) add a new line:
+    ```diff
+        "type": str(EventType.ROOM_POWER_LEVELS),
+    +++ "state_key": "",
+        "content": power_levels.serialize(),
+    ```
+3. **Deploy the patch**. This is different depending on how you have `mautrix-signal` deployed:
+  - [*If using virtualenv*] Copy your patched `portal.py` to `./lib/python3.7/site-packages/mautrix_signal/portal.py` (the exact version of Python may be different on your system).
+  -  [*If using Docker*] Map the patched `portal.py` into the `mautrix-signal` container:
+    
+    ```yaml
+    volumes:
+      - ./your/path/on/host/portal.py:/usr/lib/python3.9/site-packages/mautrix_signal/portal.py
+    ```
+4. Now continue with the [bridge installation instructions ](https://docs.mau.fi/bridges/index.html) and the general bridge notes above.
-- 
GitLab