+ die ("prefix=''") if $prefix_abs eq "";
+ die ("prefix='/'") if $prefix_abs eq "/";
+
+ (system("rm -rf $prefix_abs/*") == 0) or die("Unable to clean up");
+
+ $ctx->{prefix} = $prefix;
+ $ctx->{prefix_abs} = $prefix_abs;
+ $ctx->{server_role} = $server_role;
+ $ctx->{netbiosname} = $netbiosname;
+ $ctx->{netbiosalias} = $netbiosalias;
+ $ctx->{swiface} = $swiface;
+ $ctx->{password} = $password;
+ $ctx->{kdc_ipv4} = $kdc_ipv4;
+
+ $ctx->{server_loglevel} = 1;
+ $ctx->{username} = "Administrator";
+ $ctx->{domain} = "SAMBADOMAIN";
+ $ctx->{realm} = "SAMBA.EXAMPLE.COM";
+ $ctx->{dnsname} = "samba.example.com";
+ $ctx->{basedn} = "dc=samba,dc=example,dc=com";
+ $ctx->{sid_generator} = "internal";
+
+ my $unix_name = ($ENV{USER} or $ENV{LOGNAME} or `whoami`);
+ chomp $unix_name;
+ $ctx->{unix_name} = $unix_name;
+ $ctx->{unix_uid} = $>;
+ $ctx->{unix_gids_str} = $);
+ @{$ctx->{unix_gids}} = split(" ", $ctx->{unix_gids_str});
+
+ $ctx->{etcdir} = "$prefix_abs/etc";
+ $ctx->{piddir} = "$prefix_abs/pid";
+ $ctx->{smb_conf} = "$ctx->{etcdir}/smb.conf";
+ $ctx->{krb5_conf} = "$ctx->{etcdir}/krb5.conf";
+ $ctx->{privatedir} = "$prefix_abs/private";
+ $ctx->{ncalrpcdir} = "$prefix_abs/ncalrpc";
+ $ctx->{lockdir} = "$prefix_abs/lockdir";
+ $ctx->{winbindd_socket_dir} = "$prefix_abs/winbindd_socket";
+ $ctx->{winbindd_privileged_socket_dir} = "$prefix_abs/winbindd_privileged_socket";
+ $ctx->{ntp_signd_socket_dir} = "$prefix_abs/ntp_signd_socket";
+ $ctx->{nsswrap_passwd} = "$ctx->{etcdir}/passwd";
+ $ctx->{nsswrap_group} = "$ctx->{etcdir}/group";
+
+ $ctx->{tlsdir} = "$ctx->{privatedir}/tls";
+
+ $ctx->{ipv4} = "127.0.0.$swiface";
+ $ctx->{interfaces} = "$ctx->{ipv4}/8";
+
+ $ctx->{localbasedn} = $ctx->{basedn};
+ $ctx->{localbasedn} = "CN=$netbiosname" if $server_role eq "member server";
+
+ push(@{$ctx->{directories}}, $ctx->{privatedir});
+ push(@{$ctx->{directories}}, $ctx->{etcdir});
+ push(@{$ctx->{directories}}, $ctx->{piddir});
+ push(@{$ctx->{directories}}, $ctx->{ncalrpcdir});
+ push(@{$ctx->{directories}}, $ctx->{lockdir});
+
+ $ctx->{smb_conf_extra_options} = "";