s4:selftest Make OpenLDAP guess it's own modules from now on
[ira/wip.git] / selftest / target / Samba4.pm
index 7264ddbcb952bd91ddd11b9861704d22fc89fd1f..a4e3c58835c0eb487aa7b8ef3397d31adb30e7e9 100644 (file)
@@ -103,15 +103,18 @@ sub check_or_start($$$)
                SocketWrapper::set_default_iface($env_vars->{SOCKET_WRAPPER_DEFAULT_IFACE});
 
                my $valgrind = "";
-               if (defined($ENV{SMBD_VALGRIND})) {
-                   $valgrind = $ENV{SMBD_VALGRIND};
+               if (defined($ENV{SAMBA_VALGRIND})) {
+                   $valgrind = $ENV{SAMBA_VALGRIND};
                } 
 
                $ENV{KRB5_CONFIG} = $env_vars->{KRB5_CONFIG}; 
+               $ENV{WINBINDD_SOCKET_DIR} = $env_vars->{WINBINDD_SOCKET_DIR};
 
                $ENV{NSS_WRAPPER_PASSWD} = $env_vars->{NSS_WRAPPER_PASSWD};
                $ENV{NSS_WRAPPER_GROUP} = $env_vars->{NSS_WRAPPER_GROUP};
 
+               $ENV{UID_WRAPPER} = "1";
+
                # Start slapd before samba, but with the fifo on stdin
                if (defined($self->{ldap})) {
                    $self->slapd_start($env_vars) or 
@@ -122,8 +125,8 @@ sub check_or_start($$$)
                if (defined($max_time)) {
                        $optarg = "--maximum-runtime=$max_time ";
                }
-               if (defined($ENV{SMBD_OPTIONS})) {
-                       $optarg.= " $ENV{SMBD_OPTIONS}";
+               if (defined($ENV{SAMBA_OPTIONS})) {
+                       $optarg.= " $ENV{SAMBA_OPTIONS}";
                }
                my $samba = $self->bindir_path("samba");
                my $ret = system("$valgrind $samba $optarg $env_vars->{CONFIGURATION} -M single -i --leak-report-full");
@@ -230,97 +233,6 @@ sub mk_openldap($$$)
 
        my $slapd_conf = "$ldapdir/slapd.conf";
        my $pidfile = "$ldapdir/slapd.pid";
-       my $modconf = "$ldapdir/modules.conf";
-
-       my $oldpath = $ENV{PATH};
-       my $olpath = "";
-       my $olroot = "";
-       if (defined $ENV{OPENLDAP_ROOT}) {
-               $olroot = "$ENV{OPENLDAP_ROOT}";
-              $olpath = "$olroot/libexec:$olroot/sbin:";
-       }
-       $ENV{PATH} = "$olpath/usr/local/sbin:/usr/sbin:/sbin:$ENV{PATH}";
-
-       unlink($modconf);
-       open(CONF, ">$modconf"); close(CONF);
-
-       if (system("slaptest -u -f $slapd_conf >&2") != 0) {
-               open(CONF, ">$modconf"); 
-               # enable slapd modules
-               print CONF "
-modulepath      $olroot/libexec/openldap
-moduleload     syncprov
-moduleload      memberof
-moduleload      refint
-";
-               close(CONF);
-       }
-       if (system("slaptest -u -f $slapd_conf >&2") != 0) {
-               open(CONF, ">$modconf"); 
-               # enable slapd modules
-               print CONF "
-modulepath      $olroot/libexec/openldap
-moduleload     back_hdb
-moduleload     syncprov
-moduleload      memberof
-moduleload      refint
-";
-               close(CONF);
-       }
-
-       if (system("slaptest -u -f $slapd_conf >&2") != 0) {
-               open(CONF, ">$modconf"); 
-               # enable slapd modules
-               print CONF "
-moduleload     back_hdb
-moduleload     syncprov
-moduleload      memberof
-moduleload      refint
-";
-               close(CONF);
-       }
-
-       if (system("slaptest -u -f $slapd_conf >&2") != 0) {
-               open(CONF, ">$modconf"); 
-               # enable slapd modules
-               print CONF "
-modulepath     /usr/lib/ldap
-moduleload     back_hdb
-moduleload     syncprov
-moduleload      memberof
-moduleload      refint
-";
-               close(CONF);
-       }
-
-       if (system("slaptest -u -f $slapd_conf >&2") != 0) {
-               open(CONF, ">$modconf"); 
-               # enable slapd modules (Fedora layout)
-               print CONF "
-modulepath     /usr/lib/openldap
-moduleload     syncprov
-moduleload      memberof
-moduleload      refint
-";
-               close(CONF);
-       }
-
-       if (system("slaptest -u -f $slapd_conf >&2") != 0) {
-               open(CONF, ">$modconf"); 
-               # enable slapd modules (Fedora x86_64 layout)
-               print CONF "
-modulepath     /usr/lib64/openldap
-moduleload     syncprov
-moduleload      memberof
-moduleload      refint
-";
-               close(CONF);
-       }
-
-       system("slaptest -u -f $slapd_conf") == 0 or die("slaptest still fails after adding modules");
-
-    
-       $ENV{PATH} = $oldpath;
 
        return ($slapd_conf, $pidfile);
 }
@@ -339,6 +251,7 @@ sub mk_keyblobs($$)
        my $adminkeyfile = "$tlsdir/adminkey.pem";
        my $reqadmin = "$tlsdir/req-admin.der";
        my $admincertfile = "$tlsdir/admincert.pem";
+       my $admincertupnfile = "$tlsdir/admincertupn.pem";
 
        mkdir($tlsdir, 0777);
 
@@ -486,24 +399,51 @@ EOF
        open(ADMINCERTFILE, ">$admincertfile");
        print ADMINCERTFILE <<EOF;
 -----BEGIN CERTIFICATE-----
-MIIDHTCCAoagAwIBAgIUC0W5dW/N9kE+NgD0mKK34YgyqQ0wCwYJKoZIhvcNAQEFMFIxEzAR
+MIIDHTCCAoagAwIBAgIUUggzW4lLRkMKe1DAR2NKatkMDYwwCwYJKoZIhvcNAQELMFIxEzAR
 BgoJkiaJk/IsZAEZDANjb20xFzAVBgoJkiaJk/IsZAEZDAdleGFtcGxlMRUwEwYKCZImiZPy
-LGQBGQwFc2FtYmExCzAJBgNVBAMMAkNBMCIYDzIwMDgwMzAxMTMyMzAwWhgPMjAzMzAyMjQx
-MzIzMDBaMG0xEzARBgoJkiaJk/IsZAEZDANjb20xFzAVBgoJkiaJk/IsZAEZDAdleGFtcGxl
+LGQBGQwFc2FtYmExCzAJBgNVBAMMAkNBMCIYDzIwMDkwNzI3MDMzMjE1WhgPMjAzNDA3MjIw
+MzMyMTVaMG0xEzARBgoJkiaJk/IsZAEZDANjb20xFzAVBgoJkiaJk/IsZAEZDAdleGFtcGxl
 MRUwEwYKCZImiZPyLGQBGQwFc2FtYmExDjAMBgNVBAMMBXVzZXJzMRYwFAYDVQQDDA1BZG1p
 bmlzdHJhdG9yMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQD0+OL7TQBj0RejbIH1+g5G
 eRaWaM9xF43uE5y7jUHEsi5owhZF5iIoHZeeL6cpDF5y1BZRs0JlA1VqMry1jjKlzFYVEMMF
 xB6esnXhl0Jpip1JkUMMXLOP1m/0dqayuHBWozj9f/cdyCJr0wJIX1Z8Pr+EjYRGPn/MF0xd
 l3JRlwIDAQABo4HSMIHPMA4GA1UdDwEB/wQEAwIFoDAoBgNVHSUEITAfBgcrBgEFAgMEBggr
 BgEFBQcDAgYKKwYBBAGCNxQCAjBIBgNVHREEQTA/oD0GBisGAQUCAqAzMDGgExsRU0FNQkEu
-RVhBTVBMRS5DT02hGjAYoAMCAQGhETAPGw1hZG1pbmlzdHJhdG9yMB8GA1UdIwQYMBaAFMLZ
+RVhBTVBMRS5DT02hGjAYoAMCAQGhETAPGw1BZG1pbmlzdHJhdG9yMB8GA1UdIwQYMBaAFMLZ
 ufegDKLZs0VOyFXYK1L6M8oyMB0GA1UdDgQWBBQg81bLyfCA88C2B/BDjXlGuaFaxjAJBgNV
-HRMEAjAAMA0GCSqGSIb3DQEBBQUAA4GBAHsqSqul0hZCXn4t8Kfp3v/JLMiUMJihR1XOgzoa
-ufLOQ1HNzFUHKuo1JEQ1+i5gHT/arLu/ZBF4BfQol7vW27gKIEt0fkRV8EvoPxXvSokHq0Ku
-HCuPOhYNEP3wYiwB3g93NMCinWVlz0mh5aijEU7y/XrjlZxBKFFrTE+BJi1o
+HRMEAjAAMA0GCSqGSIb3DQEBCwUAA4GBAEf/OSHUDJaGdtWGNuJeqcVYVMwrfBAc0OSwVhz1
+7/xqKHWo8wIMPkYRtaRHKLNDsF8GkhQPCpVsa6mX/Nt7YQnNvwd+1SBP5E8GvwWw9ZzLJvma
+nk2n89emuayLpVtp00PymrDLRBcNaRjFReQU8f0o509kiVPHduAp3jOiy13l
 -----END CERTIFICATE-----
 EOF
        close(ADMINCERTFILE);
+
+       # hxtool issue-certificate --ca-certificate=FILE:$CAFILE,$KEYFILE \
+       # --type="pkinit-client" \
+       # --ms-upn="administrator@samba.example.com" \
+       # --req="PKCS10:$ADMINREQFILE" --certificate="FILE:$ADMINCERTUPNFILE" \
+       # --lifetime="25 years"
+       
+       open(ADMINCERTUPNFILE, ">$admincertupnfile");
+       print ADMINCERTUPNFILE <<EOF;
+-----BEGIN CERTIFICATE-----
+MIIDDzCCAnigAwIBAgIUUp3CJMuNaEaAdPKp3QdNIwG7a4wwCwYJKoZIhvcNAQELMFIxEzAR
+BgoJkiaJk/IsZAEZDANjb20xFzAVBgoJkiaJk/IsZAEZDAdleGFtcGxlMRUwEwYKCZImiZPy
+LGQBGQwFc2FtYmExCzAJBgNVBAMMAkNBMCIYDzIwMDkwNzI3MDMzMzA1WhgPMjAzNDA3MjIw
+MzMzMDVaMG0xEzARBgoJkiaJk/IsZAEZDANjb20xFzAVBgoJkiaJk/IsZAEZDAdleGFtcGxl
+MRUwEwYKCZImiZPyLGQBGQwFc2FtYmExDjAMBgNVBAMMBXVzZXJzMRYwFAYDVQQDDA1BZG1p
+bmlzdHJhdG9yMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQD0+OL7TQBj0RejbIH1+g5G
+eRaWaM9xF43uE5y7jUHEsi5owhZF5iIoHZeeL6cpDF5y1BZRs0JlA1VqMry1jjKlzFYVEMMF
+xB6esnXhl0Jpip1JkUMMXLOP1m/0dqayuHBWozj9f/cdyCJr0wJIX1Z8Pr+EjYRGPn/MF0xd
+l3JRlwIDAQABo4HEMIHBMA4GA1UdDwEB/wQEAwIFoDAoBgNVHSUEITAfBgcrBgEFAgMEBggr
+BgEFBQcDAgYKKwYBBAGCNxQCAjA6BgNVHREEMzAxoC8GCisGAQQBgjcUAgOgIQwfYWRtaW5p
+c3RyYXRvckBzYW1iYS5leGFtcGxlLmNvbTAfBgNVHSMEGDAWgBTC2bn3oAyi2bNFTshV2CtS
++jPKMjAdBgNVHQ4EFgQUIPNWy8nwgPPAtgfwQ415RrmhWsYwCQYDVR0TBAIwADANBgkqhkiG
+9w0BAQsFAAOBgQBk42+egeUB3Ji2PC55fbt3FNKxvmm2xUUFkV9POK/YR9rajKOwk5jtYSeS
+Zd7J9s//rNFNa7waklFkDaY56+QWTFtdvxfE+KoHaqt6X8u6pqi7p3M4wDKQox+9Dx8yWFyq
+Wfz/8alZ5aMezCQzXJyIaJsCLeKABosSwHcpAFmxlQ==
+-----END CERTIFICATE-----
+EOF
 }
 
 #
@@ -532,7 +472,7 @@ sub provision_raw_prepare($$$$$$$)
        $ctx->{kdc_ipv4} = $kdc_ipv4;
 
        $ctx->{server_loglevel} = 1;
-       $ctx->{username} = "administrator";
+       $ctx->{username} = "Administrator";
        $ctx->{domain} = "SAMBADOMAIN";
        $ctx->{realm} = "SAMBA.EXAMPLE.COM";
        $ctx->{dnsname} = "samba.example.com";
@@ -578,7 +518,7 @@ sub provision_raw_prepare($$$$$$$)
        push (@provision_options, "NSS_WRAPPER_PASSWD=\"$ctx->{nsswrap_passwd}\"");
        push (@provision_options, "NSS_WRAPPER_GROUP=\"$ctx->{nsswrap_group}\"");
        if (defined($ENV{GDB_PROVISION})) {
-               push (@provision_options, "gdb --args python");
+               push (@provision_options, "gdb --args");
        }
        if (defined($ENV{VALGRIND_PROVISION})) {
                push (@provision_options, "valgrind");
@@ -789,7 +729,6 @@ sub provision($$$$$$$)
 [tmp]
        path = $ctx->{tmpdir}
        read only = no
-       ntvfs handler = posix
        posix:sharedelay = 100000
        posix:eadb = $ctx->{lockdir}/eadb.tdb
        posix:oplocktimeout = 3
@@ -798,7 +737,6 @@ sub provision($$$$$$$)
 [test1]
        path = $ctx->{tmpdir}/test1
        read only = no
-       ntvfs handler = posix
        posix:sharedelay = 100000
        posix:eadb = $ctx->{lockdir}/eadb.tdb
        posix:oplocktimeout = 3
@@ -807,7 +745,6 @@ sub provision($$$$$$$)
 [test2]
        path = $ctx->{tmpdir}/test2
        read only = no
-       ntvfs handler = posix
        posix:sharedelay = 100000
        posix:eadb = $ctx->{lockdir}/eadb.tdb
        posix:oplocktimeout = 3
@@ -857,7 +794,7 @@ sub provision($$$$$$$)
                $ret->{LDAP_URI} = $ctx->{ldap_uri};
                push (@{$ctx->{provision_options}},"--ldap-backend=$ctx->{ldap_uri}");
 
-               system("$self->{setupdir}/provision-backend $configuration --ldap-admin-pass=$ctx->{password} --root=$ctx->{unix_name} --realm=$ctx->{realm} --domain=$ctx->{domain} --host-name=$ctx->{netbiosname} --ldap-backend-type=$self->{ldap}>&2") == 0 or die("backend provision failed");
+                system("$self->{setupdir}/provision-backend $configuration --ldap-admin-pass=$ctx->{password} --root=$ctx->{unix_name} --realm=$ctx->{realm} --domain=$ctx->{domain} --host-name=$ctx->{netbiosname} --ldap-backend-type=$self->{ldap} --nosync>&2") == 0 or die("backend provision failed");
 
                push (@{$ctx->{provision_options}}, "--password=$ctx->{password}");