#!/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 &> /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 mkdir -p /federated/apps/ldap/data/certs &> /dev/null mkdir -p /federated/apps/ldap/data/root &> /dev/null cp -rf /federated/apps/dns/data/etc/letsencrypt/archive/$DOMAIN/*.pem /federated/apps/ldap/data/certs/ fi DOMAIN_ARRAY=(${DOMAIN//./ }) DOMAIN_FIRST=${DOMAIN_ARRAY[0]} DOMAIN_LAST=${DOMAIN_ARRAY[1]} 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() { # Start /federated/apps/ldap with output to /dev/null echo -ne "\n* Starting /federated/apps/ldap service.." spin & SPINPID=$! if [ $DEBUG ]; then # Start /federated/apps/ldap with output to console for debug docker-compose -f /federated/apps/ldap/docker-compose.yml -p ldap up [ $? -eq 0 ] && echo -ne "done.\n" || fail "There was a problem starting service /federated/apps/ldap" else docker-compose -f /federated/apps/ldap/docker-compose.yml -p ldap up -d &> /dev/null # Keep trying ldap port to make sure it's up # before we proceed RETRY="35" while [ $RETRY -gt 0 ]; do nc -z 172.99.0.12 636 &> /dev/null if [ $? -eq 0 ]; then break else if [ "$RETRY" == 1 ]; then docker-compose -f /federated/apps/ldap/docker-compose.yml -p ldap down &> /dev/null kill -9 $SPINPID &> /dev/null fail "There was a problem starting service /federated/apps/ldap\nCheck the output of 'docker logs ldap' or turn on\ndebug with -d" fi ((RETRY--)) sleep 7 fi done fi # Run our ldap.sh script inside the ldap container # This imports the inital LDAP configuration docker exec -it 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." }