Großer Daten-Leak bei Karopapier.de

Also, wir haben da das Problem, dass die User-Datenbank von Karopapier geklaut wurde

Da stehen von so ziemlich allen Karo-Usern alle Email-Adressen und Passwörter drin, leider im Klartext.

Die Datenbank ist mit Sicherheit älter als Ende Oktober 2020, weil seitdem sind Passwörter verschlüsselt.

Ich hab euch nicht gezwungen, eure Passwörter zu ändern, sondern diese wurden „unter der Haube“ konvertiert – das war vielleicht ein Fehler. Denn dadurch stimmen die Passwörter bei einem Großteil der User vermutlich noch.

Richtig wäre, jedem das Passwort zurückzusetzen und nen Link per Mail an alle zu schicken, wo sei ein neues Passwort wählen können.

Aber da seh ich das Problem, dass so mancher seine Mail-Adresse geändert hat… daher lassen wir das mal und es gibt nur einen Hinweis auf das Datenloch mit dem Hinweis, das Passwort zu ändern…

Update vom 6.10.2021

Kleiner Zwischenstand: hab bisher ca 1300 Mails verschickt und davon ca 400 „Undeliverables“ bekommen… Die Mails gehen „eine pro Minute“ raus, wird noch ein paar Stunden dauern bis alle durch sind… Und ich habe mich deswegen dafür entschieden, das Passwort zu senden, damit jedem die „Dringlichkeit“ klar wird, da Passwort (nicht nur bei Karo, falls mehrfach verwendet) zu ändern.

Veröffentlicht unter Allgemein | Schreib einen Kommentar

The State of the Union

Als König des Karoversums brauche ich keine Einladung in den Congress und mir ist auch ein Shutdown egal (außer, er betrifft den Karoserver), von daher kann ich einfach so mein persönliches Statement zum „State of the Union“ raushauen – und natürlich geht es da um die Karo-Welt.

Auf Nachfrage und Vorschlag, das mal zu machen, tu ich sagen, wie es mir gerade so geht. Mit der Welt, dem Leben und Karopapier. Daher:

The State of the Karopapier

Karopapier war, ist und bleibt mein tollstes Internet-Ding, das ich jemals irgendwie gemacht hab. Nicht aus technischer Sicht, aber aus „überhaupt“ – es ist immer noch ein riesen Ding, dass seit mittlerweile schon so vielen Jahren so viele Menschen diesen Quatsch hier mitmachen. Und das beflügelt weiterhin. Und so Dinger wie das Karolenderblatt an der Wand setzen Glückshormone frei ohne Ende!

Ich weiß aber auch, dass ich viel mehr Zeit reinstecken müsste, um alle Spieler mehr bei Laune zu halten. Nun ist es aber so:

Ich bin Marketing-Manager, Chefentwickler, Administrator, Frontend-Entwickler, Backend-Entwickler, Designer und Social Media Berater für Karopapier in einem (dafür gibt’s ja jeweils eigentlich nen eigenen Beruf…)

Und eigentlich bräuchte ich manchmal auch noch einen Community-Manager, der sich um die Belange des Zwischenmenschlichen kümmert.

Ich selbst lebe jetzt seit einem guten Jahr getrennt, habe meine Kinder zu 50% bei mir, das heißt ich bin eine Woche komplett für die Kids zuständig und in der anderen muss ich so viel arbeiten, dass die Familie versorgt wird. Meine Selbständigkeit hilft mir dabei, weil ich nie im Leben einen Job mit geregelten Arbeitszeiten hinbekommen würde – aber ich stecke eben doch sehr viel/die meiste/fast alle Zeit in meinen „Hauptjob“, damit ich abrechenbare Stunden=Geld=Wohnen+Essen zusammen bekomme.
Klar, ich hab auch Freizeit, wobei aktuelle gerade Mountainbike und Musik da dominiert – und auch eine gewisse Zeit „für mich“, die ich brauche um über das ganze immer noch Nachzudenken. Weil ich sonst gaga geh. Ach ja, und Schlafen muss ich auch.

