#!/bin/bash # # LDAP Service PATH=$HOME/.docker/cli-plugins:/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin config_ldap() { echo -ne "\n* Configuring /federated/apps/ldap container.." spin & SPINPID=$! if [ ! -d "/federated/apps/ldap" ]; then mkdir -p /federated/apps/ldap/data/certs &> /dev/null mkdir -p /federated/apps/ldap/data/root &> /dev/null mkdir -p /federated/apps/ldap/data/var/lib/ldap &> /dev/null mkdir -p /federated/apps/ldap/data/etc/ldap/slap.d &> /dev/null cp /federated/certs/certs/$DOMAIN.crt /federated/certs/private/$DOMAIN.key /federated/apps/ldap/data/certs/ fi LDAPADMINPASS=`echo -n $ADMINPASS | openssl dgst -sha1 -binary | openssl enc -base64 | awk '{print "{SHA}"$0}'` cat > /federated/apps/ldap/docker-compose.yml < /federated/apps/ldap/.env < /federated/apps/ldap/.ldap.secret chmod 600 /federated/apps/ldap/.ldap.secret cat > /federated/apps/ldap/data/root/ldap.ldif < /federated/apps/ldap/data/root/ldap.sh <<'EOF' #!/bin/sh PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin if [ ! -f .initialized ]; then echo "Importing default scheme ldap.ldif into LDAP" slapadd -v -l /root/ldap.ldif [ $? -ne 0 ] && echo "FAILED importing ldap.dif" && exit 2 touch .initialized fi EOF chmod +x /federated/apps/ldap/data/root/ldap.sh kill -9 $SPINPID &> /dev/null echo -ne "done." } start_ldap() { # Grab the container IP from docker-compose above SERVICE_IP=`grep ipv4_address /federated/apps/ldap/docker-compose.yml | awk '{ print $2 }'` # Start service with command to make sure it's up before proceeding start_service "ldap" "nc -z $SERVICE_IP 636 &> /dev/null" # Run our ldap.sh script inside the ldap container # This imports the inital LDAP configuration docker exec ldap /root/ldap.sh &> /dev/null [ $? -ne 0 ] && fail "Couldn't run ldap.sh inside ldap container" kill -9 $SPINPID &> /dev/null echo -ne "done." }