#!/bin/bash # # Federated Computer LDAP Service PATH=$HOME/.docker/cli-plugins:/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin config_ldap() { echo -ne "\n* Configuring fstack/ldap container.." spin & SPINPID=$! if [ ! -d "fstack/ldap" ]; then mkdir -p fstack/ldap/data &> /dev/null mkdir -p fstack/ldap/data/var/lib/ldap &> /dev/null mkdir -p fstack/ldap/data/etc/ldap/slap.d &> /dev/null mkdir -p fstack/ldap/data/certs &> /dev/null mkdir -p fstack/ldap/data/root &> /dev/null cp -rf fstack/dns/data/etc/letsencrypt/archive/$DOMAIN/*.pem fstack/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 > fstack/ldap/docker-compose.yml < fstack/ldap/data/root/ldap.ldif < fstack/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 fstack/ldap/data/root/ldap.sh kill -9 $SPINPID &> /dev/null echo -ne "done." } start_ldap() { # Start fstack/ldap with output to /dev/null echo -ne "\n* Starting fstack/ldap service.." spin & SPINPID=$! if [ $DEBUG ]; then # Start fstack/ldap with output to console for debug docker-compose -f fstack/ldap/docker-compose.yml -p ldap up [ $? -eq 0 ] && echo -ne "done.\n" || fail "There was a problem starting service fstack/ldap" else docker-compose -f fstack/ldap/docker-compose.yml -p ldap up -d &> /dev/null # Keep trying ldap port to make sure it's up # before we proceed RETRY="25" while [ $RETRY -gt 0 ]; do nc -z 172.99.0.11 636 &> /dev/null if [ $? -eq 0 ]; then break else if [ "$RETRY" == 1 ]; then docker-compose -f fstack/ldap/docker-compose.yml -p ldap down &> /dev/null kill -9 $SPINPID &> /dev/null fail "There was a problem starting service fstack/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." }