Das alles ist eine Belastung, die mich tatsächlich öfters mal an die Grenzen meiner Zeit bringt – und da fällt leider Karopapier (viel zu) oft hinten runter.

Ich will hier nicht rumheulen und mich beschweren, aber euch auch versichern, dass ich durchaus nicht aus Desinteresse an Karopapier, sondern schlicht und einfach aus Abwägung dessen, was gerade für wen am wichtigsten ist, einfach gerade wenig an Karopapier mache(n kann).

Karopapier ist mir weiterhin sehr wichtig, und ich leide tatsächlich darunter, dass ich keine Zeit finde. Und dummerweise tu ich dann, wenn ich mir mal was eingeplant habe meist nix, was man sieht. Dass ich sehr viel Zeit in den Weihnachtsferien verkarot habe, sieht man halt leider nicht, wenn ich irgendwelchen internen alten Mist wegräume oder den Serverumzug vorbereite…

Wie geht’s weiter?

Was sich kurzfristig hier ändern wird: Vermutlich nix – so leid es mir tut. Ich werde nicht auf magische Art und Weise auf einmal mehr Zeit für karopapier haben. Ich werde es versuchen. Glaubt mir, es liegt mir am Herzen. Eigene Karten, Bessere „Dynamische Ansicht“, Warteraum, …

Was allerdings ganz dringend passieren muss ist, dass ich den alten Server loswerden muss und Karo (und eine Million anderer alter Dinge, die sich in 10 Jahren angesammelt haben…) umziehen. Das werde ich jetzt immer wieder, wenn ich mal Zeit habe, in Angriff nehmen. Schlicht, weil ich zwei Server gleichzeitig zahle, und das dauerhaft alles andere als wirtschaftlich ist…

Ansonsten habe ich den Karocode unter vorgehaltener Hand halb-öffentlich gemacht. Es gibt ein „gitlab“, das passwortgeschützt zugänglich ist und ich bin sehr gerne bereit, interessierten, alteingesessenen und vertrauenswürdigen Menschen dafür Zugang zu geben, auf dass sie bei der Verbesserung der Welt beitragen mögen. Sehr gerne würde ich da auch wirklich mal ein Karo-Hackthon-Camp machen und den Murks erklären, der da herumliegt. (Wer Interesse hat, bitte melden!)

Desweiteren: Ich lese aktuell im Chat wenig mit. Bekomme nicht jeden Tag mit, was los ist. Wenn der Server hängt bekomme ich Mails oder Facebook oder Threema Nachrichten – das ist gut und soll weiter so bleiben! Und wer tatsächlich wegen irgendwas frustriert ist und das in den Chat schreibt muss damit rechnen, dass ich es nicht mitbekomme. Ne sachliche Mail hingegen lese ich und reagiere dann bestimmt irgendwie. Von sofortiger Antwort über zeitnahe Fehlerbeseitigung bis bewusster Verschiebung des Problems auf später

Langfristig

2028 wird alles gut!!

PS: Ich bin dankbar für jeden, der dies liest und als Aufmunterung versteht, manche Dinge im Karoversum etwas lockerer zu sehen. Von technischer als auch zwischenmenschlicher Seite.

Veröffentlicht unter Allgemein | Schreib einen Kommentar

Chat Prüfung

Es gibt nun ein magisches Stück Software in Karopapier, das noch nicht ganz im Einsatz ist, aber sicherlich bald gebraucht wird. Es versucht, aus dem uralten Chat Verlauf zu erraten, was der User damals vermutlich eingetippt hat.

Ein Ketzer in der Karogemeinde warf mir zwar verweilen in der Vergangenheit vor, aber wie soll sich die blühende Zukunft entwickeln, wenn einem die Altlasten das Leben schwer machen? Genau… KETZER!!!

