*: add standup script for LDAP
This commit is contained in:
98
scripts/slapd.sh
Executable file
98
scripts/slapd.sh
Executable file
@@ -0,0 +1,98 @@
|
||||
#!/bin/bash -e
|
||||
|
||||
if ! [[ "$0" =~ "scripts/slapd.sh" ]]; then
|
||||
echo "This script must be run in a toplevel dex directory"
|
||||
exit 255
|
||||
fi
|
||||
|
||||
command -v slapd >/dev/null 2>&1 || {
|
||||
echo >&2 "OpenLDAP not installed. Install using one of the following commands:
|
||||
|
||||
brew install openldap
|
||||
|
||||
sudo dnf -y install openldap-servers openldap-clients
|
||||
|
||||
sudo apt-get install slapd ldap-utils
|
||||
"; exit 1;
|
||||
}
|
||||
|
||||
TEMPDIR=$( mktemp -d )
|
||||
|
||||
trap "{ rm -r $TEMPDIR ; exit 255; }" EXIT
|
||||
|
||||
CONFIG_DIR=$PWD/connector/ldap/testdata
|
||||
|
||||
# Include the schema files in the connector test directory. Installing OpenLDAP installs
|
||||
# these in /etc somewhere, but the path isn't reliable across installs. Easier to ship
|
||||
# the schema files directly.
|
||||
for config in $( ls $CONFIG_DIR/*.schema ); do
|
||||
echo "include $config" >> $TEMPDIR/config
|
||||
done
|
||||
|
||||
DATA_DIR=$TEMPDIR/data
|
||||
mkdir $DATA_DIR
|
||||
|
||||
# Config template copied from:
|
||||
# http://www.zytrax.com/books/ldap/ch5/index.html#step1-slapd
|
||||
cat << EOF >> $TEMPDIR/config
|
||||
# MODULELOAD definitions
|
||||
# not required (comment out) before version 2.3
|
||||
moduleload back_bdb.la
|
||||
|
||||
database bdb
|
||||
suffix "dc=example,dc=org"
|
||||
|
||||
# root or superuser
|
||||
rootdn "cn=admin,dc=example,dc=org"
|
||||
rootpw admin
|
||||
# The database directory MUST exist prior to running slapd AND
|
||||
# change path as necessary
|
||||
directory $DATA_DIR
|
||||
|
||||
# Indices to maintain for this directory
|
||||
# unique id so equality match only
|
||||
index uid eq
|
||||
# allows general searching on commonname, givenname and email
|
||||
index cn,gn,mail eq,sub
|
||||
# allows multiple variants on surname searching
|
||||
index sn eq,sub
|
||||
# sub above includes subintial,subany,subfinal
|
||||
# optimise department searches
|
||||
index ou eq
|
||||
# if searches will include objectClass uncomment following
|
||||
# index objectClass eq
|
||||
# shows use of default index parameter
|
||||
index default eq,sub
|
||||
# indices missing - uses default eq,sub
|
||||
index telephonenumber
|
||||
|
||||
# other database parameters
|
||||
# read more in slapd.conf reference section
|
||||
cachesize 10000
|
||||
checkpoint 128 15
|
||||
EOF
|
||||
|
||||
SLAPD_PID=""
|
||||
trap "kill $SLAPD_PID" SIGINT
|
||||
|
||||
# Background the LDAP daemon so we can run an LDAP add command.
|
||||
slapd \
|
||||
-d any \
|
||||
-h "ldap://localhost:10389/" \
|
||||
-f $TEMPDIR/config &
|
||||
SLAPD_PID=$!
|
||||
|
||||
# Wait for server to come up.
|
||||
time sleep 1
|
||||
|
||||
# Seed the initial set of users. Edit these values to change the initial
|
||||
# set of users.
|
||||
ldapadd \
|
||||
-x \
|
||||
-D "cn=admin,dc=example,dc=org" \
|
||||
-w admin \
|
||||
-H ldap://localhost:10389/ \
|
||||
-f $PWD/examples/config-ldap.ldif
|
||||
|
||||
# Wait for slapd to exit.
|
||||
wait $SLAPD_PID
|
||||
Reference in New Issue
Block a user