2 # Build a test environment for running Samba
12 if test -z "$SHARE_BACKEND"; then
16 if test -z "$SMBD_LOGLEVEL"; then
20 SERVER_ROLE="domain controller"
22 USERNAME=administrator
23 REALM=SAMBA.EXAMPLE.COM
24 DNSNAME="samba.example.com"
25 BASEDN="dc=samba,dc=example,dc=com"
27 AUTH="-U$USERNAME%$PASSWORD"
32 if test -z "$ROOT"; then
35 if test -z "$ROOT"; then
40 srcdir=`dirname $0`/../..
41 mkdir -p $PREFIX || exit $?
46 TEST_DATA_PREFIX=$PREFIX_ABS
48 TMPDIR=$PREFIX_ABS/tmp
49 ETCDIR=$PREFIX_ABS/etc
50 PIDDIR=$PREFIX_ABS/pid
51 CONFFILE=$ETCDIR/smb.conf
52 KRB5_CONFIG=$ETCDIR/krb5.conf
53 PRIVATEDIR=$PREFIX_ABS/private
54 NCALRPCDIR=$PREFIX_ABS/ncalrpc
55 LOCKDIR=$PREFIX_ABS/lockdir
57 WINBINDD_SOCKET_DIR=$PREFIX_ABS/winbind_socket
58 CONFIGURATION="--configfile=$CONFFILE"
59 LDAPDIR=$PREFIX_ABS/ldap
62 mkdir -p $PRIVATEDIR $ETCDIR $PIDDIR $NCALRPCDIR $LOCKDIR $TMPDIR $LDAPDIR/db $LDAPDIR/db/bdb-logs $LDAPDIR/db/tmp
64 if [ -z "$VALGRIND" ]; then
72 iconv:native = $nativeiconv
73 netbios name = $NETBIOSNAME
74 netbios aliases = $SERVER
77 private dir = $PRIVATEDIR
78 pid directory = $PIDDIR
79 ncalrpc dir = $NCALRPCDIR
81 share backend = $SHARE_BACKEND
82 setup directory = $SRCDIR/setup
83 js include = $SRCDIR/scripting/libjs
84 winbindd socket directory = $WINBINDD_SOCKET_DIR
85 name resolve order = bcast
86 interfaces = 127.0.0.1/8
87 tls dh params file = $DHFILE
88 panic action = $SRCDIR/script/gdb_backtrace %PID% %PROG%
90 server role = $SERVER_ROLE
92 server max protocol = SMB2
93 notify:inotify = false
95 torture:basedir = $TEST_DATA_PREFIX
97 system:anonymous = true
98 #We don't want to pass our self-tests if the PAC code is wrong
99 gensec:require_pac = true
100 log level = $SMBD_LOGLEVEL
105 ntvfs handler = posix
106 posix:sharedelay = 100000
107 posix:eadb = $LOCKDIR/eadb.tdb
112 cifs:server = $SERVER
113 cifs:user = $USERNAME
114 cifs:password = $PASSWORD
115 cifs:domain = $DOMAIN
121 ntvfs handler = simple
125 ntvfs handler = cifsposix
128 ## Override default share.ldb file
129 rm -f $PRIVATEDIR/share.ldb
130 cat >$PRIVATEDIR/share.ldif<<EOF
138 name: CASE_INSENSITIVE
140 objectClass: CASE_INSENSITIVE
144 objectClass: organizationalUnit
147 ### Default IPC$ Share
148 dn: CN=IPC$,CN=Shares
160 ntvfs-handler: default
162 ### Default ADMIN$ Share
163 dn: CN=ADMIN$,CN=Shares
170 comment: Remote Admin
175 ntvfs-handler: default
184 comment: Temp Dir for Tests
187 posix-sharedelay: 100000
188 posix-eadb: $LOCKDIR/eadb.tdb
190 dn: CN=cifs,CN=Shares
200 cifs-password: $PASSWORD
205 $srcdir/bin/ldbadd -H $PRIVATEDIR/share.ldb < $PRIVATEDIR/share.ldif >/dev/null || exit 1
207 . `dirname $0`/mk-keyblobs.sh
209 cat >$KRB5_CONFIG<<EOF
210 #Generated krb5.conf for $REALM
213 default_realm = $REALM
214 dns_lookup_realm = false
215 dns_lookup_kdc = false
216 ticket_lifetime = 24h
222 admin_server = 127.0.0.1:88
223 default_domain = $DNSNAME
227 admin_server = 127.0.0.1:88
228 default_domain = $DNSNAME
232 pkinit_anchors = FILE:$CAFILE
236 pkinit_identity = FILE:$KDCCERTFILE,$KEYFILE
237 pkinit_anchors = FILE:$CAFILE
243 #Ensure the config file is valid before we start
244 $srcdir/bin/testparm $CONFIGURATION -v --suppress-prompt >/dev/null 2>&1 || {
246 echo "Failed to create configuration!" >&2
247 $srcdir/bin/testparm $CONFIGURATION >&2
251 ( $srcdir/bin/testparm $CONFIGURATION -v --suppress-prompt --parameter-name="netbios name" --section-name=global 2> /dev/null | grep -i ^$NETBIOSNAME ) >/dev/null 2>&1 || {
253 $srcdir/bin/testparm $CONFIGURATION -v --suppress-prompt --parameter-name="netbios name" --section-name=global --suppress-prompt 2> /dev/null | grep -i ^$NETBIOSNAME >&2
254 echo "Failed to create configuration!" >&2
258 PROVISION_OPTIONS="$CONFIGURATION --host-name=$NETBIOSNAME --host-ip=127.0.0.1"
259 PROVISION_OPTIONS="$PROVISION_OPTIONS --quiet --domain $DOMAIN --realm $REALM"
260 PROVISION_OPTIONS="$PROVISION_OPTIONS --adminpass $PASSWORD --root=$ROOT"
261 PROVISION_OPTIONS="$PROVISION_OPTIONS --simple-bind-dn=cn=Manager,$BASEDN --password=$PASSWORD --root=$ROOT"
262 $srcdir/bin/smbscript $srcdir/setup/provision $PROVISION_OPTIONS >&2
264 LDAP_URI="ldapi://"`echo $LDAPDIR/ldapi | sed 's|/|%2F|g'`
266 . `dirname $0`/mk-openldap.sh
268 test -z "$FEDORA_DS_PREFIX" || {
269 . `dirname $0`/mk-fedora-ds.sh
272 cat >$PRIVATEDIR/wins_config.ldif<<EOF
273 dn: name=TORTURE_6,CN=PARTNERS
274 objectClass: wreplPartner
282 $srcdir/bin/ldbadd -H $PRIVATEDIR/wins_config.ldb < $PRIVATEDIR/wins_config.ldif >/dev/null || exit 1
284 echo "KRB5_CONFIG=$KRB5_CONFIG"
285 echo "PREFIX_ABS=$PREFIX_ABS"
286 echo "TEST_DATA_PREFIX=$TEST_DATA_PREFIX"
287 echo "CONFIGURATION=$CONFIGURATION"
288 echo "CONFFILE=$CONFFILE"
289 echo "SLAPD_CONF=$SLAPD_CONF"
290 echo "PIDDIR=$PIDDIR"
292 echo "SERVER=$SERVER"
293 echo "NETBIOSNAME=$NETBIOSNAME"
294 echo "LDAP_URI=$LDAP_URI"
295 echo "DOMAIN=$DOMAIN"
296 echo "USERNAME=$USERNAME"
298 echo "DNSNAME=$DNSNAME"
299 echo "BASEDN=$BASEDN"
300 echo "PASSWORD=$PASSWORD"
301 echo "SRCDIR=$SRCDIR"
302 echo "PREFIX=$PREFIX"
303 echo "LDAPDIR=$LDAPDIR"
304 echo "PROVISION_OPTIONS=$PROVISION_OPTIONS"
305 echo "PROVISION_ACI=$PROVISION_ACI"