Veröffentlicht unter Allgemein | Schreib einen Kommentar

Spiele reparieren

Karopapier hat jetzt einen Prozess, der alte Spiele durchschaut und korrigiert. Zum Beispiel so ein paar verkorkste Dinger, die bei der Erstellung kaputt gingen oder durch Fehler oder aussteigende Mohikaner heute noch in einen undefinierten Zustand kommen und dann hier und da mal Probleme machen.

Diese werden jetzt automatisiert korrigiert – zumindest sollte es das. Wenn jemand noch Spiele hat, die merkwürdig auftauchen, BITTE MELDEN – dann kann ich die Prüfungen und Korrekturen entsprechend erweitern

Veröffentlicht unter Allgemein | Schreib einen Kommentar

Chat Archäologie

Hiermit möchte ich das Projekt der Datierung aller Einträge im Chat ausrufen.

Der Chat in seiner heutigen Form basiert immer noch auf einer faulen Entscheidung meinerseits aus dem Jahre x nach Karopapier Empfängnis. Nämlich: „Ach, schreib ich doch einfach alles mit >> zeilenweise hinten an eine Datei, dann kann ich die letzten Zeilen per system und tail holen.“
War schnell implementiert und hat seinen Zweck erfüllt.

Heute weiß man:

Das kannste schon so machen, aber dann isses halt Kacke.

Die Einträge haben dadurch keine zeitliche Zuordnung, lediglich die Uhrzeit (das ganze Datum wäre in der Darstellung ja auch zu lang). Und diesen —-Tagestrenner—- haben wir dem unermüdlichen Einsatz der ersten Chatter (RealMurphy, 21.01.2005) zu verdanken; irgendwann hat das mein System selbst eingefügt, aber bis dahin war das Handarbeit.

So, aber anhand der Trenner, etwas Algorithmus, Hirnschmalz und Zeit müsste es ja möglich sein, die meisten der Zeilen einem genauen Zeitstempel zuzuordnen. (Sogar unter Berücksichtigung von falsch laufenden Uhren, Zeitumstellungen u.ä.)

So hab ich also vor, die immer noch geführte Datei nu endlich doch in die Datenbank zu importieren und dann daran rum zu schrauben, um die Datumse herauszufinden, zu denen ein Eintrag entstanden sein müsste.

Und auch hier denke ich, kann gerne der ein oder andere interessierte Nostalgiker helfen, aus dem Kontext heraus etwas zu datieren, falls es automatisch nicht geht.

Ziel? Nu ja, dass man in Zukunft eben mal besser weiß, wann was gesagt wurde und dass man im Chat halt auch mal zum „April 2013“ springen kann – warum auch immer man das tun wollen sollte. Heute geht das ja so natürlich nicht…

Gucken wir also mal, wie es voran schreitet – den Code dazu, der das Importieren und Datieren vornimmt wird sich dann auch unter https://github.com/karopapier/Karopapier finden lassen

PS: Und dass die neuen Einträge heute gleich einen ordentlichen Zeitstempel bekommen, das wird sich bestimmt auch noch hinter einer Tür verstecken

Veröffentlicht unter Allgemein | Schreib einen Kommentar

Karopapier goes Open Source

Karopapier goes Open Source

Lang wird ja schon immer mal wieder gebettelt, dass man doch bei Karopapier mitprogrammieren dürfte…

Ich habe bisher immer abgeblockt, weil ich keinem den alten Sourcecode zumuten will.

Und eigentlich wird sich daran auch nicht viel ändern, dafür ist der alte Code zu dreckig, zu schlecht, zu unsicher und auch zu peinlich.

Viel ordentlich wäre ja, das ganze richtig neu zu machen und ggf Ideen oder Schnipsel aus dem alten Code zu verwenden, sofern das geht.

