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 99 100 101 102 103 104 105 106 107 108
|
#!/bin/bash
set -x
SLAPADD=/usr/sbin/slapadd
SLAPD=/usr/sbin/slapd
if [[ -z ${ADTTMP-} ]]; then
WORKDIR=$(mktemp -d -t nsscache.regtest.XXXXXX)
ARTIFACTS=${WORKDIR}
else
WORKDIR=${ADTTMP}
ARTIFACTS=${ADT_ARTIFACTS}
fi
cleanup() {
if [[ -e "$WORKDIR/slapd.pid" ]]; then
kill -TERM $(cat $WORKDIR/slapd.pid)
fi
if [[ -z ${ADTTMP-} ]]; then
rm -rf $WORKDIR
fi
}
trap cleanup 0 INT QUIT ABRT PIPE TERM
setup_slapd() {
set -e
mkdir -p $WORKDIR/ldap
sed -e "s!@workdir@!$WORKDIR!" \
< debian/tests/slapd.conf.tmpl > $ARTIFACTS/slapd.conf
$SLAPADD -d -1 -f $ARTIFACTS/slapd.conf -b dc=example,dc=com -l debian/tests/default.ldif
$SLAPD -h ldapi://${WORKDIR//\//%2F}%2Fldapi -f $ARTIFACTS/slapd.conf &
slappid=$!
attempts=0
until ldapsearch -x -H ldapi://${WORKDIR//\//%2F}%2Fldapi -b "dc=example,dc=com" '(objectclass=*)'; do
attempts=$(($attempts + 1))
if [[ $attempts -gt 10 ]]; then
echo "failed to connect to slapd in 60 attempts"
exit 1
fi
sleep 0.1
done
set +e
}
run_nsscache() {
source=$1
cache=$2
config_orig="debian/tests/nsscache.conf.tmpl"
config=$(mktemp -p ${ARTIFACTS} nsscache.${source}.conf.XXXXXX)
sed -e "s!@cache@!$cache!" \
-e "s!@source@!$source!" \
-e "s!@workdir@!$WORKDIR!" \
< $config_orig > $config
mkdir $WORKDIR/$cache
mkdir $WORKDIR/ldap-timestamps-$cache
nsscache -d -c "${config}" update --full
r=$?
if [[ $r -ne 0 ]]; then
echo FAILED: $r
fi
test_${cache}
nsscache -d -c "${config}" status
}
test_nssdb() {
ls -alR $WORKDIR/nssdb
grep jaq $WORKDIR/nssdb/passwd.db
db_dump -da $WORKDIR/nssdb/passwd.db | grep jaq
db_dump -da $WORKDIR/nssdb/shadow.db | grep jaq
db_dump -da $WORKDIR/nssdb/group.db | grep jaq
[[ $(stat -c%A $WORKDIR/nssdb/shadow.db) == "-rw-r-----" ]] || exit 1
}
test_files() {
ls -alR $WORKDIR
set -e
grep jaq $WORKDIR/files/passwd.cache
grep jaq $WORKDIR/files/passwd.cache.ixname
grep 37 $WORKDIR/files/passwd.cache.ixuid
grep hax0rs $WORKDIR/files/group.cache
grep hax0rs $WORKDIR/files/group.cache.ixname
grep 31337 $WORKDIR/files/group.cache.ixgid
grep jaq $WORKDIR/files/shadow.cache
grep jaq $WORKDIR/files/shadow.cache.ixname
[[ $(stat -c%A $WORKDIR/files/shadow.cache) == "-rw-r-----" ]] || exit 1
[[ $(stat -c%A $WORKDIR/files/shadow.cache.ixname) == "-rw-r-----" ]] || exit 1
}
check () {
which nsscache
nsscache --version
nsscache status
}
check
setup_slapd
run_nsscache ldap nssdb
run_nsscache ldap files
echo OK
|