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"
31 if test -z "$ROOT"; then
34 if test -z "$ROOT"; then
39 srcdir=`dirname $0`/../..
40 mkdir -p $PREFIX || exit $?
45 TMPDIR=$PREFIX_ABS/tmp
46 ETCDIR=$PREFIX_ABS/etc
47 PIDDIR=$PREFIX_ABS/pid
48 CONFFILE=$ETCDIR/smb.conf
49 KRB5_CONFIG=$ETCDIR/krb5.conf
50 PRIVATEDIR=$PREFIX_ABS/private
51 NCALRPCDIR=$PREFIX_ABS/ncalrpc
52 LOCKDIR=$PREFIX_ABS/lockdir
54 WINBINDD_SOCKET_DIR=$PREFIX_ABS/winbind_socket
55 CONFIGURATION="--configfile=$CONFFILE"
56 LDAPDIR=$PREFIX_ABS/ldap
59 mkdir -p $PRIVATEDIR $ETCDIR $PIDDIR $NCALRPCDIR $LOCKDIR $TMPDIR $LDAPDIR/db $LDAPDIR/db/bdb-logs $LDAPDIR/db/tmp
63 netbios name = $NETBIOSNAME
64 netbios aliases = $SERVER
67 private dir = $PRIVATEDIR
68 pid directory = $PIDDIR
69 ncalrpc dir = $NCALRPCDIR
71 share backend = $SHARE_BACKEND
72 setup directory = $SRCDIR/setup
73 js include = $SRCDIR/scripting/libjs
74 winbindd socket directory = $WINBINDD_SOCKET_DIR
75 name resolve order = bcast
76 interfaces = 127.0.0.1/8
77 tls dh params file = $DHFILE
78 panic action = $SRCDIR/script/gdb_backtrace %PID% %PROG%
80 server role = $SERVER_ROLE
82 server max protocol = SMB2
83 notify:inotify = false
85 system:anonymous = true
86 #We don't want to pass our self-tests if the PAC code is wrong
87 gensec:require_pac = true
88 log level = $SMBD_LOGLEVEL
94 posix:sharedelay = 100000
95 posix:eadb = $LOCKDIR/eadb.tdb
100 cifs:server = $SERVER
101 cifs:user = $USERNAME
102 cifs:password = $PASSWORD
103 cifs:domain = $DOMAIN
109 ntvfs handler = simple
113 ntvfs handler = cifsposix
116 ## Override default share.ldb file
117 rm -f $PRIVATEDIR/share.ldb
118 cat >$PRIVATEDIR/share.ldif<<EOF
126 name: CASE_INSENSITIVE
128 objectClass: CASE_INSENSITIVE
132 objectClass: organizationalUnit
135 ### Default IPC$ Share
136 dn: CN=IPC$,CN=Shares
148 ntvfs-handler: default
150 ### Default ADMIN$ Share
151 dn: CN=ADMIN$,CN=Shares
158 comment: Remote Admin
163 ntvfs-handler: default
172 comment: Temp Dir for Tests
175 posix-sharedelay: 100000
176 posix-eadb: $LOCKDIR/eadb.tdb
178 dn: CN=cifs,CN=Shares
188 cifs-password: $PASSWORD
193 $srcdir/bin/ldbadd -H $PRIVATEDIR/share.ldb < $PRIVATEDIR/share.ldif >/dev/null || exit 1
195 . `dirname $0`/mk-keyblobs.sh
197 cat >$KRB5_CONFIG<<EOF
198 #Generated krb5.conf for $REALM
201 default_realm = $REALM
202 dns_lookup_realm = false
203 dns_lookup_kdc = false
204 ticket_lifetime = 24h
210 admin_server = 127.0.0.1:88
211 default_domain = $DNSNAME
215 admin_server = 127.0.0.1:88
216 default_domain = $DNSNAME
220 admin_server = 127.0.0.1:88
221 default_domain = $DNSNAME
225 pkinit_anchors = FILE:$CAFILE
229 pkinit_identity = FILE:$KDCCERTFILE,$KEYFILE
230 pkinit_anchors = FILE:$CAFILE
236 #Ensure the config file is valid before we start
237 $srcdir/bin/testparm $CONFIGURATION -v --suppress-prompt >/dev/null 2>&1 || {
239 echo "Failed to create configuration!" >&2
240 $srcdir/bin/testparm $CONFIGURATION >&2
244 ( $srcdir/bin/testparm $CONFIGURATION -v --suppress-prompt --parameter-name="netbios name" --section-name=global 2> /dev/null | grep -i ^$NETBIOSNAME ) >/dev/null 2>&1 || {
246 $srcdir/bin/testparm $CONFIGURATION -v --suppress-prompt --parameter-name="netbios name" --section-name=global --suppress-prompt 2> /dev/null | grep -i ^$NETBIOSNAME >&2
247 echo "Failed to create configuration!" >&2
251 PROVISION_OPTIONS="$CONFIGURATION --host-name=$NETBIOSNAME --host-ip=127.0.0.1"
252 PROVISION_OPTIONS="$PROVISION_OPTIONS --quiet --domain $DOMAIN --realm $REALM"
253 PROVISION_OPTIONS="$PROVISION_OPTIONS --adminpass $PASSWORD --root=$ROOT"
254 PROVISION_OPTIONS="$PROVISION_OPTIONS --simple-bind-dn=cn=Manager,$BASEDN --password=$PASSWORD --root=$ROOT"
255 $srcdir/bin/smbscript $srcdir/setup/provision $PROVISION_OPTIONS >&2
257 LDAP_URI="ldapi://"`echo $LDAPDIR/ldapi | sed 's|/|%2F|g'`
259 . `dirname $0`/mk-openldap.sh
261 test -z "$FEDORA_DS_PREFIX" || {
262 . `dirname $0`/mk-fedora-ds.sh
265 cat >$PRIVATEDIR/wins_config.ldif<<EOF
266 dn: name=TORTURE_6,CN=PARTNERS
267 objectClass: wreplPartner
275 $srcdir/bin/ldbadd -H $PRIVATEDIR/wins_config.ldb < $PRIVATEDIR/wins_config.ldif >/dev/null || exit 1
277 echo "KRB5_CONFIG=$KRB5_CONFIG"
278 echo "PREFIX_ABS=$PREFIX_ABS"
279 echo "SLAPD_CONF=$SLAPD_CONF"
280 echo "PIDDIR=$PIDDIR"
281 echo "SERVER=$SERVER"
282 echo "NETBIOSNAME=$NETBIOSNAME"
283 echo "LDAP_URI=$LDAP_URI"
284 echo "DOMAIN=$DOMAIN"
285 echo "USERNAME=$USERNAME"
287 echo "DNSNAME=$DNSNAME"
288 echo "BASEDN=$BASEDN"
289 echo "PASSWORD=$PASSWORD"
290 echo "SRCDIR=$SRCDIR"
291 echo "PREFIX=$PREFIX"
292 echo "LDAPDIR=$LDAPDIR"
293 echo "CONFFILE=$CONFFILE"
294 echo "PROVISION_OPTIONS=$PROVISION_OPTIONS"
295 echo "PROVISION_ACI=$PROVISION_ACI"
296 echo "WINBINDD_SOCKET_DIR=$WINBINDD_SOCKET_DIR"
297 echo "NCALRPCDIR=$NCALRPCDIR"
298 echo "CONFIGURATION=$CONFIGURATION"