1
0
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:
Jelmer Vernooij 2005-05-01 19:08:35 +00:00 committed by Gerald (Jerry) Carter
parent 079e1f4e85
commit 7d2d4a57e0
4 changed files with 75 additions and 15 deletions

View File

@ -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;

View File

@ -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
View 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`

View File

@ -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
";