a bot for ops in matrix. This bot catches webhooks and forwards them as messages to matrix rooms.
Find a file
2022-12-01 16:38:26 +00:00
.vscode Add gitlab webhook support 2022-12-01 13:47:27 +00:00
ops_bot Refactor codebase to by DRY 2022-12-01 16:31:04 +00:00
templates/gitlab Add gitlab webhook support 2022-12-01 13:47:27 +00:00
tests Refactor codebase to by DRY 2022-12-01 16:31:04 +00:00
.dockerignore Add Dockerfile 2022-07-22 12:53:34 +00:00
.flake8 First pass at implemenation with pagerduty webhooks 2022-07-22 12:23:04 +00:00
.gitignore Add gitlab webhook support 2022-12-01 13:47:27 +00:00
.gitlab-ci.yml ci: Remove used test command 2022-12-01 16:33:37 +00:00
.pre-commit-config.yaml Add Dockerfile 2022-07-22 12:53:34 +00:00
.python-version First pass at implemenation with pagerduty webhooks 2022-07-22 12:23:04 +00:00
config.json.sample Refactor codebase to by DRY 2022-12-01 16:31:04 +00:00
docker-compose.yml Add docker-compose docs 2022-07-22 14:12:14 +00:00
Dockerfile Freeze requirements 2022-11-30 15:44:56 +00:00
LICENSE.md initial commit 2022-07-22 08:42:44 +00:00
Makefile Freeze requirements 2022-11-30 15:44:56 +00:00
poetry.lock Refactor codebase to by DRY 2022-12-01 16:31:04 +00:00
pyproject.toml Refactor codebase to by DRY 2022-12-01 16:31:04 +00:00
pytest.ini Add gitlab webhook support 2022-12-01 13:47:27 +00:00
README.md Refactor codebase to by DRY 2022-12-01 16:31:04 +00:00
requirements.frozen.txt Freeze requirements 2022-11-30 15:44:56 +00:00
requirements.txt Add Dockerfile 2022-07-22 12:53:34 +00:00

matrix-ops-bot

a bot for ops in matrix

This bot catches webhooks and forwards them as messages to matrix rooms.

Current supported webhooks:

  • PagerDuty
  • AWS SNS
  • Gitlab

Usage

See config.json.sample for a sample config file.

Once you have a basic config (leave the routing_keys an empty list), you can easily add new webhooks with

$ poetry run config add-hook --name my-hook-name --hook-type gitlab --room-id '!abcd1234:matrix.org'

Hook added successfully

Your webhook URL is:
        /hook/vLyPN5mqXnIGE-4o9IKJ3vsOMU1xYEKBW8r4WMvP
The secret token is:
        6neuYcncR2zaeQiEoawXdu6a4olsfH447tFetfvv

Note: Register your bot user manually. This program does not register a new user. You must also accept invitations to join the room automatically.

docker build -t registry.gitlab.com/guardianproject-ops/matrix-ops-bot .

docker run --rm  \
--name ops-bot \
--volume /path/to/store:/data \
--env MATRIX_HOMESERVER=https://matrix.org \
--env MATRIX_USER_ID=@YOURBOT:matrix.org \
--env MATRIX_PASSWORD="changeme" \
--env MATRIX_DEVICE_NAME=my-bot-server \
--env BOT_ROUTING_KEYS="{\"room1\": \"!XXXX:matrix.org\", \"room2\": \"!YYYYY:matrix.org\"}" \
--env BOT_BEARER_TOKEN="changeme" \
registry.gitlab.com/guardianproject-ops/matrix-ops-bot

or docker-compose:

version: "3.8"
services:
  bot:
    image: registry.gitlab.com/guardianproject-ops/matrix-ops-bot:main
    environment:
      MATRIX_HOMESERVER: "https://matrix.org"
      MATRIX_USER_ID: "@YOURBOT:matrix.org"
      MATRIX_PASSWORD: "changeme"
      MATRIX_DEVICE_NAME: "my-bot-server"
      BOT_BEARER_TOKEN: "changeme"
      BOT_ROUTING_KEYS: >
        {"room1": "!XXXX:matrix.org", "room2": "!YYYYY:matrix.org"}
    user: "1000"
    ports: 
      - "0.0.0.0:1111:1111"
    volumes:
      - /home/admin/bot/data:/data:rw
    logging:
      driver: "json-file"
      options:
        max-size: "100m"
        max-file: "3"

Dev Setup

.env:

MATRIX_HOMESERVER=https://matrix.org
MATRIX_USER_ID=@YOURBOT:matrix.org
MATRIX_PASSWORD="changeme"
MATRIX_DEVICE_NAME=my-bot-server
MATRIX_VERIFY_SSL=True
MATRIX_STORE_PATH=/abs/path/to/persistent-store
BOT_ROUTING_KEYS="{\"room1\": \"!XXXX:matrix.org\", \"room2\": \"!YYYYY:matrix.org\"}"
BOT_BEARER_TOKEN="changeme"
source .env
poetry install
poetry run start

License

matrix-ops-bot
Copyright (C) 2022 Abel Luck <abel@guardianproject.info>

This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as
published by the Free Software Foundation, either version 3 of the
License, or (at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU Affero General Public License for more details.

You should have received a copy of the GNU Affero General Public License
along with this program.  If not, see <https://www.gnu.org/licenses/>.

This project uses pieces of maubot/gitlab, which is also AGPL. These files have been noted with a comment header.