2013-02-16 01:07:27 +11:00
#!/bin/sh
if [ $# -lt 1 ] ; then
2022-04-22 15:46:06 +02:00
cat <<EOF
2013-02-16 01:07:27 +11:00
Usage: dbcheck.sh PREFIX RELEASE
EOF
2022-04-22 15:46:06 +02:00
exit 1
2013-02-16 01:07:27 +11:00
fi
PREFIX_ABS = " $1 "
RELEASE = " $2 "
shift 2
2020-10-21 19:14:32 +02:00
failed = 0
2022-04-22 15:46:06 +02:00
. $( dirname $0 ) /subunit.sh
. $( 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
2022-12-22 14:43:45 +01:00
ldbdel = $( system_or_builddir_binary ldbdel " ${ BINDIR } " )
samba_tdbrestore = $( system_or_builddir_binary tdbrestore " ${ BINDIR } " )
2020-10-21 19:14:32 +02:00
samba_undump = " $SRCDIR_ABS /source4/selftest/provisions/undump.sh "
if [ ! -x $samba_undump ] || [ ! -d $release_dir ] ; then
2022-04-22 15:46:06 +02:00
subunit_start_test " ${ RELEASE } "
subunit_skip_test " ${ RELEASE } " <<EOF
2020-10-21 19:14:32 +02:00
no test provision
EOF
2022-04-22 15:46:06 +02:00
subunit_start_test "remove_dns_user"
subunit_skip_test "remove_dns_user" <<EOF
2020-10-21 19:14:32 +02:00
no test provision
EOF
2022-04-22 15:46:06 +02:00
subunit_start_test "upgradeprovision"
subunit_skip_test "upgradeprovision" <<EOF
2020-10-21 19:14:32 +02:00
no test provision
EOF
2022-04-22 15:46:06 +02:00
subunit_start_test "upgradeprovision_full"
subunit_skip_test "upgradeprovision_full" <<EOF
2020-10-21 19:14:32 +02:00
no test provision
EOF
2022-04-22 15:46:06 +02:00
subunit_start_test "reindex"
subunit_skip_test "reindex" <<EOF
2020-10-21 19:14:32 +02:00
no test provision
EOF
2022-04-22 15:46:06 +02:00
subunit_start_test "dbcheck"
subunit_skip_test "dbcheck" <<EOF
2020-10-21 19:14:32 +02:00
no test provision
EOF
2022-04-22 15:46:06 +02:00
subunit_start_test "dbcheck_clean"
subunit_skip_test "dbcheck_clean" <<EOF
2020-10-21 19:14:32 +02:00
no test provision
EOF
2022-04-22 15:46:06 +02:00
# 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
2020-10-21 19:14:32 +02:00
no test provision
EOF
2022-04-22 15:46:06 +02:00
fi
subunit_start_test "dbcheck_full_clean"
subunit_skip_test "dbcheck_full_clean" <<EOF
2020-10-21 19:14:32 +02:00
no test provision
EOF
2022-04-22 15:46:06 +02:00
subunit_start_test "dbcheck_full_clean_well_known_acls"
subunit_skip_test "dbcheck_full_clean_well_known_acls" <<EOF
2020-10-21 19:14:32 +02:00
no test provision
EOF
2022-04-22 15:46:06 +02:00
subunit_start_test "samba_dnsupgrade"
subunit_skip_test "samba_dnsupgrade" <<EOF
2020-10-21 19:14:32 +02:00
no test provision
EOF
2022-04-22 15:46:06 +02:00
subunit_start_test "referenceprovision"
subunit_skip_test "referenceprovision" <<EOF
2020-10-21 19:14:32 +02:00
no test provision
EOF
2022-04-22 15:46:06 +02:00
subunit_start_test "ldapcmp"
subunit_skip_test "ldapcmp" <<EOF
2020-10-21 19:14:32 +02:00
no test provision
EOF
2022-04-22 15:46:06 +02:00
subunit_start_test "ldapcmp_full"
subunit_skip_test "ldapcmp_full" <<EOF
2020-10-21 19:14:32 +02:00
no test provision
EOF
2022-04-22 15:46:06 +02:00
subunit_start_test "ldapcmp_sd"
subunit_skip_test "ldapcmp_sd" <<EOF
2020-10-21 19:14:32 +02:00
no test provision
EOF
2022-04-22 15:46:06 +02:00
subunit_start_test "ldapcmp_full_sd"
subunit_skip_test "ldapcmp_full_sd" <<EOF
2020-10-21 19:14:32 +02:00
no test provision
EOF
2022-04-22 15:46:06 +02:00
exit 0
2020-10-21 19:14:32 +02:00
fi
2022-04-22 15:46:06 +02:00
undump( )
{
$samba_undump $release_dir $PREFIX_ABS /${ RELEASE } _upgrade $samba_tdbrestore
$samba_undump $release_dir $PREFIX_ABS /${ RELEASE } _upgrade_full $samba_tdbrestore
2020-10-21 19:14:32 +02:00
2022-04-22 15:46:06 +02:00
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
2020-10-21 19:14:32 +02:00
2022-04-22 15:46:06 +02:00
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
}
2022-04-22 15:46:06 +02: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
2022-12-22 14:43:45 +01:00
${ ldbdel } -H tdb://$PREFIX_ABS /${ RELEASE } _upgrade/private/sam.ldb cn = dns,cn= users,dc= ${ RELEASE } ,dc= samba,dc= corp
2022-04-22 15:46:06 +02:00
fi
2013-02-16 01:07:27 +11:00
}
2022-04-22 15:46:06 +02:00
reindex( )
{
2022-06-13 16:11:31 +02: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
2022-04-22 15:46:06 +02:00
dbcheck( )
{
2022-06-13 16:11:31 +02: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
}
2022-04-22 15:46:06 +02:00
dbcheck_clean( )
{
2022-06-13 16:11:31 +02: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
2022-04-22 15:46:06 +02:00
dbcheck_full( )
{
2022-06-13 16:11:31 +02: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
}
2022-04-22 15:46:06 +02:00
dbcheck_full_clean( )
{
2022-06-13 16:11:31 +02: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
2022-04-22 15:46:06 +02:00
dbcheck_full_clean_well_known_acls( )
{
2022-06-13 16:11:31 +02: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
}
2022-04-22 15:46:06 +02: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
}
2022-04-22 15:46:06 +02: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
}
2022-04-22 15:46:06 +02:00
samba_upgradedns( )
{
$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
}
2022-04-22 15:46:06 +02:00
referenceprovision( )
{
$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
}
2022-04-22 15:46:06 +02:00
ldapcmp( )
{
if [ x$RELEASE != x"alpha13" ] ; then
$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
fi
2013-02-16 01:07:27 +11:00
}
2022-04-22 15:46:06 +02:00
ldapcmp_full( )
{
$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
}
2022-04-22 15:46:06 +02: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
2013-02-16 01:07:27 +11:00
}
2022-04-22 15:46:06 +02:00
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
2013-02-16 01:07:27 +11:00
}
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
2022-04-22 15:46:06 +02:00
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)
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
2013-02-17 22:45:59 +11:00
2013-02-16 01:07:27 +11:00
exit $failed