Windows DNS (WinRM): - New dns_service.py: create/delete A-records via PowerShell over WinRM (NTLM) - Idempotent create (removes existing record first), graceful delete - DNS failures are non-fatal — deployment continues, error logged - test-dns endpoint: GET /api/settings/test-dns - Integrated into deploy_customer() and undeploy_customer() LDAP / Active Directory auth: - New ldap_service.py: service-account bind + user search + user bind (ldap3) - Optional AD group restriction via ldap_group_dn - Login flow: LDAP first → local fallback (prevents admin lockout) - LDAP users auto-created with auth_provider="ldap" and role="viewer" - test-ldap endpoint: GET /api/settings/test-ldap - reset-password/reset-mfa guards extended to block LDAP users All credentials (dns_password, ldap_bind_password) encrypted with Fernet. New DB columns added via backwards-compatible migrations. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
29 lines
524 B
Plaintext
29 lines
524 B
Plaintext
# NetBird MSP Appliance - Python Dependencies
|
|
fastapi==0.104.1
|
|
uvicorn[standard]==0.24.0
|
|
sqlalchemy==2.0.23
|
|
aiosqlite==0.19.0
|
|
pydantic==2.5.2
|
|
pydantic-settings==2.1.0
|
|
python-jose[cryptography]==3.3.0
|
|
passlib[bcrypt]==1.7.4
|
|
bcrypt==4.1.2
|
|
cryptography==41.0.7
|
|
python-multipart==0.0.6
|
|
httpx==0.26.0
|
|
jinja2==3.1.2
|
|
docker==7.0.0
|
|
requests<2.32.0
|
|
urllib3<2
|
|
psutil==5.9.7
|
|
pyyaml==6.0.1
|
|
msal==1.28.0
|
|
pyotp==2.9.0
|
|
qrcode[pil]==7.4.2
|
|
slowapi==0.1.9
|
|
pywinrm>=0.4.3
|
|
ldap3>=2.9.1
|
|
pytest==7.4.3
|
|
pytest-asyncio==0.23.2
|
|
pytest-httpx==0.28.0
|