RSS - Forwarder
Vorwort
Während der Pandemie kam es desöfteren vor, dass meine Berufsschule Informationen auf ihrer Webseite veröffentlichte, diese jedoch zeitweise nicht erreichbar war. Gründe hierfür wurden als Störungen, Angriffe auf das System oder DDoS angegeben. Das ganze ist als Schüler natürlich weniger hilfreich, wenn vorausgesetzt wird, dass man erfolgreich am Unterrichtsgeschehen teilnimmt und nach wie vor Leistungen erbringt, welche auch bewertet werden sollen.
Daher kam uns der Gedanke einer Art RSS Reader, welches den RSS Feed abgreift und ihn via Webhook an Discord postet, wo der Artikel selbst angezeigt wird, auch wenn der eigentliche Host dahinter - wieder einmal - down ist.
Vielen Dank hierbei an @morphy2k für die Realisierung des Projekts! :)
Installation
Bevor das Binary bezogen werden kann, müssen die Abhängigkeiten erfüllt sein, hier wird eigentlich nur jq benötigt, welches mit dem folgenden Command nachinstalliert werden kann.
apt install jq
Anschließend kann das aktuelle Binary direkt aus Github heruntergeladen werden:
# Binary beziehen
curl --proto '=https' --tlsv1.3 -LO "$(curl --proto '=https' --tlsv1.3 -sSf https://api.github.com/repos/morphy2k/rss-forwarder/releases/latest | jq -r ".assets[] | select(.name == \"rss-forwarder-linux-x86_64\") | .browser_download_url")"
# Ausfuehrbar machen
chmod +x rss-forwarder-linux-x86_64
# Ins richtige Verzeichnis verschieben
sudo mv rss-forwarder-linux-x86_64 /usr/local/bin/rss-forwarder
Jetzt muss die Konfigurationsdatei angelegt werden, welche RSS-Feeds vom Forwarder geprüft werden sollen
mkdir -p /etc/rss-forwarder
nano /etc/rss-forwarder/config.toml
Der Inhalt dieser Datei könnte beispielsweise so aussehen:
[feeds.industrieschule-de]
url = "https://www.industrieschule.de/index.php/feed/"
interval = "15m"
sink.type = "discord"
sink.url = "<Discord Webhook>"
Einrichtung als Service
Damit der Forwarder auch nach Neustarts wieder startet erfolgt noch die Einrichtung als Service. Sofern bisher alle Schritte wie beschrieben ausgeführt wurden, kann die untenstehende Konfiguration übernommen werden:
nano /etc/systemd/system/rss-forwarder.service
[Unit]
Description=RSS Forwarder
After=syslog.target
After=network.target
[Service]
Type=simple
ExecStart=/usr/local/bin/rss-forwarder-x86_64 /etc/rss-forwarder/config.toml
Restart=always
Environment=RUST_LOG=info
[Install]
WantedBy=multi-user.target
Nach Abschluss wird der Daemon noch einmal neu geladen um die neue Konfiguartionsdatei zu finden, im Anschluss daran kann der Dienst dann gestartet werden:
systemctl daemon-reload
systemctl start rss-forwarder
systemctl status rss-forwarder
systemctl enable rss-forwarder
Fazit
Mit dem RSS-Forwarder können beliebige Quellen in regelmäßigen Abständen auf neue Einträge geprüft werden und diese an eine Vielzahl von Anwendungen weitergeleitet werden. Für mein Anwendungsszenario war es genau das richtige, da die Kombination aus RSS Reader und der Einbetten Funktion von Discord genau das wiederspiegelte, wonach wir auf der Suche waren. Zudem waren keine weiteren Bots oder Ressourcen notwendig, da der Service auf bestehender (eigener) Infrastruktur betrieben werden konnte. Ein gemeinsamer Discord Server wurde bereits zu Beginn der Pandemie erstellt um verteilt miteinander arbeiten zu können.