Über patrick.sachs…

Berechtigungen: postpagefile

Willkommen auf meinem Profil! 

Mein Name ist - wie sich vermuten lässt - Patrick Sachs und ich bin Auszubildender als Fachinformatiker bei cordaware. In meiner Freizeit bin ich entweder in meiner IDE verloren gegangen oder habe zu viel Zeit in so ziemlich alles in die Richtung Sci-Fi investiert. Mein GitHub ist in der Regel ein guter Ort um über meine Aktivität informiert zu bleiben.

Mein Lebenslauf lässt sich hier finden: Über mich

Neueste Posts

Schon seid längerer Zeit gibt es zwischen Freunden und mir einen Art "Running-Gag" sich gegenseitig für die absurdesten Dinge "Verwarnungen" auszustellen. Keiner weiß mehr wie das ganze angefangen hat, jedoch stand eines schnell fest: Sich die ganzen Verwarnungen zu merken wird schwierig. Also muss das Ganze elektronisch verwaltet werden. 
Eine eigene App oder ähnliches dafür zu entwickeln wäre natürlich möglich gewesen, aber da die Idee aus einer Art Schnapslaune entstanden ist(auch wenn wir dabei komischerweise vollkommen nüchtern waren!) haben uns entschieden auf ein bereits existierendes Backend aufzusetzen: Discord

Daher gesagt-getan, ein Discord Bot wurde entwickelt. you-have-been-warned nennt sich das gute Stück.

Der Bot

Nun lässt sich via Befehl jede Person die sich auf unserem Discord befindet gemütlich Verwarnen. (Und auch entwarnen, aber wer will denn sowas...)

Der Bot lässt sich natürlich auch auf dem eigenen Discord Server installieren. Einfach auf die oben verlinkte GitHub Seite gehen und entweder den von mir gehosteten Bot installieren(hat sich mit 2 Klicks erledigt), oder den Bot auf einem eigenem Server installieren.

Die Planung

Besonders interessant fand ich, wie zugänglich das ganze zum Entwickeln war: Grundsätzlich wird zu den offiziellen Discord Servern eine Websocket Verbindung aufgebaut über welchen letztendlich sämtliche Kommunikation abläuft. Das hat bereits einen sehr großen Vorteil: Dadurch dass nicht auf ein eigenes, proprietäres Protokoll gesetzt wird, ist es möglich einen Bot in jeder Sprache(incl. im Browser!) zu entwickeln. 
Und natürlich greift die gute alte Regel, dass zu allem was auch nur ansatzweise Sinn macht mindestens ein NPM Paket verfügbar ist. So auch hier. Ich konnte auf Anhieb zwei Libraries finden, die diese Kommunikation in eine schöne High-Level API verpacken: discord.io und discord.js.

discord.io

discord.io


Zuerst habe ich mich mit discord.io ans Werk gemacht, nicht zuletzt weil ich im ersten Google Ergebnis ein Tutorial gefunden habe, welches diese Library verwendet. Eine Stunde später ist diese jedoch wieder rausgefolgen, da sie mit IPv6 Probleme hatte, was insofern problematisch ist, da der Server auf welchem der Bot laufen wird IPv6 only ist. Es scheint hier zwar eine Art Workaround zu geben, jedoch habe ich diesen nicht wirklich Einwandfrei zum Laufen gebracht.

discord.js

discord.js


Bevor ich also graue Haare riskiert habe hab ich ein Blick zu deren Konkurrenz gewagt: discord.js. Die Library hat bereits zu Beginn durch eine schön präsentierte Webseite von sich überzeugt. Auch war der Verbindungsaufbau und Erhalt mit den Discord Servern auch über längere Zeiträume kein Problem

Daher habe ich mich ohne große Umschweife für diese Library entschieden, deren API mit im Nachhinein auch wesentlich besser gefallen hat.

Die Umsetzung

Besonders wichtig war mir, dass das ganze System ohne Datenbank auf meiner Seite auskommt, damit ich mich nicht mit Datenschutzthemen ärgern muss. Hier legt der Bot lediglich Benutzerrollen in Abhängigkeit der Verwarnungen eines Nutzers an. Hat ein Nutzer beispielsweise 10 Verwarnungen bekommt dieser die Rolle "warnings: 10".
Um nun die Anzahl der aktuellen Verwarnungen auszulesen, geht der Bot einfach durch die Rollennamen eines Benutzers durch und versucht diese zu parsen.

