mirror of
https://github.com/samba-team/samba.git
synced 2024-12-23 17:34:34 +03:00
r6564: - Fix bug in socket_wrapper
- Add options --quiet and --outputdir options to the provisioning script - Add simple 'make test' and 'make test-swrap'
This commit is contained in:
parent
079e1f4e85
commit
7d2d4a57e0
@ -150,6 +150,16 @@ pch_clean:
|
||||
|
||||
basics: idl proto_exists
|
||||
|
||||
test: all
|
||||
./script/tests/selftest.sh
|
||||
|
||||
SOCKET_WRAPPER_DIR=`pwd`/sockdir
|
||||
|
||||
test-swrap: all
|
||||
export SOCKET_WRAPPER_DIR
|
||||
mkdir -p $(SOCKET_WRAPPER_DIR)
|
||||
./script/tests/selftest.sh
|
||||
|
||||
__EOD__
|
||||
|
||||
return $output;
|
||||
|
@ -249,7 +249,8 @@ int swrap_connect(int s, const struct sockaddr *serv_addr, socklen_t addrlen)
|
||||
}
|
||||
|
||||
/* only allow pseudo loopback connections */
|
||||
if (((const struct sockaddr_in *)serv_addr)->sin_addr.s_addr !=
|
||||
if (serv_addr->sa_family == AF_INET &&
|
||||
((const struct sockaddr_in *)serv_addr)->sin_addr.s_addr !=
|
||||
htonl(INADDR_LOOPBACK)) {
|
||||
errno = ENETUNREACH;
|
||||
return -1;
|
||||
|
39
source/script/tests/selftest.sh
Executable file
39
source/script/tests/selftest.sh
Executable file
@ -0,0 +1,39 @@
|
||||
#!/bin/sh
|
||||
DOMAIN=SAMBADOMAIN
|
||||
REALM=$DOMAIN
|
||||
PASSWORD=penguin
|
||||
SRCDIR=`pwd`
|
||||
PREFIX=$SRCDIR/prefix
|
||||
SOCKET_WRAPPER_DIR=$PREFIX/sockdir
|
||||
TMPDIR=$PREFIX/tmp
|
||||
|
||||
if [ ! -z "$BUILD" ]
|
||||
then
|
||||
./configure --prefix=$PREFIX --enable-socket-wrapper
|
||||
mkdir -p $PREFIX $TMPDIR
|
||||
make proto all install
|
||||
fi
|
||||
|
||||
rm -f $PREFIX/private/*
|
||||
./setup/provision.pl --quiet --outputdir $PREFIX/private --domain $DOMAIN --realm $REALM --adminpass $PASSWORD
|
||||
|
||||
mkdir -p $SOCKET_WRAPPER_DIR
|
||||
cat >$PREFIX/lib/smb.conf <<EOF
|
||||
[global]
|
||||
workgroup = $DOMAIN
|
||||
|
||||
[tmp]
|
||||
path = $TMPDIR
|
||||
read only = no
|
||||
EOF
|
||||
|
||||
export SOCKET_WRAPPER_DIR
|
||||
cd $PREFIX
|
||||
./sbin/smbd
|
||||
sleep 2
|
||||
$PREFIX/bin/smbtorture ncalrpc: LOCAL-*
|
||||
$SRCDIR/script/tests/test_rpc.sh localhost administrator $PASSWORD $DOMAIN
|
||||
$SRCDIR/script/tests/test_binding_string.sh localhost administrator $PASSWORD $DOMAIN
|
||||
$SRCDIR/script/tests/test_echo.sh localhost administrator $PASSWORD $DOMAIN
|
||||
$SRCDIR/script/tests/test_posix.sh //localhost/tmp administrator $PASSWORD
|
||||
kill `cat $PREFIX/var/locks/smbd.pid`
|
@ -14,6 +14,8 @@ my $opt_nobody;
|
||||
my $opt_nogroup;
|
||||
my $opt_wheel;
|
||||
my $opt_users;
|
||||
my $opt_outputdir;
|
||||
my $opt_quiet;
|
||||
my $dnsdomain;
|
||||
my $netbiosname;
|
||||
my $dnsname;
|
||||
@ -274,11 +276,13 @@ provision.pl [options]
|
||||
--host-ip IPADDRESS set ipaddress
|
||||
--host-guid GUID set hostguid (otherwise random)
|
||||
--invocationid GUID set invocationid (otherwise random)
|
||||
--outputdir OUTPUTDIR set output directory
|
||||
--adminpass PASSWORD choose admin password (otherwise random)
|
||||
--nobody USERNAME choose 'nobody' user
|
||||
--nogroup GROUPNAME choose 'nogroup' group
|
||||
--wheel GROUPNAME choose 'wheel' privileged group
|
||||
--users GROUPNAME choose 'users' group
|
||||
--quiet Be quiet
|
||||
|
||||
You must provide at least a realm and domain
|
||||
|
||||
@ -303,6 +307,8 @@ GetOptions(
|
||||
'nogroup=s' => \$opt_nogroup,
|
||||
'wheel=s' => \$opt_wheel,
|
||||
'users=s' => \$opt_users,
|
||||
'outputdir=s' => \$opt_outputdir,
|
||||
'quiet' => \$opt_quiet
|
||||
);
|
||||
|
||||
if ($opt_help ||
|
||||
@ -326,7 +332,7 @@ if (!$opt_hostip) {
|
||||
}
|
||||
}
|
||||
|
||||
print "Provisioning host '$opt_hostname'[$opt_hostip] for domain '$opt_domain' in realm '$opt_realm'\n";
|
||||
$opt_quiet or print "Provisioning host '$opt_hostname'[$opt_hostip] for domain '$opt_domain' in realm '$opt_realm'\n";
|
||||
|
||||
if (!$opt_nobody) {
|
||||
if (defined getpwnam("nobody")) {
|
||||
@ -361,9 +367,9 @@ $opt_nogroup || die "Unable to determine a group for 'nogroup'\n";
|
||||
$opt_users || die "Unable to determine a group for 'users'\n";
|
||||
$opt_wheel || die "Unable to determine a group for 'wheel'\n";
|
||||
|
||||
print "Using nobody='$opt_nobody' nogroup='$opt_nogroup' wheel='$opt_wheel' users='$opt_users'\n";
|
||||
$opt_quiet or print "Using nobody='$opt_nobody' nogroup='$opt_nogroup' wheel='$opt_wheel' users='$opt_users'\n";
|
||||
|
||||
print "generating ldif ...\n";
|
||||
$opt_quiet or print "generating ldif ...\n";
|
||||
|
||||
$dnsdomain = lc($opt_realm);
|
||||
$dnsname = lc($opt_hostname).".".$dnsdomain;
|
||||
@ -388,15 +394,21 @@ $ENV{"PATH"} .= ":bin:../bin";
|
||||
|
||||
my $res = apply_substitutions($data);
|
||||
|
||||
my $newdb = "newdb." . int(rand(1000));
|
||||
my $newdb = $opt_outputdir;
|
||||
|
||||
print "Putting new database files in $newdb\n";
|
||||
unless ($newdb) {
|
||||
$newdb = "newdb." . int(rand(1000));
|
||||
}
|
||||
|
||||
mkdir($newdb) || die "Unable to create temporary directory $newdb\n";
|
||||
$opt_quiet or print "Putting new database files in $newdb\n";
|
||||
|
||||
unless ($opt_outputdir) {
|
||||
mkdir($newdb) || die "Unable to create temporary directory $newdb\n";
|
||||
}
|
||||
|
||||
FileSave("$newdb/sam.ldif", $res);
|
||||
|
||||
print "creating $newdb/sam.ldb ...\n";
|
||||
$opt_quiet or print "creating $newdb/sam.ldb ...\n";
|
||||
|
||||
system("ldbadd -H $newdb/sam.ldb $newdb/sam.ldif") == 0 || die "Failed to create sam.ldb\n";
|
||||
|
||||
@ -406,7 +418,7 @@ $res = apply_substitutions($data);
|
||||
|
||||
FileSave("$newdb/rootdse.ldif", $res);
|
||||
|
||||
print "creating $newdb/rootdse.ldb ...\n";
|
||||
$opt_quiet or print "creating $newdb/rootdse.ldb ...\n";
|
||||
|
||||
system("ldbadd -H $newdb/rootdse.ldb $newdb/rootdse.ldif") == 0 || die "Failed to create rootdse.ldb\n";
|
||||
|
||||
@ -416,7 +428,7 @@ $res = apply_substitutions($data);
|
||||
|
||||
FileSave("$newdb/secrets.ldif", $res);
|
||||
|
||||
print "creating $newdb/secrets.ldb ...\n";
|
||||
$opt_quiet or print "creating $newdb/secrets.ldb ...\n";
|
||||
|
||||
system("ldbadd -H $newdb/secrets.ldb $newdb/secrets.ldif") == 0 || die "Failed to create secrets.ldb\n";
|
||||
|
||||
@ -424,20 +436,18 @@ $data = FileLoad("setup/provision.zone") || die "Unable to load provision.zone\n
|
||||
|
||||
$res = apply_substitutions($data);
|
||||
|
||||
print "saving dns zone to $newdb/$dnsdomain.zone ...\n";
|
||||
$opt_quiet or print "saving dns zone to $newdb/$dnsdomain.zone ...\n";
|
||||
|
||||
FileSave("$newdb/$dnsdomain.zone", $res);
|
||||
|
||||
print "creating $newdb/hklm.ldb ... \n";
|
||||
$opt_quiet or print "creating $newdb/hklm.ldb ... \n";
|
||||
|
||||
system("ldbadd -H $newdb/hklm.ldb setup/hklm.ldif") == 0 || die "Failed to create hklm.ldb\n";
|
||||
|
||||
print "
|
||||
$opt_quiet or print "
|
||||
|
||||
Installation:
|
||||
- Please move $newdb/*.ldb to the private/ directory of your
|
||||
Samba4 installation
|
||||
- Please use $newdb/$dnsdomain.zone in BIND on your dns server
|
||||
";
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user