diff --git a/pillar/role/matrix.sls b/pillar/role/matrix.sls index bfce1c4..9f205b7 100644 --- a/pillar/role/matrix.sls +++ b/pillar/role/matrix.sls @@ -22,36 +22,179 @@ profile: appservice_id: f4de7550133374c703c4cd64c5898cf1b82b65d4a5c2aca93863ee1fb859df91 build: False script: /usr/bin/node index.js -c config.yaml -f webhook-registration.yaml -p 9002 - irc: - repo: https://github.com/matrix-org/matrix-appservice-irc.git - appservice_id: 1deb544b666b3aba1d9d49d3d4785eeb2fb2befa24e0743c91e6290866003c33 - build: True - script: /usr/bin/node --experimental-worker app.js -c config.yaml -f irc-registration.yaml -p 9003 - channels: - kubic: "!qjMfuyGrjKwlSeLAih:opensuse.org" - microos-desktop: "!rJKcfgIndKVMvmgntJ:opensuse.org" - opensuse-admin: "!kpNvJLdolgoCuqsSje:opensuse.org" - opensuse-artwork: "!GxqKblgYnbXkqKjBAA:opensuse.org" - opensuse-buildservice: "!ghfRmaAVDgHndflhuK:opensuse.org" - opensuse-chat: "!BztzbuZFDtphuMYLVs:opensuse.org" - opensuse-de: "!jQjhzBeKVYPtWlzdrx:opensuse.org" - opensuse-e: "!pFZNcfFkaiwdHZdHHW:opensuse.org" - opensuse-es: "!MYMIZKowibauTQkKvY:opensuse.org" - opensuse-factory: "!UosUniyBpwshLxmZYz:opensuse.org" - opensuse-forums: "!bbQEanSTDAsvNOTEbo:opensuse.org" - opensuse-gnome: "!hnSuvZKLxoaIOFdVIV:opensuse.org" - opensuse-kde: "!qHXhpDSdPPIvbaoNJt:opensuse.org" - opensuse-marketing: "!lWLaDZklhUUUKyTwfk:opensuse.org" - opensuse-packaging: "!yVnleprfBKABxCWKYt:opensuse.org" - opensuse-project: "!xQdKOkWDATFaXEfQwh:opensuse.org" - opensuse-xfce: "!HLNQEdCCObKVwUbeEd:opensuse.org" - suse: "!uWULbDNSWAMUOqTylN:opensuse.org" - suse.pl: "!CxGTCHixBaYAhCWmpX:opensuse.org" - uyuni: "!VpvFUuPwOggMxpfHJh:opensuse.org" - yast: "!DEXmxaamJYZKRHbaHY:opensuse.org" telegram: appservice_id: oepzkscngbyqvopzn773ns7whfxyfslgjhy7mumy7syurqp3f4kvb4sgufz9nfsw api_id: 1331253 + matterbridge: + servers: + irc: + freenode: + Server: "chat.freenode.net:6697" + UseTLS: true + Nick: "openSUSEBot" + RemoteNickFormat: "<{NICK}> " + matrix: + openSUSE: + Server: "https://matrix.opensuse.org" + Login: "matterbridge" + RemoteNickFormat: "<{NICK}> " + discord: + openSUSE: + Server: "ID:366985425371398146" + AutoWebhooks: true + UseUserName: true + RemoteNickFormat: "{NICK}" + telegram: + default: + UseFirstName: true + RemoteNickFormat: "**{NICK}**: " + MessageFormat: "MarkdownV2" + gateways: + kiwi: + matrix.openSUSE: "#kiwi:matrix.org" + discord.openSUSE: "ID:669467339158454283" + kubic: + irc.freenode: "#kubic" + matrix.openSUSE: "#kubic:opensuse.org" + discord.openSUSE: "ID:734445719825416216" + microos-desktop: + irc.freenode: "microos-desktop" + matrix.openSUSE: "#microos-desktop:opensuse.org" + discord.openSUSE: "ID:734445753975570563" + telegram.default: "" + openqa: + matrix.openSUSE: "#openqa:opensuse.org" + discord.openSUSE: "ID:817367056956653621" + opensuse-admin: + irc.freenode: "#opensuse-admin" + matrix.openSUSE: "#admin:opensuse.org" + discord.openSUSE: "ID:700799844754784420" + opensuse-artwork: + irc.freenode: "#opensuse-artwork" + matrix.openSUSE: "#artwork:opensuse.org" + discord.openSUSE: "ID:496049131928682506" + opensuse-buildservice: + irc.freenode: "#opensuse-buildservice" + matrix.openSUSE: "#obs:opensuse.org" + discord.openSUSE: "ID:723545727816433664" + opensuse-chat: + irc.freenode: "#opensuse-chat" + matrix.openSUSE: "#chat:opensuse.org" + discord.openSUSE: "ID:366989996101730304" + telegram.default: "" + opensuse-de: + irc.freenode: "#opensuse-de" + matrix.openSUSE: "#de:opensuse.org" + discord.openSUSE: "ID:561164428939100160" + telegram.default: "" + opensuse-docs: + matrix.openSUSE: "#docs:opensuse.org" + discord.openSUSE: "ID:570871796132478976" + telegram.default: "" + opensuse-e: + irc.freenode: "#opensuse-e" + matrix.openSUSE: "#e:opensuse.org" + discord.openSUSE: "ID:582568672196034570" + opensuse-es: + irc.freenode: "#opensuse-es" + matrix.openSUSE: "#es:opensuse.org" + discord.openSUSE: "ID:561190353030348810" + telegram.default: "" + opensuse-factory: + irc.freenode: "#opensuse-factory" + matrix.openSUSE: "#factory:opensuse.org" + discord.openSUSE: "ID:523947864439914496" + opensuse-forums: + irc.freenode: "#opensuse-forums" + matrix.openSUSE: "#forums:opensuse.org" + discord.openSUSE: "ID:700825520668934284" + opensuse-fr: + matrix.openSUSE: "#fr:opensuse.org" + discord.openSUSE: "ID:664012710597492737" + opensuse-gaming: + matrix.openSUSE: "#gaming:opensuse.org" + discord.openSUSE: "ID:570871874481815572" + opensuse-gnome: + irc.freenode: "#opensuse-gnome" + matrix.openSUSE: "#gnome:opensuse.org" + discord.openSUSE: "ID:523949043110379530" + opensuse-haskell: + matrix.openSUSE: "#haskell:opensuse.org" + discord.openSUSE: "ID:760556011395874856" + opensuse-it: + matrix.openSUSE: "#it:opensuse.org" + discord.openSUSE: "ID:561194459619000321" + telegram.default: "" + opensuse-kde: + irc.freenode: "#opensuse-kde" + matrix.openSUSE: "#kde:opensuse.org" + discord.openSUSE: "ID:523949061674369024" + opensuse-marketing: + irc.freenode: "#opensuse-marketing" + matrix.openSUSE: "#marketing:opensuse.org" + discord.openSUSE: "ID:660902159910567966" + telegram.default: "" + opensuse-newscom: + matrix.openSUSE: "#newscom:opensuse.org" + discord.openSUSE: "ID:806162338188361728" + telegram.default: "" + opensuse-news: + matrix.openSUSE: "#news:opensuse.org" + discord.openSUSE: "ID:376527321869451271" + opensuse-nl: + matrix.openSUSE: "#nl:opensuse.org" + discord.openSUSE: "ID:605150216965849107" + opensuse-packaging: + irc.freenode: "#opensuse-packaging" + matrix.openSUSE: "#packaging:opensuse.org" + discord.openSUSE: "ID:496005129959374868" + opensuse-pine: + matrix.openSUSE: "#pine:opensuse.org" + discord.openSUSE: "ID:794874055043710996" + telegram.default: "" + opensuse-pl: + irc.freenode: "#suse.pl" + matrix.openSUSE: "#pl:opensuse.org" + discord.openSUSE: "ID:561164407560863755" + telegram.default: "" + opensuse-project: + irc.freenode: "#opensuse-project" + matrix.openSUSE: "#project:opensuse.org" + discord.openSUSE: "ID:407993213425680384" + telegram.default: "" + opensuse-reddit: + matrix.openSUSE: "#reddit:opensuse.org" + discord.openSUSE: "ID:619283903571820555" + opensuse-support: + irc.freenode: "#suse" + matrix.openSUSE: "#support:opensuse.org" + discord.openSUSE: "ID:366987951734784012" + opensuse-telegram: + matrix.openSUSE: "#telegram:opensuse.org" + discord.openSUSE: "ID:557298959765209108" + telegram.default: "" + opensuse-tumbleweed: + matrix.openSUSE: "#snapshots:opensuse.org" + discord.openSUSE: "ID:619284844865650698" + opensuse-twitter: + matrix.openSUSE: "#twitter:opensuse.org" + discord.openSUSE: "ID:619283940318117953" + opensuse-xfce: + irc.freenode: "#opensuse-xfce" + matrix.openSUSE: "#xfce:opensuse.org" + discord.openSUSE: "ID:523949083241742336" + telegram.default: "" + software-o-o: + matrix.openSUSE: "#software-o-o:opensuse.org" + discord.openSUSE: "ID:733713878055256155" + uyuni: + irc.freenode: "#uyuni" + matrix.openSUSE: "#uyuni:opensuse.org" + discord.openSUSE: "ID:723546275915628585" + yast: + irc.freenode: "#yast" + matrix.openSUSE: "#yast:opensuse.org" + discord.openSUSE: "ID:545922654570414090" nginx: ng: @@ -64,7 +207,7 @@ nginx: - listen: - 80 - default_server - - root: /var/www/riot-web + - root: /usr/share/element-web - gzip_vary: 'on' - gzip_min_length: 1000 - gzip_comp_level: 5 diff --git a/pillar/secrets/role/matrix.sls b/pillar/secrets/role/matrix.sls index eea8bb2..2840a6f 100644 --- a/pillar/secrets/role/matrix.sls +++ b/pillar/secrets/role/matrix.sls @@ -362,6 +362,85 @@ profile: iDxtdmWgY2kllYYu7mBjR7Lmy3R4vqJDF0RQioyj =0XBC -----END PGP MESSAGE----- + oidc_secret: | + -----BEGIN PGP MESSAGE----- + + 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 + xuH3rwe5ieSD/dICAw== + =djN5 + -----END PGP MESSAGE----- appservices: discord: homeserver_token: | @@ -634,393 +713,6 @@ profile: NooGs/b58lnQryLAd3HYRceYsvKT/dH6Pm1yZZUezfC5taeZxzzq =RZbL -----END PGP MESSAGE----- - irc: - homeserver_token: | - -----BEGIN PGP MESSAGE----- - - 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 - =umxT - -----END PGP MESSAGE----- - appservice_token: | - -----BEGIN PGP MESSAGE----- - - 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 - =0c9n - -----END PGP MESSAGE----- - bot_password: | - -----BEGIN PGP MESSAGE----- - - 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 - =YYAO - -----END PGP MESSAGE----- - pass_enc_key: - -----BEGIN PGP MESSAGE----- - - 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 - Wo6ypyJd8xqZ7SvroGZZl+E= - =EbP5 - -----END PGP MESSAGE----- webhook: homeserver_token: | -----BEGIN PGP MESSAGE----- @@ -1838,7 +1530,341 @@ profile: JcVtHdyWPKl71WZP2Tv+cbLo10P6u2JbzuA= =iSQD -----END PGP MESSAGE----- + matterbridge: + servers: + irc: + freenode: + Password: | + -----BEGIN PGP MESSAGE----- + + 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 + =YYAO + -----END PGP MESSAGE----- + matrix: + openSUSE: + Password: | + -----BEGIN PGP MESSAGE----- + + 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 + =EdcG + -----END PGP MESSAGE----- + discord: + openSUSE: + Token: | + -----BEGIN PGP MESSAGE----- + + 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 + =Toe1 + -----END PGP MESSAGE----- + telegram: + default: + Token: | + -----BEGIN PGP MESSAGE----- + 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 + TNrHBy7MdsaUwmssayVeMJm28PXAqdIUbtIa + =Io8E + -----END PGP MESSAGE----- postgres: users: diff --git a/salt/profile/matrix/files/appservice-irc.yaml b/salt/profile/matrix/files/appservice-irc.yaml deleted file mode 100644 index 9fb7531..0000000 --- a/salt/profile/matrix/files/appservice-irc.yaml +++ /dev/null @@ -1,15 +0,0 @@ -id: {{ pillar['profile']['matrix']['appservices']['irc']['appservice_id'] }} -hs_token: {{ pillar['profile']['matrix']['appservices']['irc']['homeserver_token'] }} -as_token: {{ pillar['profile']['matrix']['appservices']['irc']['appservice_token'] }} -namespaces: - users: - - exclusive: true - regex: '@freenode_.*:opensuse\.org' - group_id: '+freenode:opensuse.org' - aliases: [] - rooms: [] -url: 'http://localhost:9003' -sender_localpart: appservice-irc -rate_limited: false -protocols: - - irc diff --git a/salt/profile/matrix/files/config-irc.yaml b/salt/profile/matrix/files/config-irc.yaml deleted file mode 100644 index 0f94e33..0000000 --- a/salt/profile/matrix/files/config-irc.yaml +++ /dev/null @@ -1,508 +0,0 @@ -# Configuration specific to AS registration. Unless other marked, all fields -# are *REQUIRED*. -homeserver: - # The URL to the home server for client-server API calls, also used to form the - # media URLs as displayed in bridged IRC channels: - url: "https://matrix.opensuse.org" - # - # The URL of the homeserver hosting media files. This is only used to transform - # mxc URIs to http URIs when bridging m.room.[file|image] events. Optional. By - # default, this is the homeserver URL, specified above. - # - # media_url: "http://media.repo:8008" - - # Drop Matrix messages which are older than this number of seconds, according to - # the event's origin_server_ts. - # If the bridge is down for a while, the homeserver will attempt to send all missed - # events on reconnection. These events may be hours old, which can be confusing to - # IRC users if they are then bridged. This option allows these old messages to be - # dropped. - # CAUTION: This is a very coarse heuristic. Federated homeservers may have different - # clock times and hence produce different origin_server_ts values, which may be old - # enough to cause *all* events from the homeserver to be dropped. - # Default: 0 (don't ever drop) - # dropMatrixMessagesAfterSecs: 300 # 5 minutes - - # The 'domain' part for user IDs on this home server. Usually (but not always) - # is the "domain name" part of the HS URL. - domain: "opensuse.org" - - # Should presence be enabled for matrix clients on this bridge. If disabled on the - # homeserver then it should also be disabled here to avoid excess traffic. - # Default: true - enablePresence: true - - # Which port should the appservice bind to. Takes priority over the one provided in the - # command line! Optional. - bindPort: 9003 - - # Use this option to force the appservice to listen on another hostname for transactions. - # This is NOT your synapse hostname. E.g. use 127.0.0.1 to only listen locally. Optional. - bindHostname: 127.0.0.1 - -# Configuration specific to the IRC service -ircService: - servers: - # The address of the server to connect to. - chat.freenode.net: - # A human-readable short name. This is used to label IRC status rooms - # where matrix users control their connections. - # E.g. 'ExampleNet IRC Bridge status'. - # It is also used in the Third Party Lookup API as the instance `desc` - # property, where each server is an instance. - name: "Freenode" - - # additionalAddresses: [ "irc2.example.com" ] - # - # [DEPRECATED] Use `name`, above, instead. - # A human-readable description string - # description: "Example.com IRC network" - - # An ID for uniquely identifying this server amongst other servers being bridged. - # networkId: "example" - - # URL to an icon used as the network icon whenever this network appear in - # a network list. (Like in the riot room directory, for instance.) - icon: https://static.opensuse.org/chat/integrations/irc.png - - # The port to connect to. Optional. - port: 6697 - # Whether to use SSL or not. Default: false. - ssl: true - # Whether or not IRC server is using a self-signed cert or not providing CA Chain - sslselfsign: false - # Should the connection attempt to identify via SASL (if a server or user password is given) - # If false, this will use PASS instead. If SASL fails, we do not fallback to PASS. - sasl: false - # Whether to allow expired certs when connecting to the IRC server. - # Usually this should be off. Default: false. - allowExpiredCerts: false - # A specific CA to trust instead of the default CAs. Optional. - #ca: | - # -----BEGIN CERTIFICATE----- - # ... - # -----END CERTIFICATE----- - - # - # The connection password to send for all clients as a PASS (or SASL, if enabled above) command. Optional. - # password: 'pa$$w0rd' - # - # Whether or not to send connection/error notices to real Matrix users. Default: true. - sendConnectionMessages: true - - quitDebounce: - # Whether parts due to net-splits are debounced for delayMs, to allow - # time for the netsplit to resolve itself. A netsplit is detected as being - # a QUIT rate higher than quitsPerSecond. Default: false. - enabled: false - # The maximum number of quits per second acceptable above which a netsplit is - # considered ongoing. Default: 5. - quitsPerSecond: 5 - # The time window in which to wait before bridging a QUIT to Matrix that occurred during - # a netsplit. Debouncing is jittered randomly between delayMinMs and delayMaxMs so that the HS - # is not sent many requests to leave rooms all at once if a netsplit occurs and many - # people to not rejoin. - # If the user with the same IRC nick as the one who sent the quit rejoins a channel - # they are considered back online and the quit is not bridged, so long as the rejoin - # occurs before the randomly-jittered timeout is not reached. - # Default: 3600000, = 1h - delayMinMs: 3600000 # 1h - # Default: 7200000, = 2h - delayMaxMs: 7200000 # 2h - - # A map for conversion of IRC user modes to Matrix power levels. This enables bridging - # of IRC ops to Matrix power levels only, it does not enable the reverse. If a user has - # been given multiple modes, the one that maps to the highest power level will be used. - modePowerMap: - o: 50 - v: 1 - - botConfig: - # Enable the presence of the bot in IRC channels. The bot serves as the entity - # which maps from IRC -> Matrix. You can disable the bot entirely which - # means IRC -> Matrix chat will be shared by active "M-Nick" connections - # in the room. If there are no users in the room (or if there are users - # but their connections are not on IRC) then nothing will be bridged to - # Matrix. If you're concerned about the bot being treated as a "logger" - # entity, then you may want to disable the bot. If you want IRC->Matrix - # but don't want to have TCP connections to IRC unless a Matrix user speaks - # (because your client connection limit is low), then you may want to keep - # the bot enabled. Default: true. - # NB: If the bot is disabled, you SHOULD have matrix-to-IRC syncing turned - # on, else there will be no users and no bot in a channel (meaning no - # messages to Matrix!) until a Matrix user speaks which makes a client - # join the target IRC channel. - # NBB: The bridge bot IRC client will still join the target IRC network so - # it can service bridge-specific queries from the IRC-side e.g. so - # real IRC clients have a way to change their Matrix display name. - # See https://github.com/matrix-org/matrix-appservice-irc/issues/55 - enabled: true - # The nickname to give the AS bot. - nick: "openSUSEBot" - # The password to give to NickServ or IRC Server for this nick. Optional. - password: "{{ pillar['profile']['matrix']['appservices']['irc']['bot_password'] }}" - # - # Join channels even if there are no Matrix users on the other side of - # the bridge. Set to false to prevent the bot from joining channels which have no - # real matrix users in them, even if there is a mapping for the channel. - # Default: true - joinChannelsIfNoUsers: true - - # Configuration for PMs / private 1:1 communications between users. - privateMessages: - # Enable the ability for PMs to be sent to/from IRC/Matrix. - # Default: true. - enabled: true - # Prevent Matrix users from sending PMs to the following IRC nicks. - # Optional. Default: []. - # exclude: ["Alice", "Bob"] # NOT YET IMPLEMENTED - - # Should created Matrix PM rooms be federated? If false, only users on the - # HS attached to this AS will be able to interact with this room. - # Optional. Default: true. - federate: true - - # Configuration for mappings not explicitly listed in the 'mappings' - # section. - dynamicChannels: - # Enable the ability for Matrix users to join *any* channel on this IRC - # network. - # Default: false. - enabled: false - # Should the AS create a room alias for the new Matrix room? The form of - # the alias can be modified via 'aliasTemplate'. Default: true. - createAlias: true - # Should the AS publish the new Matrix room to the public room list so - # anyone can see it? Default: true. - published: false - # What should the join_rule be for the new Matrix room? If 'public', - # anyone can join the room. If 'invite', only users with an invite can - # join the room. Note that if an IRC channel has +k or +i set on it, - # join_rules will be set to 'invite' until these modes are removed. - # Default: "public". - joinRule: public - # This will set the m.room.related_groups state event in newly created rooms - # with the given groupId. This means flares will show up on IRC users in those rooms. - # This should be set to the same thing as namespaces.users.group_id in irc_registration. - # This does not alter existing rooms. - # Leaving this option empty will not set the event. - groupId: +freenode:opensuse.org - # Should created Matrix rooms be federated? If false, only users on the - # HS attached to this AS will be able to interact with this room. - # Default: true. - federate: true - # Force this room version when creating IRC channels. Beware if the homeserver doesn't - # support the room version then the request will fail. By default, no version is requested. - # roomVersion: "1" - # The room alias template to apply when creating new aliases. This only - # applies if createAlias is 'true'. The following variables are exposed: - # $SERVER => The IRC server address (e.g. "irc.example.com") - # $CHANNEL => The IRC channel (e.g. "#python") - # This MUST have $CHANNEL somewhere in it. - # Default: '#irc_$SERVER_$CHANNEL' - aliasTemplate: "#freenode_$CHANNEL" - # A list of user IDs which the AS bot will send invites to in response - # to a !join. Only applies if joinRule is 'invite'. Default: [] - # whitelist: - # - "@foo:example.com" - # - "@bar:example.com" - # - # Prevent the given list of channels from being mapped under any - # circumstances. - # exclude: ["#foo", "#bar"] - - # excludedUsers: - # - regex: "@.*:evilcorp.com" - # kickReason: "We don't like Evilcorp" - - # Configuration for controlling how Matrix and IRC membership lists are - # synced. - membershipLists: - # Enable the syncing of membership lists between IRC and Matrix. This - # can have a significant effect on performance on startup as the lists are - # synced. This must be enabled for anything else in this section to take - # effect. Default: false. - enabled: true - - # Syncing membership lists at startup can result in hundreds of members to - # process all at once. This timer drip feeds membership entries at the - # specified rate. Default: 10000. (10s) - floodDelayMs: 10000 - - global: - ircToMatrix: - # Get a snapshot of all real IRC users on a channel (via NAMES) and - # join their virtual matrix clients to the room. - initial: true - # Make virtual matrix clients join and leave rooms as their real IRC - # counterparts join/part channels. Default: false. - incremental: true - - matrixToIrc: - # Get a snapshot of all real Matrix users in the room and join all of - # them to the mapped IRC channel on startup. Default: false. - initial: true - # Make virtual IRC clients join and leave channels as their real Matrix - # counterparts join/leave rooms. Make sure your 'maxClients' value is - # high enough! Default: false. - incremental: true - - # Apply specific rules to Matrix rooms. Only matrix-to-IRC takes effect. - # rooms: - # - room: "!fuasirouddJoxtwfge:localhost" - # matrixToIrc: - # initial: false - # incremental: false - - # Apply specific rules to IRC channels. Only IRC-to-matrix takes effect. - # channels: - # - channel: "#foo" - # ircToMatrix: - # initial: false - # incremental: false - - mappings: - # 1:many mappings from IRC channels to room IDs on this IRC server. - # The matrix room must already exist. Your matrix client should expose - # the room ID in a "settings" page for the room. -{% set channels = salt['pillar.get']('profile:matrix:appservices:irc:channels') %} -{% for ircchannel, matrixroom in channels.items() %} - "#{{ ircchannel }}": - roomIds: ["{{ matrixroom }}"] -{% endfor %} - # Channel key/password to use. Optional. If provided, matrix users do - # not need to know the channel key in order to join the channel. - # key: "secret" - - # Configuration for virtual matrix users. The following variables are - # exposed: - # $NICK => The IRC nick - # $SERVER => The IRC server address (e.g. "irc.example.com") - matrixClients: - # The user ID template to use when creating virtual matrix users. This - # MUST have $NICK somewhere in it. - # Optional. Default: "@$SERVER_$NICK". - # Example: "@irc.example.com_Alice:example.com" - userTemplate: "@freenode_$NICK" - # The display name to use for created matrix clients. This should have - # $NICK somewhere in it if it is specified. Can also use $SERVER to - # insert the IRC domain. - # Optional. Default: "$NICK (IRC)". Example: "Alice (IRC)" - displayName: "$NICK" - # Number of tries a client can attempt to join a room before the request - # is discarded. You can also use -1 to never retry or 0 to never give up. - # Optional. Default: -1 - joinAttempts: -1 - - # Configuration for virtual IRC users. The following variables are exposed: - # $LOCALPART => The user ID localpart ("alice" in @alice:localhost) - # $USERID => The user ID - # $DISPLAY => The display name of this user, with excluded characters - # (e.g. space) removed. If the user has no display name, this - # falls back to $LOCALPART. - ircClients: - # The template to apply to every IRC client nick. This MUST have either - # $DISPLAY or $USERID or $LOCALPART somewhere in it. - # Optional. Default: "M-$DISPLAY". Example: "M-Alice". - nickTemplate: "$DISPLAY[m]" - # True to allow virtual IRC clients to change their nick on this server - # by issuing !nick commands to the IRC AS bot. - # This is completely freeform: it will NOT follow the nickTemplate. - allowNickChanges: true - # The max number of IRC clients that will connect. If the limit is - # reached, the client that spoke the longest time ago will be - # disconnected and replaced. - # Optional. Default: 30. - maxClients: 30 - # IPv6 configuration. - ipv6: - # Optional. Set to true to force IPv6 for outgoing connections. - only: false - # Optional. The IPv6 prefix to use for generating unique addresses for each - # connected user. If not specified, all users will connect from the same - # (default) address. This may require additional OS-specific work to allow - # for the node process to bind to multiple different source addresses - # Linux kernels 4.3+ support sysctl net.ipv6.ip_nonlocal_bind=1 - # Older kernels will need IP_FREEBIND, which requires an LD_PRELOAD with the library - # https://github.com/matrix-org/freebindfree as Node does not expose setsockopt. - # prefix: "2001:0db8:85a3::" # modify appropriately - # - # The maximum amount of time in seconds that the client can exist - # without sending another message before being disconnected. Use 0 to - # not apply an idle timeout. This value is ignored if this IRC server is - # mirroring matrix membership lists to IRC. Default: 172800 (48 hours) - idleTimeout: 10800 - # The number of millseconds to wait between consecutive reconnections if a - # client gets disconnected. Setting to 0 will cause the scheduling to be - # disabled, i.e. it will be scheduled immediately (with jitter. - # Otherwise, the scheduling interval will be used such that one client - # reconnect for this server will be handled every reconnectIntervalMs ms using - # a FIFO queue. - # Default: 5000 (5 seconds) - reconnectIntervalMs: 5000 - # The number of concurrent reconnects if a user has been disconnected unexpectedly - # (e.g. a netsplit). You should set this to a reasonably high number so that - # bridges are not waiting an eternity to reconnect all its clients if - # we see a massive number of disconnect. This is unrelated to the reconnectIntervalMs - # setting above which is for connecting on restart of the bridge. Set to 0 to - # immediately try to reconnect all users. - # Default: 50 - concurrentReconnectLimit: 50 - # The number of lines to allow being sent by the IRC client that has received - # a large block of text to send from matrix. If the number of lines that would - # be sent is > lineLimit, the text will instead be uploaded to matrix and the - # resulting URI is treated as a file. As such, a link will be sent to the IRC - # side instead of potentially spamming IRC and getting the IRC client kicked. - # Default: 3. - lineLimit: 3 - # A list of user modes to set on every IRC client. For example, "RiG" would set - # +R, +i and +G on every IRC connection when they have successfully connected. - # User modes vary wildly depending on the IRC network you're connecting to, - # so check before setting this value. Some modes may not work as intended - # through the bridge e.g. caller ID as there is no way to /ACCEPT. - # Default: "" (no user modes) - # userModes: "R" - # Set information about the bridged channel in the room state, so that client's may - # present relevant UI to the user. MSC2346 - bridgeInfoState: - enabled: true - initial: true - # Configuration for an ident server. If you are running a public bridge it is - # advised you setup an ident server so IRC mods can ban specific matrix users - # rather than the application service itself. - ident: - # True to listen for Ident requests and respond with the - # matrix user's user_id (converted to ASCII, respecting RFC 1413). - # Default: false. - enabled: false - # The port to listen on for incoming ident requests. - # Ports below 1024 require root to listen on, and you may not want this to - # run as root. Instead, you can get something like an Apache to yank up - # incoming requests to 113 to a high numbered port. Set the port to listen - # on instead of 113 here. - # Default: 113. - port: 1113 - # The address to listen on for incoming ident requests. - # Default: 0.0.0.0 - address: "::" - - # Configuration for logging. Optional. Default: console debug level logging - # only. - logging: - # Level to log on console/logfile. One of error|warn|info|debug - level: "debug" - # The file location to log to. This is relative to the project directory. - logfile: "/var/log/matrix-synapse/irc/debug.log" - # The file location to log errors to. This is relative to the project - # directory. - errfile: "/var/log/matrix-synapse/irc/errors.log" - # Whether to log to the console or not. - toConsole: true - # The max number of files to keep. Files will be overwritten eventually due - # to rotations. - maxFiles: 5 - - # Metrics will then be available via GET /metrics on the bridge listening port (-p). - metrics: - # Whether to actually enable the metric endpoint. Default: false - enabled: true - # When collecting remote user active times, which "buckets" should be used. Defaults are given below. - # The bucket name is formed of a duration and a period. (h=hours,d=days,w=weeks). - remoteUserAgeBuckets: - - "1h" - - "1d" - - "1w" - - # Configuration options for the debug HTTP API. To access this API, you must - # append ?access_token=$APPSERVICE_TOKEN (from the registration file) to the requests. - # - # The debug API exposes the following endpoints: - # - # GET /irc/$domain/user/$user_id => Return internal state for the IRC client for this user ID. - # - # POST /irc/$domain/user/$user_id => Issue a raw IRC command down this connection. - # Format: new line delimited commands as per IRC protocol. - # - debugApi: - # True to enable the HTTP API endpoint. Default: false. - enabled: false - # The port to host the HTTP API. - port: 11100 - - # Configuration for the provisioning API. - # - # GET /_matrix/provision/link - # GET /_matrix/provision/unlink - # GET /_matrix/provision/listlinks - # - provisioning: - # True to enable the provisioning HTTP endpoint. Default: false. - enabled: true - # The number of seconds to wait before giving up on getting a response from - # an IRC channel operator. If the channel operator does not respond within the - # allotted time period, the provisioning request will fail. - # Default: 300 seconds (5 mins) - # requestTimeoutSeconds: 300 - # A file defining the provisioning rules for rooms. Format is documented - # in rules.sample.yaml. Leave undefined to not specify any rules. - # ruleFile: "./provisioning.rules.yaml" - # Watch the file for changes, and apply the rules. Default: false - # enableReload: true - - # WARNING: The bridge needs to send plaintext passwords to the IRC server, it cannot - # send a password hash. As a result, passwords (NOT hashes) are stored encrypted in - # the database. - # - # To generate a .pem file: - # $ openssl genpkey -out passkey.pem -outform PEM -algorithm RSA -pkeyopt rsa_keygen_bits:2048 - # - # The path to the RSA PEM-formatted private key to use when encrypting IRC passwords - # for storage in the database. Passwords are stored by using the admin room command - # `!storepass server.name passw0rd. When a connection is made to IRC on behalf of - # the Matrix user, this password will be sent as the server password (PASS command). - passwordEncryptionKeyPath: "/etc/matrix-synapse/irc_password.pem" - - # Config for Matrix -> IRC bridging - matrixHandler: - # Cache this many matrix events in memory to be used for m.relates_to messages (usually replies). - eventCacheSize: 4096 - - ircHandler: - # How many /leave requests can be ongoing at a time. - # This is used to stem the flow of requests in case of a mass quit/leave, which might - # slow down the homeserver. - leaveConcurrency: 10 - # Should we attempt to match an IRC side mention (nickaname match) - # with the nickname's owner's matrixId, if we are bridging them? - # "on" - Defaults to enabled, users can choose to disable. - # "off" - Defaults to disabled, users can choose to enable. - # "force-off" - Disabled, cannot be enabled. - mapIrcMentionsToMatrix: "on" # This can be "on", "off", "force-off". -# Options here are generally only applicable to large-scale bridges and may have -# consequences greater than other options in this configuration file. -advanced: - # The maximum number of HTTP(S) sockets to maintain. Usually this is unlimited - # however for large bridges it is important to rate limit the bridge to avoid - # accidentally overloading the homeserver. Defaults to 1000, which should be - # enough for the vast majority of use cases. - maxHttpSockets: 1000 - # Max size of an appservice transaction payload, in bytes. Defaults to 10Mb - maxTxnSize: 10000000 - -# Capture information to a sentry.io instance -# sentry: - # enabled: false - # dsn: "https://@sentry.io/" - # Optional. A tag to specify the production environment. Not set by default - # environment: "" - # Optional. A tag to specify the server name. Not set by default - # serverName: "" - -# Use an external database to store bridge state. -database: - # database engine (must be 'postgres' or 'nedb'). Default: nedb - engine: "postgres" - # Either a PostgreSQL connection string, or a path to the NeDB storage directory. - # For postgres, it must start with postgres:// - # For NeDB, it must start with nedb://. The path is relative to the project directory. - connectionString: "postgresql://{{ pillar['profile']['matrix']['database_user'] }}:{{ pillar['postgres']['users']['matrix']['password'] }}@{{ pillar['profile']['matrix']['database_host'] }}/irc_bridge" diff --git a/salt/profile/matrix/files/config-telegram.yaml b/salt/profile/matrix/files/config-telegram.yaml index ec0c697..e849955 100644 --- a/salt/profile/matrix/files/config-telegram.yaml +++ b/salt/profile/matrix/files/config-telegram.yaml @@ -7,6 +7,7 @@ homeserver: # Whether or not to verify the SSL certificate of the homeserver. # Only applies if address starts with https:// verify_ssl: true + asmux: false # Application service host/registration related details # Changing these values requires regeneration of the registration. @@ -30,6 +31,8 @@ appservice: # SQLite: sqlite:///filename.db # Postgres: postgres://username:password@hostname/dbname database: postgresql://{{ pillar['profile']['matrix']['database_user'] }}:{{ pillar['postgres']['users']['matrix']['password'] }}@{{ pillar['profile']['matrix']['database_host'] }}/telegram_bridge + # Optional extra arguments for SQLAlchemy's create_engine + database_opts: {} # Public part of web server for out-of-Matrix interaction with the bridge. # Used for things like login if the user wants to make sure the 2FA password isn't stored in @@ -44,7 +47,7 @@ appservice: external: https://example.com/public # Provisioning API part of the web server for automated portal creation and fetching information. - # Used by things like Dimension (https://dimension.t2bot.io/). + # Used by things like mautrix-manager (https://github.com/tulir/mautrix-manager). provisioning: # Whether or not the provisioning API should be enabled. enabled: true @@ -69,6 +72,11 @@ appservice: # Example: "+telegram:example.com". Set to false to disable. community_id: +telegram:opensuse.org + # Whether or not to receive ephemeral events via appservice transactions. + # Requires MSC2409 support (i.e. Synapse 1.22+). + # You should disable bridge -> sync_with_custom_puppets when this is enabled. + ephemeral_events: false + # Authentication tokens for AS <-> HS communication. Autogenerated; do not modify. as_token: {{ pillar['profile']['matrix']['telegram']['appservice_token'] }} hs_token: {{ pillar['profile']['matrix']['telegram']['homeserver_token'] }} @@ -129,7 +137,7 @@ bridge: # Maximum number of members to sync per portal when starting up. Other members will be # synced when they send messages. The maximum is 10000, after which the Telegram server # will not send any more members. - # Defaults to no local limit (-> limited to 10000 by server) + # -1 means no limit (which means it's limited to 10000 by the server) max_initial_member_sync: -1 # Whether or not to sync the member list in channels. # If no channel admins have logged into the bridge, the bridge won't be able to sync the member @@ -142,7 +150,10 @@ bridge: startup_sync: true # Number of most recently active dialogs to check when syncing chats. # Set to 0 to remove limit. - sync_dialog_limit: 30 + sync_update_limit: 30 + # Number of most recently active dialogs to create portals for when syncing chats. + # Set to 0 to remove limit. + sync_create_limit: 30 # Whether or not to sync and create portals for direct chats at startup. sync_direct_chats: false # The maximum number of simultaneous Telegram deletions to handle. @@ -151,8 +162,8 @@ bridge: # Whether or not to automatically sync the Matrix room state (mostly unpuppeted displaynames) # at startup and when creating a bridge. sync_matrix_state: true - # Allow logging in within Matrix. If false, the only way to log in is using the out-of-Matrix - # login website (see appservice.public config section) + # Allow logging in within Matrix. If false, users can only log in using login-qr or the + # out-of-Matrix login website (see appservice.public config section) allow_matrix_login: true # Whether or not to bridge plaintext highlights. # Only enable this if your displayname_template has some static part that the bridge can use to @@ -160,15 +171,27 @@ bridge: plaintext_highlights: false # Whether or not to make portals of publicly joinable channels/supergroups publicly joinable on Matrix. public_portals: false - # Whether or not to use /sync to get presence, read receipts and typing notifications when using - # your own Matrix account as the Matrix puppet for your Telegram account. + # Whether or not to use /sync to get presence, read receipts and typing notifications + # when double puppeting is enabled sync_with_custom_puppets: true - # Shared secret for https://github.com/devture/matrix-synapse-shared-secret-auth + # Whether or not to update the m.direct account data event when double puppeting is enabled. + # Note that updating the m.direct event is not atomic (except with mautrix-asmux) + # and is therefore prone to race conditions. + sync_direct_chat_list: false + # Servers to always allow double puppeting from + double_puppet_server_map: + example.com: https://example.com + # Allow using double puppeting from any server with a valid client .well-known file. + double_puppet_allow_discovery: false + # Shared secrets for https://github.com/devture/matrix-synapse-shared-secret-auth # # If set, custom puppets will be enabled automatically for local users # instead of users having to find an access token and run `login-matrix` # manually. - login_shared_secret: + # If using this for other servers than the bridge's server, + # you must also set the URL in the double_puppet_server_map. + login_shared_secret_map: + example.com: foobar # Set to false to disable link previews in messages sent to Telegram. telegram_link_preview: true # Use inline images instead of a separate message for the caption. @@ -207,6 +230,27 @@ bridge: # Default to encryption, force-enable encryption in all portals the bridge creates # This will cause the bridge bot to be in private chats for the encryption to work properly. default: false + # Database for the encryption data. Currently only supports Postgres and an in-memory + # store that's persisted as a pickle. + # If set to `default`, will use the appservice postgres database + # or a pickle file if the appservice database is sqlite. + # + # Format examples: + # Pickle: pickle:///filename.pickle + # Postgres: postgres://username:password@hostname/dbname + database: default + # Options for automatic key sharing. + key_sharing: + # Enable key sharing? If enabled, key requests for rooms where users are in will be fulfilled. + # You must use a client that supports requesting keys from other users to use this feature. + allow: false + # Require the requesting device to have a valid cross-signing signature? + # This doesn't require that the bridge has verified the device, only that the user has verified it. + # Not yet implemented. + require_cross_signing: false + # Require devices to be verified by the bridge? + # Verification by the bridge is not yet implemented. + require_verification: tru # Whether or not to explicitly set the avatar and room name for private # chat portal rooms. This will be implicitly enabled if encryption.default is true. private_chat_portal_meta: false @@ -215,6 +259,40 @@ bridge: delivery_receipts: false # Whether or not delivery errors should be reported as messages in the Matrix room. delivery_error_reports: false + # Set this to true to tell the bridge to re-send m.bridge events to all rooms on the next run. + # This field will automatically be changed back to false after it, + # except if the config file is not writable. + resend_bridge_info: false + # Settings for backfilling messages from Telegram. + backfill: + # Whether or not the Telegram ghosts of logged in Matrix users should be + # invited to private chats when backfilling history from Telegram. This is + # usually needed to prevent rate limits and to allow timestamp massaging. + invite_own_puppet: true + # Maximum number of messages to backfill without using a takeout. + # The first time a takeout is used, the user has to manually approve it from a different + # device. If initial_limit or missed_limit are higher than this value, the bridge will ask + # the user to accept the takeout after logging in before syncing any chats. + takeout_limit: 100 + # Maximum number of messages to backfill initially. + # Set to 0 to disable backfilling when creating portal, or -1 to disable the limit. + # + # N.B. Initial backfill will only start after member sync. Make sure your + # max_initial_member_sync is set to a low enough value so it doesn't take forever. + initial_limit: 0 + # Maximum number of messages to backfill if messages were missed while the bridge was + # disconnected. Note that this only works for logged in users and only if the chat isn't + # older than sync_update_limit + # Set to 0 to disable backfilling missed messages. + missed_limit: 50 + # If using double puppeting, should notifications be disabled + # while the initial backfill is in progress? + disable_notifications: false + # Whether or not to enable backfilling in normal groups. + # Normal groups have numerous technical problems in Telegram, and backfilling normal groups + # will likely cause problems if there are multiple Matrix users in the group. + normal_groups: false + # Overrides for base power levels. initial_power_level_overrides: @@ -308,6 +386,8 @@ bridge: permissions: '*': relaybot '@hellcp:opensuse.org': admin + '@pontaoski:tchncs.de': admin + '@carl:kde.org': user relaybot: private_chat: # List of users to invite to the portal when someone starts a private chat with the bot. diff --git a/salt/profile/matrix/files/homeserver.yaml b/salt/profile/matrix/files/homeserver.yaml index a676b37..aa5d635 100644 --- a/salt/profile/matrix/files/homeserver.yaml +++ b/salt/profile/matrix/files/homeserver.yaml @@ -1343,7 +1343,7 @@ saml2_config: oidc_config: # enable OpenID Connect. Defaults to false. # - #enabled: true + enabled: true # use the OIDC discovery mechanism to discover endpoints. Defaults to true. # @@ -1351,15 +1351,15 @@ oidc_config: # the OIDC issuer. Used to validate tokens and discover the providers endpoints. Required. # - #issuer: "https://accounts.example.com/" + issuer: "https://www.opensuse.org/openidc/" # oauth2 client id to use. Required. # - #client_id: "provided-by-your-issuer" + client_id: "S-matrix.opensuse.org" # oauth2 client secret to use. Required. # - #client_secret: "provided-by-your-issuer" + client_secret: "{{ pillar['profile']['matrix']['oidc_secret'] }}" # auth method to use when exchanging the token. # Valid values are "client_secret_basic" (default), "client_secret_post" and "none". @@ -1368,7 +1368,7 @@ oidc_config: # list of scopes to ask. This should include the "openid" scope. Defaults to ["openid"]. # - #scopes: ["openid"] + scopes: ["openid", "profile"] # the oauth2 authorization endpoint. Required if provider discovery is disabled. # @@ -1423,7 +1423,7 @@ oidc_config: # Jinja2 template for the display name to set on first login. Optional. # - #display_name_template: "{{ user.given_name }} {{ user.last_name }}" + display_name_template: "{{ user.given_name }} {{ user.last_name }}" {% endraw %} @@ -1456,7 +1456,7 @@ password_config: # database. This is ignored if `enabled` is false, and is only useful # if you have other password_providers. # - localdb_enabled: false + #localdb_enabled: false # Uncomment and change to a secret random string for extra security. # DO NOT CHANGE THIS AFTER INITIAL SETUP! @@ -1570,17 +1570,17 @@ email: #template_dir: "res/templates" -password_providers: - - module: "ldap_auth_provider.LdapAuthProvider" - config: - enabled: true - uri: "ldaps://freeipa.infra.opensuse.org" - start_tls: true - base: "cn=users,cn=accounts,dc=infra,dc=opensuse,dc=org" - attributes: - uid: "uid" - mail: "mail" - name: "displayname" +#password_providers: +# - module: "ldap_auth_provider.LdapAuthProvider" +# config: +# enabled: true +# uri: "ldaps://freeipa.infra.opensuse.org" +# start_tls: true +# base: "cn=users,cn=accounts,dc=infra,dc=opensuse,dc=org" +# attributes: +# uid: "uid" +# mail: "mail" +# name: "displayname" # #bind_dn: # #bind_password: # #filter: "(objectClass=posixAccount)" diff --git a/salt/profile/matrix/files/matterbridge.toml b/salt/profile/matrix/files/matterbridge.toml new file mode 100644 index 0000000..eb316f6 --- /dev/null +++ b/salt/profile/matrix/files/matterbridge.toml @@ -0,0 +1,24 @@ +#WARNING: as this file contains credentials, be sure to set correct file permissions +{%- set services = salt['pillar.get']('profile:matrix:matterbridge:servers') %} +{%- for service, servers in services.items() %} +[{{service}}] + {%- for server, options in servers.items() %} + [{{service}}.{{server}}] + {%- for key, value in options.items() %} + {{key}}={{value}} + {%- endfor %} + + {%- endfor %} +{%- endfor %} + +{%- set gateways = salt['pillar.get']('profile:matrix:matterbridge:gateways') %} +{%- for gateway, accounts in gateways.items() %} +[[gateway]] +name="{{gateway}}" +enable=true +inout = [ + {%- for account, channel in servers.items() %} + { account="{{account}}", channel="{{channel}}" }, + {%- endfor %} +] +{%- endfor %} diff --git a/salt/profile/matrix/matterbridge.sls b/salt/profile/matrix/matterbridge.sls new file mode 100644 index 0000000..258be18 --- /dev/null +++ b/salt/profile/matrix/matterbridge.sls @@ -0,0 +1,25 @@ +matterbridge_dependencies: + pkg.installed: + - pkgs: + - matterbridge + +matterbridge_conf: + file.managed: + - name: /etc/matterbridge/matterbridge.toml + - source: salt://profile/matrix/files/matterbridge.toml + - template: jinja + - group: matterbridge + - require_in: + - service: matterbridge_service + +matterbridge_service: + service.running: + - name: matterbridge + - enable: True + +matterbridge_restart: + module.wait: + - name: service.restart + - m_name: matterbridge + - require: + - service: matterbridge_service diff --git a/salt/profile/matrix/synapse.sls b/salt/profile/matrix/synapse.sls index 85297c1..47ce17a 100644 --- a/salt/profile/matrix/synapse.sls +++ b/salt/profile/matrix/synapse.sls @@ -2,7 +2,6 @@ synapse_dependencies: pkg.installed: - pkgs: - matrix-synapse - - python3-matrix-synapse-ldap3 synapse: group.present: diff --git a/salt/role/matrix.sls b/salt/role/matrix.sls index 3dd5dea..88e9b72 100644 --- a/salt/role/matrix.sls +++ b/salt/role/matrix.sls @@ -6,3 +6,4 @@ include: - profile.matrix.telegram - profile.matrix.dimension - profile.matrix.config + - profile.matrix.matterbridge