Le but de ce projet est de fournir un formulaire Web très simple permettant aux utilisateurs de modifier leur mot de passe stocké dans LDAP ou Active Directory (Samba 4 AD). Il est construit avec Bottle, un micro-framework Web WSGI pour Python.
Installez le package ldap-passwd-webui-waitress à partir du référentiel communautaire d'Alpine :
apk add ldap-passwd-webui-waitress
Important | Ce package est dans Alpine stable depuis la v3.7. Vous pouvez également l'installer à partir de la branche Edge (instable). |
Ajustez la configuration dans /etc/ldap-passwd-webui.ini
et /etc/conf.d/
.
Démarrez le service ldap-passwd-webui :
/etc/init.d/ldap-passwd-webui start
Clonez ce dépôt et installez les dépendances :
git clone [email protected]:jirutka/ldap-passwd-webui.git
cd ldap-passwd-webui
pip install -r requirements.txt
Lisez les sections suivantes pour savoir comment l'exécuter.
Python 3.x
bouteille
ldap3 2.x
La configuration est lue à partir du fichier settings.ini. Vous pouvez modifier l'emplacement du fichier de paramètres à l'aide de la variable d'environnement CONF_FILE
.
Si vous disposez d'Active Directory (ou Samba 4 AD), vous devez utiliser une connexion cryptée (c'est-à-dire LDAPS ou StartTLS) – AD ne permet pas de modifier le mot de passe via une connexion non cryptée.
Il existe plusieurs façons de l'exécuter :
avec le serveur WSGI par défaut intégré basé sur wsgiref,
sous un serveur WSGI comme uWSGI, Waitress, Gunicorn, … (recommandé)
en tant que script CGI.
Exécutez simplement le app.py
:
python3 app . py
Ensuite, vous pouvez accéder à l'application sur http://localhost:8080. Le port et l'hôte peuvent être modifiés dans settings.ini.
cd ldap-passwd-webui
waitress-serve --listen= * :8080 app:application
Si vous avez de nombreuses micro-applications comme celle-ci, il est un peu exagéré, à mon avis, de les exécuter chacune dans un processus uWSGI distinct, n'est-ce pas ? Ce n'est pas très connu, mais uWSGI permet de « monter » plusieurs applications dans un seul processus uWSGI et avec un seul 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;
}
}
Ce projet est sous licence MIT. Pour le texte complet de la licence, consultez le fichier LICENSE.