WoltLab Suite 5.4: Vor dem Update ist nach dem Update

  • Ist mir entgangen.



    Verdammt, jetzt hast du mich in das Thema gezwungen, sodass ich drauf antworten musste, bevor ich es morgen vergesse :D . Wer ist eigentlich "uns"?

    Du hättest auch heute erst antworten können - Post-its sind eine tolle Erfindung? :P

    "uns", die gestern Abend einen ersten Blick drauf geworfen haben. ;)


    Was hast du denn erwartet (bzw.: hast du die Erwartungen irgendwo zuvor mitgeteilt)?

    Ich war es bisher eher gewohnt, dass ihr alles Neue im neuen Standard baut und viel Legacy bleibt. Dieses Mal muss ich aber vermutlich alles an JS umbauen, das auf dem umgewandelten JS basiert. Nö, mitgeteilt habe ich das nicht; wozu auch? Wenn ihr das umbaut, baue ich es halt auch um… :D

    In meinem Forum erweitere ich beispielsweise WoltLabSuite/Core/Ui/Message/Manager, wenn ich den Fehler gestern Abend richtig im Kopf habe, und muss entsprechend jetzt auch umbauen. ;)


    Bezieht sich das auf die Re-Authentifizierung? Das hatte tiefgreifendere (UX-)Gründe, siehe Punkt (2) hier: Merge Frontend and ACP sessions by TimWolla · Pull Request #3858 · WoltLab/WCF (github.com)

    Ja, die Anzeige von "xyz bist nicht du?". Wie gesagt, der Aufwand wäre mir vermutlich egal. Ob es jetzt so oder so ist, aber natürlich auch; spart ein bisschen Zeit. ;)


    Das bezieht sich auf MFA durch E-Mail-Bestätigung? Die E-Mail geht genau dann raus, wenn auch das Formular gerendert wird: WCF/EmailMultifactorMethod.class.php at master · WoltLab/WCF (github.com)

    Wenn ich das richtig sehe, ist es genau das, was ich meinte. Ich habe gerade nochmal geschaut, ich habe keine Mail gekriegt nachdem ich mich nur im anderen Tab befunden habe und mich per Authenticator angemeldet habe. Das ist gut. :)


    Tom Nero musst du übrigens anpassen. Ich kann dir die Templates gerne die Tage mal zuschicken. :P

    https://github.com/WoltLab/WCF…4a78e011d7f0747ca2db28c50

  • Hallo,

    Du hättest auch heute erst antworten können - Post-its sind eine tolle Erfindung? :P

    ob ich jetzt mir ein Post-It schreibe (die ich nicht mal zur Hand hätte) oder einen Beitrag war dann auch egal.

    Ich war es bisher eher gewohnt, dass ihr alles Neue im neuen Standard baut und viel Legacy bleibt.

    Bei TypeScript ist es praktisch notwendig, dass man den bestehenden Code umbaut, da man andernfalls in neuem Code auch nicht von der Typisierung profitieren kann (die fehlt dann ja schließlich).

    In meinem Forum erweitere ich beispielsweise WoltLabSuite/Core/Ui/Message/Manager, wenn ich den Fehler gestern Abend richtig im Kopf habe, und muss entsprechend jetzt auch umbauen. ;)

    Der komplette TypeScript-Code sollte eigentlich komplett rückwärtskompatibel sein, wenn du nicht gerade irgendwelche ganz kruden Dinge anstellst. Das genannte Modul hat auch explizit den Kompatibilitätshack: https://github.com/WoltLab/WCF…i/Message/Manager.ts#L287

  • ob ich jetzt mir ein Post-It schreibe (die ich nicht mal zur Hand hätte) oder einen Beitrag war dann auch egal.

    Ersteres könnte manchmal für die Nerven aber besser sein. :D


    Der komplette TypeScript-Code sollte eigentlich komplett rückwärtskompatibel sein, wenn du nicht gerade irgendwelche ganz kruden Dinge anstellst. Das genannte Modul hat auch explizit den Kompatibilitätshack

    Ich melde mich bestimmt oder erstelle einen PR, wenn ich mehr weiß. Mir sind noch zwei, drei Dinge ins Auge gesprungen. Noch hat alles ja Zeit. :)


    Übrigens wird jeder Aufruf vom WSC (in meinem Fall Updateserver) als neue Session angelegt. Lässt sich hier eventuell etwas optimieren oder soll ich stumpf die Sessions löschen?

    Es wäre auch cool hier statt "Unbekanntes Gerät" anzuzeigen, dass es ein WSC ist.

  • Hallo,

    Lässt sich hier eventuell etwas optimieren oder soll ich stumpf die Sessions löschen?

    wenn beim Aufruf keine Session-ID mitgegeben wird, dann muss nun einmal eine neue Session angelegt werden. Wie du das für dich am besten löst, ist deine Sache. Das sinnvollste wäre es vermutlich den hideSession-Parameter von SessionHandler::changeUser() auf true zu setzen. Dann wird der Benutzerwechsel gar nicht erst in die Datenbank geschrieben (und taucht damit auch nicht in der Benutzerliste auf). Das dürfte auch effizienter sein, weil beim Benutzerwechsel aus Sicherheitsgründen die komplette alte Session vernichtet werden muss.

    Es wäre auch cool hier statt "Unbekanntes Gerät" anzuzeigen, dass es ein WSC ist.

    Mich wundert viel mehr, dass das Icon ein Smartphone ist. Einen Spezialfall für WoltLab Suite halte ich an der Stelle auch nicht für sinnvoll, die Anzeige ist ganz explizit auf Webbrowser ausgelegt (und die dazugehörige Methode auch entsprechend benannt). Mit der vorgeschlagenen Änderung (s.o.) ist das ohnehin hinfällig.

  • Naja, ich will die Session eigentlich durchaus in der Benutzer-Online-Liste stehen haben, aber eben nicht 100 verschiedene Sessions unter offene Sessions.

    Es ist meiner Meinung nach durchaus sinnvoll die eine tatsächliche Session dort anzuzeigen, sodass man als Benutzer sieht, dass jemand oder etwas in seinem Namen auf Ressourcen der Seite zugreift.


    Mit der vorgeschlagenen Änderung (s.o.) ist das ohnehin hinfällig.

    Naja, dann kommt die nächste Stelle, wo es bisher einen Eintrag "Bing" gab mit dem aktuellsten Aufruf, wenn ich mich nicht irre:

    Wenn Google oder Bing da mal eine Sitemap oder Probleme auf Behebung abgrasen, dürfte da eine relativ lange Liste stehen vermute ich ohne nachgesehen zu haben.


    Mich wundert viel mehr, dass das Icon ein Smartphone ist.

    \substr($this->userAgent, 0, 4) liefert HTTP und das Regex in der Zeile darüber matcht ht(c(\-| |_|a|g|p|s|t)|tp.


    Wenn man es genau nimmt, müsste ich aber auch als "tablet" statt als "laptop" registriert werden:

    Aber, dass es ein Surface Pro in Kombination mit einem vollwertigen Google Chrome ist, liest sich aus dem Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.190 Safari/537.36 eher schlecht als Recht raus. ^^

  • Es ist meiner Meinung nach durchaus sinnvoll die eine tatsächliche Session dort anzuzeigen, sodass man als Benutzer sieht, dass jemand oder etwas in seinem Namen auf Ressourcen der Seite zugreift.

    Dann sollte hier auch beachtet werden, dass man die Mehrfaktor-Authentifizierung aktiviert, ansonsten wäre es ja darüber ein leichtes, mich in einen Account mit aktiver Mehrfaktor-Authentifizierung einzuloggen, indem ich einfach die Login-Anfragen an den Paket-Server sende und mir die Session-ID notiere, wenn der Login erfolgreich war.

    Wenn man es genau nimmt, müsste ich aber auch als "tablet" statt als "laptop" registriert werden:

    Es ist relativ „tricky“ Tablets zu erkennen. Selbst ein iPad Pro gibt sich als Mac-Rechner und nicht als Tablet aus, wie alle anderen iPads. Gerade bei teuren Tablets verschwimmt die Grenze zwischen Tablet und Computer immer mehr.

  • Hallo,

    Es ist meiner Meinung nach durchaus sinnvoll die eine tatsächliche Session dort anzuzeigen, sodass man als Benutzer sieht, dass jemand oder etwas in seinem Namen auf Ressourcen der Seite zugreift.

    So funktioniert das System aber nicht (und soll es auch nicht). Angezeigt werden genau die tatsächlich bestehenden Sitzungen. Mit der Online-Liste hat das nichts zu tun. Wenn sich dieser externe Prozess bei jeder Anfrage „neu einloggt“ und anschließend nicht wieder ausloggt, dann ist es vollkommen korrekt, dass da eine große Menge von Sitzungen angezeigt wird. Die Sitzungen existieren ja schließlich alle.

    Naja, dann kommt die nächste Stelle, wo es bisher einen Eintrag "Bing" gab mit dem aktuellsten Aufruf, wenn ich mich nicht irre:

    Ja, die Spider wurden bislang zusammengefasst. Es existiert auch weiterhin Code, der eigentlich dafür sorgen sollte, dass die in der Online-Liste zusammengefasst werden: https://github.com/WoltLab/WCF…ndler.class.php#L648-L651. Einen Bug möchte ich natürlich nicht ausschließen. Magst du bitte eine Issue eröffnen? Am besten mit einem Export der dazugehörigen Sitzungen (wcf1_session *und* wcf1_user_session).

  • Dann sollte hier auch beachtet werden, dass man die Mehrfaktor-Authentifizierung aktiviert, ansonsten wäre es ja darüber ein leichtes, mich in einen Account mit aktiver Mehrfaktor-Authentifizierung einzuloggen, indem ich einfach die Login-Anfragen an den Paket-Server sende und mir die Session-ID notiere, wenn der Login erfolgreich war.

    Touché. Man könnte die Session höchstens auf bestimmte Bereiche beschränken und UserAgent und IP-Adresse abgleichen.


    Es ist relativ „tricky“ Tablets zu erkennen. Selbst ein iPad Pro gibt sich als Mac-Rechner und nicht als Tablet aus, wie alle anderen iPads. Gerade bei teuren Tablets verschwimmt die Grenze zwischen Tablet und Computer immer mehr.

    Ich sag ja, mit dem UserAgent sind die Chancen gleich 0. An der Auflösung kannst du's auch nicht ausmachen; die reicht von 1080p zu 2160p.


    Ja, die Spider wurden bislang zusammengefasst. Es existiert auch weiterhin Code, der eigentlich dafür sorgen sollte, dass die in der Online-Liste zusammengefasst werden: https://github.com/WoltLab/WCF…ndler.class.php#L648-L651. Einen Bug möchte ich natürlich nicht ausschließen. Magst du bitte eine Issue eröffnen? Am besten mit einem Export der dazugehörigen Sitzungen (wcf1_session *und* wcf1_user_session).

    Ich hab's mal exportiert und anonymisiere die Daten nachher.


    Dafür fliege ich am Handy nach etwas längerer Inaktivität (ich schätze um einen Tag rum) dauernd aus der Session raus und muss mich neu komplett anmelden.

  • Hallo,

    Man könnte die Session höchstens auf bestimmte Bereiche beschränken und UserAgent und IP-Adresse abgleichen.

    Ein Abgleich auf User-Agent und IP-Adresse erfolgt bewusst nicht. Durch die Langlebigkeit der Sitzungen müssen diese auch Browser-Updates und IP-Wechsel überleben.

    Ich hab's mal exportiert und anonymisiere die Daten nachher.

    Kleine Erinnerung, falls das „aus den Augen aus dem Sinn“ war.

    Dafür fliege ich am Handy nach etwas längerer Inaktivität (ich schätze um einen Tag rum) dauernd aus der Session raus und muss mich neu komplett anmelden.

    Das sollte nicht so sein. Besteht die Sitzung technisch noch (d.h. taucht in der Sitzungsliste auf)?