|  | @@ -1,3 +1,60 @@
 | 
	
		
			
				|  |  | +#!/bin/bash -e
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +FIRST_START_DONE="/etc/docker-openldap-first-start-done"
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# container first start
 | 
	
		
			
				|  |  | +if [ ! -e "$FIRST_START_DONE" ]; then
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  # database is uninitialized
 | 
	
		
			
				|  |  | +  if [ -z "$(ls -A /var/lib/ldap)" ]; then
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    cat <<EOF | debconf-set-selections
 | 
	
		
			
				|  |  | +slapd slapd/internal/generated_adminpw password ${LDAP_ADMIN_PASSWORD}
 | 
	
		
			
				|  |  | +slapd slapd/internal/adminpw password ${LDAP_ADMIN_PASSWORD}
 | 
	
		
			
				|  |  | +slapd slapd/password2 password ${LDAP_ADMIN_PASSWORD}
 | 
	
		
			
				|  |  | +slapd slapd/password1 password ${LDAP_ADMIN_PASSWORD}
 | 
	
		
			
				|  |  | +slapd slapd/dump_database_destdir string /var/backups/slapd-VERSION
 | 
	
		
			
				|  |  | +slapd slapd/domain string ${LDAP_DOMAIN}
 | 
	
		
			
				|  |  | +slapd shared/organization string ${LDAP_ORGANISATION}
 | 
	
		
			
				|  |  | +slapd slapd/backend string HDB
 | 
	
		
			
				|  |  | +slapd slapd/purge_database boolean true
 | 
	
		
			
				|  |  | +slapd slapd/move_old_database boolean true
 | 
	
		
			
				|  |  | +slapd slapd/allow_ldap_v2 boolean false
 | 
	
		
			
				|  |  | +slapd slapd/no_configuration boolean false
 | 
	
		
			
				|  |  | +slapd slapd/dump_database select when needed
 | 
	
		
			
				|  |  | +EOF
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    dpkg-reconfigure -f noninteractive slapd
 | 
	
		
			
				|  |  | +  fi
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  #fix file permissions
 | 
	
		
			
				|  |  | +  chown -R openldap:openldap /var/lib/ldap 
 | 
	
		
			
				|  |  | +  chown -R openldap:openldap /etc/ldap
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  # start OpenLDAP
 | 
	
		
			
				|  |  | +  slapd -h "ldapi:///" -u openldap -g openldap 
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  # TLS config
 | 
	
		
			
				|  |  | +  if [ "${USE_TLS,,}" == "true" ]; then
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    # check certificat and key or create it
 | 
	
		
			
				|  |  | +    /sbin/ssl-kit "/osixia/slapd/$SSL_CRT_FILENAME" "/osixia/slapd/$SSL_KEY_FILENAME" --ca-crt=/osixia/slapd/$SSL_CA_CRT_FILENAME --gnutls
 | 
	
		
			
				|  |  | +    chown openldap:openldap -R /osixia/slapd
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  fi
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  # stop OpenLDAP
 | 
	
		
			
				|  |  | +  kill -INT `cat /run/slapd/slapd.pid`
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  touch $FIRST_START_DONE
 | 
	
		
			
				|  |  | +fi
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +exit 0
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  #!/bin/sh
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  set -eu
 | 
	
	
		
			
				|  | @@ -18,27 +75,9 @@ set -x
 | 
	
		
			
				|  |  |  if [ ! -e /var/lib/ldap/docker_bootstrapped ]; then
 | 
	
		
			
				|  |  |    status "configuring slapd database"
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -  cat <<EOF | debconf-set-selections
 | 
	
		
			
				|  |  | -slapd slapd/internal/generated_adminpw password ${LDAP_ADMIN_PWD}
 | 
	
		
			
				|  |  | -slapd slapd/internal/adminpw password ${LDAP_ADMIN_PWD}
 | 
	
		
			
				|  |  | -slapd slapd/password2 password ${LDAP_ADMIN_PWD}
 | 
	
		
			
				|  |  | -slapd slapd/password1 password ${LDAP_ADMIN_PWD}
 | 
	
		
			
				|  |  | -slapd slapd/dump_database_destdir string /var/backups/slapd-VERSION
 | 
	
		
			
				|  |  | -slapd slapd/domain string ${LDAP_DOMAIN}
 | 
	
		
			
				|  |  | -slapd shared/organization string ${LDAP_ORGANISATION}
 | 
	
		
			
				|  |  | -slapd slapd/backend string HDB
 | 
	
		
			
				|  |  | -slapd slapd/purge_database boolean true
 | 
	
		
			
				|  |  | -slapd slapd/move_old_database boolean true
 | 
	
		
			
				|  |  | -slapd slapd/allow_ldap_v2 boolean false
 | 
	
		
			
				|  |  | -slapd slapd/no_configuration boolean false
 | 
	
		
			
				|  |  | -slapd slapd/dump_database select when needed
 | 
	
		
			
				|  |  | -EOF
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -  dpkg-reconfigure -f noninteractive slapd
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -  # Enable access only from docker default network and localhost
 | 
	
		
			
				|  |  | -  echo "slapd: 172.17.0.0/255.255.0.0 127.0.0.1 : ALLOW" >> /etc/hosts.allow
 | 
	
		
			
				|  |  | -  echo "slapd: ALL : DENY" >> /etc/hosts.allow
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |    touch /var/lib/ldap/docker_bootstrapped
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -126,4 +165,3 @@ fi
 | 
	
		
			
				|  |  |  status "starting slapd on default port 389"
 | 
	
		
			
				|  |  |  set -x
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -exec /usr/sbin/slapd -h "ldap:///" -u openldap -g openldap -d -1
 |