summaryrefslogtreecommitdiff
path: root/source4/script/tests/mktestdc.sh
diff options
context:
space:
mode:
Diffstat (limited to 'source4/script/tests/mktestdc.sh')
-rwxr-xr-xsource4/script/tests/mktestdc.sh300
1 files changed, 300 insertions, 0 deletions
diff --git a/source4/script/tests/mktestdc.sh b/source4/script/tests/mktestdc.sh
new file mode 100755
index 0000000000..2068728a49
--- /dev/null
+++ b/source4/script/tests/mktestdc.sh
@@ -0,0 +1,300 @@
+#!/bin/sh
+# Build a test environment for running Samba
+
+if [ $# -lt 1 ]
+then
+ echo "$0 PREFIX"
+ exit 1
+fi
+
+PREFIX=$1
+
+if test -z "$SHARE_BACKEND"; then
+ SHARE_BACKEND=classic
+fi
+
+if test -z "$SMBD_LOGLEVEL"; then
+ SMBD_LOGLEVEL=1
+fi
+
+DOMAIN=SAMBADOMAIN
+USERNAME=administrator
+REALM=SAMBA.EXAMPLE.COM
+DNSNAME="samba.example.com"
+BASEDN="dc=samba,dc=example,dc=com"
+PASSWORD=penguin
+AUTH="-U$USERNAME%$PASSWORD"
+SRCDIR=`pwd`
+ROOT=$USER
+SERVER=localhost
+NETBIOSNAME=localtest
+if test -z "$ROOT"; then
+ ROOT=$LOGNAME
+fi
+if test -z "$ROOT"; then
+ ROOT=`whoami`
+fi
+
+oldpwd=`pwd`
+srcdir=`dirname $0`/../..
+mkdir -p $PREFIX || exit $?
+cd $PREFIX
+PREFIX_ABS=`pwd`
+cd $oldpwd
+
+TEST_DATA_PREFIX=$PREFIX_ABS
+
+TMPDIR=$PREFIX_ABS/tmp
+ETCDIR=$PREFIX_ABS/etc
+PIDDIR=$PREFIX_ABS/pid
+CONFFILE=$ETCDIR/smb.conf
+KRB5_CONFIG=$ETCDIR/krb5.conf
+PRIVATEDIR=$PREFIX_ABS/private
+NCALRPCDIR=$PREFIX_ABS/ncalrpc
+LOCKDIR=$PREFIX_ABS/lockdir
+
+WINBINDD_SOCKET_DIR=$PREFIX_ABS/winbind_socket
+CONFIGURATION="--configfile=$CONFFILE"
+LDAPDIR=$PREFIX_ABS/ldap
+
+rm -rf $PREFIX/*
+mkdir -p $PRIVATEDIR $ETCDIR $PIDDIR $NCALRPCDIR $LOCKDIR $TMPDIR $LDAPDIR/db $LDAPDIR/db/bdb-logs $LDAPDIR/db/tmp
+
+if [ -z "$VALGRIND" ]; then
+ nativeiconv="true"
+else
+ nativeiconv="false"
+fi
+
+cat >$CONFFILE<<EOF
+[global]
+ iconv:native = $nativeiconv
+ netbios name = $NETBIOSNAME
+ netbios aliases = $SERVER
+ workgroup = $DOMAIN
+ realm = $REALM
+ private dir = $PRIVATEDIR
+ pid directory = $PIDDIR
+ ncalrpc dir = $NCALRPCDIR
+ lock dir = $LOCKDIR
+ share backend = $SHARE_BACKEND
+ setup directory = $SRCDIR/setup
+ js include = $SRCDIR/scripting/libjs
+ winbindd socket directory = $WINBINDD_SOCKET_DIR
+ name resolve order = bcast
+ interfaces = 127.0.0.1/8
+ tls dh params file = $DHFILE
+ panic action = $SRCDIR/script/gdb_backtrace %PID% %PROG%
+ wins support = yes
+ server role = domain controller
+ max xmit = 32K
+ server max protocol = SMB2
+ notify:inotify = false
+ ldb:nosync = true
+ torture:subunitdir = $SRCDIR/bin/torture
+ torture:basedir = $TEST_DATA_PREFIX
+
+ system:anonymous = true
+#We don't want to pass our self-tests if the PAC code is wrong
+ gensec:require_pac = true
+
+ log level = $SMBD_LOGLEVEL
+
+[tmp]
+ path = $TMPDIR
+ read only = no
+ ntvfs handler = posix
+ posix:sharedelay = 100000
+ posix:eadb = $LOCKDIR/eadb.tdb
+
+[cifs]
+ read only = no
+ ntvfs handler = cifs
+ cifs:server = $SERVER
+ cifs:user = $USERNAME
+ cifs:password = $PASSWORD
+ cifs:domain = $DOMAIN
+ cifs:share = tmp
+
+[simple]
+ path = $TMPDIR
+ read only = no
+ ntvfs handler = simple
+
+[cifsposixtestshare]
+ copy = simple
+ ntvfs handler = cifsposix
+EOF
+
+## Override default share.ldb file
+rm -f $PRIVATEDIR/share.ldb
+cat >$PRIVATEDIR/share.ldif<<EOF
+### Shares basedn
+dn: @INDEXLIST
+@IDXATTR: name
+
+dn: @ATTRIBUTES
+cn: CASE_INSENSITIVE
+dc: CASE_INSENSITIVE
+name: CASE_INSENSITIVE
+dn: CASE_INSENSITIVE
+objectClass: CASE_INSENSITIVE
+
+dn: CN=Shares
+objectClass: top
+objectClass: organizationalUnit
+cn: Shares
+
+### Default IPC$ Share
+dn: CN=IPC$,CN=Shares
+objectClass: top
+objectClass: share
+cn: IPC$
+name: IPC$
+type: IPC
+path: /tmp
+comment: Remote IPC
+max-connections: -1
+available: True
+readonly: True
+browseable: False
+ntvfs-handler: default
+
+### Default ADMIN$ Share
+dn: CN=ADMIN$,CN=Shares
+objectClass: top
+objectClass: share
+cn: ADMIN$
+name: ADMIN$
+type: DISK
+path: /tmp
+comment: Remote Admin
+max-connections: -1
+available: True
+readonly: True
+browseable: False
+ntvfs-handler: default
+
+dn: CN=tmp,CN=Shares
+objectClass: top
+objectClass: share
+cn: tmp
+name: tmp
+type: DISK
+path: $TMPDIR
+comment: Temp Dir for Tests
+readonly: False
+ntvfs-handler: posix
+posix-sharedelay: 100000
+posix-eadb: $LOCKDIR/eadb.tdb
+
+dn: CN=cifs,CN=Shares
+objectClass: top
+objectClass: share
+cn: cifs
+name: cifs
+type: DISK
+readonly: False
+ntvfs-handler: cifs
+cifs-server: $SERVER
+cifs-user: $USERNAME
+cifs-password: $PASSWORD
+cifs-domain: $DOMAIN
+cifs-share: tmp
+EOF
+
+$srcdir/bin/ldbadd -H $PRIVATEDIR/share.ldb < $PRIVATEDIR/share.ldif >/dev/null || exit 1
+
+cat >$KRB5_CONFIG<<EOF
+[libdefaults]
+ default_realm = SAMBA.EXAMPLE.COM
+ dns_lookup_realm = false
+ dns_lookup_kdc = false
+ ticket_lifetime = 24h
+ forwardable = yes
+
+[realms]
+ SAMBA.EXAMPLE.COM = {
+ kdc = 127.0.0.1:88
+ admin_server = 127.0.0.1:88
+ default_domain = samba.example.com
+ }
+
+[appdefaults]
+ pkinit_anchors = FILE:$CAFILE
+
+[kdc]
+ enable-pkinit = true
+ pkinit_identity = FILE:$KDCCERTFILE,$KEYFILE
+ pkinit_anchors = FILE:$CAFILE
+
+[domain_realm]
+ .samba.example.com = SAMBA.EXAMPLE.COM
+EOF
+
+. `dirname $0`/mk-keyblobs.sh
+
+#Ensure the config file is valid before we start
+$srcdir/bin/testparm $CONFIGURATION -v --suppress-prompt >/dev/null 2>&1 || {
+ echo "">&2
+ echo "Failed to create configuration!" >&2
+ $srcdir/bin/testparm $CONFIGURATION >&2
+ exit 1
+}
+
+( $srcdir/bin/testparm $CONFIGURATION -v --suppress-prompt --parameter-name="netbios name" --section-name=global 2> /dev/null | grep -i ^$NETBIOSNAME ) >/dev/null 2>&1 || {
+ echo "$?" >&2
+ $srcdir/bin/testparm $CONFIGURATION -v --suppress-prompt --parameter-name="netbios name" --section-name=global --suppress-prompt 2> /dev/null | grep -i ^$NETBIOSNAME >&2
+ echo "Failed to create configuration!" >&2
+ exit 1
+}
+
+PROVISION_OPTIONS="$CONFIGURATION --host-name=$NETBIOSNAME --host-ip=127.0.0.1"
+PROVISION_OPTIONS="$PROVISION_OPTIONS --quiet --domain $DOMAIN --realm $REALM"
+PROVISION_OPTIONS="$PROVISION_OPTIONS --adminpass $PASSWORD --root=$ROOT"
+PROVISION_OPTIONS="$PROVISION_OPTIONS --simple-bind-dn=cn=Manager,$BASEDN --password=$PASSWORD --root=$ROOT"
+$srcdir/bin/smbscript $srcdir/setup/provision $PROVISION_OPTIONS >&2
+
+LDAP_URI="ldapi://"`echo $LDAPDIR/ldapi | sed 's|/|%2F|g'`
+
+. `dirname $0`/mk-openldap.sh
+
+test -z "$FEDORA_DS_PREFIX" || {
+ . `dirname $0`/mk-fedora-ds.sh
+}
+
+cat >$PRIVATEDIR/wins_config.ldif<<EOF
+dn: name=TORTURE_6,CN=PARTNERS
+objectClass: wreplPartner
+name: TORTURE_6
+address: 127.0.0.6
+pullInterval: 0
+pushChangeCount: 0
+type: 0x3
+EOF
+
+$srcdir/bin/ldbadd -H $PRIVATEDIR/wins_config.ldb < $PRIVATEDIR/wins_config.ldif >/dev/null || exit 1
+
+echo "KRB5_CONFIG=$KRB5_CONFIG"
+echo "PREFIX_ABS=$PREFIX_ABS"
+echo "TEST_DATA_PREFIX=$TEST_DATA_PREFIX"
+echo "CONFIGURATION=$CONFIGURATION"
+echo "CONFFILE=$CONFFILE"
+echo "SLAPD_CONF=$SLAPD_CONF"
+echo "PIDDIR=$PIDDIR"
+echo "AUTH=$AUTH"
+echo "SERVER=$SERVER"
+echo "NETBIOSNAME=$NETBIOSNAME"
+echo "LDAP_URI=$LDAP_URI"
+echo "DOMAIN=$DOMAIN"
+echo "USERNAME=$USERNAME"
+echo "REALM=$REALM"
+echo "DNSNAME=$DNSNAME"
+echo "BASEDN=$BASEDN"
+echo "PASSWORD=$PASSWORD"
+echo "SRCDIR=$SRCDIR"
+echo "PREFIX=$PREFIX"
+echo "SMBD_LOGLEVEL=$SMBD_LOGLEVEL"
+echo "LDAPDIR=$LDAPDIR"
+echo "PROVISION_OPTIONS=$PROVISION_OPTIONS"
+echo "PROVISION_ACI=$PROVISION_ACI" \ No newline at end of file