bcrypt==5.0.0 blinker==1.9.0 cffi==2.0.0 click==8.3.0 cryptography==46.0.1 Flask==3.1.2 Flask-Bcrypt==1.0.1 Flask-Login==0.6.3 gunicorn==23.0.0 itsdangerous==2.2.0 Jinja2==3.1.6 ldap3==2.9.1 MarkupSafe==3.0.2 pycparser==2.23 PyYAML==6.0.2 Werkzeug==3.1.3 # Gegenueber TESM entfernt: Flask-Sock/simple-websocket (Browser-SSH- # Terminal fuer Switche gibt es hier nicht mehr), paramiko/PyNaCl/pyasn1 # (nur fuer SSH zu Switchen/Geraeten gebraucht -- der Lizenzserver macht # kein Geraete-Management). cffi/pycparser bleiben: cryptography selbst # haengt (ausserhalb PyPy) von cffi ab, das wiederum pycparser braucht -- # nicht optional, auch ohne paramiko. # # PyYAML wird für das netplan-Backend der Host-Netzwerkeinstellungen # gebraucht (Systemeinstellungen → Netzwerkeinstellungen) — schreibt/liest # die eigene Override-Datei unter /etc/netplan/. # # ldap3 (reines Python, keine System-Bibliothek wie libldap nötig) für die # optionale Active-Directory/LDAP-Anmeldung (Systemeinstellungen → LDAP) — # Search+Bind gegen einen AD-Domain-Controller oder generischen LDAP-Server. # # gunicorn: produktiver WSGI-Server für tesm-license.service (siehe dort) # statt Flasks eigenem app.run()-Entwicklungsserver ("WARNING: This is a # development server..."). Ein Worker-Prozess mit mehreren Threads # (--worker-class gthread) reicht hier aus, da der Lizenzserver — anders # als TESM — keine langlebigen WebSocket-Verbindungen mehr offen hält.