Ignore:
Timestamp:
Nov 14, 2012, 12:59:34 PM (13 years ago)
Author:
Silvan Scherrer
Message:

Samba Server: update vendor to 3.6.0

File:
1 edited

Legend:

Unmodified
Added
Removed
  • vendor/current/selftest/target/Samba3.pm

    r414 r740  
    2525
    2626sub new($$) {
    27         my ($classname, $bindir) = @_;
    28         my $self = { bindir => $bindir };
     27        my ($classname, $bindir, $srcdir) = @_;
     28        my $self = { bindir => $bindir,
     29                     srcdir => $srcdir
     30        };
    2931        bless $self;
    3032        return $self;
     
    9799        my ($self, $envname, $path) = @_;
    98100       
    99         if ($envname eq "dc") {
    100                 return $self->setup_dc("$path/dc");
     101        if ($envname eq "s3dc") {
     102                return $self->setup_dc("$path/s3dc");
     103        } elsif ($envname eq "secshare") {
     104                return $self->setup_secshare("$path/secshare");
     105        } elsif ($envname eq "secserver") {
     106                if (not defined($self->{vars}->{s3dc})) {
     107                        $self->setup_dc("$path/s3dc");
     108                }
     109                return $self->setup_secserver("$path/secserver", $self->{vars}->{s3dc});
    101110        } elsif ($envname eq "member") {
    102                 if (not defined($self->{vars}->{dc})) {
    103                         $self->setup_dc("$path/dc");
    104                 }
    105                 return $self->setup_member("$path/member", $self->{vars}->{dc});
     111                if (not defined($self->{vars}->{s3dc})) {
     112                        $self->setup_dc("$path/s3dc");
     113                }
     114                return $self->setup_member("$path/member", $self->{vars}->{s3dc});
    106115        } else {
    107116                return undef;
     
    113122        my ($self, $path) = @_;
    114123
    115         print "PROVISIONING DC...";
    116 
    117         my $dc_options = "
     124        print "PROVISIONING S3DC...";
     125
     126        my $s3dc_options = "
    118127        domain master = yes
    119128        domain logons = yes
     
    122131
    123132        my $vars = $self->provision($path,
    124                                     "LOCALDC2",
     133                                    "LOCALS3DC2",
    125134                                    2,
    126                                     "localdc2pass",
    127                                     $dc_options);
     135                                    "locals3dc2pass",
     136                                    $s3dc_options);
    128137
    129138        $self->check_or_start($vars,
     
    133142        $self->wait_for_start($vars);
    134143
    135         $self->{vars}->{dc} = $vars;
     144        $vars->{DC_SERVER} = $vars->{SERVER};
     145        $vars->{DC_SERVER_IP} = $vars->{SERVER_IP};
     146        $vars->{DC_NETBIOSNAME} = $vars->{NETBIOSNAME};
     147        $vars->{DC_USERNAME} = $vars->{USERNAME};
     148        $vars->{DC_PASSWORD} = $vars->{PASSWORD};
     149
     150        $self->{vars}->{s3dc} = $vars;
    136151
    137152        return $vars;
     
    140155sub setup_member($$$)
    141156{
    142         my ($self, $prefix, $dcvars) = @_;
     157        my ($self, $prefix, $s3dcvars) = @_;
    143158
    144159        print "PROVISIONING MEMBER...";
     
    159174        my $cmd = "";
    160175        $cmd .= "SOCKET_WRAPPER_DEFAULT_IFACE=\"$ret->{SOCKET_WRAPPER_DEFAULT_IFACE}\" ";
    161         $cmd .= "$net join $ret->{CONFIGURATION} $dcvars->{DOMAIN} member";
    162         $cmd .= " -U$dcvars->{USERNAME}\%$dcvars->{PASSWORD}";
     176        $cmd .= "$net join $ret->{CONFIGURATION} $s3dcvars->{DOMAIN} member";
     177        $cmd .= " -U$s3dcvars->{USERNAME}\%$s3dcvars->{PASSWORD}";
    163178
    164179        system($cmd) == 0 or die("Join failed\n$cmd");
     
    170185        $self->wait_for_start($ret);
    171186
    172         $ret->{DC_SERVER} = $dcvars->{SERVER};
    173         $ret->{DC_SERVER_IP} = $dcvars->{SERVER_IP};
    174         $ret->{DC_NETBIOSNAME} = $dcvars->{NETBIOSNAME};
    175         $ret->{DC_USERNAME} = $dcvars->{USERNAME};
    176         $ret->{DC_PASSWORD} = $dcvars->{PASSWORD};
     187        $ret->{DC_SERVER} = $s3dcvars->{SERVER};
     188        $ret->{DC_SERVER_IP} = $s3dcvars->{SERVER_IP};
     189        $ret->{DC_NETBIOSNAME} = $s3dcvars->{NETBIOSNAME};
     190        $ret->{DC_USERNAME} = $s3dcvars->{USERNAME};
     191        $ret->{DC_PASSWORD} = $s3dcvars->{PASSWORD};
    177192
    178193        return $ret;
    179194}
    180195
    181 sub stop($)
    182 {
    183         my ($self) = @_;
     196sub setup_secshare($$)
     197{
     198        my ($self, $path) = @_;
     199
     200        print "PROVISIONING server with security=share...";
     201
     202        my $secshare_options = "
     203        security = share
     204        lanman auth = yes
     205";
     206
     207        my $vars = $self->provision($path,
     208                                    "LOCALSHARE4",
     209                                    4,
     210                                    "local4pass",
     211                                    $secshare_options);
     212
     213        $self->check_or_start($vars,
     214                              ($ENV{SMBD_MAXTIME} or 2700),
     215                               "yes", "no", "yes");
     216
     217        $self->wait_for_start($vars);
     218
     219        $self->{vars}->{secshare} = $vars;
     220
     221        return $vars;
     222}
     223
     224sub setup_secserver($$$)
     225{
     226        my ($self, $prefix, $s3dcvars) = @_;
     227
     228        print "PROVISIONING server with security=server...";
     229
     230        my $secserver_options = "
     231        security = server
     232        password server = $s3dcvars->{SERVER_IP}
     233";
     234
     235        my $ret = $self->provision($prefix,
     236                                   "LOCALSERVER5",
     237                                   5,
     238                                   "localserver5pass",
     239                                   $secserver_options);
     240
     241        $ret or die("Unable to provision");
     242
     243        $self->check_or_start($ret,
     244                              ($ENV{SMBD_MAXTIME} or 2700),
     245                               "yes", "no", "yes");
     246
     247        $self->wait_for_start($ret);
     248
     249        $ret->{DC_SERVER} = $s3dcvars->{SERVER};
     250        $ret->{DC_SERVER_IP} = $s3dcvars->{SERVER_IP};
     251        $ret->{DC_NETBIOSNAME} = $s3dcvars->{NETBIOSNAME};
     252        $ret->{DC_USERNAME} = $s3dcvars->{USERNAME};
     253        $ret->{DC_PASSWORD} = $s3dcvars->{PASSWORD};
     254
     255        return $ret;
    184256}
    185257
     
    226298
    227299                $ENV{WINBINDD_SOCKET_DIR} = $env_vars->{WINBINDD_SOCKET_DIR};
     300                $ENV{NMBD_SOCKET_DIR} = $env_vars->{NMBD_SOCKET_DIR};
    228301
    229302                $ENV{NSS_WRAPPER_PASSWD} = $env_vars->{NSS_WRAPPER_PASSWD};
     
    253326                }
    254327
    255                 exec(@preargs, $self->binpath("nmbd"), "-F", "-S", "--no-process-group", "-s", $env_vars->{SERVERCONFFILE}, @optargs) or die("Unable to start nmbd: $!");
     328                exec(@preargs, $self->binpath("nmbd"), "-F", "--no-process-group", "-S", "-s", $env_vars->{SERVERCONFFILE}, @optargs) or die("Unable to start nmbd: $!");
    256329        }
    257330        write_pid($env_vars, "nmbd", $pid);
     
    268341
    269342                $ENV{WINBINDD_SOCKET_DIR} = $env_vars->{WINBINDD_SOCKET_DIR};
     343                $ENV{NMBD_SOCKET_DIR} = $env_vars->{NMBD_SOCKET_DIR};
    270344
    271345                $ENV{NSS_WRAPPER_PASSWD} = $env_vars->{NSS_WRAPPER_PASSWD};
     
    295369                }
    296370
    297                 exec(@preargs, $self->binpath("winbindd"), "-F", "-S", "--no-process-group", "-s", $env_vars->{SERVERCONFFILE}, @optargs) or die("Unable to start winbindd: $!");
     371                exec(@preargs, $self->binpath("winbindd"), "-F", "--no-process-group", "-s", $env_vars->{SERVERCONFFILE}, @optargs) or die("Unable to start winbindd: $!");
    298372        }
    299373        write_pid($env_vars, "winbindd", $pid);
     
    310384
    311385                $ENV{WINBINDD_SOCKET_DIR} = $env_vars->{WINBINDD_SOCKET_DIR};
     386                $ENV{NMBD_SOCKET_DIR} = $env_vars->{NMBD_SOCKET_DIR};
    312387
    313388                $ENV{NSS_WRAPPER_PASSWD} = $env_vars->{NSS_WRAPPER_PASSWD};
     
    334409                        @preargs = split(/ /,$ENV{SMBD_VALGRIND});
    335410                }
    336                 exec(@preargs, $self->binpath("smbd"), "-F", "-S", "--no-process-group", "-s", $env_vars->{SERVERCONFFILE}, @optargs) or die("Unable to start smbd: $!");
     411                exec(@preargs, $self->binpath("smbd"), "-F", "--no-process-group", "-s", $env_vars->{SERVERCONFFILE}, @optargs) or die("Unable to start smbd: $!");
    337412        }
    338413        write_pid($env_vars, "smbd", $pid);
     
    340415
    341416        return 0;
    342 }
    343 
    344 sub create_clientconf($$$)
    345 {
    346         my ($self, $prefix, $domain) = @_;
    347 
    348         my $lockdir = "$prefix/locks";
    349         my $logdir = "$prefix/logs";
    350         my $piddir = "$prefix/pid";
    351         my $privatedir = "$prefix/private";
    352         my $conffile = "$prefix/smb.conf";
    353 
    354         my $torture_interfaces='127.0.0.6/8,127.0.0.7/8,127.0.0.8/8,127.0.0.9/8,127.0.0.10/8,127.0.0.11/8';
    355         open(CONF, ">$conffile");
    356         print CONF "
    357 [global]
    358         workgroup = $domain
    359 
    360         private dir = $privatedir
    361         pid directory = $piddir
    362         lock directory = $lockdir
    363         log file = $logdir/log.\%m
    364         log level = 0
    365 
    366         name resolve order = bcast
    367 
    368         netbios name = TORTURE_6
    369         interfaces = $torture_interfaces
    370         panic action = $RealBin/gdb_backtrace \%d %\$(MAKE_TEST_BINARY)
    371 
    372         passdb backend = tdbsam
    373         ";
    374         close(CONF);
    375417}
    376418
     
    395437        my $prefix_abs = abs_path($prefix);
    396438        my $bindir_abs = abs_path($self->{bindir});
     439        my $vfs_modulesdir_abs = ($ENV{VFSLIBDIR} or $bindir_abs);
    397440
    398441        my @dirs = ();
     
    413456        push(@dirs,$lockdir);
    414457
     458        my $eventlogdir="$prefix_abs/lockdir/eventlog";
     459        push(@dirs,$eventlogdir);
     460
    415461        my $logdir="$prefix_abs/logs";
    416462        push(@dirs,$logdir);
     463
     464        my $driver32dir="$shrdir/W32X86";
     465        push(@dirs,$driver32dir);
     466
     467        my $driver64dir="$shrdir/x64";
     468        push(@dirs,$driver64dir);
     469
     470        my $driver40dir="$shrdir/WIN40";
     471        push(@dirs,$driver40dir);
     472
     473        my $ro_shrdir="$shrdir/root-tmp";
     474        push(@dirs,$ro_shrdir);
     475
     476        my $msdfs_shrdir="$shrdir/msdfsshare";
     477        push(@dirs,$msdfs_shrdir);
     478
     479        my $msdfs_deeppath="$msdfs_shrdir/deeppath";
     480        push(@dirs,$msdfs_deeppath);
    417481
    418482        # this gets autocreated by winbindd
    419483        my $wbsockdir="$prefix_abs/winbindd";
    420484        my $wbsockprivdir="$lockdir/winbindd_privileged";
     485
     486        my $nmbdsockdir="$prefix_abs/nmbd";
     487        unlink($nmbdsockdir);
    421488
    422489        ##
     
    431498        mkdir($_, 0777) foreach(@dirs);
    432499
     500        ##
     501        ## create ro and msdfs share layout
     502        ##
     503
     504        chmod 0755, $ro_shrdir;
     505        my $unreadable_file = "$ro_shrdir/unreadable_file";
     506        open(UNREADABLE_FILE, ">$unreadable_file") or die("Unable to open $unreadable_file");
     507        close(UNREADABLE_FILE);
     508        chmod 0600, $unreadable_file;
     509
     510        my $msdfs_target = "$ro_shrdir/msdfs-target";
     511        open(MSDFS_TARGET, ">$msdfs_target") or die("Unable to open $msdfs_target");
     512        close(MSDFS_TARGET);
     513        chmod 0666, $msdfs_target;
     514        symlink "msdfs:$server_ip\\ro-tmp", "$msdfs_shrdir/msdfs-src1";
     515        symlink "msdfs:$server_ip\\ro-tmp", "$msdfs_shrdir/deeppath/msdfs-src2";
     516
    433517        my $conffile="$libdir/server.conf";
    434518
    435         my $nss_wrapper_pl = "$ENV{PERL} $RealBin/../lib/nss_wrapper/nss_wrapper.pl";
     519        my $nss_wrapper_pl = "$ENV{PERL} $self->{srcdir}/lib/nss_wrapper/nss_wrapper.pl";
    436520        my $nss_wrapper_passwd = "$privatedir/passwd";
    437521        my $nss_wrapper_group = "$privatedir/group";
     522
     523        my $mod_printer_pl = "$ENV{PERL} $self->{srcdir}/source3/script/tests/printing/modprinter.pl";
     524
     525        my @eventlog_list = ("dns server", "application");
     526
     527        ##
     528        ## calculate uids and gids
     529        ##
     530
     531        my ($max_uid, $max_gid);
     532        my ($uid_nobody, $uid_root);
     533        my ($gid_nobody, $gid_nogroup, $gid_root, $gid_domusers);
     534
     535        if ($unix_uid < 0xffff - 2) {
     536                $max_uid = 0xffff;
     537        } else {
     538                $max_uid = $unix_uid;
     539        }
     540
     541        $uid_root = $max_uid - 1;
     542        $uid_nobody = $max_uid - 2;
     543
     544        if ($unix_gids[0] < 0xffff - 3) {
     545                $max_gid = 0xffff;
     546        } else {
     547                $max_gid = $unix_gids[0];
     548        }
     549
     550        $gid_nobody = $max_gid - 1;
     551        $gid_nogroup = $max_gid - 2;
     552        $gid_root = $max_gid - 3;
     553        $gid_domusers = $max_gid - 4;
     554
     555        ##
     556        ## create conffile
     557        ##
    438558
    439559        open(CONF, ">$conffile") or die("Unable to open $conffile");
     
    443563        interfaces = $server_ip/8
    444564        bind interfaces only = yes
    445         panic action = $RealBin/gdb_backtrace %d %\$(MAKE_TEST_BINARY)
     565        panic action = $self->{srcdir}/selftest/gdb_backtrace %d %\$(MAKE_TEST_BINARY)
    446566
    447567        workgroup = $domain
     
    452572        log file = $logdir/log.\%m
    453573        log level = 0
     574        debug pid = yes
    454575
    455576        name resolve order = bcast
     
    462583        time server = yes
    463584
    464         add user script =               $nss_wrapper_pl --passwd_path $nss_wrapper_passwd --type passwd --action add --name %u
     585        add user script =               $nss_wrapper_pl --passwd_path $nss_wrapper_passwd --type passwd --action add --name %u --gid $gid_nogroup
    465586        add group script =              $nss_wrapper_pl --group_path  $nss_wrapper_group  --type group  --action add --name %g
    466         add machine script =            $nss_wrapper_pl --passwd_path $nss_wrapper_passwd --type passwd --action add --name %u
     587        add machine script =            $nss_wrapper_pl --passwd_path $nss_wrapper_passwd --type passwd --action add --name %u --gid $gid_nogroup
    467588        add user to group script =      $nss_wrapper_pl --passwd_path $nss_wrapper_passwd --type member --action add --member %u --name %g --group_path $nss_wrapper_group
    468589        delete user script =            $nss_wrapper_pl --passwd_path $nss_wrapper_passwd --type passwd --action delete --name %u
     
    470591        delete user from group script = $nss_wrapper_pl --passwd_path $nss_wrapper_passwd --type member --action delete --member %u --name %g --group_path $nss_wrapper_group
    471592
     593        addprinter command =            $mod_printer_pl -a -s $conffile --
     594        deleteprinter command =         $mod_printer_pl -d -s $conffile --
     595
     596        eventlog list = application \"dns server\"
     597
    472598        kernel oplocks = no
    473599        kernel change notify = no
     
    478604
    479605        winbindd:socket dir = $wbsockdir
    480         idmap uid = 100000-200000
    481         idmap gid = 100000-200000
     606        nmbd:socket dir = $nmbdsockdir
     607        idmap config * : range = 100000-200000
     608        winbind enum users = yes
     609        winbind enum groups = yes
    482610
    483611#       min receivefile size = 4000
    484612
     613        max protocol = SMB2
    485614        read only = no
     615        server signing = auto
     616
    486617        smbd:sharedelay = 100000
    487         smbd:writetimeupdatedelay = 500000
    488         map hidden = yes
    489         map system = yes
     618#       smbd:writetimeupdatedelay = 500000
     619        map hidden = no
     620        map system = no
     621        map readonly = no
     622        store dos attributes = yes
    490623        create mask = 755
    491         vfs objects = $bindir_abs/xattr_tdb.so $bindir_abs/streams_depot.so
    492 
    493         # Begin extra options
    494         $extra_options
    495         # End extra options
    496 
    497         #Include user defined custom parameters if set
    498 ";
    499 
    500         if (defined($ENV{INCLUDE_CUSTOM_CONF})) {
    501                 print CONF "\t$ENV{INCLUDE_CUSTOM_CONF}\n";
    502         }
    503 
    504         print CONF "
    505 [tmp]
    506         path = $shrdir
    507 [hideunread]
    508         copy = tmp
    509         hide unreadable = yes
    510 [hideunwrite]
    511         copy = tmp
    512         hide unwriteable files = yes
    513 [print1]
    514         copy = tmp
    515         printable = yes
     624        vfs objects = $vfs_modulesdir_abs/xattr_tdb.so $vfs_modulesdir_abs/streams_depot.so
     625
    516626        printing = vlp
    517627        print command = $bindir_abs/vlp tdbfile=$lockdir/vlp.tdb print %p %s
     
    522632        queue pause command = $bindir_abs/vlp tdbfile=$lockdir/vlp.tdb queuepause %p
    523633        queue resume command = $bindir_abs/vlp tdbfile=$lockdir/vlp.tdb queueresume %p
     634        lpq cache time = 0
     635
     636        ncalrpc dir = $lockdir/ncalrpc
     637        rpc_server:epmapper = embedded
     638
     639        # Begin extra options
     640        $extra_options
     641        # End extra options
     642
     643        #Include user defined custom parameters if set
     644";
     645
     646        if (defined($ENV{INCLUDE_CUSTOM_CONF})) {
     647                print CONF "\t$ENV{INCLUDE_CUSTOM_CONF}\n";
     648        }
     649
     650        print CONF "
     651[tmp]
     652        path = $shrdir
     653[tmpguest]
     654        path = $shrdir
     655        guest ok = yes
     656[guestonly]
     657        path = $shrdir
     658        guest only = yes
     659        guest ok = yes
     660[forceuser]
     661        path = $shrdir
     662        force user = $unix_name
     663        guest ok = yes
     664[forcegroup]
     665        path = $shrdir
     666        force group = nogroup
     667        guest ok = yes
     668[ro-tmp]
     669        path = $ro_shrdir
     670        guest ok = yes
     671[msdfs-share]
     672        path = $msdfs_shrdir
     673        msdfs root = yes
     674        guest ok = yes
     675[hideunread]
     676        copy = tmp
     677        hide unreadable = yes
     678[tmpcase]
     679        copy = tmp
     680        case sensitive = yes
     681[hideunwrite]
     682        copy = tmp
     683        hide unwriteable files = yes
     684[print1]
     685        copy = tmp
     686        printable = yes
    524687
    525688[print2]
     
    527690[print3]
    528691        copy = print1
    529 [print4]
     692[lp]
    530693        copy = print1
     694[print\$]
     695        copy = tmp
    531696        ";
    532697        close(CONF);
     
    537702
    538703        open(PASSWD, ">$nss_wrapper_passwd") or die("Unable to open $nss_wrapper_passwd");
    539         print PASSWD "nobody:x:65534:65533:nobody gecos:$prefix_abs:/bin/false
    540 root:x:65533:65532:root gecos:$prefix_abs:/bin/false
     704        print PASSWD "nobody:x:$uid_nobody:$gid_nobody:nobody gecos:$prefix_abs:/bin/false
    541705$unix_name:x:$unix_uid:$unix_gids[0]:$unix_name gecos:$prefix_abs:/bin/false
    542706";
     707        if ($unix_uid != 0) {
     708                print PASSWD "root:x:$uid_root:$gid_root:root gecos:$prefix_abs:/bin/false";
     709        }
    543710        close(PASSWD);
    544711
    545712        open(GROUP, ">$nss_wrapper_group") or die("Unable to open $nss_wrapper_group");
    546         print GROUP "nobody:x:65533:
    547 nogroup:x:65534:nobody
    548 root:x:65532:
     713        print GROUP "nobody:x:$gid_nobody:
     714nogroup:x:$gid_nogroup:nobody
    549715$unix_name-group:x:$unix_gids[0]:
     716domusers:X:$gid_domusers:
    550717";
     718        if ($unix_gids[0] != 0) {
     719                print GROUP "root:x:$gid_root:";
     720        }
     721
    551722        close(GROUP);
     723
     724        foreach my $evlog (@eventlog_list) {
     725                my $evlogtdb = "$eventlogdir/$evlog.tdb";
     726                open(EVENTLOG, ">$evlogtdb") or die("Unable to open $evlogtdb");
     727                close(EVENTLOG);
     728        }
    552729
    553730        $ENV{NSS_WRAPPER_PASSWD} = $nss_wrapper_passwd;
     
    557734        print PWD "$password\n$password\n";
    558735        close(PWD) or die("Unable to set password for test account");
    559 
    560         delete $ENV{NSS_WRAPPER_PASSWD};
    561         delete $ENV{NSS_WRAPPER_GROUP};
    562736
    563737        print "DONE\n";
     
    574748        $ret{SERVER} = $server;
    575749        $ret{USERNAME} = $unix_name;
     750        $ret{USERID} = $unix_uid;
    576751        $ret{DOMAIN} = $domain;
    577752        $ret{NETBIOSNAME} = $server;
     
    580755        $ret{WINBINDD_SOCKET_DIR} = $wbsockdir;
    581756        $ret{WINBINDD_PRIV_PIPE_DIR} = $wbsockprivdir;
     757        $ret{NMBD_SOCKET_DIR} = $nmbdsockdir;
    582758        $ret{SOCKET_WRAPPER_DEFAULT_IFACE} = $swiface;
    583759        $ret{NSS_WRAPPER_PASSWD} = $nss_wrapper_passwd;
    584760        $ret{NSS_WRAPPER_GROUP} = $nss_wrapper_group;
    585761        $ret{NSS_WRAPPER_WINBIND_SO_PATH} = $ENV{NSS_WRAPPER_WINBIND_SO_PATH};
     762        $ret{LOCAL_PATH} = "$shrdir";
    586763
    587764        return \%ret;
     
    606783        system($self->binpath("smbclient") ." $envvars->{CONFIGURATION} -L $envvars->{SERVER_IP} -U% -p 139 | head -2");
    607784
     785        # Ensure we have domain users mapped.
     786        system($self->binpath("net") ." $envvars->{CONFIGURATION} groupmap add rid=513 unixgroup=domusers type=domain");
     787
    608788        print $self->getlog_env($envvars);
    609789}
Note: See TracChangeset for help on using the changeset viewer.