root/scripts/ldap/limpiarGrupos.php @ 552
535 | adminies.v | <?
|
|
# 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>";
|
|||
?>
|