infra/roles/common-misc/templates/matrixmsg.py.j2

72 lines
1.5 KiB
Django/Jinja

#!/usr/bin/env python3
import argparse
import sys
from socket import gethostname
import requests
TOKEN = "{{ matrix_webhook_token }}"
{% if matrix_webhook_url is defined %}
URL = "{{ matrix_webhook_url }}"
{% else %}
URL = "https://{{ matrix_url }}/_webhook/incoming"
{% endif %}
def markdown_fmt(lines):
return "\r\n".join(
[f" {a}" for a in lines]
)
def send(text, room=None, add_prefix=True):
if add_prefix:
prefix = gethostname()
else:
prefix = None
params = {'room': room}
d = {
'prefix': prefix,
'text': text,
'token': TOKEN
}
r = requests.post(URL, json=d, params=params)
return r.status_code
def main():
parser = argparse.ArgumentParser(formatter_class=argparse.ArgumentDefaultsHelpFormatter)
parser.add_argument(
"-m", "--msg",
type=str,
required=False,
help="otherwise defaults to reading from stdin"
)
parser.add_argument(
"-r", "--room",
type=str,
help="override default room (#room:{{ domain }})"
)
args = parser.parse_args()
if args.msg is None:
lines = sys.stdin.readlines()
msg = markdown_fmt(lines)
else:
msg = args.msg
status_code = send(msg, args.room)
if status_code == 502:
print("502 bad gateway")
return sys.exit(2)
if status_code in [200, 201]:
return sys.exit(0)
else:
return sys.exit(1)
if __name__ == "__main__":
main()