lpt can add group and grant-mail works
This commit is contained in:
parent
de445361e8
commit
cc1b765e58
@ -21,7 +21,7 @@ my $bindsecret = "";
|
|||||||
|
|
||||||
sub ldap_get_password
|
sub ldap_get_password
|
||||||
{
|
{
|
||||||
return Password::get_password ".secret_ldap";
|
return Password::get_password "/home/2014/mercie_d/.secret_ldap";
|
||||||
}
|
}
|
||||||
|
|
||||||
our $secret_search = \&ldap_get_password;
|
our $secret_search = \&ldap_get_password;
|
||||||
@ -123,9 +123,9 @@ sub get_dn($$@)
|
|||||||
|
|
||||||
my $mesg = $ldap->search( # search
|
my $mesg = $ldap->search( # search
|
||||||
base => "$dn",
|
base => "$dn",
|
||||||
filter => "(objectClass=top)",
|
filter => "(objectClass=*)",
|
||||||
attrs => @_,
|
attrs => @_,
|
||||||
scope => "base"
|
scope => "sub"
|
||||||
);
|
);
|
||||||
if ($mesg->code != 0) { log(WARN, $mesg->error); return undef; }
|
if ($mesg->code != 0) { log(WARN, $mesg->error); return undef; }
|
||||||
if ($mesg->count != 1) { log(WARN, "$dn not found or multiple entries match"); return undef; }
|
if ($mesg->count != 1) { log(WARN, "$dn not found or multiple entries match"); return undef; }
|
||||||
@ -235,6 +235,8 @@ sub get_attribute($$$)
|
|||||||
my $dn = shift;
|
my $dn = shift;
|
||||||
my $what = shift;
|
my $what = shift;
|
||||||
|
|
||||||
|
if (!$dn) { return undef; }
|
||||||
|
|
||||||
return get_dn($ldap, $dn, $what)->get_value($what);
|
return get_dn($ldap, $dn, $what)->get_value($what);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
44
utils/lpt
44
utils/lpt
@ -308,8 +308,15 @@ sub cmd_account_grantmail($)
|
|||||||
|
|
||||||
my $dn = LDAP::search_dn($ldap, "ou=users", "uid=$login");
|
my $dn = LDAP::search_dn($ldap, "ou=users", "uid=$login");
|
||||||
|
|
||||||
LDAP::update_attribute($ldap, $dn, "mailAccountActive", "yes");
|
my $entry = LDAP::get_dn($ldap, $dn, "mailAccountActive", "objectClass");
|
||||||
LDAP::add_attribute($ldap, $dn, "objectClass", "MailAccount");
|
|
||||||
|
my @oc = $entry->get_value("objectClass");
|
||||||
|
push @oc, "MailAccount";
|
||||||
|
|
||||||
|
$entry->replace("mailAccountActive" => [ "yes" ]);
|
||||||
|
$entry->replace("objectClass" => @oc);
|
||||||
|
|
||||||
|
$entry->update($ldap);
|
||||||
|
|
||||||
log(INFO, "$login now grants to receive e-mail. Remember to add some aliases!");
|
log(INFO, "$login now grants to receive e-mail. Remember to add some aliases!");
|
||||||
|
|
||||||
@ -833,52 +840,47 @@ sub cmd_group_list(@)
|
|||||||
|
|
||||||
sub cmd_group_add(@)
|
sub cmd_group_add(@)
|
||||||
{
|
{
|
||||||
if ($#ARGV < 1)
|
my $group = shift;
|
||||||
|
|
||||||
|
if ($#_ < 0)
|
||||||
{
|
{
|
||||||
log(USAGE, "<lpt> group add <group> <login>");
|
log(USAGE, "<lpt> group <group-name> add <login>");
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
my $group = $ARGV[0];
|
my $login = shift;
|
||||||
my $login = $ARGV[1];
|
|
||||||
|
|
||||||
my $ldap = LDAP::ldap_connect();
|
my $ldap = LDAP::ldap_connect();
|
||||||
|
|
||||||
my $mesg = $ldap->search( # search a group
|
my $mesg = $ldap->search( # search a group
|
||||||
base => "cn=$group,ou=groups,dc=acu,dc=epita,dc=fr",
|
base => "cn=$group,ou=system,ou=groups,dc=acu,dc=epita,dc=fr",
|
||||||
filter => "objectClass=posixGroup",
|
filter => "objectClass=posixGroup",
|
||||||
attrs => ['memberUid']
|
attrs => ['memberUid']
|
||||||
) or die $!;
|
) or die $!;
|
||||||
$mesg->code && die $mesg->error;
|
$mesg->code && die $mesg->error;
|
||||||
$mesg->count > 0 || return -1;
|
$mesg->count > 0 || return -1;
|
||||||
|
|
||||||
foreach my $entry ($mesg->sorted('memberUid'))
|
foreach my $entry ($mesg->entries)
|
||||||
{
|
{
|
||||||
my @mem = $entry->get_value("memberUid");
|
my @mem = $entry->get_value("memberUid");
|
||||||
|
|
||||||
foreach my $user (@mem)
|
foreach my $member (@mem)
|
||||||
{
|
{
|
||||||
if ($user eq $login)
|
if ($member eq $login)
|
||||||
{
|
{
|
||||||
print "$login est deja dans le groupe $group\n";
|
log WARN, "$login est déjà dans le groupe $group";
|
||||||
$ldap->unbind;
|
$ldap->unbind;
|
||||||
exit -1;
|
exit 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
push(@mem, $login);
|
push @mem, $login;
|
||||||
$entry->replace("memberUid" => [@mem]);
|
$entry->replace("memberUid" => \@mem);
|
||||||
$entry->update($ldap);
|
$entry->update($ldap);
|
||||||
|
|
||||||
print "Nouvelle liste des membres de $group :\n";
|
log INFO, "$login ajouté au groupe $group avec succès.";
|
||||||
foreach my $user (@mem)
|
|
||||||
{
|
|
||||||
print "$user\n";
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
$ldap->unbind; # take down session
|
$ldap->unbind; # take down session
|
||||||
|
|
||||||
system('service nscd restart');
|
|
||||||
}
|
}
|
||||||
|
|
||||||
sub cmd_group_remove(@)
|
sub cmd_group_remove(@)
|
||||||
|
Reference in New Issue
Block a user