diff --git a/config/config.sample.yaml b/config/config.sample.yaml index e4ffdef3b260de13f60eeab096806f8e55dae676..2b8350597ca9ef0ddf984570efa16e2d3eda00cd 100644 --- a/config/config.sample.yaml +++ b/config/config.sample.yaml @@ -1,17 +1,44 @@ +# This is a sample of the config file showing all avaliable options. +# Where possible we have documented what they do, and all values are the +# default values. + bridge: + # Domain part of the bridge, e.g. matrix.org domain: "localhost" + # This should be your publically facing URL because Discord may use it to + # fetch media from the media store. homeserverUrl: "http://localhost:8008" + # Interval at which to process users in the 'presence queue'. If you have + # 5 users, one user will be processed every 500 milliseconds according to the + # value below. This has a minimum value of 250. + # WARNING: This has a high chance of spamming the homeserver with presence + # updates since it will send one each time somebody changes state or is online. presenceInterval: 500 + # Disable setting presence for 'ghost users' which means Discord users on Matrix + # will not be shown as away or online. disablePresence: false + # Disable sending typing notifications when somebody on Discord types. disableTypingNotifications: false + # Disable parsing discord usernames out of matrix messages so + # that it highlights discord users. + # WARNING: Not always 100% accurate, but close enough usually. disableDiscordMentions: false + # Disable deleting messages on Discord if a message is redacted on Matrix. disableDeletionForwarding: false + # Enable users to bridge rooms using !discord commands. See + # https://t2bot.io/discord for instructions. enableSelfServiceBridging: false + # For both below, a space is inserted after @ to stop the mentions working. + # Disable relaying @everyone to Discord. Non-puppeted users can abuse this. + disableEveryoneMention: false + # Disable relaying @here to Discord. Non-puppeted users can abuse this. + disableHereMention: false +# Authentication configuration for the discord bot. auth: - clientID: "12345" # Get from discord - secret: "blah" + clientID: "12345" botToken: "foobar" logging: + # What level should the logger output to the console at. console: "warn" #silly, verbose, info, http, warn, error, silent lineDateFormat: "MMM-D HH:mm:ss.SSS" # This is in moment.js format files: @@ -22,11 +49,43 @@ logging: level: "warn" - file: "botlogs.log" # Will capture logs from DiscordBot level: "info" - enable: - - "DiscordBot" + enable: + - "DiscordBot" database: - filename: "discord.db" userStorePath: "user-store.db" roomStorePath: "room-store.db" + # You may either use SQLite or Postgresql for the bridge database, which contains + # important mappings for events and user puppeting configurations. + # Use the filename option for SQLite, or connString for Postgresql. + # If you are migrating, see https://github.com/Half-Shot/matrix-appservice-discord/blob/master/docs/howto.md#migrate-to-postgres-from-sqlite + # WARNING: You will almost certainly be fine with sqlite unless your bridge + # is in heavy demand and you suffer from IO slowness. + filename: "discord.db" + # connString: "postgresql://user:password@localhost/database_name" room: + # Set the default visibility of alias rooms, defaults to "public". + # One of: "public", "private" defaultVisibility: "public" +channel: + # Pattern of the name given to bridged rooms. + # Can use :guild for the guild name and :name for the channel name. + namePattern: "[Discord] :guild :name" + # Changes made to rooms when a channel is deleted. + deleteOptions: + # Prefix the room name with a string. + #namePrefix: "[Deleted]" + # Prefix the room topic with a string. + #topicPrefix: "This room has been deleted" + # Disable people from talking in the room by raising the event PL to 50 + disableMessaging: false + # Remove the discord alias from the room. + unsetRoomAlias: true + # Remove the room from the directory. + unlistFromDirectory: true + # Set the room to be unavaliable for joining without an invite. + setInviteOnly: true + # Make all the discord users leave the room. + ghostsLeave: true +limits: + # Delay between discord users joining a room. + roomGhostJoinDelay: 6000 diff --git a/config/config.schema.yaml b/config/config.schema.yaml index 96cc1abae3f025bc906806d31ceed6f4c7fa58ca..56de3a8585438f47d06b7636f0849b9163a72c6a 100644 --- a/config/config.schema.yaml +++ b/config/config.schema.yaml @@ -22,19 +22,20 @@ properties: type: "boolean" enableSelfServiceBridging: type: "boolean" + disableEveryoneMention: + type: "boolean" + disableHereMention: + type: "boolean" auth: type: "object" - required: ["botToken"] + required: ["botToken", "clientID"] properties: clientID: type: "string" - secret: - type: "string" botToken: type: "string" logging: type: "object" - required: [] properties: console: type: "string" @@ -68,7 +69,6 @@ properties: type: "string" database: type: "object" - required: [] properties: connString: type: "string" @@ -80,7 +80,34 @@ properties: type: "string" room: type: "object" - required: ["defaultVisibility"] properties: defaultVisibility: type: "string" + enum: ["public", "private"] + limits: + type: "object" + properties: + roomGhostJoinDelay: + type: "number" + channel: + type: "object" + properties: + namePattern: + type: "string" + deleteOptions: + type: "object" + properties: + namePrefix: + type: "string" + topicPrefix: + type: "string" + disableMessaging: + type: "boolean" + unsetRoomAlias: + type: "boolean" + unlistFromDirectory: + type: "boolean" + setInviteOnly: + type: "boolean" + ghostsLeave: + type: "boolean" diff --git a/src/config.ts b/src/config.ts index bb35047882be464802f00288eeeb7d8d87ee0b5b..c231adc639e3d24b11f221b49d7ce96886da6f4c 100644 --- a/src/config.ts +++ b/src/config.ts @@ -47,7 +47,6 @@ export class DiscordBridgeConfigDatabase { export class DiscordBridgeConfigAuth { public clientID: string; - public secret: string; public botToken: string; } diff --git a/test/test_configschema.ts b/test/test_configschema.ts new file mode 100644 index 0000000000000000000000000000000000000000..0533016160c9240d477a1ec8db00d71afc17ae05 --- /dev/null +++ b/test/test_configschema.ts @@ -0,0 +1,22 @@ +import * as yaml from "js-yaml"; +import * as Chai from "chai"; +import { ConfigValidator } from "matrix-appservice-bridge"; + +const expect = Chai.expect; + +describe("ConfigSchema", () => { + const validator = new ConfigValidator("./config/config.schema.yaml"); + it("should successfully validate a minimal config", () => { + const yamlConfig = yaml.safeLoad(` + bridge: + domain: localhost + homeserverUrl: "http://localhost:8008" + auth: + clientID: foo + botToken: foobar`); + validator.validate(yamlConfig); + }); + it("should successfully validate the sample config", () => { + validator.validate("./config/config.sample.yaml"); + }); +});