mirror of
https://github.com/samba-team/samba.git
synced 2024-12-23 17:34:34 +03:00
selftest: add ad_member_idmap_ad server
Add a member server that uses idmap_ad. Gets used in the next commit. Signed-off-by: Ralph Boehme <slow@samba.org> Reviewed-by: Andrew Bartlett <abartlet@samba.org>
This commit is contained in:
parent
259e1706e3
commit
4a7ec5b760
@ -346,6 +346,7 @@ sub get_interface($)
|
||||
|
||||
# 11-16 used by selftest.pl for client interfaces
|
||||
|
||||
$interfaces{"idmapadmember"} = 19;
|
||||
$interfaces{"idmapridmember"} = 20;
|
||||
$interfaces{"localdc"} = 21;
|
||||
$interfaces{"localvampiredc"} = 22;
|
||||
|
@ -689,6 +689,95 @@ sub setup_ad_member_idmap_rid($$$$)
|
||||
return $ret;
|
||||
}
|
||||
|
||||
sub setup_ad_member_idmap_ad($$$$)
|
||||
{
|
||||
my ($self, $prefix, $dcvars) = @_;
|
||||
|
||||
# If we didn't build with ADS, pretend this env was never available
|
||||
if (not $self->have_ads()) {
|
||||
return "UNKNOWN";
|
||||
}
|
||||
|
||||
print "PROVISIONING S3 AD MEMBER WITH idmap_ad config...";
|
||||
|
||||
my $member_options = "
|
||||
security = ads
|
||||
workgroup = $dcvars->{DOMAIN}
|
||||
realm = $dcvars->{REALM}
|
||||
password server = $dcvars->{SERVER}
|
||||
idmap config * : backend = tdb
|
||||
idmap config * : range = 1000000-1999999
|
||||
idmap config $dcvars->{DOMAIN} : backend = ad
|
||||
idmap config $dcvars->{DOMAIN} : range = 2000000-2999999
|
||||
";
|
||||
|
||||
my $ret = $self->provision($prefix, $dcvars->{DOMAIN},
|
||||
"IDMAPADMEMBER",
|
||||
"loCalMemberPass",
|
||||
$member_options,
|
||||
$dcvars->{SERVER_IP},
|
||||
$dcvars->{SERVER_IPV6});
|
||||
|
||||
$ret or return undef;
|
||||
|
||||
close(USERMAP);
|
||||
$ret->{DOMAIN} = $dcvars->{DOMAIN};
|
||||
$ret->{REALM} = $dcvars->{REALM};
|
||||
|
||||
my $ctx;
|
||||
my $prefix_abs = abs_path($prefix);
|
||||
$ctx = {};
|
||||
$ctx->{krb5_conf} = "$prefix_abs/lib/krb5.conf";
|
||||
$ctx->{domain} = $dcvars->{DOMAIN};
|
||||
$ctx->{realm} = $dcvars->{REALM};
|
||||
$ctx->{dnsname} = lc($dcvars->{REALM});
|
||||
$ctx->{kdc_ipv4} = $dcvars->{SERVER_IP};
|
||||
$ctx->{kdc_ipv6} = $dcvars->{SERVER_IPV6};
|
||||
$ctx->{krb5_ccname} = "$prefix_abs/krb5cc_%{uid}";
|
||||
Samba::mk_krb5_conf($ctx, "");
|
||||
|
||||
$ret->{KRB5_CONFIG} = $ctx->{krb5_conf};
|
||||
|
||||
my $net = Samba::bindir_path($self, "net");
|
||||
my $cmd = "";
|
||||
$cmd .= "SOCKET_WRAPPER_DEFAULT_IFACE=\"$ret->{SOCKET_WRAPPER_DEFAULT_IFACE}\" ";
|
||||
if (defined($ret->{RESOLV_WRAPPER_CONF})) {
|
||||
$cmd .= "RESOLV_WRAPPER_CONF=\"$ret->{RESOLV_WRAPPER_CONF}\" ";
|
||||
} else {
|
||||
$cmd .= "RESOLV_WRAPPER_HOSTS=\"$ret->{RESOLV_WRAPPER_HOSTS}\" ";
|
||||
}
|
||||
$cmd .= "KRB5_CONFIG=\"$ret->{KRB5_CONFIG}\" ";
|
||||
$cmd .= "SELFTEST_WINBINDD_SOCKET_DIR=\"$ret->{SELFTEST_WINBINDD_SOCKET_DIR}\" ";
|
||||
$cmd .= "$net join $ret->{CONFIGURATION}";
|
||||
$cmd .= " -U$dcvars->{USERNAME}\%$dcvars->{PASSWORD}";
|
||||
|
||||
if (system($cmd) != 0) {
|
||||
warn("Join failed\n$cmd");
|
||||
return undef;
|
||||
}
|
||||
|
||||
# We need world access to this share, as otherwise the domain
|
||||
# administrator from the AD domain provided by Samba4 can't
|
||||
# access the share for tests.
|
||||
chmod 0777, "$prefix/share";
|
||||
|
||||
if (not $self->check_or_start($ret, "yes", "yes", "yes")) {
|
||||
return undef;
|
||||
}
|
||||
|
||||
$ret->{DC_SERVER} = $dcvars->{SERVER};
|
||||
$ret->{DC_SERVER_IP} = $dcvars->{SERVER_IP};
|
||||
$ret->{DC_SERVER_IPV6} = $dcvars->{SERVER_IPV6};
|
||||
$ret->{DC_NETBIOSNAME} = $dcvars->{NETBIOSNAME};
|
||||
$ret->{DC_USERNAME} = $dcvars->{USERNAME};
|
||||
$ret->{DC_PASSWORD} = $dcvars->{PASSWORD};
|
||||
|
||||
# Special case, this is called from Samba4.pm but needs to use the Samba3 check_env and get_log_env
|
||||
$ret->{target} = $self;
|
||||
|
||||
return $ret;
|
||||
}
|
||||
|
||||
sub setup_simpleserver($$)
|
||||
{
|
||||
my ($self, $path) = @_;
|
||||
|
@ -2130,6 +2130,12 @@ sub setup_env($$$)
|
||||
}
|
||||
return $target3->setup_ad_member_idmap_rid("$path/ad_member_idmap_rid",
|
||||
$self->{vars}->{ad_dc});
|
||||
} elsif ($envname eq "ad_member_idmap_ad") {
|
||||
if (not defined($self->{vars}->{ad_dc})) {
|
||||
$self->setup_ad_dc("$path/ad_dc");
|
||||
}
|
||||
return $target3->setup_ad_member_idmap_ad("$path/ad_member_idmap_ad",
|
||||
$self->{vars}->{ad_dc});
|
||||
} elsif ($envname eq "none") {
|
||||
return $self->setup_none("$path/none");
|
||||
} else {
|
||||
|
Loading…
Reference in New Issue
Block a user