#!/usr/bin/perl
## script d'attribution des groupes LDAP de l'absent au remplacant
## pschwarz Mai 2005
# Lancé par remplacant.php
# Usage : perl remplace.pl uid_de_l_absent uid_du_remplacant
use Net::LDAP;
require '/etc/SeConfig.ph';
my $absent = $ARGV[0];
my $remplacant = $ARGV[1];
my $urlabsent= " $absent ";
my $urlremplacant= " $remplacant ";
$stop=1;
$ldap = Net::LDAP->new(
"$slapdIp",
port => "$slapdPort",
debug => "$slapdDebug",
timeout => "$slapdTimeout",
version => "$slapdVersion"
);
$ldap->bind(); # Anonymous BIND
$ldap->bind(
$adminDn,
password => $adminPw
);
$ABS = $ldap->search(
base => "ou=People,$baseDn",
scope => 'one',
filter => "uid=$absent"
);
if (!($ABS->entries)[0]) {print "
Le professeur $urlabsent n'existe pas.
"; $stop=0;}
if ( $stop)
{$RPL = $ldap->search(
base => "ou=People,$baseDn",
scope => 'one',
filter => "uid=$remplacant"
);
if (!($RPL->entries)[0]) {print "
Le professeur $urlremplacant n'existe pas.
";$stop=0;}
}
#foreach $parcoursABS ($ABS->entries) {$nomabsent = $parcoursABS->dn;}
#foreach $parcoursRPL ($RPL->entries) {$nomremplacant = $parcoursRPL->dn;}
if ( $stop)
{if ($absent=~m/$remplacant/) {print "
Le professeur $urlremplacant se remplace lui-même; Vous appliquez les décisions du ministre. C'est bien, poursuivez.
"; $stop=0;}}
if ( $stop)
{$grpesABS = $ldap->search(
base => "ou=Groups,$baseDn",
scope => 'one',
filter => "memberuid=$absent"
);
$nbre=$grpesABS->count();
if ($nbre < 2) {print "
Le professeur $urlabsent n'appartient à aucun groupe secondaire.
";$stop=0;}}
if ( $stop)
{$grpesRPL = $ldap->search(
base => "ou=Groups,$baseDn",
scope => 'one',
filter => "memberuid=$remplacant"
);
#On créee un hachage contenant tous les groupes de l'absent??ou du remplacant???
%RPL=();
foreach $people ($grpesRPL->entries) {
$dnRPL = $people->dn;
$dnRPLAFF=$dnRPL;
$dnRPLAFF=~s/,ou=Groups,$baseDn//;
$dnRPLAFF=~s/cn=//;
$RPL{"$dnRPLAFF"}= $dnRPL;
}
}
if ( $stop)
{
$cpt=0;
foreach $people ($grpesABS->entries) {
$dnABS = $people->dn;
$dnABSAFF=$dnABS;
$dnABSAFF=~s/,ou=Groups,$baseDn//;
$dnABSAFF=~s/cn=//;
# foreach my $grpesABS (values(%RPL)){
#if (! ( ($dnABS=~m/$grpesABS/) ) )
#{$CHECKED="";}
#else
#{$CHECKED="CHECKED";}
#}
if ( exists ( $RPL {$dnABSAFF} ) )
{print "
$dnABSAFF"; }
else
{$cpt++;
print "
$dnABSAFF";
}
}
}
$ldap->unbind();