2013-02-16 01:07:27 +11:00
#!/bin/sh
if [ $# -lt 1 ] ; then
cat <<EOF
Usage: dbcheck.sh PREFIX RELEASE
EOF
exit 1;
fi
PREFIX_ABS = " $1 "
RELEASE = " $2 "
shift 2
2020-10-21 19:14:32 +02:00
failed = 0
2013-02-16 01:07:27 +11:00
. ` dirname $0 ` /subunit.sh
2020-10-21 19:14:32 +02:00
. ` dirname $0 ` /common_test_fns.inc
2013-02-16 01:07:27 +11:00
2020-10-21 19:14:32 +02:00
release_dir = " $SRCDIR_ABS /source4/selftest/provisions/ ${ RELEASE } "
2013-02-16 01:07:27 +11:00
2014-02-18 10:37:32 +01:00
LDBDEL_BIN = ldbdel
if [ -x " $BINDIR /ldbdel " ] ; then
LDBDEL_BIN = $BINDIR /ldbdel
fi
2020-10-21 19:14:32 +02:00
samba_tdbrestore = "tdbrestore"
if [ -x " $BINDIR /tdbrestore " ] ; then
samba_tdbrestore = " $BINDIR /tdbrestore "
fi
samba_undump = " $SRCDIR_ABS /source4/selftest/provisions/undump.sh "
if [ ! -x $samba_undump ] || [ ! -d $release_dir ] ; then
subunit_start_test " ${ RELEASE } "
subunit_skip_test " ${ RELEASE } " <<EOF
no test provision
EOF
subunit_start_test "remove_dns_user"
subunit_skip_test "remove_dns_user" <<EOF
no test provision
EOF
subunit_start_test "upgradeprovision"
subunit_skip_test "upgradeprovision" <<EOF
no test provision
EOF
subunit_start_test "upgradeprovision_full"
subunit_skip_test "upgradeprovision_full" <<EOF
no test provision
EOF
subunit_start_test "reindex"
subunit_skip_test "reindex" <<EOF
no test provision
EOF
subunit_start_test "dbcheck"
subunit_skip_test "dbcheck" <<EOF
no test provision
EOF
subunit_start_test "dbcheck_clean"
subunit_skip_test "dbcheck_clean" <<EOF
no test provision
EOF
# So far, only releases before 4.0.0rc6 need a dbcheck if upgradeprovision has already been run
if [ x$RELEASE != x"release-4-0-0" ] ; then
subunit_start_test "dbcheck_full"
subunit_skip_test "dbcheck_full" <<EOF
no test provision
EOF
fi
subunit_start_test "dbcheck_full_clean"
subunit_skip_test "dbcheck_full_clean" <<EOF
no test provision
EOF
subunit_start_test "dbcheck_full_clean_well_known_acls"
subunit_skip_test "dbcheck_full_clean_well_known_acls" <<EOF
no test provision
EOF
subunit_start_test "samba_dnsupgrade"
subunit_skip_test "samba_dnsupgrade" <<EOF
no test provision
EOF
subunit_start_test "referenceprovision"
subunit_skip_test "referenceprovision" <<EOF
no test provision
EOF
subunit_start_test "ldapcmp"
subunit_skip_test "ldapcmp" <<EOF
no test provision
EOF
subunit_start_test "ldapcmp_full"
subunit_skip_test "ldapcmp_full" <<EOF
no test provision
EOF
subunit_start_test "ldapcmp_sd"
subunit_skip_test "ldapcmp_sd" <<EOF
no test provision
EOF
subunit_start_test "ldapcmp_full_sd"
subunit_skip_test "ldapcmp_full_sd" <<EOF
no test provision
EOF
exit 0
fi
2013-02-16 01:07:27 +11:00
undump( ) {
2020-10-21 19:14:32 +02:00
$samba_undump $release_dir $PREFIX_ABS /${ RELEASE } _upgrade $samba_tdbrestore
$samba_undump $release_dir $PREFIX_ABS /${ RELEASE } _upgrade_full $samba_tdbrestore
cp -a $release_dir /private/*.keytab $PREFIX_ABS /${ RELEASE } _upgrade/private/
cp -a $release_dir /sysvol $PREFIX_ABS /${ RELEASE } _upgrade/
mkdir $PREFIX_ABS /${ RELEASE } _upgrade/etc/
sed -e " s|@@PREFIX@@| $PREFIX_ABS / ${ RELEASE } _upgrade|g " $release_dir /etc/smb.conf.template \
> $PREFIX_ABS /${ RELEASE } _upgrade/etc/smb.conf
cp -a $release_dir /private/*.keytab $PREFIX_ABS /${ RELEASE } _upgrade_full/private/
cp -a $release_dir /sysvol $PREFIX_ABS /${ RELEASE } _upgrade_full/
mkdir $PREFIX_ABS /${ RELEASE } _upgrade_full/etc/
sed -e " s|@@PREFIX@@| $PREFIX_ABS / ${ RELEASE } _upgrade_full|g " $release_dir /etc/smb.conf.template \
> $PREFIX_ABS /${ RELEASE } _upgrade_full/etc/smb.conf
2013-02-16 01:07:27 +11:00
}
remove_dns_user( ) {
if [ x$RELEASE != x"release-4-0-0" ] ; then
# This is done, because otherwise the upgrdeprovision will not run without --full
2014-02-18 10:37:32 +01:00
${ LDBDEL_BIN } -H tdb://$PREFIX_ABS /${ RELEASE } _upgrade/private/sam.ldb cn = dns,cn= users,dc= ${ RELEASE } ,dc= samba,dc= corp
2013-02-16 01:07:27 +11:00
fi
}
reindex( ) {
2018-08-27 17:06:37 +01:00
$PYTHON $BINDIR /samba-tool dbcheck --reindex -H tdb://$PREFIX_ABS /${ RELEASE } _upgrade/private/sam.ldb $@
2013-02-16 01:07:27 +11:00
}
# This should 'fail', because it returns the number of modified records
dbcheck( ) {
2018-08-27 17:06:37 +01:00
$PYTHON $BINDIR /samba-tool dbcheck --cross-ncs --fix --yes -H tdb://$PREFIX_ABS /${ RELEASE } _upgrade/private/sam.ldb $@
2013-02-16 01:07:27 +11:00
}
dbcheck_clean( ) {
2018-08-27 17:06:37 +01:00
$PYTHON $BINDIR /samba-tool dbcheck --cross-ncs -H tdb://$PREFIX_ABS /${ RELEASE } _upgrade/private/sam.ldb $@
2013-02-16 01:07:27 +11:00
}
# This should 'fail', because it returns the number of modified records
dbcheck_full( ) {
2018-08-27 17:06:37 +01:00
$PYTHON $BINDIR /samba-tool dbcheck --cross-ncs --fix --yes -H tdb://$PREFIX_ABS /${ RELEASE } _upgrade_full/private/sam.ldb $@
2013-02-16 01:07:27 +11:00
}
dbcheck_full_clean( ) {
2018-08-27 17:06:37 +01:00
$PYTHON $BINDIR /samba-tool dbcheck --cross-ncs -H tdb://$PREFIX_ABS /${ RELEASE } _upgrade_full/private/sam.ldb $@
2013-02-16 01:07:27 +11:00
}
2013-03-22 17:12:43 +11:00
# This checks that after the upgrade, the well known ACLs are correct, so this reset should not want to do anything
dbcheck_full_clean_well_known_acls( ) {
2018-08-27 17:06:37 +01:00
$PYTHON $BINDIR /samba-tool dbcheck --reset-well-known-acls --cross-ncs -H tdb://$PREFIX_ABS /${ RELEASE } _upgrade_full/private/sam.ldb $@
2013-03-22 17:12:43 +11:00
}
2013-02-16 01:07:27 +11:00
upgradeprovision( ) {
2017-12-12 15:26:35 +13:00
# bring the really old Samba schema in line with a more recent 2008R2 schema
2021-04-14 11:44:51 +02:00
$PYTHON $BINDIR /samba_upgradeprovision --configfile= " $PREFIX_ABS / ${ RELEASE } _upgrade/etc/smb.conf " --debugchange
2017-12-12 15:26:35 +13:00
# on top of this, also apply 2008R2 changes we accidentally missed in the past
2018-08-27 17:06:37 +01:00
$PYTHON $BINDIR /samba-tool domain schemaupgrade -H tdb://$PREFIX_ABS /${ RELEASE } _upgrade/private/sam.ldb --ldf-file= samba-4.7-missing-for-schema45.ldif,fix-forest-rev.ldf
2017-12-18 12:30:44 +13:00
# add missing domain prep for 2008R2
2018-08-27 17:06:37 +01:00
$PYTHON $BINDIR /samba-tool domain functionalprep -H tdb://$PREFIX_ABS /${ RELEASE } _upgrade/private/sam.ldb --domain --function-level 2008_R2
2013-02-16 01:07:27 +11:00
}
upgradeprovision_full( ) {
2017-12-18 12:30:44 +13:00
# add missing domain prep for 2008R2
2018-08-27 17:06:37 +01:00
$PYTHON $BINDIR /samba-tool domain functionalprep -H tdb://$PREFIX_ABS /${ RELEASE } _upgrade_full/private/sam.ldb --domain --function-level 2008_R2
2017-12-18 12:30:44 +13:00
2021-04-14 11:44:51 +02:00
$PYTHON $BINDIR /samba_upgradeprovision --configfile= " $PREFIX_ABS / ${ RELEASE } _upgrade_full/etc/smb.conf " --full --debugchange
2013-02-16 01:07:27 +11:00
}
samba_upgradedns( ) {
2021-04-14 11:44:51 +02:00
$PYTHON $BINDIR /samba_upgradedns --dns-backend= SAMBA_INTERNAL --configfile= " $PREFIX_ABS / ${ RELEASE } _upgrade_full/etc/smb.conf "
2013-02-16 01:07:27 +11:00
}
referenceprovision( ) {
2017-11-20 17:10:25 +13:00
$PYTHON $BINDIR /samba-tool domain provision --server-role= "dc" --domain= SAMBA --host-name= ares --realm= ${ RELEASE } .samba.corp --targetdir= $PREFIX_ABS /${ RELEASE } _upgrade_reference --use-ntvfs --host-ip= 127.0.0.1 --host-ip6= ::1 --function-level= 2003 --base-schema= 2008_R2_old
2013-02-16 01:07:27 +11:00
}
ldapcmp( ) {
if [ x$RELEASE != x"alpha13" ] ; then
2021-10-28 13:07:01 +13:00
$PYTHON $BINDIR /samba-tool ldapcmp tdb://$PREFIX_ABS /${ RELEASE } _upgrade_reference/private/sam.ldb tdb://$PREFIX_ABS /${ RELEASE } _upgrade/private/sam.ldb --two --skip-missing-dn --filter= dnsRecord,displayName,msDS-SupportedEncryptionTypes,servicePrincipalName
2013-02-16 01:07:27 +11:00
fi
}
ldapcmp_full( ) {
2021-10-28 13:07:01 +13:00
$PYTHON $BINDIR /samba-tool ldapcmp tdb://$PREFIX_ABS /${ RELEASE } _upgrade_reference/private/sam.ldb tdb://$PREFIX_ABS /${ RELEASE } _upgrade_full/private/sam.ldb --two --filter= dNSProperty,dnsRecord,cn,displayName,versionNumber,systemFlags,msDS-HasInstantiatedNCs,servicePrincipalName --skip-missing-dn
2013-02-16 01:07:27 +11:00
}
ldapcmp_sd( ) {
$PYTHON $BINDIR /samba-tool ldapcmp tdb://$PREFIX_ABS /${ RELEASE } _upgrade_reference/private/sam.ldb tdb://$PREFIX_ABS /${ RELEASE } _upgrade/private/sam.ldb --two --sd --skip-missing-dn
}
ldapcmp_full_sd( ) {
$PYTHON $BINDIR /samba-tool ldapcmp tdb://$PREFIX_ABS /${ RELEASE } _upgrade_reference/private/sam.ldb tdb://$PREFIX_ABS /${ RELEASE } _upgrade_full/private/sam.ldb --two --sd --skip-missing-dn
}
2020-10-21 19:14:32 +02:00
remove_directory $PREFIX_ABS /${ RELEASE } _upgrade
remove_directory $PREFIX_ABS /${ RELEASE } _upgrade_full
remove_directory $PREFIX_ABS /${ RELEASE } _upgrade_reference
testit $RELEASE undump || failed = ` expr $failed + 1`
testit "remove_dns_user" remove_dns_user || failed = ` expr $failed + 1`
testit "upgradeprovision" upgradeprovision || failed = ` expr $failed + 1`
testit "upgradeprovision_full" upgradeprovision_full || failed = ` expr $failed + 1`
testit "reindex" reindex || failed = ` expr $failed + 1`
testit_expect_failure "dbcheck" dbcheck || failed = ` expr $failed + 1`
testit_expect_failure "dbcheck_full" dbcheck_full || failed = ` expr $failed + 1`
testit "dbcheck_clean" dbcheck_clean || failed = ` expr $failed + 1`
testit "dbcheck_full_clean" dbcheck_full_clean || failed = ` expr $failed + 1`
testit "dbcheck_full_clean_well_known_acls" dbcheck_full_clean_well_known_acls || failed = ` expr $failed + 1`
testit "referenceprovision" referenceprovision || failed = ` expr $failed + 1`
testit "samba_upgradedns" samba_upgradedns || failed = ` expr $failed + 1`
testit "ldapcmp" ldapcmp || failed = ` expr $failed + 1`
testit "ldapcmp_sd" ldapcmp_sd || failed = ` expr $failed + 1`
testit "ldapcmp_full_sd" ldapcmp_full_sd || failed = ` expr $failed + 1`
remove_directory $PREFIX_ABS /${ RELEASE } _upgrade
remove_directory $PREFIX_ABS /${ RELEASE } _upgrade_full
remove_directory $PREFIX_ABS /${ RELEASE } _upgrade_reference
2013-02-17 22:45:59 +11:00
2013-02-16 01:07:27 +11:00
exit $failed