mirror of
https://github.com/samba-team/samba.git
synced 2025-02-19 21:57:57 +03:00
r18023: Add support infrusructure for testing against an OpenLDAP server.
This will give a bit more noise on platforms without OpenLDAP (when we run the slaptest check), but it shouldn't be too bad. We don't start the LDAP server or re-provision unless LDAP_TEST is set. Andrew Bartlett (This used to be commit 999d989131f41d0218ec05595c9761aff5bbf5fa)
This commit is contained in:
parent
173d17ab2f
commit
36ca11b00a
source4/script/tests
@ -19,6 +19,8 @@ fi
|
||||
DOMAIN=SAMBADOMAIN
|
||||
USERNAME=administrator
|
||||
REALM=SAMBA.EXAMPLE.COM
|
||||
DNSNAME="samba.example.com"
|
||||
BASEDN="dc=samba,dc=example,dc=com"
|
||||
PASSWORD=penguin
|
||||
SRCDIR=`pwd`
|
||||
ROOT=$USER
|
||||
@ -57,11 +59,15 @@ CERTFILE=$TLSDIR/cert.pem
|
||||
KEYFILE=$TLSDIR/key.pem
|
||||
WINBINDD_SOCKET_DIR=$PREFIX_ABS/winbind_socket
|
||||
CONFIGURATION="--configfile=$CONFFILE"
|
||||
LDAPDIR=$PREFIX_ABS/ldap
|
||||
SLAPD_CONF=$LDAPDIR/slapd.conf
|
||||
export CONFIGURATION
|
||||
export CONFFILE
|
||||
export SLAPD_CONF
|
||||
export PIDDIR
|
||||
|
||||
rm -rf $PREFIX/*
|
||||
mkdir -p $PRIVATEDIR $ETCDIR $PIDDIR $NCALRPCDIR $LOCKDIR $TMPDIR $TLSDIR
|
||||
mkdir -p $PRIVATEDIR $ETCDIR $PIDDIR $NCALRPCDIR $LOCKDIR $TMPDIR $TLSDIR $LDAPDIR/db
|
||||
|
||||
cat >$CONFFILE<<EOF
|
||||
[global]
|
||||
@ -200,6 +206,7 @@ cat >$KRB5_CONFIG<<EOF
|
||||
[domain_realm]
|
||||
.samba.example.com = SAMBA.EXAMPLE.COM
|
||||
EOF
|
||||
export KRB5_CONFIG
|
||||
|
||||
cat >$DHFILE<<EOF
|
||||
-----BEGIN DH PARAMETERS-----
|
||||
@ -267,11 +274,75 @@ cSlMYli1H9MEXH0pQMGv5Qyd0OYIx2DDg96mZ+aFvqSG
|
||||
|
||||
EOF
|
||||
|
||||
export KRB5_CONFIG
|
||||
cat >$SLAPD_CONF <<EOF
|
||||
loglevel 0
|
||||
|
||||
include $LDAPDIR/ad.schema
|
||||
|
||||
pidfile $PIDDIR/slapd.pid
|
||||
argsfile $LDAPDIR/slapd.args
|
||||
|
||||
access to * by * write
|
||||
|
||||
allow update_anon bind_anon_dn
|
||||
|
||||
include $LDAPDIR/modules.conf
|
||||
|
||||
defaultsearchbase "$BASEDN"
|
||||
|
||||
backend bdb
|
||||
database bdb
|
||||
suffix "$BASEDN"
|
||||
directory $LDAPDIR/db
|
||||
index objectClass eq
|
||||
index samAccountName eq
|
||||
|
||||
EOF
|
||||
|
||||
PROVISION_OPTIONS="$CONFIGURATION --host-name=$NETBIOSNAME --host-ip=127.0.0.1"
|
||||
PROVISION_OPTIONS="$PROVISION_OPTIONS --quiet --domain $DOMAIN --realm $REALM"
|
||||
PROVISION_OPTIONS="$PROVISION_OPTIONS --adminpass $PASSWORD --root=$ROOT"
|
||||
$srcdir/bin/smbscript $srcdir/setup/provision $PROVISION_OPTIONS
|
||||
|
||||
LDAPI="ldapi://$LDAPDIR/ldapi"
|
||||
LDAPI_ESCAPE="ldapi://"`echo $LDAPDIR/ldapi | sed 's|/|%2F|g'`
|
||||
export LDAPI
|
||||
export LDAPI_ESCAPE
|
||||
|
||||
#This uses the provision we just did, to read out the schema
|
||||
$srcdir/bin/ad2oLschema $CONFIGURATION -H $PRIVATEDIR/sam.ldb -I $srcdir/setup/schema-map-openldap-2.3 -O $LDAPDIR/ad.schema
|
||||
#Now create an LDAP baseDN
|
||||
$srcdir/bin/smbscript $srcdir/setup/provision $PROVISION_OPTIONS --ldap-base
|
||||
|
||||
OLDPATH=$PATH
|
||||
PATH=/usr/local/sbin:/usr/sbin:/sbin:$PATH
|
||||
export PATH
|
||||
|
||||
MODCONF=$LDAPDIR/modules.conf
|
||||
rm -f $MODCONF
|
||||
touch $MODCONF
|
||||
|
||||
if ! slaptest -u -f $SLAPD_CONF > /dev/null 2>&1; then
|
||||
echo "enabling slapd modules"
|
||||
cat > $MODCONF <<EOF
|
||||
modulepath /usr/lib/ldap
|
||||
moduleload back_bdb
|
||||
EOF
|
||||
fi
|
||||
|
||||
if slaptest -u -f $SLAPD_CONF; then
|
||||
if ! slapadd -f $SLAPD_CONF < $PRIVATEDIR/$DNSNAME.ldif; then
|
||||
echo "slapadd failed"
|
||||
fi
|
||||
|
||||
if ! slaptest -f $SLAPD_CONF; then
|
||||
echo "slaptest after database load failed"
|
||||
fi
|
||||
fi
|
||||
|
||||
PATH=$OLDPATH
|
||||
export PATH
|
||||
|
||||
$srcdir/bin/smbscript $srcdir/setup/provision $CONFIGURATION --host-name=$NETBIOSNAME --host-ip=127.0.0.1 \
|
||||
--quiet --domain $DOMAIN --realm $REALM \
|
||||
--adminpass $PASSWORD --root=$ROOT || exit 1
|
||||
|
||||
cat >$PRIVATEDIR/wins_config.ldif<<EOF
|
||||
dn: name=TORTURE_26,CN=PARTNERS
|
||||
@ -284,3 +355,4 @@ type: 0x3
|
||||
EOF
|
||||
|
||||
$srcdir/bin/ldbadd -H $PRIVATEDIR/wins_config.ldb < $PRIVATEDIR/wins_config.ldif >/dev/null || exit 1
|
||||
|
||||
|
@ -3,7 +3,7 @@
|
||||
|
||||
if [ $# -lt 1 ]
|
||||
then
|
||||
echo "$0 PREFIX"
|
||||
echo "$0 PREFIX TESTS"
|
||||
exit
|
||||
fi
|
||||
|
||||
@ -54,6 +54,16 @@ fi
|
||||
incdir=`dirname $ARG0`
|
||||
. $incdir/test_functions.sh
|
||||
|
||||
#Start slapd before smbd
|
||||
if [ x"$TEST_LDAP" = x"yes" ]; then
|
||||
slapd_start
|
||||
echo -n "LDAP PROVISIONING..."
|
||||
if ! $srcdir/bin/smbscript $srcdir/setup/provision $PROVISION_OPTIONS --ldap-backend=$LDAPI; then
|
||||
echo "LDAP PROVISIONING failed: $srcdir/bin/smbscript $srcdir/setup/provision $PROVISION_OPTIONS --ldap-backend=$LDAPI"
|
||||
exit 1;
|
||||
fi
|
||||
fi
|
||||
|
||||
SMBD_TEST_FIFO="$PREFIX/smbd_test.fifo"
|
||||
export SMBD_TEST_FIFO
|
||||
SMBD_TEST_LOG="$PREFIX/smbd_test.log"
|
||||
@ -100,6 +110,10 @@ failed=$?
|
||||
|
||||
kill `cat $PIDDIR/smbd.pid`
|
||||
|
||||
if [ "$TEST_LDAP"x = "yesx" ]; then
|
||||
kill `cat $PIDDIR/slapd.pid`
|
||||
fi
|
||||
|
||||
END=`date`
|
||||
echo "START: $START ($ARG0)";
|
||||
echo "END: $END ($ARG0)";
|
||||
|
@ -65,6 +65,16 @@ smbd_have_test_log() {
|
||||
return 1;
|
||||
}
|
||||
|
||||
slapd_start() {
|
||||
OLDPATH=$PATH
|
||||
PATH=/usr/local/sbin:/usr/sbin:/sbin:$PATH
|
||||
export PATH
|
||||
slapd -f $SLAPD_CONF -h $LDAPI_ESCAPE
|
||||
PATH=$OLDPATH
|
||||
export PATH
|
||||
return 0;
|
||||
}
|
||||
|
||||
testit() {
|
||||
if [ -z "$PREFIX" ]; then
|
||||
PREFIX=test_prefix
|
||||
|
Loading…
x
Reference in New Issue
Block a user