From 1599249d7543e6174047218880a18690ede77075 Mon Sep 17 00:00:00 2001
From: Christian Paul <christianp@matrix.org>
Date: Tue, 5 Jan 2021 17:01:56 +0100
Subject: [PATCH] Add config: bridge.disablePortalBridging

---
 config/config.sample.yaml |  3 +++
 config/config.schema.yaml |  2 ++
 src/config.ts             |  1 +
 src/discordas.ts          | 22 ++++++++++++----------
 4 files changed, 18 insertions(+), 10 deletions(-)

diff --git a/config/config.sample.yaml b/config/config.sample.yaml
index 07c3539..43d5913 100644
--- a/config/config.sample.yaml
+++ b/config/config.sample.yaml
@@ -23,6 +23,9 @@ bridge:
   disableTypingNotifications: false
   # Disable deleting messages on Discord if a message is redacted on Matrix.
   disableDeletionForwarding: false
+  # Disable portal bridging, where Matrix users can search for unbridged Discord
+  # rooms on their Matrix server.
+  disablePortalBridging: false
   # Enable users to bridge rooms using !discord commands. See
   # https://t2bot.io/discord for instructions.
   enableSelfServiceBridging: false
diff --git a/config/config.schema.yaml b/config/config.schema.yaml
index 560508e..1a2381c 100644
--- a/config/config.schema.yaml
+++ b/config/config.schema.yaml
@@ -20,6 +20,8 @@ properties:
             type: "boolean"
           disableDeletionForwarding:
             type: "boolean"
+          disablePortalBridging:
+            type: "boolean"
           enableSelfServiceBridging:
             type: "boolean"
           disableReadReceipts:
diff --git a/src/config.ts b/src/config.ts
index 51b6c2a..3747e66 100644
--- a/src/config.ts
+++ b/src/config.ts
@@ -89,6 +89,7 @@ class DiscordBridgeConfigBridge {
     public disableDiscordMentions: boolean;
     public disableDeletionForwarding: boolean;
     public enableSelfServiceBridging: boolean;
+    public disablePortalBridging: boolean;
     public disableReadReceipts: boolean;
     public disableEveryoneMention: boolean = false;
     public disableHereMention: boolean = false;
diff --git a/src/discordas.ts b/src/discordas.ts
index d56bc1f..4420070 100644
--- a/src/discordas.ts
+++ b/src/discordas.ts
@@ -186,16 +186,18 @@ async function run() {
         res.status(200).send("");
     });
 
-    // tslint:disable-next-line:no-any
-    appservice.on("query.room", async (roomAlias: string, createRoom: (opts: any) => Promise<void>) => {
-        try {
-            const createRoomOpts = await roomhandler.OnAliasQuery(roomAlias);
-            await createRoom(createRoomOpts);
-            await roomhandler.OnAliasQueried(roomAlias, createRoomOpts.__roomId);
-        } catch (err) {
-            log.error("Exception thrown while handling \"query.room\" event", err);
-        }
-    });
+    if (config.bridge.disablePortalBridging !== true) {
+        // tslint:disable-next-line:no-any
+        appservice.on("query.room", async (roomAlias: string, createRoom: (opts: any) => Promise<void>) => {
+            try {
+                const createRoomOpts = await roomhandler.OnAliasQuery(roomAlias);
+                await createRoom(createRoomOpts);
+                await roomhandler.OnAliasQueried(roomAlias, createRoomOpts.__roomId);
+            } catch (err) {
+                log.error("Exception thrown while handling \"query.room\" event", err);
+            }
+        });
+    }
 
     appservice.on("room.event", async (roomId: string, event: IMatrixEvent) => {
         try {
-- 
GitLab