Beide APIs haben den Vorteil, dass sie Eventbasiert aufgebaut sind, was es sehr einfach macht den Code nachzuvollziehen und auch unerwartete Fehler zu reduzieren. Auch ist der Bot standardmäßig - wie ich es gerne nenne - Server agnostisch. Das bedeutet, dass sobald der Bot auf einem Server funktioniert wird es auch auf jedem anderen funktionieren, da die Events global aufgebaut sind, anstatt für jeden Discord Server eigene Events zu haben(z.B. das onmessage Event erhält die Nachrichten jedes Servers, anstatt für jeden Server einzeln ein eigenes onmessage Event registrieren zu müssen.).

Die Zukunft

Der Bot ist für unsere Verwendungszwecke vollständig abgeschlossen. Ein weiteres Features wären jedoch noch schön: Es wird sich zwar die Anzahl der Verwarnungen gemerkt, jedoch nicht deren Gründe. Hier wäre es schön, wenn ebenfalls Historie über alle Gründe geführt werden würde die sich dann jederzeit abrufen lässt.

Falls sich also jemand inspiriert fühlt hier mit Hand anzulegen, die GitHub Issue Seite des Bots enthält alle nötigen Details: https://github.com/PatrickSachs/you-have-been-warned/issues

Seid Ende Februar ist meine Webseite nun zusätzlich unter patrick-sachs.dev erreichbar nachdem diese nun zu menschlich finanzierbaren Preise erhältlich ist.

Natürlich kann auch weiterhin patrick-sachs.de verwendet werden(Helios erlaubt die Verwendung von mehreren Domains). Meine Mail Adressen haben sich ebenfalls nicht geändert.

Das Verwenden der .dev Domain bringt jedoch einige Sicherheitsfeatures mit sich: Alle Domains mit dieser Endung befinden sich auf der "HSTS"(HTTP Strict Transport Security) Liste. Das bedeutet, dass patrick-sachs.dev ausschließlich über das verschlüsselte HTTPS Protokoll erreichbar ist.

Während die .de Domain zwar augenscheinlich ebenfalls exklusiv über HTTPS läuft, läuft im Hintergrund das ganze etwas anders ab:

  • HSTS: Der Browser sendet eine Anfrage über HTTPS an den Web Server, und dieser antwortet direkt darauf. Eine direkte Kommunikation ohne Umwege, welche komplett verschlüsselt abläuft.
  • Ohne HSTS: Der Browser sendet eine Anfrage über HTTP an den Web Server. Dieser leitet den Browser auf HTTPS um. Erst daraufhin läuft die weitere Kommunikation über HTTPS ab. In diesem Fall besteht in dem ursprünglichen, unverschlüsselten Verbindungsaufbau eine realer Angriffsvektor.

Für Interessenten ist wie oft der Wikipedia Eintrag ein guter Punkt zum informieren. Sollte jemand am Erwerb einer Domain interessiert sein kann dies direkt über die offizielle Seite von Google getan werden: https://get.dev/

Neue Website von patrick.sachs, 15. Jan. 2019

Nach gefühlt ewiger Planungszeit ist meine neue Website jetzt endlich online. Jetzt nicht mehr Wordpress sondern mein eigenes CMS: Helios

Auch habe ich mich entschieden meine Website weiterhin auf Deutsch fortzuführen. Ich war lange davon überzeugt dass ich mit dem Umstieg nun auf Englisch fortsetzen möchte. Das ganze hat sich dann jedoch irgendwie "falsch" angefühlt als ich Helios auf Englisch installiert hatte und angefangen habe meine persönliche Website mit Englischen Inhalten zu füllen. Daher weiterhin alles auf Deutsch.

Da die Seite für nähere Zeit doch noch etwas leerer bleiben wird(Es gibt dann doch noch das ein oder andere was an Helios noch fehlt um so richtig damit loslegen zu können) empfehle ich vorerst mir auf GitHub zu folgen um aktuell zu bleiben. Anstatt jedoch eine dieser schrecklichen "Under Construction" Banner aufzuhängen gibt es für die Zwischenzeit diese Version der Seite.