#!/usr/bin/perl # # $Id: group.txt,v 1.1 2003/04/08 09:57:46 johjen Exp $ use Data::Dumper; use Unicode::String qw (utf8 latin1); require '/usr/share/webmin/web-lib.pl'; use vars qw(%text %config %in $tb $cb); @scriptdirs = qw(/etc/webmin/ldap-users /usr/share/webmin/ldap-users .); require "ldap-users.pl"; sub min_add_group($$$$$){ ($gid, $gidNumber, $rootpw, $rootdn, $basedn) = @_; $ldap->bind($rootdn, password => $rootpw); $entry = Net::LDAP::Entry->new(); $entry->dn("cn=$gid,ou=Group,$basedn"); $entry->add( objectclass => 'posixGroup', cn => $gid, gidNumber => $gidNumber, ); } sub print_ldap_error($$) { ($errormsg, $result) = @_; print "

". $errormsg ."

\n"; print $text{'error'}.": \n"; print "
";
    print Dumper($result->error());
    print "
"; } sub ldap_get_max_gid($){ ($basedn) = @_; $mesg = $ldap->search (base => "ou=Group,$basedn", filter => "objectClass=posixGroup" ); $maxval = 10000; foreach $entry ($mesg->all_entries()){ my $val = $entry->get_value('gidNumber'); $maxval = $val if ($val > $maxval); } return $maxval++; } sub min_create_dir($$$){ my ($homedir, $uidNumber, $gidNumber) = @_; return undef unless $gidNumber; return run_script("createhomedir", $homedir, $uidNumber, $gidNumber); } sub run_script { my ($scriptname, @args) = @_; my $done = 0; my $retval = 1; print "
\n";
    for my $scriptdir (@scriptdirs) {
	my $path = "$scriptdir/$scriptname";
	if ( -x $path) {
	    # from system(), 0 means success.  invert before returning it.
	    $retval = ! system($path, @args);
	    $done = 1;
	    last;
	}
    }
    if ( ! $done ) {
	print($text{'error'}.": Unable to find any executable ".
	      "script $scriptname in ", join(" ", @scriptdirs), ".\n");
	$retval = undef undef;
    }
    print "
\n"; return $retval; } &init_config(); &ReadParse(); &header($text{'title1'} ,"", undef, 1); print "
\n"; &ldap_connect($config{'server'}, $config{'rootdn'}); #initaliserer values $max = &ldap_get_max_gid($config{'basedn'}); $max++; $gidNumber = $max; print $gidNumber; $uidNumber = $max; $gid = lc($in{'gid'}); $rootpw = $in{'rootpw'}; $homedir = $config{'homeprefix'}."/$gid"; print <

Opprett Klasse

$text{'prompt_class'} rootpass




reset
Leggtil brukere EOF if ($in{'gid'} ne ""){ $result = &ldap_add_group($gid, $gidNumber, $rootpw, $config{'rootdn'}, $config{'basedn'}, ); if ($result->code()) { print_ldap_error(text("addfailed", $uid), $result); } $result = &min_create_dir($homedir, $gidNumber, $gidNumber); if ($result) { print "

". text("addHomedirSuccess",$homedir) ."

\n"; } else { print "

". text("addHomedirFailed",$homedir) ."

\n"; } } &footer("/", "Index");