#!/usr/bin/env bash
+urlencode() {
+ local string="${1}"
+ local strlen=${#string}
+ local encoded=""
+ local pos c o
+
+ for (( pos=0 ; pos<strlen ; pos++ )); do
+ c=${string:$pos:1}
+ case "$c" in
+ [-_.~a-zA-Z0-9] ) o="${c}" ;;
+ * ) printf -v o '%%%02x' "'$c"
+ esac
+ encoded+="${o}"
+ done
+ echo "${encoded}"
+}
+
# Allow setup script to work with homebrew too
export PATH="/usr/local/opt/openldap/libexec:/opt/homebrew/opt/openldap/libexec:/opt/symas/lib:$PATH"
cert_dir="${base_dir}/certs"
data_dir="${base_dir}/db"
schema_dir="${base_dir}/schema"
+socket_path="${base_dir}/socket"
+socket_url=ldapi://$(urlencode "${socket_path}")
-echo "base_dir \"${data_dir}\""
+echo "base_dir \"${base_dir}\""
# Clean out any existing DB
rm -rf "${data_dir}"
+
# Create directory we can write DB files to
mkdir -p "${data_dir}"
+# Ensure the unix socket is created with the correct permissions
+touch "${socket_path}"
+
# Change db location to /tmp as we can't write to /var
sed -i -e "s/\/var\/lib\/ldap/\/tmp\/ldap${suffix}\/db/" src/tests/salt-test-server/salt/ldap/base${suffix}.ldif
if [ -z "${suffix}" ]; then
ldap_port="3890"
ldaps_port="6360"
- ldap_socket="ldapi://%2Ftmp%2Fldap%2Fsocket"
else
ldap_port=$((3890+${suffix}))
ldaps_port=$((6360+${suffix}))
- ldap_socket="ldapi://%2Ftmp%2Fldap${suffix}%2Fsocket"
fi
# Start slapd
-slapd -d any -h "ldap://127.0.0.1:${ldap_port}/ ldaps://127.0.0.1:${ldaps_port}/ ${ldap_socket}" -f scripts/ci/ldap/slapd${suffix}.conf 2>&1 > ${base_dir}/slapd.log &
+slapd -d any -h "ldap://127.0.0.1:${ldap_port}/ ldaps://127.0.0.1:${ldaps_port}/ ${socket_url}" -f scripts/ci/ldap/slapd${suffix}.conf 2>&1 > ${base_dir}/slapd.log &
# Wait for LDAP to start
sleep 1
# Add test data
count=0
while [ $count -lt 10 ] ; do
- if ldapadd -v -x -H "${ldap_socket}" -D "cn=admin,cn=config" -w secret -f src/tests/salt-test-server/salt/ldap/base${suffix}.ldif ; then
+ if ldapadd -v -x -H "${socket_url}" -D "cn=admin,cn=config" -w secret -f src/tests/salt-test-server/salt/ldap/base${suffix}.ldif ; then
break 2
else
echo "ldap add failed, retrying..."