Backups sind eine feine Sache. Wenn man sie einigermaßen ordnet. Nachdem ich nun stundenlang den Source meines screenshotbasierten Pseudo-WoW-Angelbots gesucht habe, bin ich nun wenigstens auf einige andere interessante Codes gestoßen: Visual Basic Projekte aus den Jahren 2004 bis (größtenteils) 2006. Was ich damals “ausgekotzt” habe, ist wirklich .. heftig.
Wie nicht anders zu erwarten befinden sich im “Programmierung” Ordner mit seinen stolzen 76 Unterordnern zahlreiche Chats, aber auch einige andere interessante Projekte – einige davon haben mir beim Starten den ein oder anderen “wtf” Moment beschert:
1. Der “Skalierbarkeitschat”

Gefunden im Ordner Chat trifft es dieser Name denke ich am besten. Das gesamte System beruht darauf, dass die Datenbankzugriffe über den Userserver laufen (“Cache Demon” würde ich es heute wohl nennen), Logins über den Loginserver abgewickelt werden und der eigentliche Chats auf mehrere Channelserver verteilt ist, welche über den Interserver synchronisiert werden. Die Konfiguration erfolgt über Ini Dateien, der Userserver verwendet MySQL. Ironischerweise verwenden alle öffentlichen Server (Login & Channel) auch getrennte Private/Public IPs, was den Verdacht nahe legt, dass diese Struktur indirekt von Sirius_Black inspiriert wurde, mit welchem ich Herbst 2006 erstmals Gespräche über Serversoftwaredesign, bzw. eAthena hatte.

In späteren Versionen war das System wohl auch stabil lauffähig – jedenfalls finden sich einige Auswertungen zu mehrtägigen Testläufen auf “dem root”. Interessanterweise besitzen diese Versionen, von denen ich leider keinen kompletten Source mehr habe, keine eigene GUI mehr, was auf eine Remote Administration entweder per Client oder per RemoteAdmin etc. schließen lässt. Die bestehenden Codeteile (Interserver) enthalten außerdem zu 2/3 “Bugfix: ..” Kommentare – offensichtlich wurde dieses System entweder sehr ausgiebig getestet oder war tatsächlich irgendwo im Einsatz; keine Ahnung wo :/
2. Scriptschulenchat

Einige der “alten Hasen” mögen sich noch an die Scriptschule erinnern – dies war die dafür benutzte Chat Software. Wohl gemerkt war dies das erste Chatprojekt, welches mir deutlich vor Augen geführt hat, dass man seine Protokolle DoS-sicher gestalten sollte – beim ersten Testlauf der Scriptschule müllte Apple mit einem 5 Minuten Skript meinen damaligen Rechner relativ schnell mit Fehlermeldungen zu. Technisch gesehen verfolgt die Software einige interessante Ansätze: Der Server überprüft beim Starten die Systemzeit und verweigert ab 29.12.2006 den Dienst – hier wird wohlgemerkt mit RSA Zertifikaten gearbeitet, welche die Gültigkeitsdauer angeben. Die Userdatenbank verwendet eine Plaintextdatei, welche jedoch über einen Vignere ähnlichen Algorithmus gesichert ist. Das Nachrichtenprotokoll ist bilingual aufgebaut, von Haus aus unterstützt das System Deutsch, Englisch und Polnisch. Der Serverpart wurde später neu geschrieben und auf MySQL umgestellt:

Der Rewrite war dann größtenteils eine Optimierung und Neustrukturierung der Codebasis. Es wird nun eine relativ umfangreiche Konfigurationsdatei (gut, 29 Einstellungen) gelesen, die “Message of the Day” ist in eine Textdatei ausgelagert (mit Variablensupport für Onlinestati), die Userdatenbank nutzt konsequent MySQL. Das Netzwerkprotokoll ist nun “versioniert” (frühere Chats hatten oft Probleme mit alten Clients) und der Netzwerkstream ist einerseits verschlüsselt (Vignere lässt grüßen) und an allen relevanten Stellen wird auf mögliche DoS Lücken geachtet. Weiterhin ist Code für IP Bans zu finden, auch wenn dieser nur mit gültiger Development Lizenz greift – ja, auch das Lizenzsystem wurde massiv erweitert. Soweit ich weiß, war dies eines meiner letzten VB Chatsysteme (entweder dieses oder der “Skalierbarkeitschat”).
3. RemoteAdmin

Die Idee hinter diesem Projekt war es (sofern ich mich richtig erinnere), ein einheitliches Administrationstool für alle Chatprojekte zu schaffen. Eine Übertragung der User- und Channellisten wird unterstützt und sogar ein ‘inkognito’ Eingreifen in den Chat wird unterstützt. Weiterhin natürlich Kicks, Bans und andere Verwaltungsfunktionen. Das dahinterstehende Protokoll ist leider ein ziemlich unsauberer Mix aus Pseudo-Plaintext und Möchtegern-Binär – sprich richtig ekelhaft zu implementieren. In Anbetracht der Codebasis bezweifle ich, dass dieses Tool über längere Zeit aktiv entwickelt wurde, entsprechende Serverkomponenten lassen sich jedoch nur in den beiliegenden Testprojekten finden.
3. Pseudo-IRC-Chat
Dieser Ansatz, datiert auf Juli 2006, verwendet zu Teilen das IRC Protokoll und agiert als IRC Bot, hat aber auch irgendwie Schnittstellen zu anderen VB Chatprotokollen (ich konnte leider nicht feststellen, zu welchem Projekt das Protokoll genau gehört.. wohl irgendwas, was mittlerweile in Vergessenheit geraten ist..). Der IRC Bot beschränkt sich auf stupides Spammen von Text im “#lol” Channel… Was auch immer.
4. ROCP

