[ Index ] |
PHP Cross Reference of Unnamed Project |
[Summary view] [Print] [Text view]
1 <?php 2 3 4 /** 5 6 * Supprime un parc 7 * @Version $Id: delete_parc.php 8307 2014-12-09 10:06:23Z keyser $ 8 9 * @Projet LCS / SambaEdu 10 11 * @auteurs Equipe Tice academie de Caen 12 13 * @Licence Distribue selon les termes de la licence GPL 14 15 * @note 16 17 */ 18 19 /** 20 21 * @Repertoire: parcs/ 22 * file: delete_parc.php 23 24 */ 25 26 27 28 include "config.inc.php"; 29 include "entete.inc.php"; 30 include "ldap.inc.php"; 31 include "ihm.inc.php"; 32 include "printers.inc.php"; 33 include "fonc_parc.inc.php"; 34 35 // traduction 36 require_once ("lang.inc.php"); 37 bindtextdomain('se3-parcs',"/var/www/se3/locale"); 38 textdomain ('se3-parcs'); 39 40 41 $parc=$_POST['parc']; 42 $delparc=$_POST['delparc']; 43 $delete_parc=$_POST['delete_parc']; 44 $old_computers=$_POST['old_computers']; 45 $supprime_all=$_POST['supprime_all']; 46 47 48 49 50 /*******************************************************************/ 51 52 if (is_admin("computers_is_admin",$login)=="Y") { 53 //aide 54 $_SESSION["pageaide"]="Gestion_des_parcs#Suppression_de_machines"; 55 // Titre 56 echo "<h1>".gettext("Suppression de machine")."</h1>"; 57 58 // Affichage du formulaire de selection de parc 59 if ((!isset($parc)) && ($delparc!=2)) { 60 // La variable parc est vide on affiche une selecion 61 // On retourne de choix : 62 // delparc = 0 on efface des machines du parc 63 // delparc = 1 on efface tout le parc 64 echo "<H3>".gettext("Sélection du parc à modifier")."</H3>"; 65 $list_parcs=search_machines("objectclass=groupOfNames","parcs"); 66 if ( count($list_parcs)>0) { 67 echo "<FORM method=\"post\" action=\"delete_parc.php\">\n"; 68 echo "<SELECT NAME=\"delparc\" SIZE=\"1\">\n"; 69 echo "<option value=\"0\">".gettext("Effacer des machines du parc\n"); 70 echo "<option value=\"1\">".gettext("Effacer le parc\n"); 71 echo "<option value=\"2\">".gettext("Effacer une machine sans parc\n"); 72 echo "</SELECT>\n"; 73 echo "<SELECT NAME=\"parc\" SIZE=\"1\">"; 74 echo "<option value=\"\">Sélectionner\n"; 75 for ($loop=0; $loop < count($list_parcs); $loop++) { 76 echo "<option value=\"".$list_parcs[$loop]["cn"]."\">".$list_parcs[$loop]["cn"]."\n"; 77 } 78 echo "</SELECT> \n"; 79 echo "<input type=\"submit\" value=\"".gettext("Valider")."\">\n"; 80 echo "<u onmouseover=\"return escape".gettext("('<b>Effacer les machines d\'un parc</b> Sélectionner un parc dans lequel vous souhaitez supprimer des machines.<br>La suppression de toutes les machines d\'un parc provoque la suppression du parc.<br><b>Effacer le parc</b> provoque la suppression du parc, mais pas la suppression des machines dans l\'annuaire.<br>Pour supprimer proprement les machines, vous devez aller dans Etat par nom de machine et sélectionner la machine à supprimer.<br><b>Supprimer une machine sans parc</b> permet de supprimer complétement une machine n\'appartenant à aucun parc.')")."\"><img name=\"action_image2\" src=\"../elements/images/system-help.png\" alt=\"help\"></u> "; 81 echo "</FORM>\n"; 82 } 83 } else { 84 // Suppression des machines sans parc 85 // cas delparc = 2 86 if ($delparc == "2") { 87 // Filtrage des noms 88 echo "<FORM action=\"delete_parc.php\" method=\"post\">\n"; 89 echo "<P>".gettext("Lister les noms contenant: "); 90 echo "<INPUT TYPE=\"text\" NAME=\"filtrecomp\"\n VALUE=\"$filtrecomp\" SIZE=\"8\">"; 91 echo "<input type=\"hidden\" name=\"delparc\" value=\"2\">\n"; 92 echo "<input type=\"submit\" value=\"".gettext("Valider")."\">\n"; 93 echo "</FORM>\n"; 94 // On recherche les machines sans parc 95 $list_computer=search_machines("(&(cn=*)(objectClass=ipHost))","computers"); 96 if ( count($list_computer)>0) { 97 $form = "<form action=\"delete_parc.php\" method=\"post\">\n"; 98 $form.="<p>".gettext("Sélectionnez les machines sans parc à supprimer : ")."</p>\n"; 99 $form.="<p><select size=\"".$size."\" name=\"supprime_all[]\" multiple=\"multiple\">\n"; 100 for ($loopa=0; $loopa < count($list_computer); $loopa++) { 101 if($list_computer[$loopa]["cn"]!=$netbios_name) { 102 $exist_parc = search_parcs($list_computer[$loopa]["cn"]); 103 // Si pas de parc on affiche 104 if (($exist_parc[0]["cn"])=="") { 105 $mpenc=$list_computer[$loopa]['cn']; 106 // Filtrage selon critere 107 if ("$filtrecomp"=="") { 108 $form .= "<option value=".$mpenc.">".$mpenc; 109 } else { 110 //$lmloop=0; 111 $mpcount=count($mpenc); 112 $mach=$mpenc; 113 if (preg_match("/$filtrecomp/",$mach)) { 114 $form .= "<option value=".$mpenc.">".$mpenc; 115 } 116 } 117 } 118 } 119 } 120 $form.="</select></p>\n"; 121 $form.="<input type=\"hidden\" name=\"delparc\" value=\"0\">\n"; 122 $form.="<input type=\"hidden\" name=\"parc\" value=\"000001\">\n"; 123 $form.="<input type=\"hidden\" name=\"delete_parc\" value=\"true\">\n"; 124 $form.="<input type=\"submit\" value=\"".gettext("Valider")."\">\n"; 125 $form.="</form>\n"; 126 echo $form; 127 } 128 // On quitte 129 include ("pdp.inc.php"); 130 exit; 131 } 132 // Affichage du formulaire de suppression des machines du parc 133 // la variable parc n'est pas vide 134 // delparc = 0 135 // On propose les machines a supprimer qui existent dans ce parc 136 if ((!$delete_parc )&&($delparc!="1")) { 137 // Filtrage des noms 138 echo "<FORM action=\"delete_parc.php\" method=\"post\">\n"; 139 echo "<P>".gettext("Lister les noms contenant: "); 140 echo "<INPUT TYPE=\"text\" NAME=\"filtrecomp\"\n VALUE=\"$filtrecomp\" SIZE=\"8\">"; 141 echo "<input type=\"hidden\" name=\"parc\" value=\"$parc\">\n"; 142 echo "<input type=\"submit\" value=\"".gettext("Valider")."\">\n"; 143 echo "</FORM>\n"; 144 // Lecture des membres du parc 145 $mp_all=gof_members($parc,"parcs",1); 146 // Filtrage selon critere 147 if ("$filtrecomp"=="") { 148 $mp=$mp_all; 149 } else { 150 $lmloop=0; 151 $mpcount=count($mp_all); 152 for ($loop=0; $loop < count($mp_all); $loop++) { 153 $mach=$mp_all[$loop]; 154 if (preg_match("/$filtrecomp/",$mach)) $mp[$lmloop++]=$mach; 155 } 156 } 157 if ( count($mp)>15) $size=15; else $size=count($mp); 158 if ( count($mp)>0) { 159 $form = "<form action=\"delete_parc.php\" method=\"post\">\n"; 160 $form.="<p>".gettext("Sélectionnez les machines à enlever du parc : ")."$parc</p>\n"; 161 $form.="<p><select size=\"".$size."\" name=\"old_computers[]\" multiple=\"multiple\">\n"; 162 echo $form; 163 for ($loop=0; $loop < count($mp); $loop++) { 164 echo "<option value=".$mp[$loop].">".$mp[$loop]; 165 } 166 $form="</select></p>\n"; 167 // Si il ne reste qu'une seule machine 168 if ( count($mp)==1) { 169 $form.=gettext("Si vous supprimez la dernière machine, le parc sera supprimé."); 170 $form.="<br>"; 171 $form.="<input type=\"hidden\" name=\"delparc\" value=\"1\">\n"; 172 } 173 $form.="<input type=\"hidden\" name=\"delete_parc\" value=\"true\">\n"; 174 $form.="<input type=\"hidden\" name=\"parc\" value=\"$parc\">\n"; 175 $form.="<input type=\"reset\" value=\"".gettext("Réinitialiser la sélection")."\">\n"; 176 $form.="<input type=\"submit\" value=\"".gettext("Valider")."\" onclick= \"return getconfirm();\">\n"; 177 $form.="</form>\n"; 178 echo $form; 179 } else { 180 $message = gettext("Il n'y a pas de machines à supprimer !"); 181 echo "<br><br>"; 182 echo $message; 183 } 184 } else { 185 // Si on veut supprimer tout le parc sans supprimer les machines de l'annuaire 186 // Il faut delparc = 1 et parc non vide 187 if ($delparc=="1") { 188 if ($parc=="") { 189 echo "Vous devez sélectionner un parc !"; 190 echo "<br><br><CENTER>"; 191 echo "<a href=\"delete_parc.php\">Retour</A>"; 192 echo "</CENTER>"; 193 exit; 194 } else { 195 // Suppression du parc 196 echo "<H3>".gettext("Suppression du parc")." <U>$parc</U></H3>"; 197 $cDn = "cn=".$parc.",".$parcsRdn.",".$ldap_base_dn; 198 exec ("/usr/share/se3/sbin/entryDel.pl \"$cDn\""); 199 // on la vire d'italc 200 // On relance le script 201 exec ("/usr/bin/sudo /usr/share/se3/scripts/italc_generate.sh"); 202 203 echo "<BR>"; 204 echo gettext("Le template de ce parc n'a pas été supprimé."); 205 echo "<BR>"; 206 echo gettext("Vous devez le faire à la main"); 207 echo "<br><br><CENTER>"; 208 echo "<a href=\"delete_parc.php\">Retour</A>"; 209 echo "</CENTER>"; 210 } 211 } else { 212 // Suppression des machines dans le parc 213 // Il faut parc non vide 214 // Si le nombre de machine a supprimer = nombre de machine dans le parc on supprime 215 // aussi le parc 216 if ($parc=="000001") { 217 echo "<H3>".gettext("Suppression de machine(s) sans parc")."</H3>"; 218 echo "<P>".gettext("Vous avez sélectionné "). count($supprime_all).gettext(" machine(s)")."<BR>\n"; 219 } else { 220 echo "<H3>".gettext("Suppression de machines dans le parc")." <U>$parc</U></H3>"; 221 echo "<P>".gettext("Vous avez sélectionné "). count($old_computers).gettext(" machine(s)")."<BR>\n"; 222 } 223 // On compte si la demande ne porte pas sur toutes les machines 224 $mp_all=gof_members($parc,"parcs",1); 225 $mpcount=count($mp_all); 226 // Si la demande porte sur toutes les machines du parc 227 // On vire le parc 228 if ($mpcount == count($old_computers)) { 229 if($parc!="000001") { // cas des machines sans parc 230 echo "<H3>".gettext("Suppression du parc")." <U>$parc</U></H3>"; 231 echo gettext("Vous avez demandé à supprimer toutes les machines du parc $parc"); 232 echo "<br><br>"; 233 echo gettext("le parc sera aussi supprimé"); 234 $cDn = "cn=".$parc.",".$parcsRdn.",".$ldap_base_dn; 235 exec ("/usr/share/se3/sbin/entryDel.pl \"$cDn\""); 236 237 // On vire pour italc 238 exec ("/usr/bin/sudo /usr/share/se3/scripts/italc_generate.sh"); 239 // on reconstruira a la fin 240 // exec ("/usr/share/se3/sbin/printers_group.pl"); 241 } 242 } else { 243 // on extrait les machines a virer 244 for ($loop=0; $loop < count($old_computers); $loop++) { 245 $computer=$old_computers[$loop]; 246 if($computer==$netbios_name) { 247 echo "<span style='color:red'>On ne supprime pas le serveur SE3 lui-même : $netbios_name</span><br />\n"; 248 } 249 else { 250 // On verifie si ce n'est pas une imprimante 251 $resultat=search_imprimantes("printer-name=$computer","printers"); 252 $suisje_printer="non"; 253 for ($loopp=0; $loopp < count($resultat); $loopp++) { 254 if ($computer==$resultat[$loopp]['printer-name']) { 255 $suisje_printer="yes"; 256 continue; 257 } 258 } 259 $pDn = "cn=".$parc.",".$parcsRdn.",".$ldap_base_dn; 260 if ($suisje_printer=="yes") { 261 // je suis une imprimante 262 echo gettext("Suppression de l'imprimante")." $computer ".gettext("du parc")." <U>$parc</U><BR>\n"; 263 $cDn = "cn=".$computer.",".$printersRdn.",".$ldap_base_dn; 264 } else { 265 // je suis un ordinateur 266 echo gettext("Suppression de l'ordinateur")." $computer ".gettext("du parc")." <U>$parc</U><BR>\n"; 267 $cDn = "cn=".$computer.",".$computersRdn.",".$ldap_base_dn; 268 // Test la machine prof pour italc 269 $machine_prof=search_description_parc("$parc"); 270 if($computer==$machine_prof) { 271 echo "<br>Attention : vous ne disposez plus de machine professeur pour le parc $parc"; 272 modif_description_parc ($parc,"0"); 273 } 274 } 275 // on supprime 276 exec ("/usr/share/se3/sbin/groupDelEntry.pl \"$cDn\" \"$pDn\""); 277 278 // Modif pour italc 279 exec ("/usr/bin/sudo /usr/share/se3/scripts/italc_generate.sh"); 280 echo "<br />"; 281 } 282 } 283 } 284 // si demande de suppression complete 285 if (count($supprime_all)>0) { 286 // On teste si la machine appartient a d'autres parcs 287 // Si oui il faut verifier que cela n'implique pas la suppression de l'autre parc. 288 for ($loopa=0; $loopa < count($supprime_all); $loopa++) { 289 if($computer==$netbios_name) { 290 echo "<span style='color:red'>On ne supprime pas le serveur SE3 lui-même : $netbios_name</span><br />\n"; 291 } 292 else { 293 $computer=$supprime_all[$loopa]; 294 // On verifie si ce n'est pas une imprimante 295 $resultat=search_imprimantes("printer-name=$computer","printers"); 296 $suisje_printer="non"; 297 for ($loopp=0; $loopp < count($resultat); $loopp++) { 298 if ($computer==$resultat[$loopp]['printer-name']) { 299 $suisje_printer="yes"; 300 continue; 301 } 302 } 303 if ($suisje_printer=="yes") { 304 echo "<h3>".gettext("Avertissement")."</h3>"; 305 echo "<br>"; 306 echo "$computer "; 307 echo gettext("est une imprimante."); 308 echo "<br>"; 309 echo gettext("Vous devez passer par le menu imprimante pour la supprimer définitivement"); 310 } else { 311 // on a bien une machine, on peut la supprimer 312 // On cherche d'abord si elle appartient pas a un autre parc. 313 $list_parcs=search_machines("(&(member=cn=$computer,$computersRdn,$ldap_base_dn)(objectClass=groupOfNames))","parcs"); 314 if (count($list_parcs)>0) { 315 echo "<br>"; 316 echo "<h3>".gettext("Suppression des autres parcs")."</h3>"; 317 echo "<br>"; 318 for ($loop=0; $loop < count($list_parcs); $loop++) { 319 echo "Suppression du parc : "; 320 $parc = $list_parcs[$loop]["cn"]; 321 supprime_machine_parc($computer,$parc); 322 echo $parc; 323 echo "<BR>"; 324 // Test la machine prof pour italc 325 $machine_prof=search_description_parc("$parc"); 326 if($computer==$machine_prof) { 327 echo "Attention : vous ne disposez plus de machine professeur pour le parc $parc"; 328 modif_description_parc ($parc,"0"); 329 } 330 } 331 } 332 // Puis enfin on supprime la machine elle meme de l'annuaire 333 echo "<h3>".gettext("Suppression compléte de ")." $computer ".gettext("de l'annuaire")."</h3>"; 334 // Nettoyage de l'inventaire 335 echo "Suppression de l'inventaire"; 336 echo "<br>"; 337 suppr_inventaire($computer); 338 // voir si on doit pas nettoyer les connexions 339 // Vire dans le dhcp 340 // On teste si la table existe 341 /* 342 $exec = mysql_query("SHOW TABLES FROM `se3db` LIKE 'se3_dhcp'"); 343 $tables =array(); 344 while($row = mysql_fetch_row($exec)) { 345 $tables[] = $row[0]; 346 } 347 if(in_array('se3_dhcp',$tables)){ 348 $dhcp_ok = 1; 349 } 350 if ($dhcp_ok==1) { 351 */ 352 if ($dhcp=="1") { 353 echo "Suppression du dhcp"; 354 echo "<br>"; 355 $suppr_query = "DELETE FROM `se3_dhcp` where `name` = '$computer'"; 356 mysql_query($suppr_query); 357 // On relance dhcp si celui-ci est active. 358 exec("sudo /usr/share/se3/scripts/makedhcpdconf",$ret); 359 } 360 361 // La virer de wpkg 362 echo "Suppression des rapports wpkg"; 363 echo "<br>"; 364 $rapport_computer="/var/se3/unattended/install/wpkg/rapports/".$computer.".txt"; 365 $log_computer="/var/se3/unattended/install/wpkg/rapports/".$computer.".log"; 366 if(file_exists($rapport_computer)) { @unlink($rapport_computer); } 367 if(file_exists($log_computer)) { @unlink($log_computer);} 368 369 // On relance le script pour italc 370 echo "Suppression d'italc"; 371 exec ("/usr/bin/sudo /usr/share/se3/scripts/italc_generate.sh"); 372 373 374 exec ("/usr/share/se3/sbin/entryDel.pl cn=$computer,".$dn["computers"],$output,$returnval); 375 exec ("/usr/share/se3/sbin/entryDel.pl uid=$computer$,".$dn["computers"]); 376 exec("/usr/bin/touch /tmp/csvtodo",$ret); 377 exec("sudo /usr/share/se3/sbin/update-csv.sh",$ret); 378 } 379 } 380 } 381 } 382 // Suppression des delegations sans parc 383 echo "<H3>".gettext("Suppression des délégations sans parc")."</H3>"; 384 nettoie_delegation(); 385 // NJ 10-2004 reconstruction des partages imprimantes 386 exec ("/usr/share/se3/sbin/printers_group.pl"); 387 // Lance le script de mise a jour pour wpkg 388 update_wpkg(); 389 echo "<br><br><CENTER>"; 390 echo "<A HREF=\"show_parc.php?parc=$parc\">Retour</A>"; 391 //echo "<a href=\"delete_parc.php\">Retour</A>"; 392 echo "</CENTER>"; 393 } 394 } 395 } 396 } 397 include ("pdp.inc.php"); 398 ?>
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated: Tue Mar 17 22:47:18 2015 | Cross-referenced by PHPXref 0.7.1 |