O objetivo deste projeto é fornecer um formulário web muito simples para que os usuários possam alterar sua senha armazenada no LDAP ou Active Directory (Samba 4 AD). Ele é construído com Bottle, uma microestrutura web WSGI para Python.
Instale o pacote ldap-passwd-webui-waitress do repositório da comunidade Alpine:
apk add ldap-passwd-webui-waitress
Importante | Este pacote está em Alpine estável desde a v3.7. Você também pode instalá-lo a partir de um branch edge (instável). |
Ajuste a configuração em /etc/ldap-passwd-webui.ini
e /etc/conf.d/
.
Inicie o serviço ldap-passwd-webui:
/etc/init.d/ldap-passwd-webui start
Clone este repositório e instale as dependências:
git clone [email protected]:jirutka/ldap-passwd-webui.git
cd ldap-passwd-webui
pip install -r requirements.txt
Leia as próximas seções para saber como executá-lo.
Python 3.x
garrafa
ldap3 2.x
A configuração é lida no arquivo settings.ini. Você pode alterar a localização do arquivo de configurações usando a variável de ambiente CONF_FILE
.
Se você tiver Active Directory (ou Samba 4 AD), deverá usar uma conexão criptografada (ou seja, LDAPS ou StartTLS) – o AD não permite alteração de senha por meio de conexão não criptografada.
Existem várias maneiras de executá-lo:
com o servidor WSGI padrão integrado baseado em wsgiref,
em um servidor WSGI como uWSGI, Waitress, Gunicorn,… (recomendado)
como um script CGI.
Basta executar o app.py
:
python3 app . py
Então você pode acessar o aplicativo em http://localhost:8080. A porta e o host podem ser alterados em settings.ini.
cd ldap-passwd-webui
waitress-serve --listen= * :8080 app:application
Se você tem muitos micro-aplicativos como este, é um exagero da IMO executar cada um em um processo uWSGI separado, não é? Não é tão conhecido, mas o uWSGI permite “montar” múltiplas aplicações em um único processo uWSGI e com um único soquete.
[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;
}
}
Este projeto está licenciado sob licença MIT. Para o texto completo da licença, consulte o arquivo LICENSE.