From 3b66c927f5db4182841dadc92ffa082c9b5b3ece Mon Sep 17 00:00:00 2001 From: Stasiek Michalski Date: Apr 11 2020 10:14:28 +0000 Subject: Setup telegram appservice --- diff --git a/pillar/role/matrix.sls b/pillar/role/matrix.sls index 5416d3f..478500c 100644 --- a/pillar/role/matrix.sls +++ b/pillar/role/matrix.sls @@ -22,6 +22,9 @@ profile: repo: https://github.com/matrix-org/matrix-appservice-irc port: 9003 appservice_id: 1deb544b666b3aba1d9d49d3d4785eeb2fb2befa24e0743c91e6290866003c33 + telegram: + appservice_id: oepzkscngbyqvopzn773ns7whfxyfslgjhy7mumy7syurqp3f4kvb4sgufz9nfsw + api_id: sudoers: included_files: diff --git a/pillar/secrets/role/matrix.sls b/pillar/secrets/role/matrix.sls index 5da5d1b..8d1cbd8 100644 --- a/pillar/secrets/role/matrix.sls +++ b/pillar/secrets/role/matrix.sls @@ -1292,6 +1292,192 @@ profile: DleghUs/mZA7pJPn5LI5lKz+JH/lJEmOx2kaK+2c0+1Hr4KTtQ== =WgeA -----END PGP MESSAGE----- + telegram: + appservice_token: | + -----BEGIN PGP MESSAGE----- + + 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 + =ll66 + -----END PGP MESSAGE----- + homeserver_token: | + -----BEGIN PGP MESSAGE----- + + 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 + =100I + -----END PGP MESSAGE----- + api_hash: | + + bot_token: | + + postgres: users: diff --git a/salt/profile/matrix/appservice.sls b/salt/profile/matrix/appservice.sls index 596ba38..9d2bca6 100644 --- a/salt/profile/matrix/appservice.sls +++ b/salt/profile/matrix/appservice.sls @@ -1,6 +1,6 @@ -{% set roles = salt['grains.get']('roles', []) %} +{% set appservices = salt['pillar.get']('profile:matrix:appservices') %} -discord_pgks: +appservice_pgks: pkg.installed: - pkgs: - git @@ -11,60 +11,92 @@ discord_pgks: - gcc - gcc-c++ -/var/lib/matrix-synapse/discord: +{% for dir, data in appservices.items() %} +/var/lib/matrix-synapse/{{ dir }}: file.directory: - user: synapse -https://github.com/Half-Shot/matrix-appservice-discord.git: +{{ data.repo }}: git.latest: - - branch: master - - target: /var/lib/matrix-synapse/discord/ - - rev: master + - branch: {{ data.get('branch', 'master') }} + - target: /var/lib/matrix-synapse/{{ dir }} + - rev: {{ data.get('branch', 'master') }} - user: synapse -discord_conf_file: + +{{ dir }}_conf_file: file.managed: - - name: /var/lib/matrix-synapse/discord/config.yaml - - source: salt://profile/matrix/files/config-discord.yaml + - name: /var/lib/matrix-synapse/{{ dir }}/config.yaml + - source: salt://profile/matrix/files/config-{{ dir }}.yaml - template: jinja - user: synapse - require: - - file: /var/lib/matrix-synapse/discord + - file: /var/lib/matrix-synapse/{{ dir }} - require_in: - - service: discord_service + - service: {{ dir }}_service - watch_in: - - module: discord_restart + - module: {{ dir }}_restart -discord_appservice_file: +{{ dir }}_appservice_file: file.managed: - - name: /var/lib/matrix-synapse/discord/discord-registration.yaml - - source: salt://profile/matrix/files/appservice-discord.yaml + - name: /var/lib/matrix-synapse/{{ dir }}/{{ dir }}-registration.yaml + - source: salt://profile/matrix/files/appservice-{{ dir }}.yaml - user: synapse - template: jinja - require: - - file: /var/lib/matrix-synapse/discord + - file: /var/lib/matrix-synapse/{{ dir }} + - watch_in: + - module: {{ dir }}_restart + +synapse_appservice_{{ dir }}_file: + file.managed: + - name: /etc/matrix-synapse/appservices/appservice-{{ dir }}.yaml + - source: salt://profile/matrix/files/appservice-{{ dir }}.yaml + - template: jinja + - require: + - file: /var/lib/matrix-synapse/{{ dir }} - watch_in: - - module: discord_restart + - module: {{ dir }}_restart -discord_boostrap: +{{ dir }}_boostrap: cmd.run: - name: npm install - - cwd: /var/lib/matrix-synapse/discord + - cwd: /var/lib/matrix-synapse/{{ dir }} - runas: synapse - env: - NODE_VERSION: 10 -discord_build: +{{ dir }}_build: cmd.run: - name: npm run build - - cwd: /var/lib/matrix-synapse/discord + - cwd: /var/lib/matrix-synapse/{{ dir }} - runas: synapse - env: - NODE_VERSION: 10 -discord_systemd_file: +{{ dir }}_systemd_file: file.managed: - - name: /etc/systemd/system/discord.service - - source: salt://profile/matrix/files/discord.service + - name: /etc/systemd/system/{{ dir }}.service + - template: jinja + - context: + dir: {{ dir }} + port: {{ data.get('port') }} + - source: salt://profile/matrix/files/appservice.service - require_in: - - service: discord_service + - service: {{ dir }}_service + +{{ dir }}_service: + service.running: + - name: {{ dir }} + - enable: True + - require: + - service: synapse_service + +{{ dir }}_restart: + module.wait: + - name: service.restart + - m_name: {{ dir }} + - require: + - service: synapse_service + - service: {{ dir }}_service +{% endfor %} diff --git a/salt/profile/matrix/files/appservice-telegram.yaml b/salt/profile/matrix/files/appservice-telegram.yaml new file mode 100644 index 0000000..bf0aa69 --- /dev/null +++ b/salt/profile/matrix/files/appservice-telegram.yaml @@ -0,0 +1,14 @@ +id: {{ pillar['profile']['matrix']['telegram']['appservice_id'] }} +as_token: {{ pillar['profile']['matrix']['telegram']['appservice_token'] }} +hs_token: {{ pillar['profile']['matrix']['telegram']['homeserver_token'] }} +namespaces: + users: + - exclusive: true + regex: '@telegram_.+:opensuse.org' + group_id: +telegram:opensuse.org + aliases: + - exclusive: true + regex: '#telegram_.+:opensuse.org' +url: http://localhost:29317 +sender_localpart: telegrambot +rate_limited: false diff --git a/salt/profile/matrix/files/config-telegram.yaml b/salt/profile/matrix/files/config-telegram.yaml new file mode 100644 index 0000000..354b1f5 --- /dev/null +++ b/salt/profile/matrix/files/config-telegram.yaml @@ -0,0 +1,418 @@ +# Homeserver details +homeserver: + # The address that this appservice can use to connect to the homeserver. + address: https://matrix.opensuse.org + # The domain of the homeserver (for MXIDs, etc). + domain: opensuse.org + # Whether or not to verify the SSL certificate of the homeserver. + # Only applies if address starts with https:// + verify_ssl: true + +# Application service host/registration related details +# Changing these values requires regeneration of the registration. +appservice: + # The address that the homeserver can use to connect to this appservice. + address: http://localhost:29317 + + # The hostname and port where this appservice should listen. + hostname: 0.0.0.0 + port: 29317 + # The maximum body size of appservice API requests (from the homeserver) in mebibytes + # Usually 1 is enough, but on high-traffic bridges you might need to increase this to avoid 413s + max_body_size: 1 + + # The full URI to the database. SQLite and Postgres are fully supported. + # Other DBMSes supported by SQLAlchemy may or may not work. + # Format examples: + # 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 + + # 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 + # the HS database. + public: + # Whether or not the public-facing endpoints should be enabled. + enabled: false + # The prefix to use in the public-facing endpoints. + prefix: /public + # The base URL where the public-facing endpoints are available. The prefix is not added + # implicitly. + 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/). + provisioning: + # Whether or not the provisioning API should be enabled. + enabled: true + # The prefix to use in the provisioning API endpoints. + prefix: /_matrix/provision/v1 + # The shared secret to authorize users of the API. + # Set to "generate" to generate and save a new token. + shared_secret: generate + + # The unique ID of this appservice. + id: {{ pillar['profile']['matrix']['telegram']['appservice_id'] }} + # Username of the appservice bot. + bot_username: telegrambot + # Display name and avatar for bot. Set to "remove" to remove display name/avatar, leave empty + # to leave display name/avatar as-is. + bot_displayname: Telegram + bot_avatar: mxc://maunium.net/tJCRmUyJDsgRNgqhOgoiHWbX + + # Community ID for bridged users (changes registration file) and rooms. + # Must be created manually. + # + # Example: "+telegram:example.com". Set to false to disable. + community_id: "+telegram:opensuse.org" + + # 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'] }}" + +# Prometheus telemetry config. Requires prometheus-client to be installed. +# metrics: + # enabled: false + # listen_port: 8000 + +# Manhole config. +# manhole: + # Whether or not opening the manhole is allowed. + # enabled: false + # The path for the unix socket. + # path: /var/tmp/mautrix-telegram.manhole + # The list of UIDs who can be added to the whitelist. + # If empty, any UIDs can be specified in the open-manhole command. + # whitelist: + # - 0 + +# Bridge config +bridge: + # Localpart template of MXIDs for Telegram users. + # {userid} is replaced with the user ID of the Telegram user. + username_template: "telegram_{userid}" + # Localpart template of room aliases for Telegram portal rooms. + # {groupname} is replaced with the name part of the public channel/group invite link ( https://t.me/{} ) + alias_template: "telegram_{groupname}" + # Displayname template for Telegram users. + # {displayname} is replaced with the display name of the Telegram user. + displayname_template: "{displayname} [Telegram]" + + # Set the preferred order of user identifiers which to use in the Matrix puppet display name. + # In the (hopefully unlikely) scenario that none of the given keys are found, the numeric user + # ID is used. + # + # If the bridge is working properly, a phone number or an username should always be known, but + # the other one can very well be empty. + # + # Valid keys: + # "full name" (First and/or last name) + # "full name reversed" (Last and/or first name) + # "first name" + # "last name" + # "username" + # "phone number" + displayname_preference: + - full name + - username + - phone number + # Maximum length of displayname + displayname_max_length: 100 + + # 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) + 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 + # list regardless of this setting. + sync_channel_members: true + # Whether or not to skip deleted members when syncing members. + skip_deleted_members: true + # Whether or not to automatically synchronize contacts and chats of Matrix users logged into + # their Telegram account at startup. + startup_sync: true + # Number of most recently active dialogs to check when syncing chats. + # Set to 0 to remove limit. + sync_dialog_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. + # A large number of simultaneous redactions could put strain on your homeserver. + max_telegram_delete: 10 + # 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_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 + # reliably identify what is a plaintext highlight. + 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. + sync_with_custom_puppets: true + # Shared secret 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: null + # 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. + # N.B. Inline images are not supported on all clients (e.g. Riot iOS). + inline_images: false + # Maximum size of image in megabytes before sending to Telegram as a document. + image_as_file_size: 10 + # Maximum size of Telegram documents in megabytes to bridge. + max_document_size: 100 + # Enable experimental parallel file transfer, which makes uploads/downloads much faster by + # streaming from/to Matrix and using many connections for Telegram. + # Note that generating HQ thumbnails for videos is not possible with streamed transfers. + parallel_file_transfer: false + # Whether or not created rooms should have federation enabled. + # If false, created portal rooms will never be federated. + federate_rooms: true + # Settings for converting animated stickers. + animated_sticker: + # Format to which animated stickers should be converted. + # disable - No conversion, send as-is (gzipped lottie) + # png - converts to non-animated png (fastest), + # gif - converts to animated gif, but loses transparency + # webm - converts to webm video, requires ffmpeg executable with vp9 codec and webm container support + target: webm + # Arguments for converter. All converters take width and height. + # GIF converter takes background as a hex color. + args: + width: 256 + height: 256 + fps: 30 + + # Overrides for base power levels. + initial_power_level_overrides: + user: {} + group: {} + + # Whether to bridge Telegram bot messages as m.notices or m.texts. + bot_messages_as_notices: true + bridge_notices: + # Whether or not Matrix bot messages (type m.notice) should be bridged. + default: false + # List of user IDs for whom the previous flag is flipped. + # e.g. if bridge_notices.default is false, notices from other users will not be bridged, but + # notices from users listed here will be bridged. + # exceptions: + # - "@importantbot:example.com" + + # Some config options related to Telegram message deduplication. + # The default values are usually fine, but some debug messages/warnings might recommend you + # change these. + deduplication: + # Whether or not to check the database if the message about to be sent is a duplicate. + pre_db_check: false + # The number of latest events to keep when checking for duplicates. + # You might need to increase this on high-traffic bridge instances. + cache_queue_length: 20 + + # The formats to use when sending messages to Telegram via the relay bot. + # Text msgtypes (m.text, m.notice and m.emote) support HTML, media msgtypes don't. + # + # Available variables: + # $sender_displayname - The display name of the sender (e.g. Example User) + # $sender_username - The username (Matrix ID localpart) of the sender (e.g. exampleuser) + # $sender_mxid - The Matrix ID of the sender (e.g. @exampleuser:example.com) + # $message - The message content + message_formats: + m.text: "$sender_displayname: $message" + m.notice: "$sender_displayname: $message" + m.emote: "* $sender_displayname $message" + m.file: "$sender_displayname sent a file: $message" + m.image: "$sender_displayname sent an image: $message" + m.audio: "$sender_displayname sent an audio file: $message" + m.video: "$sender_displayname sent a video: $message" + m.location: "$sender_displayname sent a location: $message" + # Telegram doesn't have built-in emotes, this field specifies how m.emote's from authenticated + # users are sent to telegram. All fields in message_formats are supported. Additionally, the + # Telegram user info is available in the following variables: + # $displayname - Telegram displayname + # $username - Telegram username (may not exist) + # $mention - Telegram @username or displayname mention (depending on which exists) + emote_format: "* $mention $formatted_body" + + # The formats to use when sending state events to Telegram via the relay bot. + # + # Variables from `message_formats` that have the `sender_` prefix are available without the prefix. + # In name_change events, `$prev_displayname` is the previous displayname. + # + # Set format to an empty string to disable the messages for that event. + state_event_formats: + join: "" + leave: "" + name_change: "" + + # Filter rooms that can/can't be bridged. Can also be managed using the `filter` and + # `filter-mode` management commands. + # + # Filters do not affect direct chats. + # An empty blacklist will essentially disable the filter. + filter: + # Filter mode to use. Either "blacklist" or "whitelist". + # If the mode is "blacklist", the listed chats will never be bridged. + # If the mode is "whitelist", only the listed chats can be bridged. + mode: blacklist + # The list of group/channel IDs to filter. + list: [] + + # The prefix for commands. Only required in non-management rooms. + command_prefix: "!tg" + + # Permissions for using the bridge. + # Permitted values: + # relaybot - Only use the bridge via the relaybot, no access to commands. + # user - Relaybot level + access to commands to create bridges. + # puppeting - User level + logging in with a Telegram account. + # full - Full access to use the bridge, i.e. previous levels + Matrix login. + # admin - Full access to use the bridge and some extra administration commands. + # Permitted keys: + # * - All Matrix users + # domain - All users on that homeserver + # mxid - Specific user + permissions: + "*": "relaybot" + "public.example.com": "user" + "example.com": "full" + "@admin:example.com": "admin" + + # Options related to the message relay Telegram bot. + relaybot: + private_chat: + # List of users to invite to the portal when someone starts a private chat with the bot. + # If empty, private chats with the bot won't create a portal. + invite: [] + # Whether or not to bridge state change messages in relaybot private chats. + state_changes: true + # When private_chat_invite is empty, this message is sent to users /starting the + # relaybot. Telegram's "markdown" is supported. + message: This is a Matrix bridge relaybot and does not support direct chats + # List of users to invite to all group chat portals created by the bridge. + group_chat_invite: [] + # Whether or not the relaybot should not bridge events in unbridged group chats. + # If false, portals will be created when the relaybot receives messages, just like normal + # users. This behavior is usually not desirable, as it interferes with manually bridging + # the chat to another room. + ignore_unbridged_group_chat: true + # Whether or not to allow creating portals from Telegram. + authless_portals: true + # Whether or not to allow Telegram group admins to use the bot commands. + whitelist_group_admins: true + # Whether or not to ignore incoming events sent by the relay bot. + ignore_own_incoming_events: true + # List of usernames/user IDs who are also allowed to use the bot commands. + # whitelist: + # - myusername + # - 12345678 + +# Telegram config +telegram: + # Get your own API keys at https://my.telegram.org/apps + api_id: {{ pillar['profile']['matrix']['telegram']['api_id'] }} + api_hash: {{ pillar['profile']['matrix']['telegram']['api_hash'] }} + # (Optional) Create your own bot at https://t.me/BotFather + bot_token: {{ pillar['profile']['matrix']['telegram']['bot_token'] }} + + # Telethon connection options. + connection: + # The timeout in seconds to be used when connecting. + timeout: 120 + # How many times the reconnection should retry, either on the initial connection or when + # Telegram disconnects us. May be set to a negative or null value for infinite retries, but + # this is not recommended, since the program can get stuck in an infinite loop. + retries: 5 + # The delay in seconds to sleep between automatic reconnections. + retry_delay: 1 + # The threshold below which the library should automatically sleep on flood wait errors + # (inclusive). For instance, if a FloodWaitError for 17s occurs and flood_sleep_threshold + # is 20s, the library will sleep automatically. If the error was for 21s, it would raise + # the error instead. Values larger than a day (86400) will be changed to a day. + flood_sleep_threshold: 60 + # How many times a request should be retried. Request are retried when Telegram is having + # internal issues, when there is a FloodWaitError less than flood_sleep_threshold, or when + # there's a migrate error. May take a negative or null value for infinite retries, but this + # is not recommended, since some requests can always trigger a call fail (such as searching + # for messages). + request_retries: 5 + + # Device info sent to Telegram. + device_info: + # "auto" = OS name+version. + device_model: auto + # "auto" = Telethon version. + system_version: auto + # "auto" = mautrix-telegram version. + app_version: auto + lang_code: en + system_lang_code: en + + # Custom server to connect to. + server: + # Set to true to use these server settings. If false, will automatically + # use production server assigned by Telegram. Set to false in production. + enabled: false + # The DC ID to connect to. + dc: 2 + # The IP to connect to. + ip: 149.154.167.40 + # The port to connect to. 443 may not work, 80 is better and both are equally secure. + port: 80 + + # Telethon proxy configuration. + # You must install PySocks from pip for proxies to work. + proxy: + # Allowed types: disabled, socks4, socks5, http, mtproxy + type: disabled + # Proxy IP address and port. + address: 127.0.0.1 + port: 1080 + # Whether or not to perform DNS resolving remotely. Only for socks/http proxies. + rdns: true + # Proxy authentication (optional). Put MTProxy secret in password field. + username: "" + password: "" + +# Python logging configuration. +# +# See section 16.7.2 of the Python documentation for more info: +# https://docs.python.org/3.6/library/logging.config.html#configuration-dictionary-schema +logging: + version: 1 + formatters: + colored: + (): mautrix_telegram.util.ColorFormatter + format: "[%(asctime)s] [%(levelname)s@%(name)s] %(message)s" + normal: + format: "[%(asctime)s] [%(levelname)s@%(name)s] %(message)s" + handlers: + file: + class: logging.handlers.RotatingFileHandler + formatter: normal + filename: ./mautrix-telegram.log + maxBytes: 10485760 + backupCount: 10 + console: + class: logging.StreamHandler + formatter: colored + loggers: + mau: + level: DEBUG + telethon: + level: INFO + aiohttp: + level: INFO + root: + level: DEBUG + handlers: [file, console] diff --git a/salt/profile/matrix/files/homeserver.yaml b/salt/profile/matrix/files/homeserver.yaml index 2667401..34449e9 100644 --- a/salt/profile/matrix/files/homeserver.yaml +++ b/salt/profile/matrix/files/homeserver.yaml @@ -1105,10 +1105,15 @@ report_stats: true # - "m.room.name" +{% set appservices = salt['pillar.get']('profile:matrix:appservices') %} + # A list of application service config files to use # app_service_config_files: - - /etc/matrix-synapse/appservices/appservice-discord.yaml + {% for dir, data in appservices.items() %} + - /etc/matrix-synapse/appservices/appservice-{{ dir }}.yaml + {% endfor %} + - /etc/matrix-synapse/appservices/appservice-telegram.yaml # Uncomment to enable tracking of application service IP addresses. Implicitly # enables MAU tracking for application service users. diff --git a/salt/profile/matrix/files/telegram.service b/salt/profile/matrix/files/telegram.service new file mode 100644 index 0000000..b58eb62 --- /dev/null +++ b/salt/profile/matrix/files/telegram.service @@ -0,0 +1,15 @@ +[Unit] +Description=Matrix Appservice Telegram + +[Service] +Type=simple +Restart=on-failure +RestartSec=3 + +User=synapse +Group=synapse +WorkingDirectory=/var/lib/matrix-synapse/telegram/ +ExecStart=python3 -m mautrix_telegram -c config.yaml -f telegram-registration.yaml + +[Install] +WantedBy=multi-user.target diff --git a/salt/profile/matrix/telegram.sls b/salt/profile/matrix/telegram.sls new file mode 100644 index 0000000..1a076a0 --- /dev/null +++ b/salt/profile/matrix/telegram.sls @@ -0,0 +1,66 @@ +{% set roles = salt['grains.get']('roles', []) %} + +appservice_pgks: + pkg.installed: + - pkgs: + - python3-mautrix-telegram + +/var/lib/matrix-synapse/telegram: + file.directory: + - user: synapse + +telegram_conf_file: + file.managed: + - name: /var/lib/matrix-synapse/telegram/config.yaml + - source: salt://profile/matrix/files/config-telegram.yaml + - template: jinja + - user: synapse + - require: + - file: /var/lib/matrix-synapse/telegram + - require_in: + - service: telegram_service + - watch_in: + - module: telegram_restart + +telegram_appservice_file: + file.managed: + - name: /var/lib/matrix-synapse/telegram/telegram-registration.yaml + - source: salt://profile/matrix/files/appservice-telegram.yaml + - user: synapse + - template: jinja + - require: + - file: /var/lib/matrix-synapse/telegram + - watch_in: + - module: telegram_restart + +synapse_appservice_telegram_file: + file.managed: + - name: /etc/matrix-synapse/appservices/appservice-telegram.yaml + - source: salt://profile/matrix/files/appservice-telegram.yaml + - template: jinja + - require: + - file: /var/lib/matrix-synapse/telegram + - watch_in: + - module: telegram_restart + +telegram_systemd_file: + file.managed: + - name: /etc/systemd/system/telegram.service + - source: salt://profile/matrix/files/telegram.service + - require_in: + - service: telegram_service + +telegram_service: + service.running: + - name: telegram + - enable: True + - require: + - service: synapse_service + +telegram_restart: + module.wait: + - name: service.restart + - m_name: telegram + - require: + - service: synapse_service + - service: telegram_service diff --git a/salt/role/matrix.sls b/salt/role/matrix.sls index f13b35e..33bc29d 100644 --- a/salt/role/matrix.sls +++ b/salt/role/matrix.sls @@ -1,5 +1,6 @@ include: - profile.matrix.synapse - profile.matrix.init - - profile.matrix.discord + - profile.matrix.appservice + - profile.matrix.telegram - profile.matrix.config