Files
wizarr/docker-compose.test.yml
Matthieu B 498886c06a fix(ldap): address security, correctness, and code quality issues
Security:
- Fix XSS in HTMX responses by replacing f-string HTML with Jinja partials
- Fix TLS verify_cert not being applied (add Tls config to ldap3 Server)
- Fix password_hash NOT NULL conflict for LDAP-only admin accounts
- Fix should_create_ldap_user defaulting to True for existing invitations

Correctness:
- Fix DN reconstruction fragility using escape_rdn for special characters
- Fix connection leaks with try/finally in all LDAPClient methods
- Fix sync interval logic (check FLASK_ENV not WIZARR_ENABLE_SCHEDULER)
- Only register LDAP sync job when LDAP is actually configured
- Make find_user_dn and service_connection public API methods

Cleanup:
- Squash 5 incremental LDAP migrations into single 20251226_add_ldap_support
- Remove duplicate imports/queries in auth routes
- Replace f-string logging with %s formatting
- Extract inline HTML to Jinja template partials
2026-03-29 15:58:09 +02:00

83 lines
2.2 KiB
YAML

version: '3.8'
services:
# Jellyfin test server - Fresh container, configured via API
jellyfin-test:
image: jellyfin/jellyfin:latest
container_name: wizarr-jellyfin-test
ports:
- "8096:8096"
environment:
- JELLYFIN_PublishedServerUrl=http://localhost:8096
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8096/System/Info/Public"]
interval: 30s
timeout: 10s
retries: 5
start_period: 60s
# Plex test server - Fresh container, configured via API
plex-test:
image: plexinc/pms-docker:latest
container_name: wizarr-plex-test
ports:
- "32400:32400"
environment:
- PLEX_UID=1000
- PLEX_GID=1000
- TZ=UTC
# Will be claimed via API using test account
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:32400/identity"]
interval: 30s
timeout: 10s
retries: 5
start_period: 120s
# Emby test server - Fresh container, configured via API
emby-test:
image: emby/embyserver:latest
container_name: wizarr-emby-test
ports:
- "8097:8096"
environment:
- UID=1000
- GID=1000
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8096/emby/System/Info/Public"]
interval: 30s
timeout: 10s
retries: 5
start_period: 60s
# AudiobookShelf test server - Fresh container, configured via API
audiobookshelf-test:
image: ghcr.io/advplyr/audiobookshelf:latest
container_name: wizarr-abs-test
ports:
- "13378:80"
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:80/healthcheck"]
interval: 30s
timeout: 10s
retries: 5
start_period: 30s
# LLDAP test server - Lightweight LDAP for testing authentication
lldap-test:
image: lldap/lldap:stable
container_name: wizarr-lldap-test
ports:
- "3890:3890" # LDAP port
- "17170:17170" # Web UI
environment:
- LLDAP_JWT_SECRET=test_jwt_secret_change_in_production
- LLDAP_LDAP_USER_PASS=test_admin_password
- LLDAP_LDAP_BASE_DN=dc=wizarr,dc=test
healthcheck:
test: ["CMD", "sh", "-c", "nc -z localhost 3890"]
interval: 10s
timeout: 5s
retries: 5
start_period: 30s