Proyecto

General

Perfil

<?
# Descripción del Script:
# Este script borra de los grupos (clases, departamentos, alumnos y profesores) todas las referencias
# a individuos (members y membersUID) que no existan en LDAP
# Se instala en /var/www del servidor ldap.
# Se llama desde el navegador abriendo http://ldap/limpiarGrupos.php
# Script realizado por:
# - Manuel Mora Gordillo
# - Francisco Méndez Palma
# I.E.S. Santa Eulalia. Mérida
# Septiembre 2009

$host = "localhost"; // Aquí debes poner la ip de tu servidor LDAP
$puerto = 389;

$admin="cn=admin,ou=People,dc=instituto,dc=extremadura,dc=es";
$passwd=""; // Aquí debes poner tu password


$conex=ldap_connect($host,$puerto) or die ("No ha sido posible conectarse al servidor");
if (!ldap_set_option($conex, LDAP_OPT_PROTOCOL_VERSION, 3)){
echo "Falló la configuracion de protocolo version 3";
die();
}

if ($conex){
$r=ldap_bind($conex, $admin, $passwd);
if (!$r){
echo "Upsss, error. Vuelve a intentarlo otra vez.";
die();
}
}


// Obtenemos un listado de todas los individuos que hay en el nodo "People"

$dn = "ou=People,dc=instituto,dc=extremadura,dc=es";
$filtro="uid=*";

$solonecesito = array("uid");
$sr=ldap_search($conex, $dn, $filtro,$solonecesito);
$info = ldap_get_entries($conex, $sr);

$individuosUID = array();
$individuos = array();

for($i=0;$i<count($info);$i++){
$individuosUID[] = $info[$i]["uid"][0];
$individuos[] = "uid=".$info[$i]["uid"][0].",ou=People,dc=instituto,dc=extremadura,dc=es";
}

// Obtenemos todos los grupos (clases, departamentos, alumnos y profesores)
// y revisamos si sus "members" existen, sino lo borramos

$dn = "ou=Group,dc=instituto,dc=extremadura,dc=es";
$filtro="cn=*";
$solonecesito = array("cn","grouptype","member","memberuid");
$sr=ldap_search($conex, $dn, $filtro,$solonecesito);
$info = ldap_get_entries($conex, $sr);

for($i=0;$i<count($info);$i++){

if($info[$i]["grouptype"][0]=="school_class" ||
$info[$i]["grouptype"][0]=="school_department" ||
$info[$i]["grouptype"][0]=="authority_group"){

for($j=0;$j<count($info[$i]["member"]);$j++){

if(trim($info[$i]["member"][$j])!="" && !in_array($info[$i]["member"][$j],$individuos)){

echo "Grupo <b>".$info[$i]["cn"][0]."</b>: el individuo <b>".$info[$i]["member"][$j]."</b> no existe en 'People', lo eliminamos del grupo.<br>";

$tmp = array();
$tmp["member"][0]=$info[$i]["member"][$j];

@ldap_mod_del($conex,"cn=".$info[$i]["cn"][0].",ou=Group,dc=instituto,dc=extremadura,dc=es",$tmp);
}
}
for($j=0;$j<count($info[$i]["memberuid"]);$j++){

if(trim($info[$i]["memberuid"][$j])!="" && !in_array($info[$i]["memberuid"][$j],$individuosUID)){

echo "Grupo <b>".$info[$i]["cn"][0]."</b>: el individuo <b>".$info[$i]["memberuid"][$j]."</b> no existe en 'People', procedemos a eliminarlo del grupo.<br>";

$tmp = array();
$tmp["memberuid"][0]=$info[$i]["memberuid"][$j];

@ldap_mod_del($conex,"cn=".$info[$i]["cn"][0].",ou=Group,dc=instituto,dc=extremadura,dc=es",$tmp);
}
}
}
}

echo "<br><br><br><b>Nota: Los grupos obligatoriamente deben tener al menos un miembro, si el individuo a borrar es el unico del grupo, no se borrara.</b>";

?>
(10-10/14)