Gotify - ein Open Source-Projekt zum Übermitteln von Benachrichtigungen und zum Senden von Nachrichten an den Server



Für diejenigen, die Server und / oder Webprojekte verwalten, besteht eine akute Frage des Bewusstseins darüber, was mit ihren „Stationen“ geschieht. Auf dem Markt gibt es viele Entscheidungen über Warnungen zu Fehlern, Verbindungsstatus und anderen Parametern, auch per SMS. Wir sprechen über MRTG, Twilio, F-Droid, Google-Dienste und viele, viele andere. Das einzige Problem ist, dass die meisten dieser Lösungen sehr eng spezialisiert sind und es nicht möglich ist, ihre Funktionen zu beeinflussen. MRTG gibt Auskunft über Verkehr und Verbindung, Google sendet SMS. Twilio bietet einige Freiheiten beim Schreiben von JavaScript-Skripten, die Ihren Anforderungen entsprechen, aber es tut mir leid, dass dies ein kommerzielles Projekt ist. Das heißt: "Komm schon, bezahle die Beute oder geh weg."

In dieser Toolfamilie gibt es also Open Source-Nachschub: Gotify ist ein einfaches Client-Server-Projekt zum Empfangen und Senden von Push-Benachrichtigungen und -Befehlen, auch über eine Android-Anwendung. Und es lohnt sich auf jeden Fall, ein bisschen mehr darüber zu erzählen. Ich denke, es wird sich als nützlich für diejenigen erweisen, die etwas Ähnliches und gleichzeitig Kostenloses suchten, aber am Ende haben sie ihr eigenes Haustierprojekt gestartet. Es ist möglich, dass Sie durch diese Veröffentlichung einige hundert Stunden Zeit sparen.

Was Gotify bietet


Das Projekt besteht seit mehreren Jahren friedlich und wurde auf GitHub entwickelt. In dieser Zeit wurden ein Server, ein Webclient, eine Android-Anwendung, eine API und natürlich eine Dokumentation erworben. Ich habe mich aus zwei Gründen für Gotrify entschieden: Es ist Open Source und funktioniert nicht nur beim "Empfang", sondern auch beim "Zurück". Alle Arten sind auf GitHub und es wird mithilfe von Bash-Skripten konfiguriert. Und natürlich ist es kostenlos.

Die meisten vorhandenen Lösungen zielen ausschließlich auf den Empfang von Benachrichtigungen vom Zielserver / -gerät ab, nicht jedoch auf die vollständige Interaktion zwischen Client und Server. Das heißt, Sie erhalten möglicherweise eine Benachrichtigung, dass Ihr Server abgestürzt ist oder das Internet verschwunden ist. Es ist nicht immer bequem, sich zu fragen, was auf der "anderen Seite" passiert, und dies kann in derselben Anwendung / demselben Fenster erfolgen. Um diese Art von Informationen zu erhalten, müssen Sie meistens ein VPN oder (Gott bewahre) ein TeamViever abschneiden und es „mit Ihren Händen“ ansehen. Ich habe oben erwähnt, dass Twilio durch selbst geschriebene JS-Skripte einen gewissen Spielraum bietet, aber es wird bezahlt, also von.

Tatsächlich ist das gesamte Gotify-Projekt in drei Teile unterteilt: Server, Client und Anwendung. Der Server arbeitet verständlicherweise so, wie - Nachrichten senden und empfangen, der Client - nur zu empfangen und die Anwendung - nur zu senden.



Darüber hinaus verfügt das Projekt über einen API-Client (und eine Dokumentation), eine API-Vorlage, eine Plugin-Vorlage, eine eigene Website, eine Go-Konfigurationsbibliothek, die JSON-, YAML-, TOML- und Umgebungsvariablen unterstützt, sowie einen Server-Build, einen Client und tatsächlich , Android-Anwendung. Das einzige, was stören könnte, ist die Android-App. Es gibt nichts Hilfloseres, Verantwortungsloseres und Unmoralischeres auf der Welt als die Überwachung der Infrastruktur über ein Mobiltelefon. Aber die Technologie schreitet voran und wir wissen, dass wir früher oder später zu diesem Müll übergehen werden. Nicht, dass dies das erforderliche Minimum für die Remotekommunikation mit dem Server war, aber wenn die Open Source-Community beginnt, ihre eigenen Tools zu schneiden, ist es schwierig, sie zu stoppen.

