Das wahrscheinlich over-engineerteste Gaeste-WLAN-Portal in einer Privatwohnung.
Marc wollte eigentlich nur, dass sich Gaeste im WLAN anmelden. Herausgekommen ist ein Portal mit animiertem Partikel-Hintergrund, einem System-Info-Panel das dein Geraet komplett durchleuchtet und einer Error-Seite die dir Angst macht. Priorities.
Ein Captive Portal fuer OPNsense, das angezeigt wird wenn sich jemand ins Gaeste-WLAN einloggen will. Gebaut fuer den privaten Gebrauch unter Freunden - also weniger "Enterprise Security" und mehr "Marc hat zu viel Freizeit".
captive-portal/
portal.html - Login-Seite (die huebsche)
error.html - Fehler-Seite (die bedrohliche)
logout.html - Logout-Seite (die traurige)
Das war's. Drei HTML-Dateien. Kein Framework. Kein Build-Step. Kein node_modules Ordner der groesser ist als das Betriebssystem.
- Animierter Netzwerk-Partikel-Hintergrund (ja, wirklich noetig)
- Glasmorphism-Card weil wir in 2026 leben
- Rotierende witzige Untertitel und Tipps des Tages
- System-Info-Panel das dir sagt welches OS du hast (als ob du das nicht wuesstest)
- Zeigt Akku, RAM, CPU-Kerne, Netzwerk-Typ und deinen ungefaehren Aufenthaltsort in der Zeitzone an
- Der Username ist vorausgefuellt mit "guest" weil Marc nett ist
- Rote Alarm-Aesthetik mit zitternder Card
- Blinkendes "SICHERHEITSVERSTOSS ERKANNT" Banner
- Fake Vorfall-ID, fake IP-Ermittlung, fake Standort-Triangulation
- Standorte wie "Klo, 2. OG (mit Handy)" oder "Balkon, heimlich rauchend"
- 5-Minuten Countdown bis zur "Netzwerksperre" (passiert nichts)
- Rotierende Drohungen: "Dein Spotify wechselt dauerhaft auf Volksmusik"
- Rote Partikel im Hintergrund fuer maximale Panik
- Button: "Erneut versuchen (auf eigene Gefahr)"
- Powered by der "KumarNet Cyber Defense Unit"
- Dramatischer Abschied mit Logout-Tuer-Icon
- Rotierende traurige Untertitel: "Das WLAN weint leise." / "Die Partikel sind jetzt traurig."
- Fake Session-Statistiken die nacheinander eingeblendet werden
- Datenverbrauch wie "420 MB (nice)" oder "3.7 GB (Alter!)"
- DNS-Anfragen: "4.832 (was hast du gesucht?!)"
- Marcs Reaktion: "Dreht sich dramatisch zum Fenster"
- Rotierende Abschiedssprueche: "Du kannst das Netzwerk vergessen. Aber es vergisst dich nicht."
- Button: "Doch nochmal reinlassen"
Abhaengigkeiten: Keine. Null. Nada.
Frameworks: Nein.
Build-Tools: LOL.
Browser-Support:
- Chrome/Edge: Alles funktioniert inkl. Battery API, Network Info, Device Memory
- Firefox: Fast alles, minus ein paar Chromium-exklusive APIs
- Safari: Das Noetigste. Apple halt.
- Internet Explorer: Nein.
APIs die benutzt werden (wenn verfuegbar):
navigator.connection- Netzwerk-Typ & Speednavigator.getBattery()- Akku-Levelnavigator.hardwareConcurrency- CPU-Kernenavigator.deviceMemory- RAM (ungefaehr)screen.width/height+devicePixelRatio- Display-InfoIntl.DateTimeFormat- Zeitzone- User Agent Parsing - OS & Browser (Regex, keine Library, wie Maenner das machen)
Nicht verfuegbare APIs werden einfach nicht angezeigt. Keine Fehler, kein Drama (ausser auf der Error-Seite, da ist alles Drama).
- Gehe zu Services > Captive Portal > Zones
- Erstelle oder bearbeite eine Zone
- Lade
portal.html,error.htmlundlogout.htmlhoch - Speichern
- Fertig. War das so schwer?
Q: Warum ist das Portal so aufwendig fuer ein Gaeste-WLAN? A: Weil es geht.
Q: Loggt Marc wirklich meine Suchanfragen? A: Nein. Aber die Frage sagt viel ueber dich aus.
Q: Was passiert wenn der Countdown auf 00:00 laeuft? A: Nichts. Absolut gar nichts.
Q: Muss ich wirklich 3x "Es tut mir leid, Marc" sagen? A: Kann nicht schaden.
Q: Warum ist der Username vorausgefuellt? A: Damit du nur noch das Passwort eingeben musst. Marc denkt an alles.
Q: Wie ist das Passwort? A: Frag Marc. Er liebt das.
Q: Warum ist die Logout-Seite so dramatisch? A: Weil Abschiede wehtun. Auch von WLAN-Netzwerken.
Q: Stimmen die Session-Statistiken auf der Logout-Seite? A: Nein. Aber 420 MB ist trotzdem nice.
Q: Hat dieses Portal wirklich mehr Aufwand als manche Bachelorarbeit? A: Ja. Und es funktioniert sogar.
Mach damit was du willst. Aber wenn du es benutzt, sag Marc Bescheid - er will angeben.
Powered by Marcs Keller-Rack. Uptime seit dem letzten Stromausfall: wahrscheinlich lang.