4c9a828315a64e10e9592dcd0b550f4c1e80bec0
[ira/wip.git] / source / script / tests / mktestsetup.sh
1 #!/bin/sh
2
3 if [ $# -lt 1 ]
4 then
5         echo "$0 PREFIX"
6         exit 1
7 fi
8
9 PREFIX=$1
10
11 if test -z "$SHARE_BACKEND"; then
12         SHARE_BACKEND=classic
13 fi
14
15 if test -z "$SMBD_LOGLEVEL"; then
16         SMBD_LOGLEVEL=1
17 fi
18
19 DOMAIN=SAMBADOMAIN
20 USERNAME=administrator
21 REALM=SAMBA.EXAMPLE.COM
22 DNSNAME="samba.example.com"
23 BASEDN="dc=samba,dc=example,dc=com"
24 PASSWORD=penguin
25 AUTH="-U$USERNAME%$PASSWORD"
26 SRCDIR=`pwd`
27 ROOT=$USER
28 SERVER=localhost
29 NETBIOSNAME=localtest
30 if test -z "$ROOT"; then
31     ROOT=$LOGNAME
32 fi
33 if test -z "$ROOT"; then
34     ROOT=`whoami`
35 fi
36
37 oldpwd=`pwd`
38 srcdir=`dirname $0`/../..
39 mkdir -p $PREFIX || exit $?
40 cd $PREFIX
41 PREFIX_ABS=`pwd`
42 export PREFIX_ABS
43 cd $oldpwd
44
45 TEST_DATA_PREFIX=$PREFIX_ABS
46 export TEST_DATA_PREFIX
47
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
56
57 WINBINDD_SOCKET_DIR=$PREFIX_ABS/winbind_socket
58 CONFIGURATION="--configfile=$CONFFILE"
59 LDAPDIR=$PREFIX_ABS/ldap
60
61 export CONFIGURATION
62 export CONFFILE
63 export PIDDIR
64 export AUTH
65 export SERVER
66 export NETBIOSNAME
67
68 rm -rf $PREFIX/*
69 mkdir -p $PRIVATEDIR $ETCDIR $PIDDIR $NCALRPCDIR $LOCKDIR $TMPDIR $LDAPDIR/db $LDAPDIR/db/bdb-logs $LDAPDIR/db/tmp
70
71 if [ -z "$VALGRIND" ]; then
72     nativeiconv="true"
73 else
74     nativeiconv="false"
75 fi
76
77 cat >$CONFFILE<<EOF
78 [global]
79         iconv:native = $nativeiconv
80         netbios name = $NETBIOSNAME
81         netbios aliases = $SERVER
82         workgroup = $DOMAIN
83         realm = $REALM
84         private dir = $PRIVATEDIR
85         pid directory = $PIDDIR
86         ncalrpc dir = $NCALRPCDIR
87         lock dir = $LOCKDIR
88         share backend = $SHARE_BACKEND
89         setup directory = $SRCDIR/setup
90         js include = $SRCDIR/scripting/libjs
91         winbindd socket directory = $WINBINDD_SOCKET_DIR
92         name resolve order = bcast
93         interfaces = 127.0.0.1/8
94         tls dh params file = $DHFILE
95         panic action = $SRCDIR/script/gdb_backtrace %PID% %PROG%
96         wins support = yes
97         server role = domain controller
98         max xmit = 32K
99         server max protocol = SMB2
100         notify:inotify = false
101         ldb:nosync = true
102         torture:subunitdir = $SRCDIR/bin/torture
103         torture:basedir = $TEST_DATA_PREFIX
104
105         system:anonymous = true
106 #We don't want to pass our self-tests if the PAC code is wrong
107         gensec:require_pac = true
108
109         log level = $SMBD_LOGLEVEL
110
111 [tmp]
112         path = $TMPDIR
113         read only = no
114         ntvfs handler = posix
115         posix:sharedelay = 100000
116         posix:eadb = $LOCKDIR/eadb.tdb
117
118 [cifs]
119         read only = no
120         ntvfs handler = cifs
121         cifs:server = $SERVER
122         cifs:user = $USERNAME
123         cifs:password = $PASSWORD
124         cifs:domain = $DOMAIN
125         cifs:share = tmp
126
127 [simple]
128         path = $TMPDIR
129         read only = no
130         ntvfs handler = simple
131
132 [cifsposixtestshare]
133         copy = simple
134         ntvfs handler = cifsposix   
135 EOF
136
137 ## Override default share.ldb file
138 rm -f $PRIVATEDIR/share.ldb
139 cat >$PRIVATEDIR/share.ldif<<EOF
140 ### Shares basedn
141 dn: @INDEXLIST
142 @IDXATTR: name
143
144 dn: @ATTRIBUTES
145 cn: CASE_INSENSITIVE
146 dc: CASE_INSENSITIVE
147 name: CASE_INSENSITIVE
148 dn: CASE_INSENSITIVE
149 objectClass: CASE_INSENSITIVE
150
151 dn: CN=Shares
152 objectClass: top
153 objectClass: organizationalUnit
154 cn: Shares
155
156 ### Default IPC$ Share
157 dn: CN=IPC$,CN=Shares
158 objectClass: top
159 objectClass: share
160 cn: IPC$
161 name: IPC$
162 type: IPC
163 path: /tmp
164 comment: Remote IPC
165 max-connections: -1
166 available: True
167 readonly: True
168 browseable: False
169 ntvfs-handler: default
170
171 ### Default ADMIN$ Share
172 dn: CN=ADMIN$,CN=Shares
173 objectClass: top
174 objectClass: share
175 cn: ADMIN$
176 name: ADMIN$
177 type: DISK
178 path: /tmp
179 comment: Remote Admin
180 max-connections: -1
181 available: True
182 readonly: True
183 browseable: False
184 ntvfs-handler: default
185
186 dn: CN=tmp,CN=Shares
187 objectClass: top
188 objectClass: share
189 cn: tmp
190 name: tmp
191 type: DISK
192 path: $TMPDIR
193 comment: Temp Dir for Tests
194 readonly: False
195 ntvfs-handler: posix
196 posix-sharedelay: 100000
197 posix-eadb: $LOCKDIR/eadb.tdb
198
199 dn: CN=cifs,CN=Shares
200 objectClass: top
201 objectClass: share
202 cn: cifs
203 name: cifs
204 type: DISK
205 readonly: False
206 ntvfs-handler: cifs
207 cifs-server: $SERVER
208 cifs-user: $USERNAME
209 cifs-password: $PASSWORD
210 cifs-domain: $DOMAIN
211 cifs-share: tmp
212 EOF
213
214 $srcdir/bin/ldbadd -H $PRIVATEDIR/share.ldb < $PRIVATEDIR/share.ldif >/dev/null || exit 1
215
216 cat >$KRB5_CONFIG<<EOF
217 [libdefaults]
218  default_realm = SAMBA.EXAMPLE.COM
219  dns_lookup_realm = false
220  dns_lookup_kdc = false
221  ticket_lifetime = 24h
222  forwardable = yes
223
224 [realms]
225  SAMBA.EXAMPLE.COM = {
226   kdc = 127.0.0.1:88
227   admin_server = 127.0.0.1:88
228   default_domain = samba.example.com
229  }
230
231 [appdefaults]
232         pkinit_anchors = FILE:$CAFILE
233
234 [kdc]
235         enable-pkinit = true
236         pkinit_identity = FILE:$KDCCERTFILE,$KEYFILE
237         pkinit_anchors = FILE:$CAFILE
238
239 [domain_realm]
240  .samba.example.com = SAMBA.EXAMPLE.COM
241 EOF
242 export KRB5_CONFIG
243
244 . `dirname $0`/mk-keyblobs.sh
245
246 #Ensure the config file is valid before we start
247 $srcdir/bin/testparm $CONFIGURATION -v --suppress-prompt >/dev/null 2>&1 || {
248     echo "">&2
249     echo "Failed to create configuration!" >&2
250     $srcdir/bin/testparm $CONFIGURATION  >&2
251     exit 1
252 }
253
254 ( $srcdir/bin/testparm $CONFIGURATION -v --suppress-prompt --parameter-name="netbios name" --section-name=global 2> /dev/null | grep -i ^$NETBIOSNAME ) >/dev/null 2>&1 || {
255     echo "$?" >&2
256     $srcdir/bin/testparm $CONFIGURATION -v --suppress-prompt --parameter-name="netbios name" --section-name=global --suppress-prompt 2> /dev/null | grep -i ^$NETBIOSNAME >&2
257     echo "Failed to create configuration!" >&2
258     exit 1
259 }
260
261 PROVISION_OPTIONS="$CONFIGURATION --host-name=$NETBIOSNAME --host-ip=127.0.0.1"
262 PROVISION_OPTIONS="$PROVISION_OPTIONS --quiet --domain $DOMAIN --realm $REALM"
263 PROVISION_OPTIONS="$PROVISION_OPTIONS --adminpass $PASSWORD --root=$ROOT"
264 PROVISION_OPTIONS="$PROVISION_OPTIONS --simple-bind-dn=cn=Manager,$BASEDN --password=$PASSWORD --root=$ROOT"
265 $srcdir/bin/smbscript $srcdir/setup/provision $PROVISION_OPTIONS >&2
266
267 . `dirname $0`/mk-openldap.sh
268
269 test -z "$FEDORA_DS_PREFIX" || {
270     . `dirname $0`/mk-fedora-ds.sh
271 }
272
273 cat >$PRIVATEDIR/wins_config.ldif<<EOF
274 dn: name=TORTURE_6,CN=PARTNERS
275 objectClass: wreplPartner
276 name: TORTURE_6
277 address: 127.0.0.6
278 pullInterval: 0
279 pushChangeCount: 0
280 type: 0x3
281 EOF
282
283 $srcdir/bin/ldbadd -H $PRIVATEDIR/wins_config.ldb < $PRIVATEDIR/wins_config.ldif >/dev/null || exit 1
284
285 echo "KRB5_CONFIG=$KRB5_CONFIG"
286 echo "PREFIX_ABS=$PREFIX_ABS"
287 echo "TEST_DATA_PREFIX=$TEST_DATA_PREFIX"
288 echo "CONFIGURATION=$CONFIGURATION"
289 echo "CONFFILE=$CONFFILE"
290 echo "SLAPD_CONF=$SLAPD_CONF"
291 echo "PIDDIR=$PIDDIR"
292 echo "AUTH=$AUTH"
293 echo "SERVER=$SERVER"
294 echo "NETBIOSNAME=$NETBIOSNAME"
295 echo "LDAP_URI=$LDAP_URI"
296 echo "LDAP_URI_ESCAPE=$LDAP_URI_ESCAPE"
297 echo "FEDORA_DS_INF=$FEDORA_DS_INF"
298 echo "DOMAIN=$DOMAIN"
299 echo "USERNAME=$USERNAME"
300 echo "REALM=$REALM"
301 echo "DNSNAME=$DNSNAME"
302 echo "BASEDN=$BASEDN"
303 echo "PASSWORD=$PASSWORD"
304 echo "AUTH=$AUTH"
305 echo "SRCDIR=$SRCDIR"
306 echo "ROOT=$ROOT"
307 echo "SERVER=$SERVER"
308 echo "NETBIOSNAME=$NETBIOSNAME"
309 echo "PREFIX=$PREFIX"
310 echo "SMBD_LOGLEVEL=$SMBD_LOGLEVEL"
311 echo "LDAPDIR=$LDAPDIR"