diff --git a/src/Mjolnir.ts b/src/Mjolnir.ts index 50034d5..32f5885 100644 --- a/src/Mjolnir.ts +++ b/src/Mjolnir.ts @@ -31,7 +31,7 @@ import { ReportPoller } from "./report/ReportPoller"; import { WebAPIs } from "./webapis/WebAPIs"; import RuleServer from "./models/RuleServer"; import { ThrottlingQueue } from "./queues/ThrottlingQueue"; -import { IConfig } from "./config"; +import { getDefaultConfig, IConfig } from "./config"; import PolicyList from "./models/PolicyList"; import { ProtectedRoomsSet } from "./ProtectedRoomsSet"; import ManagementRoomOutput from "./ManagementRoomOutput"; @@ -140,6 +140,9 @@ export class Mjolnir { * @returns A new Mjolnir instance that can be started without further setup. */ static async setupMjolnirFromConfig(client: MatrixSendClient, matrixEmitter: MatrixEmitter, config: IConfig): Promise { + if (!config.autojoinOnlyIfManager && config.acceptInvitesFromSpace === getDefaultConfig().acceptInvitesFromSpace) { + throw new TypeError("`autojoinOnlyIfManager` has been disabled, yet no space has been provided for `acceptInvitesFromSpace`."); + } const policyLists: PolicyList[] = []; const joinedRooms = await client.getJoinedRooms(); diff --git a/src/config.ts b/src/config.ts index 5382585..c716aa8 100644 --- a/src/config.ts +++ b/src/config.ts @@ -37,8 +37,13 @@ export interface IConfig { password: string; }; dataPath: string; - acceptInvitesFromSpace: string; + /** + * If true, Mjolnir will only accept invites from users present in managementRoom. + * Otherwise a space must be provided to `acceptInvitesFromSpace`. + */ autojoinOnlyIfManager: boolean; + /** Mjolnir will accept invites from members of this space if `autojoinOnlyIfManager` is false. */ + acceptInvitesFromSpace: string; recordIgnoredInvites: boolean; managementRoom: string; verboseLogging: boolean; @@ -127,7 +132,7 @@ const defaultConfig: IConfig = { }, dataPath: "/data/storage", acceptInvitesFromSpace: '!noop:example.org', - autojoinOnlyIfManager: false, + autojoinOnlyIfManager: true, recordIgnoredInvites: false, managementRoom: "!noop:example.org", verboseLogging: false,