|
<?
|
|
# 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>";
|
|
|
|
?>
|