#!/bin/bash # vim: dict=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # # runtest.sh of /CoreOS/cyrus-sasl/Sanity/sanity-ldapdb-plugin # Description: The ldapdb auxprop plugin provides access to credentials stored in an LDAP server. # Author: David Spurek # # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # # Copyright (c) 2012 Red Hat, Inc. All rights reserved. # # This copyrighted material is made available to anyone wishing # to use, modify, copy, or redistribute it subject to the terms # and conditions of the GNU General Public License version 2. # # This program is distributed in the hope that it will be # useful, but WITHOUT ANY WARRANTY; without even the implied # warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR # PURPOSE. See the GNU General Public License for more details. # # You should have received a copy of the GNU General Public # License along with this program; if not, write to the Free # Software Foundation, Inc., 51 Franklin Street, Fifth Floor, # Boston, MA 02110-1301, USA. # # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # Include Beaker environment . /usr/bin/rhts-environment.sh || exit 1 . /usr/share/beakerlib/beakerlib.sh || exit 1 PACKAGE="cyrus-sasl" PACKAGES=( "cyrus-sasl" \ "cyrus-sasl-devel" \ "cyrus-sasl-ldap" \ "cyrus-sasl-plain" \ "expect" \ "pam" \ "openldap" \ "openldap-clients" \ "openldap-servers" \ "cyrus-sasl-md5" ) # else branch is also relevant for Fedora if rlIsRHEL '<6'; then SERVICE_LDAP=ldap else SERVICE_LDAP=slapd fi ldapdb_id="sasluser" ldapdb_pw="x" SASL_PASSWORD="x" SASL_USER="test" if [ "`uname -i`" = "i386" ]; then LIBDIR=/usr/lib else LIBDIR=/usr/lib64 fi rlIsRHEL 5 && [ "`uname -i`" = "ia64" ] && LIBDIR=/usr/lib function slapd_conf { cat >/etc/openldap/slapd.conf<<'EOF' include /etc/openldap/schema/core.schema include /etc/openldap/schema/cosine.schema include /etc/openldap/schema/inetorgperson.schema include /etc/openldap/schema/nis.schema allow bind_v2 pidfile /var/run/openldap/slapd.pid argsfile /var/run/openldap/slapd.args database bdb suffix "dc=my-domain,dc=com" rootdn "uid=admin,dc=my-domain,dc=com" rootpw x directory /var/lib/ldap password-hash {CLEARTEXT} authz-policy to authz-regexp uid=(.*),cn=.*,cn=auth "ldap:///dc=my-domain,dc=com??sub?(uid=$1)" index objectClass eq,pres index ou,cn,mail,surname,givenname eq,pres,sub index uidNumber,gidNumber,loginShell eq,pres index uid,memberUid eq,pres,sub index nisMapName,nisMapEntry eq,pres,sub access to * by * write access to * by * read access to * by * auth EOF return $? } function data_ldif { cat >data.ldif<$LIBDIR/sasl2/sample.conf<=6' || rlIsFedora '>=14'; then rm -rf /etc/openldap/slapd.d/* slaptest -f /etc/openldap/slapd.conf -F /etc/openldap/slapd.d/ fi rlRun "data_ldif" 0 rlRun "slapadd -l data.ldif" 0 chown -R ldap:ldap /var/lib/ldap/* && chmod -R a+rx /etc/openldap/ rlRun "restorecon -vvRF /etc/openldap/" rlRun "service $SERVICE_LDAP start && sleep 10" 0 rlPhaseEnd rlPhaseStartTest rlRun "ldapsearch -LLL -H ldap://localhost -s base -b '' -x supportedSASLMechanisms" 0 rlRun "ldapsearch -H ldap://localhost -x -b 'dc=my-domain,dc=com' '(objectclass=*)'" 0 "Check ldap entries without SASL" # this two ldapwhoami commands may be used for testing purposes # rlRun "ldapwhoami -U $ldapdb_id -Y digest-md5" 0 # rlRun "ldapwhoami -U $ldapdb_id -X u:test@localhost -Y digest-md5" 0 # sasl sample server uses ldap sasluser as sasl bind id # then try search user passed to sample client in ldap database rlRun "sasl2-sample-server -p 8000 -s rcmd -m PLAIN &>sample_server.log &" 0 SASL_PID=`pgrep -f "sasl2-sample-server -p 8000 -s rcmd -m PLAIN"` rlRun "sasl_client $SASL_USER ${SASL_PASSWORD}" 0 rlRun "sasl_client baduser ${SASL_PASSWORD}" 9 rlRun "kill $SASL_PID" 0 ; sleep 5 rlRun "cat sample_server.log" 0 rlPhaseEnd rlPhaseStartCleanup rlRun "service $SERVICE_LDAP stop && sleep 10" 0 rlFileRestore rlServiceRestore $SERVICE_LDAP rlRun "popd" rlRun "rm -r $TmpDir" 0 "Removing tmp directory" rlPhaseEnd rlJournalPrintText rlJournalEnd