#!/bin/bash set -e echo "=== Container status ===" docker ps --filter name=databaselist --format '{{.Names}} {{.Status}}' echo "=== LDAP extension ===" docker exec databaselist php -m | grep -i ldap echo "=== Route ===" docker exec databaselist php artisan route:list 2>&1 | grep ldap-users echo "=== Health ===" curl -sf -o /dev/null -w "localhost /up: %{http_code}\n" http://127.0.0.1:8091/up echo "=== HTTPS login + ldap-users ===" curl -sk -c /tmp/ct.txt https://databaselist.gisportal.id/login \ --resolve databaselist.gisportal.id:443:127.0.0.1 -o /tmp/lt.html TOKEN=$(grep -oP 'name="_token" value="\K[^"]+' /tmp/lt.html) curl -sk -b /tmp/ct.txt -c /tmp/ct.txt -X POST https://databaselist.gisportal.id/login \ --resolve databaselist.gisportal.id:443:127.0.0.1 \ -d "username=admin&password=geonet\$123&_token=${TOKEN}" -o /dev/null -w "post_login: %{http_code}\n" curl -sk -b /tmp/ct.txt https://databaselist.gisportal.id/ldap-users \ --resolve databaselist.gisportal.id:443:127.0.0.1 -o /tmp/lu.html -w "ldap_users: %{http_code}\n" grep -c 'LDAP Users' /tmp/lu.html grep -Eo 'LDAP bind failed|not configured|Unable to load LDAP|>[0-9]+ users<' /tmp/lu.html | head -5 echo "=== LDAP bind test from container ===" docker exec databaselist php -r ' $host = getenv("LDAP_HOST"); $dn = getenv("LDAP_BIND_DN"); $pw = getenv("LDAP_BIND_PASSWORD"); $base = getenv("LDAP_BASE_DN"); $c = ldap_connect("ldap://{$host}:389"); ldap_set_option($c, LDAP_OPT_PROTOCOL_VERSION, 3); ldap_set_option($c, LDAP_OPT_REFERRALS, 0); if (@ldap_bind($c, $dn, $pw)) { $r = @ldap_search($c, $base, "(&(objectCategory=person)(objectClass=user))", ["samaccountname"], 0, 3); $e = ldap_get_entries($c, $r); echo "bind: OK, sample_count=" . ($e["count"] ?? 0) . PHP_EOL; } else { echo "bind: FAIL" . PHP_EOL; } '