]> git.ipfire.org Git - thirdparty/freeradius-server.git/commitdiff
Pre-create ldap socket file
authorArran Cudbard-Bell <a.cudbardb@freeradius.org>
Thu, 9 Nov 2023 21:36:35 +0000 (15:36 -0600)
committerGitHub <noreply@github.com>
Thu, 9 Nov 2023 21:36:35 +0000 (15:36 -0600)
scripts/ci/ldap-setup.sh

index d6fb6c3251b1dfe7adb10cba4fb164a14da29566..8fc6e90d1624a520ae63d47cb53e6cbd4baf66c7 100755 (executable)
@@ -1,5 +1,22 @@
 #!/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"
 
@@ -12,14 +29,20 @@ base_dir="/tmp/ldap${suffix}"
 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
 
@@ -61,15 +84,13 @@ openssl rsa -in raddb/certs/rsa/server.key -out "${cert_dir}/serverkey.pem" -pas
 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
@@ -77,7 +98,7 @@ 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..."