44 lines
1.2 KiB
Bash
44 lines
1.2 KiB
Bash
#!/bin/sh
|
|
|
|
manager_dn=$(cat "${__object}/parameter/manager-dn")
|
|
manager_password=$(cat "${__object}/parameter/manager-password")
|
|
description=$(cat "${__object}/parameter/description")
|
|
suffix=$(cat "${__object}/parameter/suffix")
|
|
suffix_dc=$(printf "%s" "${suffix}" | awk -F',' '{print $1}' | awk -F'=' '{print $2}')
|
|
|
|
SLAPD_IPC=$(tr '\n' ' ' < "${__object}/parameter/slapd-url" | awk '{ print $1}')
|
|
|
|
cat <<DONE # | tee /dev/stderr
|
|
# Restart service
|
|
service slapd restart
|
|
# It can sometimes take a tiny bit to bind
|
|
sleep 1
|
|
# Create or update base object
|
|
if ldapsearch -xZ -D "${manager_dn}" -w "${manager_password}" -H '${SLAPD_IPC}' -b '${suffix}' -s base 2>&1 > /dev/null; then
|
|
# Already exists, use ldapmodify
|
|
ldapmodify -xZ -D "${manager_dn}" -w "${manager_password}" -H '${SLAPD_IPC}' <<EOF
|
|
dn: ${suffix}
|
|
changetype: modify
|
|
replace: objectClass
|
|
objectClass: top
|
|
objectClass: dcObject
|
|
objectClass: organization
|
|
-
|
|
replace: o
|
|
o: ${description}
|
|
-
|
|
replace: dc
|
|
dc: ${suffix_dc}
|
|
EOF
|
|
else
|
|
# Does not exist, use ldapadd
|
|
ldapadd -xZ -D "${manager_dn}" -w "${manager_password}" -H '${SLAPD_IPC}' <<EOF
|
|
dn: ${suffix}
|
|
objectClass: top
|
|
objectClass: dcObject
|
|
objectClass: organization
|
|
o: ${description}
|
|
dc: ${suffix_dc}
|
|
EOF
|
|
fi
|
|
DONE
|