[ Index ]

PHP Cross Reference of Unnamed Project

title

Body

[close]

/se3master/var/www/se3/parcs/ -> create_parc.php (source)

   1  <?php
   2  
   3  
   4     /**
   5  
   6     * Cree un nouveau parc
   7     * @Version $Id: create_parc.php 7313 2012-06-29 16:00:20Z plouf $
   8  
   9     * @Projet LCS / SambaEdu
  10  
  11     * @auteurs Equipe Tice acad&#233;mie 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: create_parc.php
  23  
  24    */
  25  
  26  
  27  
  28  
  29  include  "entete.inc.php";
  30  include  "ldap.inc.php";
  31  include  "ihm.inc.php";
  32  
  33  // Traduction
  34  require_once  ("lang.inc.php");
  35  bindtextdomain('se3-parcs',"/var/www/se3/locale");
  36  textdomain ('se3-parcs');
  37  
  38  
  39  
  40  $parc=$_POST['parc'];
  41  if ($parc==""){ $parc=$_GET['parc']; }
  42  $newparc=$_POST['newparc'];
  43  $create_parc=$_POST['create_parc'];
  44  $createtemplateparc=$_POST['createtemplateparc'];
  45  $new_computers=$_POST['new_computers'];
  46  if($new_computers=="") { $new_computers=$_GET['new_computers']; }
  47  $creationdossiertemplate=$_POST['creationdossiertemplate'];
  48  if ($creationdossiertemplate=="") { $creationdossiertemplate=$_GET['creationdossiertemplate']; }
  49  
  50  
  51  if (is_admin("computers_is_admin",$login)=="Y") {
  52  
  53      //aide
  54      $_SESSION["pageaide"]="Gestion_des_parcs#Ajout_de_machines";
  55  
  56      // Titre
  57      echo "<h1>".gettext("Ajout - Cr&#233;ation ")."</h1>";
  58  
  59      // Affichage du formulaire de s&#233;lection de parc
  60      if ((!isset($parc))&&(!isset($newparc))) {
  61          // Ajout de nouvelles machines dans les parcs
  62          echo "<H3>".gettext("S&#233;lection du parc &#224; alimenter")."</H3>";
  63          $list_parcs=search_machines("objectclass=groupOfNames","parcs");
  64          if ( count($list_parcs)>0) {
  65              echo "<FORM method=\"post\" action=\"create_parc.php\">\n";
  66              echo "<SELECT NAME=\"parc\" SIZE=\"1\">";
  67              for ($loop=0; $loop < count($list_parcs); $loop++) {
  68                  echo "<option value=\"".$list_parcs[$loop]["cn"]."\">".$list_parcs[$loop]["cn"]."\n";
  69              }
  70              echo "</SELECT>&nbsp;&nbsp;\n";
  71  
  72              echo "<input type=\"hidden\" name=\"create_parc\" value=\"$create_parc\">\n";
  73              for ($loop=0; $loop < count($new_computers); $loop++) {
  74                  echo "<input type=\"hidden\" name=\"new_computers[]\" value=\"".$new_computers[$loop]."\">\n";
  75              }
  76  
  77              echo "<input type=\"submit\" value=\"".gettext("Valider")."\">\n";
  78              echo "<u onmouseover=\"return escape".gettext("('S&#233;lectionner un parc dans lequel vous souhaitez ajouter des machines.')")."\"><img name=\"action_image2\"  src=\"../elements/images/system-help.png\" alt=\"help\"></u> ";
  79              echo "</FORM>\n";
  80          }
  81          echo "<BR>";
  82  
  83  
  84          // Cr&#233;ation de nouveau parc
  85  
  86          // on ne propose pas de creer un nouveau parc si la page d'origine est recherche
  87          if ($new_computers == "") {
  88              echo "<H3>".gettext("Cr&#233;ation d'un nouveau parc")."</H3>";
  89              echo "<FORM method=\"post\" action=\"create_parc.php\">\n";
  90              echo "<INPUT TYPE=\"text\" SIZE=\"10\" name=\"newparc\">\n";
  91  
  92              echo "<u onmouseover=\"return escape".gettext("('Indiquer le nom du nouveau parc que vous souhaitez cr&#233;er. Ne pas utiliser de caract&#232;res &#233;tranges.')")."\"><img name=\"action_image2\"  src=\"../elements/images/system-help.png\" alt=\"help\"></u> ";
  93  
  94              //=============================================================
  95              //AJOUT
  96              echo gettext("Cr&#233;er le dossier de template pour ce parc ?");
  97              echo "<u onmouseover=\"return escape".gettext("('La cr&#233;ation du template associ&#233;, permet de mettre en place des scripts de connexion pour ce parc. Il est toujours possible de le cr&#233;er apr&#232;s.')")."\"><img name=\"action_image2\"  src=\"../elements/images/system-help.png\" alt=\"help\"></u> ";
  98              echo gettext("Oui:")."<INPUT TYPE=\"radio\" VALUE=\"yes\" name=\"createtemplateparc\"> - \n";
  99              echo "<INPUT TYPE=\"radio\" VALUE=\"no\" name=\"createtemplateparc\" CHECKED>:".gettext("Non")."<br>\n";
 100              //=============================================================
 101  
 102              echo "<input type=\"submit\" value=\"".gettext("Valider")."\">\n";
 103              echo "</FORM>\n";
 104  
 105  
 106              // Creation des templates si pas deje crees
 107              echo "<br>";
 108              echo "<H3>".gettext("Cr&#233;er les dossiers de template pour les parcs existants")."</H3>";
 109              $list_parcs=search_machines("objectclass=groupOfNames","parcs");
 110              if ( count($list_parcs)>0) {
 111                  echo "<FORM method=\"post\" action=\"create_parc.php\">\n";
 112                  echo "<table>\n";
 113                  echo "<tr><td valign=\"top\">".gettext("Cr&#233;er les dossiers pour les parcs:")." </td>\n";
 114                      if (count($list_parcs)>10) $size=10; else $size=count($list_parcs);
 115                  echo "<td><SELECT NAME=\"parc[]\" SIZE=\"$size\" multiple=\"multiple\">";
 116                  $cpt_verif=0;
 117                  for ($loop=0; $loop < count($list_parcs); $loop++) {
 118                      $tmpparc=$list_parcs[$loop]["cn"];
 119                      if(!file_exists("/home/templates/$tmpparc")){
 120                          echo "<option value=\"".$list_parcs[$loop]["cn"]."\">".$list_parcs[$loop]["cn"]."</option>\n";
 121                          $cpt_verif++;
 122                      }
 123                  }
 124  
 125                  echo "</SELECT></td></tr>\n";
 126                  echo "</table>\n";
 127                  echo "<input type=\"hidden\" name=\"creationdossiertemplate\" value=\"oui\">\n";
 128                  // echo "<input type=\"hidden\" name=\"parc\" value=\"temoin\">\n";
 129                  echo "<input type=\"submit\" value=\"".gettext("Valider")."\">\n";
 130                  echo "</FORM>\n";
 131                  if($cpt_verif==0){
 132                      echo "<p>".gettext("Tous les parcs existants ont leur dossier de template cr&#233;&#233;.")."</p>\n";
 133                  }
 134                  //echo "<p>Dans le cas o&#151; le dossier de template existe d&#233;j&#224;, il n'est pas modifi&#233; et rien n'est ajout&#233;.</p>";
 135              }
 136              /**********************************************************************************/
 137          }
 138  
 139      // Debut du traitement
 140      } else {
 141          // Affichage du formulaire de remplissage du parc
 142            if ($creationdossiertemplate!="oui") {
 143              if ( !$create_parc) {
 144                  if (isset($newparc)) {
 145  
 146                      //=============================================================
 147                      //PROPOSITION:
 148                      //Passer d'autorit&#233; en minuscules le nom du parc
 149                      $newparc=strtolower($newparc);
 150  
 151  
 152                      if(strlen($newparc)==0){
 153                          echo "<p>".gettext("Le nom du parc ne doit pas &#234;tre vide.")."</p>\n";
 154                          include ("pdp.inc.php");
 155                          exit;
 156                      }
 157  
 158                      //On pourrait meme ajouter un test ereg plus haut pour exclure les caracteres speciaux
 159                      //(je suppose que le test est aussi fait au niveau du script PERL plus bas;o)
 160                      if(strlen(preg_replace("/[0-9a-z_]/","",$newparc))!=0){
 161                          echo "<p>".gettext("Le nom du parc propos&#233; comporte des caract&#232;res non valides.")."<br>\n";
 162                          echo gettext("Veuillez n'utiliser que des caract&#232;res alphanum&#233;riques en minuscules (<i>surtout les chiffres;o</i>) et &#233;ventuellement le caract&#232;re '_'.")."</p>\n";
 163                          echo "<br><center>";
 164                          echo "<a href=create_parc.php>Retour</a>";
 165                          echo "</center>";
 166                          include ("pdp.inc.php");
 167                          exit;
 168                      } else {
 169                          //=============================================================
 170                          // Cr&#233;ation d'un nouveau parc
 171                          echo gettext("Cr&#233;ation du parc ").$_POST['newparc'];
 172                          echo "<br>";
 173                          echo gettext("Vous devez obligatoirement ajouter une machine dedans.");
 174                          echo "<u onmouseover=\"return escape".gettext("('Vous devez obligatoirement mettre une machine dans le nouveau parc, sinon il ne sera pas cr&#233;&#233;.')")."\"><img name=\"action_image2\"  src=\"../elements/images/system-help.png\" alt=\"help\"></u> ";
 175                          echo "<BR>\n";
 176                          $parc=$newparc;
 177                          //=============================================================
 178                      }
 179                  }
 180  
 181                  $filtrecomp=isset($_POST['filtrecomp']) ? $_POST['filtrecomp'] : "";
 182  
 183                  echo "<H3>".gettext("Alimentation du parc")." <U>$parc</U></H3>";
 184                  // Filtrage des noms
 185                  echo "<FORM action=\"create_parc.php\" method=\"post\">\n";
 186                  echo "<P>".gettext("Lister les noms contenant: ");
 187                  echo "<INPUT TYPE=\"text\" NAME=\"filtrecomp\"\n VALUE=\"$filtrecomp\" SIZE=\"8\">";
 188  
 189                  echo "<input type=\"hidden\" name=\"createtemplateparc\" value=\"$createtemplateparc\">\n";
 190                  if (isset($newparc)) {
 191                      echo "<input type=\"hidden\" name=\"newparc\" value=\"$newparc\">\n";
 192                  }
 193                  if (isset($parc)) {
 194                      echo "<input type=\"hidden\" name=\"parc\" value=\"$parc\">\n";
 195                  }
 196                  echo "<input type=\"submit\" value=\"".gettext("Valider")."\">\n";
 197                  echo "</FORM>\n";
 198                  // Initialisation:
 199                  $list_new_machines=array();
 200                  // Lecture des membres du parc
 201                  $mp=gof_members($parc,"parcs",1);
 202                  // Creation d'un tableau des nouvelles machines &#224; int&#233;grer
 203                  if ($filtrecomp == '') $filtrel = '*';
 204                          else $filtrel = "*$filtrecomp*";
 205                  $list_machines=search_machines("(&(cn=$filtrel)(objectClass=ipHost))","computers");
 206                  // tri des machines d&#233;ja pr&#233;sentes dans le parc
 207                  $lmloop=0;
 208                  $mpcount=count($mp);
 209                  for ($loop=0; $loop < count($list_machines); $loop++) {
 210                      $loop1=0;
 211                      $mach=$list_machines[$loop]["cn"];
 212                      while (("$mp[$loop1]" != "$mach") && ($loop1 < $mpcount)) $loop1++;
 213                      if ("$mp[$loop1]" != "$mach") $list_new_machines[$lmloop++]=$mach;
 214                  }
 215                  // Affichage menu de s&#233;lection des machines &#224; ajouter au parc
 216                  if  ( count($list_new_machines)>15) $size=15; else $size=count($list_new_machines);
 217                  if ( count($list_new_machines)>0) {
 218                      sort($list_new_machines);
 219                      $form = "<form action=\"create_parc.php\" method=\"post\">\n";
 220                      $form.="<p>".gettext("S&#233;lectionnez les nouvelles machines &#224; int&#233;grer au parc:")."</p>\n";
 221                      $form.="<p><select size=\"".$size."\" name=\"new_computers[]\" multiple=\"multiple\">\n";
 222                      echo $form;
 223                      for ($loop=0; $loop < count($list_new_machines); $loop++) {
 224                          if ("$list_new_machines[$loop]" != "$netbios_name") echo "<option value=\"".$list_new_machines[$loop]."\">".$list_new_machines[$loop];
 225                                          }
 226                      $form="</select></p>\n";
 227  
 228                      $form.="<input type=\"hidden\" name=\"createtemplateparc\" value=\"$createtemplateparc\">\n";
 229                      $form.="<input type=\"hidden\" name=\"newparc\" value=\"$newparc\">\n";
 230                      $form.="<input type=\"hidden\" name=\"create_parc\" value=\"true\">\n";
 231                      $form.="<input type=\"hidden\" name=\"parc\" value=\"$parc\">\n";
 232                      $form.="<input type=\"reset\" value=\"".gettext("R&#233;initialiser la s&#233;lection")."\">\n";
 233                      $form.="<input type=\"submit\" value=\"".gettext("Valider")."\">\n";
 234                      $form.="</form>\n";
 235                      echo $form;
 236                  } else {
 237                      $message =  gettext("Il n'y a pas de nouvelles machines &#224; ajouter !");
 238                      echo $message;
 239                  }
 240              } else {
 241  
 242                  // Remplissage du parc dans l'annuaire
 243                  // Et &#233;ventuellement cr&#233;ation
 244                  // plus cr&#233;ation du template
 245                  echo "<H3>".gettext("Alimentation du parc")." <U>$parc</U></H3>";
 246                  echo "<P>".gettext("Vous avez s&#233;lectionn&#233; "). count($new_computers).gettext(" machine(s)")."<BR>\n";
 247                  if((count($new_computers)=="0") && ($_POST['newparc']!="")) {
 248                      echo "<br>";
 249                      echo gettext("Vous n'avez pas s&#233;lectionn&#233; au moins une machine.<br>Le parc ne sera pas cr&#233;&#233;.");
 250                  }
 251                  for ($loop=0; $loop < count($new_computers); $loop++) {
 252                      $computer=$new_computers[$loop];
 253                      $cDn = "cn=".$computer.",".$computersRdn.",".$ldap_base_dn;
 254                      $pDn = "cn=".$parc.",".$parcsRdn.",".$ldap_base_dn;
 255  
 256                      // Cr&#233;ation du template au premier passage uniquement
 257                      if(($_POST['createtemplateparc']=="yes") && $loop==0) {
 258                          echo "<p>".gettext("Cr&#233;ation du dossier du template de parc ");
 259                          echo $_POST['newparc'];
 260                          echo "</p>";
 261                          exec ("/bin/bash /usr/share/se3/scripts/createtemplateparc.sh \"$newparc\"");
 262                      }
 263  
 264                      echo gettext("Ajout de l'ordinateur")." $computer ".gettext("au parc")." <U>$parc</U><BR>";
 265  
 266                      // Si on est en train de cr&#233;er un nouveau parc
 267                      if ($newparc!="") {
 268                          exec ("/usr/share/se3/sbin/entryAdd.pl \"cn=$newparc,$parcsRdn,$ldap_base_dn\" \"cn=$newparc\" \"objectClass=groupOfNames\" \"member=$cDn\"");
 269                          exec ("/usr/share/se3/sbin/printers_group.pl");
 270  
 271                           // Lance le script pour wpkg
 272                           $script_wpkg="/usr/share/se3/scripts/update_hosts_profiles_xml.sh";
 273                          if (file_exists($script_wpkg)) {
 274                              exec ("/bin/bash /usr/share/se3/scripts/update_hosts_profiles_xml.sh ou=Computers ou=Parcs $ldap_base_dn");
 275                              exec ("/bin/bash /usr/share/se3/scripts/update_droits_xml.sh");
 276                          }
 277                          $newparc="";
 278                      } else {
 279                          // Sinon on ajoute simplement
 280                          exec ("/usr/share/se3/sbin/groupAddEntry.pl \"$cDn\" \"$pDn\"");
 281  
 282                          // NJ 10-2004 reconstruction des partages imprimantes par parc
 283                          exec ("/usr/share/se3/sbin/printers_group.pl");
 284  
 285                          // On relance le script pour italc
 286                          exec ("/usr/bin/sudo /usr/share/se3/scripts/italc_generate.sh");
 287  
 288                          // Lance le script pour wpkg
 289                          $script_wpkg="/usr/share/se3/scripts/update_hosts_profiles_xml.sh";
 290                          if (file_exists($script_wpkg)) {
 291                              exec ("/bin/bash /usr/share/se3/scripts/update_hosts_profiles_xml.sh ou=Computers ou=Parcs $ldap_base_dn");
 292                              exec ("/bin/bash /usr/share/se3/scripts/update_droits_xml.sh");
 293                          }
 294                          echo "<BR>";
 295                      }
 296                  }
 297  
 298                  echo "<BR><BR><CENTER>\n";
 299                  echo "<A HREF=\"show_parc.php?parc=$parc\">Retour</A>";
 300              }
 301          }
 302  
 303          // Cr&#233;ation des templates apres
 304          if($creationdossiertemplate=="oui") {
 305              echo "<H3>".gettext("Cr&#233;ation des dossiers de parc")."</H3>\n";
 306              if(count($parc)==0){
 307                  echo "<p><b>".gettext("Erreur").":</b> ".gettext("Vous n'avez pas s&#233;lectionn&#233; de parc;o).")."</p>";
 308              } else {
 309                  for($loop=0;$loop<count($parc);$loop++){
 310                      echo "<p>".gettext("Cr&#233;ation du dossier de template pour le parc")." $parc[$loop]</p>\n";
 311                      exec ("/bin/bash /usr/share/se3/scripts/createtemplateparc.sh \"$parc[$loop]\"");
 312                  }
 313              }
 314  
 315          }
 316  
 317  
 318  
 319      }
 320  }
 321  
 322  include ("pdp.inc.php");
 323  ?>


Generated: Tue Mar 17 22:47:18 2015 Cross-referenced by PHPXref 0.7.1