blob: c1319898b2ca18b0196e1a26a36913f47d39038e (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
|
#!/bin/sh
# vim:sw=4:et:
set -ex
slapd_data_dir=$1
tcp_port=$2
pidfile="$slapd_data_dir/slapd.pid"
uri="ldap://localhost:$tcp_port"
binddn="cn=config"
passwd=secret
case "$(uname -s)" in
Linux)
slapd=/usr/sbin/slapd
modulepath=/usr/lib/ldap
schema_dir=/etc/ldap/schema
;;
FreeBSD)
slapd=/usr/local/libexec/slapd
modulepath=/usr/local/libexec/openldap
schema_dir=/usr/local/etc/openldap/schema
;;
*)
exit 1
;;
esac
# --------------------------------------------------------------------
# slapd(8) configuration + start
# --------------------------------------------------------------------
rm -rf "$slapd_data_dir"
mkdir -p "$slapd_data_dir"
conf_file=$slapd_data_dir/slapd.conf
cat <<EOF > "$conf_file"
include $schema_dir/core.schema
include $schema_dir/cosine.schema
include $schema_dir/nis.schema
include $schema_dir/inetorgperson.schema
pidfile $pidfile
modulepath $modulepath
loglevel 7
database config
rootdn "$binddn"
rootpw $passwd
EOF
cat "$conf_file"
conf_dir=$slapd_data_dir/slapd.d
mkdir -p "$conf_dir"
# Start slapd(8).
"$slapd" \
-f "$conf_file" \
-F "$conf_dir" \
-h "$uri"
auth="-x -D $binddn -w $passwd"
# We wait for the server to start.
for seconds in 1 2 3 4 5 6 7 8 9 10; do
ldapsearch $auth -H "$uri" -LLL -b cn=config dn && break;
sleep 1
done
# --------------------------------------------------------------------
# Load the example LDIFs for the testsuite.
# --------------------------------------------------------------------
script_dir=$(cd "$(dirname "$0")" && pwd)
example_ldif_dir="$script_dir/../../example"
example_data_dir="$slapd_data_dir/example"
mkdir -p "$example_data_dir"
# We update the hard-coded database directory with the one we computed
# here, so the data is located inside the test directory.
sed -E -e "s,^olcDbDirectory:.*,olcDbDirectory: $example_data_dir," \
< "$example_ldif_dir/global.ldif" | \
ldapadd $auth -H "$uri"
# We remove the module path from the example LDIF as it was already
# configured.
sed -E -e "s,^olcModulePath:.*,olcModulePath: $modulepath," \
< "$example_ldif_dir/memberof_init.ldif" | \
ldapadd $auth -H "$uri"
ldapmodify $auth -H "$uri" -f "$example_ldif_dir/refint_1.ldif"
ldapadd $auth -H "$uri" -f "$example_ldif_dir/refint_2.ldif"
ldapsearch $auth -H "$uri" -LLL -b cn=config dn
echo SLAPD_PID=$(cat "$pidfile")
|