diff --git a/README.md b/README.md index d7c2b13..b2f3066 100644 --- a/README.md +++ b/README.md @@ -61,6 +61,16 @@ allows password protected access to the `dn=config` branch. This helps to reconfigure the server without interruption (read the [official documentation](http://www.openldap.org/doc/admin24/guide.html#Configuring%20slapd)). +One can load additional schemas provided in the `slapd` package that are not +installed using the + + SLAPD_ADDITIONAL_SCHEMAS + +environment variable with comma-separated enties. As of writing these +instructions, there are the following additional schemas available: +`collective`, `corba`, `duaconf`, `dyngroup`, `java`, `misc`, `openldap`, `pmi` +and `ppolicy`. + After the first start of the image (and the initial configuration), these envirnonment variables are not evaluated anymore. diff --git a/entrypoint.sh b/entrypoint.sh index 788b933..7f7d00f 100755 --- a/entrypoint.sh +++ b/entrypoint.sh @@ -50,19 +50,25 @@ EOF sed -i "s/^#BASE.*/${base_string}/g" /etc/ldap/ldap.conf - if [[ -n "$SLAPD_CONFIG_PASSWORD" ]]; then + if [[ -n "$SLAPD_CONFIG_PASSWORD" ]]; then password_hash=`slappasswd -s "${SLAPD_CONFIG_PASSWORD}"` sed_safe_password_hash=${password_hash//\//\\\/} - echo $sed_safe_password_hash - slapcat -n0 -F /etc/ldap/slapd.d -l /tmp/config.ldif sed -i "s/\(olcRootDN: cn=admin,cn=config\)/\1\nolcRootPW: ${sed_safe_password_hash}/g" /tmp/config.ldif rm -rf /etc/ldap/slapd.d/* slapadd -n0 -F /etc/ldap/slapd.d -l /tmp/config.ldif >/dev/null 2>&1 fi + if [[ -n "$SLAPD_ADDITIONAL_SCHEMAS" ]]; then + IFS=","; declare -a schemas=($SLAPD_ADDITIONAL_SCHEMAS) + + for schema in "${schemas[@]}"; do + slapadd -n0 -F /etc/ldap/slapd.d -l "/etc/ldap/schema/${schema}.ldif" >/dev/null 2>&1 + done + fi + mv /etc/ldap /var/lib/ldap/config ln -s /var/lib/ldap/config /etc/ldap fi