10 Commits

Author SHA1 Message Date
8b1608f99d fix: Audit-Findings — Theme-Validierung, locale-unabhängige Tests
- Theme-Name aus settings.ini gegen Regex validiert (nur [A-Za-z0-9_-]),
  verhindert Path-Traversal über GTK-Theme-Loading (S-05)
- Faillock-Tests nutzen expliziten strings-Parameter statt System-Locale,
  Tests laufen jetzt auch auf EN-Systemen (MAINT-4)
- Test für Path-Traversal im Theme-Namen ergänzt
2026-03-26 12:36:16 +01:00
65d3ba64f9 fix: Audit-Findings — Login-Thread, Traversable-Assets, Session-Exec
- Login-IPC in Background-Thread ausgelagert, UI friert nicht mehr ein
  bei langsamem PAM/greetd (PERF-2/BUG-4)
- importlib.resources korrekt via as_file()/read_text() statt
  Path(str()) — funktioniert in ZIP-Wheels (BUG-1)
- is_absolute()-Check für Session-Exec entfernt, greetd löst PATH
  selbst auf — relative Executables wie 'sway' blockieren nicht mehr (LOGIC-1)
- ValueError (json.JSONDecodeError) im except abgefangen (BUG-2)
2026-03-26 12:34:19 +01:00
9a964aaecb feat: Default-Wallpaper-Fallback und neues Wallpaper
Greeter fällt auf mitgeliefertes Package-Wallpaper zurück, wenn kein
Background konfiguriert ist. Wallpaper ersetzt durch Daniel Leone's
"Snowy Mountain" (Unsplash License).
2026-03-26 12:14:10 +01:00
0f72df8603 feat: i18n — Locale-basierte Strings (DE/EN) statt hardcoded Deutsch
Liest LANG aus Umgebung oder /etc/locale.conf und liefert deutsche
oder englische UI-Strings. Alle hardcoded Strings in greeter.py
durch Strings-Dataclass ersetzt. Fallback auf Englisch bei
unbekannter Locale.
2026-03-26 11:55:41 +01:00
6554dc625d feat: Faillock-Warnung bei wiederholten Fehlversuchen
Zeigt nach dem 2. fehlgeschlagenen Login-Versuch einen Hinweis an,
dass das Konto nach dem nächsten Fehlversuch gesperrt werden kann
(faillock default: 3 Versuche).
2026-03-26 11:48:23 +01:00
c4b3dc833b fix: Audit-Findings — Bugs, Security-Hardening und Performance
- BUG-02: cancel_session bei mehrstufiger Auth (z.B. TOTP)
- BUG-03: CalledProcessError bei reboot/shutdown abfangen
- M-1+EH-01: configparser interpolation=None + Error-Handling
- H-1: Exec-Cmd Validierung (absoluter Pfad erforderlich)
- PERF: Theme-Guard, Default-Avatar-Cache, Avatar-Cache per User
- Mutable Default Arguments in sessions.py (list → tuple)
- Ungenutzten Gio-Import entfernt
2026-03-26 11:35:14 +01:00
af01e0a44d fix: Security- und Quality-Hardening aus Audit
- ipc.py: _recvall() Loop für fragmentierte Socket-Reads, 64 KiB
  Payload-Limit gegen OOM
- greeter.py: GREETD_SOCK Validierung (absoluter Pfad + S_ISSOCK),
  Socket-Leak behoben (_close_greetd_sock), shlex.split() statt
  str.split() für Exec-Befehle, greetd-Fehlermeldungen auf 200
  Zeichen begrenzt, get_style_context() durch get_color() ersetzt
  (GTK 4.10+ Deprecation), Socket-Timeout (10s)
- users.py: ValueError-Absicherung bei int(uid_str), Username-
  Sanitierung gegen Pfad-Traversal, Symlink-Check bei Avatar-Pfaden
2026-03-26 11:18:32 +01:00
3db69e30bc feat: deployment-readiness — Assets ins Package, importlib.resources, AUR PKGBUILD
Assets (default-avatar.svg, Icons) von data/ nach src/moongreet/data/
verschoben, damit sie automatisch im Wheel landen. Pfadauflösung in
greeter.py und main.py auf importlib.resources umgestellt. Dev-Fallback
in config.py entfernt — nur noch /etc/moongreet/moongreet.toml.
Beispiel-Configs für System-Deployment und AUR PKGBUILD ergänzt.
2026-03-26 11:06:18 +01:00
806a76e44f feat: UI-Polish und Konfiguration
Wallpaper-Support via moongreet.toml, Astronauten-SVG als Default-Avatar
mit dynamischer Theme-Farbe, CSS auf GTK-Theme-Farben umgestellt,
konsistentes Widget-Spacing, Custom-Icon-Registrierung.
2026-03-26 10:51:30 +01:00
87c2e7d9c8 feat: initial Moongreet greeter implementation
greetd-Greeter für Wayland mit Python + GTK4 + gtk4-layer-shell.
Enthält IPC-Protokoll, User/Session-Erkennung, Power-Actions,
komplettes UI-Layout und 36 Tests (Unit + Integration).
2026-03-26 09:47:19 +01:00