commit b205b0789fc88382bcc48b44a1b8c0c0404e2ace Author: Yannik Schmidt Date: Sat Nov 28 16:15:05 2020 +0100 Initial Proof of Concept diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..68a49da --- /dev/null +++ b/LICENSE @@ -0,0 +1,24 @@ +This is free and unencumbered software released into the public domain. + +Anyone is free to copy, modify, publish, use, compile, sell, or +distribute this software, either in source code form or as a compiled +binary, for any purpose, commercial or non-commercial, and by any +means. + +In jurisdictions that recognize copyright laws, the author or authors +of this software dedicate any and all copyright interest in the +software to the public domain. We make this dedication for the benefit +of the public at large and to the detriment of our heirs and +successors. We intend this dedication to be an overt act of +relinquishment in perpetuity of all present and future rights to this +software under copyright law. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR +OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +OTHER DEALINGS IN THE SOFTWARE. + +For more information, please refer to diff --git a/README.md b/README.md new file mode 100644 index 0000000..5f89366 --- /dev/null +++ b/README.md @@ -0,0 +1,3 @@ +# Journald to Telegram Proof of Concept + +You need to setup my Telegram-HTTP-Gateway and a Telegram Bot first, as described in the README herehttps://github.com/FAUSheppy/telegram-http-gateway. diff --git a/journald-to-telegram-poc.py b/journald-to-telegram-poc.py new file mode 100644 index 0000000..ab776f1 --- /dev/null +++ b/journald-to-telegram-poc.py @@ -0,0 +1,40 @@ +#!/usr/bin/python3 + +from systemd import journal +import datetime +import time +import sys +import select +import requests + +j = journal.Reader() +j.log_level(journal.LOG_INFO) +j.this_boot() +j.this_machine() + +j.add_match(_SYSTEMD_UNIT="sheppy-insurgency-01.service") +j.add_match(_SYSTEMD_UNIT="sheppy-insurgency-02.service") + +j.seek_tail() +j.get_previous() + +p = select.poll() +journal_fd = j.fileno() +poll_event_mask = j.get_events() +p.register(journal_fd, poll_event_mask) + +while True: + if p.poll(1000): + if j.process() == journal.APPEND: + for entry in j: + msg = entry["MESSAGE"] + token1 = '" say_team "' + token2 = '" say "' + if token1 in msg or token2 in msg: + stuff, nameAndContent = msg.split(': "') + server = entry['_SYSTEMD_UNIT'].split("sheppy-")[1].split(".service")[0] + nameAndContent = nameAndContent.replace(token1, "\n") + nameAndContent = nameAndContent.replace(token2, "\n") + nameAndContent = nameAndContent.strip("\n").strip('"') + requests.post("http://localhost:5012/send-all", + json={ "message" : server + ": " + nameAndContent})