Meine Versuche, Karopapier in den letzten Jahren immer mal wieder neu zu schreiben oder umzuschreiben sind ja alle ziemlich im Sande verlaufen. Erste Versuche, es mit dem PHP Framework Symfony 1.4 neu zu schreiben haben uns eine einigermaßen verwendbare API und ein paar Seiten (karopapier.de/dran, karopapier.de/blocker, karopapier.de/user/settings) gebracht, aber so richtig gut war das auch nicht.

Im letzten Jahr hab ich immer mal wieder einen weiteren Anlauf gestartet, auf Basis des zukunftsträchtigeren und ständig weiterentwickelten PHP Frameworks Symfony2 (bzw. 3, 4, …
http://symfony.com/doc/current/contributing/community/releases.html#schedule) neu zu starten.

Und das läuft ja jetzt auch tatsächlich Parallel. Der größte Teil der Anfragen an Karopapier.de im Browser wird von der uralten Codebasis beantwortet, insbesondere auch das Ausführen der Züge (move.php).
Ein Teil der Anfragen und besonders die Aufrufe der API (was z.B. 2.karopapier.de oder ullis App macht) beantwortet symfony 1.4 (veraltet) und nur ein paar wenige ganz neue Seiten bzw. Services im Hintergrund (z.B. das erstellen der Spiel-Thumbnails) läuft auf Basis des neuen Codes.

ABER: Das lässt sich erweitern und ändern. Ziel ist, Schritt für Schritt alten Code durch neuen zu ersetzen und immer mehr Anfragen mit neuem, ordentlichem, sicherem und getestetem Code zu erledigen.

Daher habe ich meinen neuen Symfony Code nun unter https://github.com/karopapier/Karopapier zur Verfügung gestellt und werde weiterhin darin arbeiten, um Karopapier jeden Tag ein bisschen besser zu machen.

Und da darf dann auch gerne mitgearbeitet werden, sofern man sich den Anforderungen gewachsen sieht, denn ich will keine Quick&Dirty Hacks mehr drin haben, sondern ein ordentliches Projekt, das sich an gängigen „Best Practices“ (http://symfony.com/doc/current/best_practices/index.html) orientiert.

Durch die Verknüpfung der ganzen Code-Teile ist es heute schon möglich, im Uralt-Code einen Service der neuen Code-Basis aufzurufen. D.h. ganz knallhart: Wenn der „MoveService“ fertig ist, kann man diesen theoretisch in allen Stellen (auch im alten Code) aufrufen und Züge nur noch von dieser Stelle aus machen.
Einfacher wäre aber kurzfristig z.B. erst mal ein ChatService (an dem ich gerade arbeite), um die 27 verschiedenen Chats zu vereinheitlichen.

Wer sich jetzt also bemüßigt fühlt, tatsächlich beitragen zu wollen, vielleicht auch ein bisschen Symfony zu lernen und somit Karo und mir zu helfen, der möge dies tun.
Sinnvoll wäre sicherlich, zu koordinieren, wer was wie machen will. Nicht dass was entsteht, was nicht ins Bild passt oder so.
Und vermutlich bietet es sich auch an, Fragen der Zusammenarbeit irgendwie gemeinsam zu klären.
Schauen wir einfach mal, wie es sich entwickelt – und wenn ich weiter alleine wurschdel, auch OK – aber schöner wäre ja vielleicht ein kleines Team, das sich vielleicht auch mal per Online-Sprach-Dienst abspricht oder sogar zu einem Hackathon trifft, wie es ja auch schon vorgeschlagen wurde.

Veröffentlicht unter Allgemein | Schreib einen Kommentar

Cider – oder wie man Didi dazu bringt, Features zu implementieren…

Sly, dieser nervig-eifrige Quälgeist, hat vor einiger Zeit ne Wette mit mir abgeschlossen: Ne Palette Cider, wenn ich es schaffe, im Juni „eigene Karten fahren“ zu implementieren.

Ich hab die Wette angenommen (hatte ja nix zu verlieren, eigentlich…) und unter der Haube gewurschdelt – und auch dabei gleich mal ein paar andere Sachen aufgeräumt oder korrigiert.

Bis zum 30.06.2016, 23:59:59 CEST hab ich es leider nicht geschafft – aber da sind jetzt ein paar Sachen in der Warteschleife…

Es wird sich also was tun!

Aber dabei auch mal so ein leiser Wink mit dem Wald: Solche Wetten könnten wir öfters machen, ich mag Cider!!

Veröffentlicht unter Allgemein | Schreib einen Kommentar

Änderungen unter der Haube

Wenn’s interessiert:

Ich stelle gerade mehr oder weniger alles, was ich bei Karo anfasse, auf Symfony2 bzw. 3 um.

Damit das funktioniert, hab ich den von-hinten-durch-die-Brust-ins-Legacy-Auge-Ansatz gewählt, den @derrabus in seinem Vortrag „Modernisieren mit Symfony“ skiziert. Dabei wird – ziemlich dreckig, aber funktionierend – erst einmal ein komplettes Symfony Framework gestartet, welches versucht, die Anfrage zu beantworten. Wenn es aber mit dem Request (z.B. showmap.php) nix anfangen kann, beendet es sich und danach kommt good old PHP und included das file – wie früher auch.

Nur dass bei Karo ja dann auch noch ein Symfony1.4 dazwischen ist, das ja auch noch etwas rumkrabbelt…

Alles in allem sehr verbogen, aber ermöglicht jetzt recht schnell, alten Code in einen Symfony-Service auszulagern und diesen dann in Zukunft im ganz neuen Teil bzw auch noch im alten aufzurufen.

So zum Beispiel jetzt geschehen mit dem Cookie/Login/Logout/Identify-Handling.

Der Code war grottig, ist jetzt reduziert und wohnt nicht mehr verstreut in diversen verschachtelten ifs und files, sondern einem LegacyAuthenticationService und LegacyCookieService.

Und da war es dann auch ganz einfach, „schnell mal kurz“ nen neuen API-Controller zu schreiben, der auf /api/login hört, den User prüft und ggf ein ordentliches Cookie zurückgibt. So getan und betriebsbereit, Details im KaroApiBrowser

Es tut sich was, jedenfalls!

Veröffentlicht unter TechStuff | Schreib einen Kommentar

Karopapier hat mein Leben verändert

Seit dem Jahr 1999, in dem ich offiziell nach dem Studium in das Berufsleben eingestiegen bin, hatte ich nie einen echten Job als „Web-Entwickler“. Ich habe mich mit viel Zeug herumgeschlagen, aber nach einer gewissen Zeit bei meiner Ausbildungsfirma besteht mein hauptsächlicher Tagesjob der letzten nun fast 13 Jahre hauptsächlich aus Visual Basic for Applications (d.h. Excel/Access Macros) und sonstigem Zeug in diesem Umfeld. Und alles was mit PHP, HMTL und JavaScript zu tun hat, mach ich eigentlich nur nebenher – so als Hobby, aus Leidenschaft.

Daher „bastle“ ich seit vielen Jahren also eigentlich im Web nur rum – und Karopapier ist daher in fast allen bereichen eigentlich nur eine Sammlung vieler halbwegs funktionierender Prototypen; was man ja leider an vielen Stellen auch immer noch merkt.

Vor ein paar Jahren hab ich angefangen, mich mit einem Kumpel zusammen als kleine Webschmiede „ein bisschen“ selbständig zu machen, was aber nur so nebenher lief – erfolgreich, aber zeitlich begrenzt.

So, und nun stehe ich kurz davor, mich allein komplett selbständig zu machen. Mit Kündigen und so. Und mit „diesem Web-Zeug“, das ich nur dadurch gelernt hab, dass ich jede aktuelle Hipster-Web-Sau, die gerade durch’s Developer-Dorf getrieben wird, irgendwie in Karopapier einbauen wollte, um es auszuprobieren. Und dabei geht es zum Glück nicht um die Erstellung von Homepages für die Bäckerei und den Kindergarten (wie gut ich als Designer bin, sieht man ja), sondern idealerweise fette Web-Anwendungen mit ordentlichen Datenbanken und ner Menge an Usern.

Was heißt das? Was will uns Didi sagen?

Nun, ich glaube, es sind zwei Dinge, oder gar drei:

  • Ich bin gerade dabei, meinen Alltag umzubauen, hab gerade zum Glück nen ordentlichen Auftrag und hab daher wenig Zeit, an der Karo herumzuschrauben
  • Wenn ich an der Karo herumschraube, dann weil es etwas mit dem Projekt zu tun hat, an dem ich arbeite (z.B. daher auch der Umbau von KaroPAPA bzw. TURTED)
  • Ich bin froh, dass mich die Community über die letzten Jahre immer wieder motiviert hat, der Bastelei zu folgen

Was damit aber auch klar wird: Es mag für viele von Euch vielleicht „ein Leben außerhalb von Karopapier“ geben, aber für mich ist es mehr als nur ein kleines Bastelprojekt. Es ist eine Spielwiese, die mir heute mehr ermöglicht als ich jemals ursprünglich gedacht hätte.

Kurz:

Nicht böse sein, wenn sich gerade bei Karopapier wenig tut – ich habe durchaus noch einiges vor und auch gute Ideen, wie man es endlich mal umbauen und vereinheitlichen könnte – werde das aber erst mal in Angriff nehmen, wenn ich gerade etwas „Zeit zum Üben“ habe – oder es sich mit meinem anderen Projekt begründen lässt.

Hochachtungsvoll

Didi

Veröffentlicht unter Allgemein | Schreib einen Kommentar

Projekt GROG – Get rid of globals

Karopapier ist alt.
Sehr alt.
Heute mehr als 13,5 Jahre.

Manche Teile der Karo sind auch heute noch „von damals“. So ist zum Beispiel so mancher Teil des Forums oder des Menüs inspiriert (oder geklaut) von Code, den ich für die Webseite meines damaligen Counter-Strike-Clans www.ehg-clan.de geschrieben habe.

Wenn ich den Code von heute anschaue, gruselt es mich.

Das ist aber auch ein gutes Zeichen, dann man könnte daraus schließen, dass ich in den letzten Jahren was gelernt habe.
Dummerweise hab ich es eben nie ein-/umgesetzt und so sind überall in der Karo Dinge verteilt, die man im Laufe des letzten Dutzends an Jahren vielleicht mal so gemacht hat, heute aber ein echtes No-Go sind.

Und diese Dinge schießen mir gerade immer mal wieder ins Knie, wenn ich was neues entwickeln will oder einfach mal ein „Update“ auf dem Server machen will.

Kurzum: Ich muss Altlasten entfernen

Und allen voran ist da die Option „register globals“ aus den Urzeiten von PHP.
Und das (sowie ne ganze Latte an Sicherheitslücken) versuche ich jetzt mal in dem alten Code zu stopfen.
Weil nur dann kann ich überhaupt Karo auf neueren Versionen von PHP laufen lassen (neuer Server? Neue Frameworks).

Und daher hab ich jetzt für mich das Projekt „GROG – Get rid of globals“ gestartet und bin dabei, den ganzen alten Matsch aufzuräumen.

Dazu hab ich eine Liste der Dateien angefertigt, die ich mal überarbeiten sollte – und werde immer schön eintragen, wenn ich was erledigt hab. Und das wird der Fortschritt(hoffentlich)sbalken im Menü zeigen…

Das wird zwar ein Weilchen dauern, aber ich werd sicher dabei auch den ein oder anderen alten Müll rauswerfen und dann hoffentlich die Karo für die nächsten 13,5 Jahre fit machen können!

Veröffentlicht unter TechStuff | Schreib einen Kommentar