จุดมุ่งหมายของโปรเจ็กต์นี้คือการสร้างเว็บฟอร์มที่เรียบง่ายให้ผู้ใช้สามารถเปลี่ยนรหัสผ่านที่จัดเก็บไว้ใน LDAP หรือ Active Directory (Samba 4 AD) สร้างด้วย Bottle ซึ่งเป็นไมโครเว็บเฟรมเวิร์ก WSGI สำหรับ Python
ติดตั้งแพ็คเกจ ldap-passwd-webui-waitress จากที่เก็บชุมชนของ Alpine:
apk add ldap-passwd-webui-waitress
สำคัญ | แพ็คเกจนี้อยู่ใน Alpine เสถียรตั้งแต่ v3.7 คุณยังสามารถติดตั้งได้จากสาขา Edge (ไม่เสถียร) |
ปรับการกำหนดค่าใน /etc/ldap-passwd-webui.ini
และ /etc/conf.d/
เริ่มบริการ ldap-passwd-webui:
/etc/init.d/ldap-passwd-webui start
โคลนที่เก็บนี้และติดตั้งการขึ้นต่อกัน:
git clone [email protected]:jirutka/ldap-passwd-webui.git
cd ldap-passwd-webui
pip install -r requirements.txt
อ่านหัวข้อถัดไปเพื่อเรียนรู้วิธีเรียกใช้
หลาม 3.x
ขวด
ldap3 2.x
การกำหนดค่าถูกอ่านจากไฟล์ settings.ini คุณสามารถเปลี่ยนตำแหน่งของไฟล์การตั้งค่าได้โดยใช้ตัวแปรสภาพแวดล้อม CONF_FILE
หากคุณมี Active Directory (หรือ Samba 4 AD) คุณ ต้อง ใช้การเชื่อมต่อที่เข้ารหัส (เช่น LDAPS หรือ StartTLS) โดย AD ไม่อนุญาตให้เปลี่ยนรหัสผ่านผ่านการเชื่อมต่อที่ไม่ได้เข้ารหัส
มีหลายวิธีในการรัน:
ด้วยเซิร์ฟเวอร์ WSGI เริ่มต้นในตัวซึ่งใช้ wsgiref
ภายใต้เซิร์ฟเวอร์ WSGI เช่น uWSGI, พนักงานเสิร์ฟ, Gunicorn, … (แนะนำ)
เป็นสคริปต์ CGI
เพียงรัน app.py
:
python3 app . py
จากนั้นคุณสามารถเข้าถึงแอปได้ที่ http://localhost:8080 พอร์ตและโฮสต์อาจมีการเปลี่ยนแปลงใน settings.ini
cd ldap-passwd-webui
waitress-serve --listen= * :8080 app:application
หากคุณมีไมโครแอปจำนวนมากเช่นนี้ IMO ค่อนข้างจะต้องใช้ความพยายามมากเกินไปในการรันแต่ละแอปในกระบวนการ uWSGI แยกกันใช่ไหม แม้จะยังไม่เป็นที่รู้จักนัก แต่ uWSGI อนุญาตให้ "เมานต์" หลายแอปพลิเคชันในกระบวนการ uWSGI เดียวและด้วยซ็อกเก็ตเดียว
[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;
}
}
โครงการนี้ได้รับอนุญาตภายใต้ใบอนุญาต MIT สำหรับข้อความใบอนุญาตฉบับเต็ม โปรดดูไฟล์ LICENSE