Ziel dieses Projekts ist es, ein sehr einfaches Webformular bereitzustellen, mit dem Benutzer ihr in LDAP oder Active Directory (Samba 4 AD) gespeichertes Passwort ändern können. Es wurde mit Bottle erstellt, einem WSGI-Micro-Web-Framework für Python.
Installieren Sie das Paket ldap-passwd-webui-waitress aus dem Community-Repository von Alpine:
apk add ldap-passwd-webui-waitress
Wichtig | Dieses Paket ist seit Version 3.7 in Alpine stabil. Sie können es auch über den Edge- Zweig (instabil) installieren. |
Passen Sie die Konfiguration in /etc/ldap-passwd-webui.ini
und /etc/conf.d/
an.
Starten Sie den Dienst ldap-passwd-webui:
/etc/init.d/ldap-passwd-webui start
Klonen Sie dieses Repository und installieren Sie Abhängigkeiten:
git clone [email protected]:jirutka/ldap-passwd-webui.git
cd ldap-passwd-webui
pip install -r requirements.txt
Lesen Sie die nächsten Abschnitte, um zu erfahren, wie Sie es ausführen.
Python 3.x
Flasche
ldap3 2.x
Die Konfiguration wird aus der Datei Settings.ini gelesen. Sie können den Speicherort der Einstellungsdatei mithilfe der Umgebungsvariablen CONF_FILE
ändern.
Wenn Sie über Active Directory (oder Samba 4 AD) verfügen, müssen Sie eine verschlüsselte Verbindung (z. B. LDAPS oder StartTLS) verwenden – AD erlaubt keine Passwortänderung über eine unverschlüsselte Verbindung.
Es gibt mehrere Möglichkeiten, es auszuführen:
mit dem integrierten Standard-WSGI-Server basierend auf wsgiref,
unter einem WSGI-Server wie uWSGI, Waitress, Gunicorn, … (empfohlen)
als CGI-Skript.
Führen Sie einfach app.py
aus:
python3 app . py
Dann können Sie über http://localhost:8080 auf die App zugreifen. Der Port und der Host können in der Datei „settings.ini“ geändert werden.
cd ldap-passwd-webui
waitress-serve --listen= * :8080 app:application
Wenn Sie viele Mikro-Apps wie diese haben, ist es meiner Meinung nach etwas übertrieben, jede in einem separaten uWSGI-Prozess auszuführen, nicht wahr? Es ist nicht so bekannt, aber uWSGI ermöglicht das „Mounten“ mehrerer Anwendungen in einem einzigen uWSGI-Prozess und mit einem einzigen Socket.
[uwsgi]
plugins = python3
socket = /run/uwsgi/main.sock
chdir = /var/www/scripts
logger = file:/var/log/uwsgi/main.log
processes = 1
threads = 2
# map URI paths to applications
mount = /admin/ ldap-passwd-webui =ldap-passwd-webui/app.py
# mount = /admin/change-world=change-world/app.py
manage-script-name = true
server {
listen 443 ssl;
server_name example.org;
ssl_certificate /etc/ssl/nginx/nginx.crt;
ssl_certificate_key /etc/ssl/nginx/nginx.key;
# uWSGI scripts
location /admin/ {
uwsgi_pass unix:/run/uwsgi/main.sock;
include uwsgi_params;
}
}
Dieses Projekt ist unter der MIT-Lizenz lizenziert. Den vollständigen Text der Lizenz finden Sie in der LICENSE-Datei.