Unabhängig davon ist zu erwähnen, dass für die Kommunikation mit dem Server nur die Authentifizierung und das Anwendungstoken erforderlich sind, die vom Server über eine REST-Anforderung zurückgegeben werden. Mit diesem Token können Sie in Zukunft Nachrichten über jeden http-Client empfangen, z. B. über curl oder HTTPie :

$ curl -X POST "https://push.example.de/message?token=<apptoken>" -F "title=my title" -F "message=my message" -F "priority=5" $ http -f POST "https://push.example.de/message?token=<apptoken>" title="my title" message="my message" priority="5" 

Laut dem Handbuch auf der offiziellen Website des Projekts kann ein Push an den Server mit unterschiedlichen Prioritäten sowohl an Golang als auch an Python gesendet werden:

Golang

 package main import ( "net/http" "net/url" ) func main() { http.PostForm("http://localhost:8008/message?<apptoken>", url.Values{"message": {"My Message"}, "title": {"My Title"}}) } 

Python

 import requests #pip install requests resp = requests.post('http://localhost:8008/message?token=<apptoken>', json={ "message": "Well hello there.", "priority": 2, "title": "This is my title" }) 

Auch für Linux und Mac ist das Schreiben eigener Plugins möglich. Hier sind die verfügbaren Funktionen, die auf der Projektwebsite aufgeführt sind:

  • individuelle Plugins für jeden Benutzer;
  • Registrierung von benutzerdefinierten http-Handlern;
  • Senden von Nachrichten als Anwendung;
  • YAML-basiertes Konfigurationssystem in der WebUI;
  • persistenter Speicher für jedes Benutzer-Plugin;
  • Zeigen Sie dynamisch generierte Anweisungen für Benutzer an.

Das Gotify-Plugin-System basiert auf dem hier beschriebenen Standard-Go-Plugin-System. Warum können sie in Gotify verwendet werden? Entwickler führen das Beispiel an, Webhooks von GitHub, Travis CI und anderen zu empfangen, Feeds über RSS, Atom-Quellen abzufragen, die Standardfunktionalität der WebUI zu erweitern und natürlich Warnmeldungen über Abstürze zu übermitteln. Auf dieser Seite finden Sie eine Vorlage für das Plugin und eine Erläuterung des Codes. Damit Plug-Ins ordnungsgemäß funktionieren, empfehlen Entwickler die Verwendung von Docker. Ohne Plug-In ist es jedoch durchaus möglich, Gotify so zu konfigurieren, dass es funktioniert, obwohl das korrekte Senden und Empfangen von Nachrichten in diesem Fall nicht garantiert ist.

Ich habe hier nicht den vollständigen Text der Basisdokumentation für das Projekt angegeben - Sie können alles selbst lesen. Den Bewertungen nach zu urteilen, erwies sich das Projekt als recht nachdenklich, zumindest auf der anderen Seite, dass keine SMS-Benachrichtigung verwendet wird (was unpraktisch ist, wenn Sie sich im Ausland oder im Keller befinden), und aktiv versucht wurde, den in Android 6-7 eingebrachten Energiesparmodus zu ignorieren . Gotify ist neugierig, auch wenn es Open Source ist, dh kostenlos und nichts hindert daran, eine Datei aufzuteilen und in einen Zustand zu bringen, der für die Bedürfnisse bestimmter Personen / Teams geeignet ist.



Referenzen


  1. GitHub-Repository.
  2. Die offizielle Seite des Projekts.
  3. API-Dokumentation.

Source: https://habr.com/ru/post/de443258/


All Articles