Nicht nur weil ich dieses Projekt bis zur Wiederentdeckung komplett vergessen hatte, war dies wohl die heftigste “wtf” Situation. Es handelt sich hierbei um einen Webserver, welcher in VB geschrieben ist und über Pipes PHP unterstützt. Über autogenerierte zahlreiche Inklusionsdateien werden auch GET und POST Parameter unterstützt, vom Programm ansich werden Variablen wie der Onlinestatus eines Servers bereitgestellt. Auch dieses Projekt besitzt Protokollanbindungen an ältere Chatsysteme (vermutlich der ältere Chat, welcher bereits PHP verwendete). Das System ist relativ fehleranfällig gegenüber modifizierten HTTP Request Headern, bei konventionellen 404 oder 403 Fehlern (ja, es gibt Zugriffsrechte) antwortet es jedoch korrekt mit Templatedateien und passenden Headern.
5. RO Bot

Aufgrund mangelnder Binaries sind hier leider keine Programmscreenshots verfügbar. Im Nachhinein betrachtet war dies wohl eines der letzten interessanten VB 6 Projekte: Ein funktionsfähiger Ragnarok Bot. Der Bot konnte, zumindest soweit sich aus dem Source und meiner löchrigen Erinnerung schließen lässt, ingame herumlaufen, chatten und angreifen. Interessanterweise war sogar eine eigene Skriptsprache integriert, welche syntaktisch grob an PHP anlehnte und ala Warcraft III mit dem bewährten Trigger/Condition/Action System arbeitete. Zu meinem Erstaunen lesen sich die Parsing Routinen der Skriptsprachen wie rudimentäre Compilingalgorithmen, wie sie in entsprechender Fachliteratur beschrieben sind (das Drachenbuch lebe hoch…) – mit dem Unterschied, dass ich damals keine Ahnung von der Materie hatte und einfach auf Gutdünken los geschrieben habe, in der Hoffnung, dass es irgendwie funktioniert. In Anbetracht der Tatsache, dass ich damals 13 war, habe ich irgendwie das Gefühl, dass meine Lernkurve ein wenig an Steigung verloren hat…
6. WoW Proxy

Der genaue Sinn dieser Anwendung ist mir ehrlich gesagt schleierhaft. Jedenfalls dient diese Programm als Proxy für WoW – es werden dabei bestimmte Bytesequenzen gesucht und, nach mir heute unverständlichen Bedingungen, manipuliert. Ich vermute, dass damit irgendwelche Sprachflags gesetzt werden, damit man den Chat der anderen Fraktion lesen kann. Ich habe mir im Rahmen der “Angelbot”/”Angelproxy” Aktion das WoW Protokoll zwar schon angeschaut und es daher anders in Erinnerung, aber gut.. Vielleicht sah das 2005 noch ein wenig anders aus.
7. SimpleChat

Eigentlich eines der schönsten VB Projekte – ein VB Chat, welcher mit PHP Skripten erweitert wurde. PHP wurde lokal über HTTP angesprochen, Befehle etc. waren dann einfach geskriptet. Das Projekt wurde im Oktober 2005 von Timo und mir begonnen und Anfang Dezember eingestellt, da wir unsere Aufmerksamkeit dem “WOWMod” widmen wollten, aus dem sich ja dann später das allseits bekannte InCel entwickelte. Schade um SimpleChat, es hätte mehr Ergebnisse gebracht als InCel.
Ich habe mir das Protokoll nun nicht komplett angeschaut, aber irgendwie kommunizieren die Clients teilweise mit dem Server und dem PHP Skript, beide Seiten pollen dann jeweils die andere und haben somit Informationen zum aktuellen Datenstand. Der eigentliche Reiz bei der Entwicklung des Chats war.. nunja, die Entwicklung. Timo hat immer bei seinem Vater ohne Internet daran gebaut, ich über die Woche hinweg (damals hatte mein PC noch kein Internet). Der Code wurde vor und nach dem Wochenende dann immer per zip ausgetauscht, in einer Notes.txt standen dann immer unsere kreativen Gedankenergüsse zu den letzten Implementierungen. Wohl gemerkt war dies der mit Abstand stabilste Chat, auch wenn der Featureumfang in keinem Verhältnis zum DSG-Chat (Ende 2004/Anfang 2005, leider kaum noch Material vorhanden) steht.
8. WowStatus

Zwei Haushalte, ein WoW Account, ein Problem: Man kickt sich permanent gegenseitig. Man hätte nun einfach XFire benutzen können, um zu sehen, ob der andere gerade spielt, aber das wäre ja bekanntlich viel zu einfach gewesen. Nein, es musste eine eigene Software her! So entstand dann das WoWStatus Projekt: Auf beiden PCs lief ein Server, welcher, sofern der WoW Prozess lief, einem PHP Skript dies mitgeteilt hat. Der jeweils andere hatte nun einen schönen Client, welcher mit einer bunten Infoseite freundlich erklärte, ob man gerade spielen könne:

——
Ich könnte diese Liste nun noch stundenlang weiterführen, so wären mein “Wer wird Millionär” Nachbau, der DSG Chat, MultiChat und einige andere Programme noch erwähnenswert, aber das würde den Rahmen nun eindeutig sprengen. Allein der DSG Chat bestand aus gut 150.000 Zeilen Code…