[ Index ]

PHP Cross Reference of Unnamed Project

title

Body

[close]

/se3master/var/www/se3/includes/ -> fonc_parc.inc.php (source)

   1  <?php
   2  
   3  
   4     /**
   5     
   6     * Librairie de fonctions utilisees dans l'interface d'administration parcs
   7     * @Version $Id: fonc_parc.inc.php 8468 2015-02-10 09:22:04Z dbo $ 
   8     
   9     * @Projet LCS / SambaEdu 
  10     
  11     * @auteurs Equipe Tice academie de Caen
  12     * @auteurs sandrine dangreville matice creteil aout 2005
  13  
  14     * @Licence Distribue selon les termes de la licence GPL
  15     
  16     * @note 
  17     
  18     */
  19  
  20     /**
  21  
  22     * @Repertoire: includes/
  23     * file: fonc_parc.php
  24  
  25    */    
  26  
  27  
  28  
  29  require_once  ("lang.inc.php");
  30  bindtextdomain('se3-parcs',"/var/www/se3/locale");
  31  textdomain ('se3-parcs');
  32  
  33  
  34  //*****************connexion bdd*******************
  35    $authlink = @mysql_connect($dbhost,$dbuser,$dbpass);
  36          @mysql_select_db($dbname) or die("Impossible de se connecter &#224; la base $dbname.");
  37       
  38  
  39  
  40  /**
  41  
  42  * Fonctions d'affichage de menu action dans parcs
  43  * @Parametres
  44  * @Return
  45  */
  46  
  47  
  48  function affiche_action($parc)
  49  {
  50  echo "<script type=\"text/javascript\">
  51  <!--
  52  window.onload=montre;
  53  function montre(id) {
  54  var d = document.getElementById(id);
  55    for (var i = 1; i<=10; i++) {
  56      if (document.getElementById('smenu'+i)) {document.getElementById('smenu'+i).style.display='none';}
  57    }
  58  if (d) {d.style.display='block';}
  59  }
  60  //--></script><div id=\"menu\">
  61    "; if ($parc) {
  62  echo "<dl><dt onmouseover=\"javascript:montre('smenu0');\" onmouseout=\"javascript:montre('');\"><a href=\"action_parc.php\" title=\"Parc choisi\">$parc&nbsp;&nbsp;<img src=\"../elements/images/command.png\" alt=\"".gettext("Changer de parc")."\" title=\"".gettext("Changer de parc")."\" width=\"20\" height=\"20\" border=\"0\" /></a></dt></dl>\n";
  63      }
  64   else{
  65  
  66  echo "  <dl><dt onmouseover=\"javascript:montre('smenu0');\" onmouseout=\"javascript:montre('');\"><a href=\"action_parc.php\" title=\"".gettext("Choisir un parc")."\">".gettext("Choisir un parc")."</a></dt>\n";
  67  echo "<dd id=\"smenu0\" onmouseover=\"javascript:montre('smenu0');\" onmouseout=\"javascript:montre('');\">
  68        <ul class=ssmenu onmouseout=\"javascript:montre('');\">\n";
  69            $list_parcs=search_machines("objectclass=groupOfNames","parcs");
  70          if ( count($list_parcs)>0) {
  71              for ($loop=0; $loop < count($list_parcs); $loop++) {
  72             if ($acces_restreint)  {  if ((!this_parc_delegate($login,$list_parcs[$loop]["cn"],"manage")) and (!this_parc_delegate($login,$list_parcs[$loop]["cn"],"view"))) { continue; } }
  73   if ($list_parcs[$loop]["cn"]<>$parc) { echo"<li class=ssmenu onmouseout=\"javascript:montre('');\"><a href=\"action_parc.php?parc=".$list_parcs[$loop]["cn"]."\"><img src=\"../elements/images/typebullet.png\" width=\"30\" height=\"11\" border=\"0\">".$list_parcs[$loop]["cn"]."</a></li>\n";}
  74          }   }
  75  echo "</ul>
  76      </dd>
  77    </dl>\n";
  78  
  79  
  80  
  81    }
  82  
  83  $testniveau=getintlevel();
  84  if (($parc) and ($testniveau>3)) {
  85  echo " <dl>
  86      <dt onmouseover=\"javascript:montre('smenu1');\">".gettext("Installations clientes")."</dt>
  87  
  88      <dd id=\"smenu1\" onmouseover=\"javascript:montre('smenu1');\" onmouseout=\"javascript:montre('');\">
  89        <ul class=ssmenu>
  90          <li class=ssmenu><a href=\"install_locale.php?parc=$parc&action=verif_1\"><img src=\"../elements/images/typebullet.png\" width=\"30\" height=\"11\" border=\"0\">".gettext("I Verification des postes")."</a></li>
  91          <li class=ssmenu><a href=\"install_locale.php?parc=$parc&action=msi\"><img src=\"../elements/images/typebullet.png\" width=\"30\" height=\"11\" border=\"0\">".gettext("II Pr&eacute;parer l'installation")."</a></li>
  92          <li class=ssmenu><a href=\"install_locale.php?parc=$parc&action=msi_3\"><img src=\"../elements/images/typebullet.png\" width=\"30\" height=\"11\" border=\"0\">".gettext("III Executer l'installation")."</a></li>
  93          </ul>
  94      </dd>
  95    </dl>
  96  ";   }
  97  //else { echo"<dl><dt onmouseover=\"javascript:montre('smenu1');\">Installations clientes</dt></dl>";}
  98  
  99  //  else {
 100  //  echo "<dl><dt onmouseover=\"javascript:montre('smenu2');\">G&eacute;rer les applications</dt></dl>";} // */
 101  if ($parc) {
 102  echo "  <dl>
 103      <dt onmouseover=\"javascript:montre('smenu3');\">Etat du parc</dt>
 104        <dd id=\"smenu3\" onmouseover=\"javascript:montre('smenu3');\" onmouseout=\"javascript:montre('');\">
 105        <ul class=ssmenu>
 106  
 107          <li class=ssmenu><a href=\"wolstop_station.php?parc=$parc&action=timing\"><img src=\"../elements/images/typebullet.png\" width=\"30\" height=\"11\" border=\"0\">".gettext("Planification")."</a></li>
 108          <li class=ssmenu><a href=\"action_parc.php?parc=$parc&action=detail\"><img src=\"../elements/images/typebullet.png\" width=\"30\" height=\"11\" border=\"0\">".gettext("Etat - Controle")."</a></li>
 109        </ul>
 110  
 111        </dd>
 112    </dl>\n"; }
 113  //  else  { echo "<dl><dt onmouseover=\"javascript:montre('smenu3');\">Etat du parc</dt></dl>";}
 114  echo "  </div>
 115  ";
 116  }
 117  
 118  
 119  /**
 120  
 121  * Fonctions d'affichage des appli
 122  * @Parametres
 123  * @Return
 124  */
 125  
 126  
 127  function affiche_appli()
 128  {
 129      echo "<table align=center><tr>
 130      <td class=menuheader width=\"130\" height=\"30\" align=\"center\"><a href=\"appli_client.php?action=new_private_appli\">".gettext("Ajouter")."</a></td>
 131      <td class=menuheader width=\"130\" height=\"30\" align=\"center\"><a href=\"appli_client.php?action=list_cat\">".gettext("Par cat&#233gorie")."</a></td>
 132      <td class=menuheader width=\"130\" height=\"30\" align=\"center\"><a href=\"appli_client.php?action=list_alpha\">".gettext("Par ordre alphab&#233tique")."</a></td>
 133      <td class=menuheader width=\"130\" height=\"30\" align=\"center\"><a href=\"appli_client.php?action=waiting\">".gettext("En attente")."</a></td>
 134      <!--<td class=menuheader width=\"130\" height=\"30\" align=\"center\"><a href=\"appli_client.php?action=validate_central\">".gettext("Mise a jour Serveur Central")."</a></td>-->
 135      </table>\n";
 136  
 137  }
 138  
 139  
 140  /**
 141  
 142  * retourne l'ID de $nom_machine ou 0 a partir de la table hardware
 143  * @Parametres
 144  * @Return
 145  */
 146  
 147  function avoir_systemid($nom_machine) { // retourne l'ID de $nom_machine ou 0 a partir de la table hardware
 148      if ( ! file_exists("/var/www/se3/includes/dbconfig.inc.php"))
 149          return 0;
 150          session_start();
 151      $_SESSION["loggeduser"]="$login";
 152      include "dbconfig.inc.php";
 153      $dbnameinvent="ocsweb";
 154  
 155      $authlink_invent=@mysql_connect($_SESSION["SERVEUR_SQL"],$_SESSION["COMPTE_BASE"],$_SESSION["PSWD_BASE"]);
 156      @mysql_select_db($dbnameinvent) or die("Impossible de se connecter &#224; la base $dbnameinvent.");
 157      
 158      $query="select ID from hardware where NAME='$nom_machine'";
 159      $result = mysql_query($query,$authlink_invent);
 160      if ($result) {
 161              $ligne=mysql_num_rows($result);
 162          if ($ligne > 0) {
 163                      while ($res = mysql_fetch_array($result)) {
 164                  $retour=$res["ID"];
 165              }
 166          } else {
 167              $retour=0;
 168          }
 169          
 170          return $retour;
 171      } else { // Pas d'inventaire a ce nom
 172          return 0;
 173      }    
 174  }
 175  
 176  
 177  /**
 178  
 179  * test si une machine cliente repond au ping
 180  * @Parametres $ip adresse a pinguer
 181  * @Return
 182  */
 183  
 184  
 185  function fping($ip)
 186  {
 187  //    return exec("ping ".$ip." -c 1 -w 1 | grep received | awk '{print $4}'");
 188  //      system("ping ".$ip." -c 1 -w 1 > /dev/null", $ret);
 189  
 190      exec("/usr/share/se3/sbin/tcpcheck 1 $ip:445 | grep alive",$arrval,$ret);
 191      if ( $ret != "1" ) {
 192          return 1;
 193      }
 194      else {
 195          return 0;
 196      }
 197  }
 198  
 199  
 200  
 201  /**
 202  
 203  * test la connexion ssh sur une machine cliente
 204  * @Parametres $ip adresse a tester
 205  * @Return
 206  */
 207  
 208  
 209  function ssh($ip)
 210  {
 211      $fp=@fsockopen($ip,22,$errno,$errstr,5);
 212      if (!$fp) {
 213         return 0;
 214      } else {  return 1; }
 215  }
 216  
 217  
 218  
 219  /**
 220  
 221  * test si une machine cliente repond sur le port 3389
 222  * @Parametres $ip adresse a tester
 223  * @Return construit un fichier ts dans /tmp pour cette machine si c'est le cas
 224  */
 225  
 226  
 227  function ts($ip)
 228  {
 229      $fp=@fsockopen($ip,3389,$errno,$errstr,5);
 230      if (!$fp) {
 231          return 0;
 232      } else {
 233  $ligne="screen mode id:i:2
 234  desktopwidth:i:1400
 235  desktopheight:i:1050
 236  session bpp:i:16
 237  winposstr:s:0,1,23,0,1379,619
 238  full address:s:$ip
 239  compression:i:1
 240  keyboardhook:i:2
 241  audiomode:i:0
 242  redirectdrives:i:0
 243  redirectprinters:i:1
 244  redirectcomports:i:0
 245  redirectsmartcards:i:1
 246  displayconnectionbar:i:1
 247  autoreconnection enabled:i:1
 248  username:s:
 249  domain:s:
 250  alternate shell:s:
 251  shell working directory:s:
 252  disable wallpaper:i:1
 253  disable full window drag:i:1
 254  disable menu anims:i:1
 255  disable themes:i:0
 256  disable cursor setting:i:0
 257  bitmapcachepersistenable:i:1";
 258  $content_dir = '/tmp/';
 259  $fichier_rdp = $content_dir . "$ip.rdp";
 260  if (file_exists($fichier_rdp)) unlink($fichier_rdp);
 261  
 262  $get= fopen ($fichier_rdp, "w+");
 263  fputs($get,$ligne);
 264  fclose($get);
 265  $ts= "<a href=\"tsvnc.php?machine=$ip&action=ts&file=$fichier_rdp\""
 266      . "onmouseout=\"UnTip();\" onmouseover=\"Tip('".$action_parc['msgTsWarning']."',WIDTH,250,SHADOW,true,DURATION,5000);\""
 267       . "><img src=\"../elements/images/monitorTS.gif\" alt=\"\" title=\"terminal server\" width=\"30\" height=\"30\" border=\"0\" /></a>\n";
 268  return $ts;
 269  
 270  }
 271  }
 272  
 273  
 274  
 275  /**
 276  
 277  * test si une machine cliente repond sur le port 5900 vnc
 278  * @Parametres $ip adresse a tester
 279  * @Return construit un fichier vnc dans /tmp pour cette machine si c'est le cas
 280  */
 281  
 282  
 283  function vnc($ip)
 284  {
 285  $fp=@fsockopen($ip,5900,$errno,$errstr,5);
 286  if (!$fp) {
 287   //  echo "$errstr ($errno)<br />\n";
 288     return 0;
 289  }
 290  else
 291  {
 292  $ligne="[connection]
 293  host=$ip
 294  port=5900
 295  proxyhost=
 296  proxyport=5900
 297  password=
 298  [options]
 299  use_encoding_0=1
 300  use_encoding_1=1
 301  use_encoding_2=1
 302  use_encoding_3=0
 303  use_encoding_4=1
 304  use_encoding_5=1
 305  use_encoding_6=1
 306  use_encoding_7=1
 307  use_encoding_8=1
 308  use_encoding_9=1
 309  use_encoding_10=0
 310  use_encoding_11=0
 311  use_encoding_12=0
 312  use_encoding_13=0
 313  use_encoding_14=0
 314  use_encoding_15=0
 315  use_encoding_16=1
 316  preferred_encoding=5
 317  restricted=0
 318  viewonly=0
 319  nostatus=0
 320  nohotkeys=0
 321  showtoolbar=1
 322  AutoScaling=0
 323  fullscreen=0
 324  autoDetect=1
 325  8bit=0
 326  shared=1
 327  swapmouse=0
 328  belldeiconify=0
 329  emulate3=1
 330  emulate3timeout=100
 331  emulate3fuzz=4
 332  disableclipboard=0
 333  localcursor=1
 334  Scaling=0
 335  scale_num=100
 336  scale_den=100
 337  cursorshape=1
 338  noremotecursor=0
 339  compresslevel=6
 340  quality=6
 341  ServerScale=1
 342  EnableCache=0
 343  QuickOption=1
 344  UseDSMPlugin=0
 345  UseProxy=0
 346  DSMPlugin=";
 347  $content_dir = '/tmp/';
 348  $fichier_vnc = $content_dir . "$ip.vnc";
 349  if (file_exists($fichier_vnc)) unlink($fichier_vnc);
 350  
 351  $get= fopen ($fichier_vnc, "w+");
 352  fputs($get,$ligne);
 353  fclose($get);
 354  $vnc= "<a href=\"tsvnc.php?machine=$ip&action=vnc&file=$fichier_vnc\""
 355      . "onmouseout=\"UnTip();\" onmouseover=\"Tip('".$action_parc['msgVncWarning']."',WIDTH,250,SHADOW,true,DURATION,5000);\""
 356       . "><img src=\"../elements/images/monitorVNC.gif\" alt=\"\" title=\"terminal server\" width=\"30\" height=\"30\" border=\"0\" /></a>\n";
 357  
 358  
 359  return $vnc;
 360  
 361  }
 362  }
 363  
 364  
 365  
 366  /**
 367  
 368  *  pour l'affichage des heures dans le menu planification des allumage/extinction postes
 369  * @Parametres 
 370  * @Return retourne un <option></option>
 371  */
 372  
 373  
 374  function heure_deroulante($parcf,$jourf,$type_actionf)
 375  {
 376      global $authlink;
 377      if ($parcf) {
 378          $resultf=mysql_query("select heure from actionse3 where action='$type_actionf' and parc='$parcf' and jour='$jourf';", $authlink) or die("Impossible d'effectuer la requete");
 379  
 380          if ($resultf) {
 381              $rowf=mysql_fetch_row($resultf);
 382              $heuref=$rowf[0];
 383          }           
 384      }
 385  
 386      $timef=explode(":",$heuref);
 387      //$heure_act=date("H");
 388      //$minute_act=date("m");
 389      for ($if=0;$if<24;$if++) {
 390          $selectedf="";
 391          for ($jf=0;$jf<4;$jf++) {
 392              $mf=$jf*15;
 393              $selectedf="";
 394              if  (($if==$timef[0]) and ($mf==$timef[1])) { $selectedf="SELECTED"; } //elseif ($heure_act==$i-1) { $selected="SELECTED"; }
 395              if ($mf<10) { echo "<option $selectedf >$if:0$mf</option>\n"; } else { echo "<option $selectedf>$if:$mf</option>\n"; }
 396              $selectedf="";
 397          }
 398      }
 399  }
 400  
 401  
 402  // test si une action d'allumage extinction est prevu sur un parc donne 
 403  // un jour donne ( retourne checked pour un select)
 404  function jour_check($parcf,$jourf,$type_actionf)
 405  {
 406      global $authlink;
 407      if ($parcf) {
 408          $resultf=mysql_query("select heure from actionse3 where parc='$parcf' and jour='$jourf' and action='$type_actionf';", $authlink) or die("Impossible d'effectuer la requete");
 409          if ($resultf) {
 410              if (mysql_num_rows($resultf)>0) { return "checked"; }
 411          }
 412      }
 413  }
 414  
 415  
 416  
 417  
 418  /**
 419  
 420  * affiche le tableau detaillant l'allumage des machines et la prise de controle
 421  * @Parametres
 422  * @Return 
 423  */
 424  
 425  
 426  function detail_parc($parc)
 427  {
 428      require_once  ("printers.inc.php");
 429  
 430      global $smbversion;
 431      echo "\n<br>\n<CENTER>\n";
 432      echo "<TABLE border=1 width=\"60%\">\n<tr class=menuheader style=\"height: 30\">\n";
 433      echo "<td align=\"center\"></td>\n";
 434      echo "<td align=\"center\">STATIONS CONCERNEES</td>\n";
 435      echo "<td align=\"center\">ETAT</td>\n";
 436      echo "<td align=\"center\">CONNEXIONS</td>\n";
 437      echo "<td align=\"center\">CONTROLE</td></tr>\n";
 438  
 439          $mp_all=gof_members($parc,"parcs",1);
 440  
 441      // Filtrage selon critere
 442          if ("$filtrecomp"=="") $mp=$mp_all;
 443          else {
 444                  $lmloop=0;
 445                  $mpcount=count($mp_all);
 446                  for ($loop=0; $loop < count($mp_all); $loop++) {
 447                      $mach=$mp_all[$loop];
 448                         if (preg_match("/$filtrecomp/",$mach)) $mp[$lmloop++]=$mach;
 449                  }
 450          }
 451  
 452          if ( count($mp)>0) {
 453                   sort($mp);
 454                   for ($loop=0; $loop < count($mp); $loop++) {
 455                          $mpenc=urlencode($mp[$loop]);
 456                       $mp_en_cours=urldecode($mpenc);
 457                 $mp_curr=search_machines("(&(cn=$mp_en_cours)(objectClass=ipHost))","computers");
 458                          if (isset($mp_curr[0]["ipHostNumber"])) {
 459                                 $iphost=$mp_curr[0]["ipHostNumber"];
 460              }
 461                     // Test si on a une imprimante ou une machine
 462              $resultat=search_imprimantes("printer-name=$mp_en_cours","printers");
 463              $suisje_printer="0";
 464              for ($loopp=0; $loopp < count($resultat); $loopp++) {
 465                  if ($mp_en_cours==$resultat[$loopp]['printer-name']) {
 466                      $suisje_printer="1";
 467                      continue;
 468                  }
 469              }
 470              
 471              // On teste si la machine a des connexions actives
 472              // en fonction de la version de samba
 473              // On ne rentre dedans que si on est pas une imprimante
 474  
 475              if ($suisje_printer!="1") {
 476                  $login=exec ("smbstatus -b | grep $iphost |gawk -F' ' '{print $2}' |head -n1");
 477                      if ($login=="") {
 478                      $etat_session="<img type=\"image\" src=\"../elements/images/disabled.png\">\n";
 479                  } else {
 480                          $etat_session="<u onmouseover=\"this.T_SHADOWWIDTH=5;this.T_STICKY=1;return escape('$login est actuellement connect&#233; sur ce poste')\"><img type=\"image\" src=\"../elements/images/enabled.png\"></u>\n";
 481                      }
 482             
 483                  if (isset($mp_curr[0]["ipHostNumber"])) {
 484                                $iphost=$mp_curr[0]["ipHostNumber"];
 485                                $ping=fping($iphost);
 486  
 487                      // On teste si la machine est en marche ou pas
 488                                if ($ping) {
 489                                    $etat=aide(gettext("La machine est actuellement allum&#233e, cliquez pour l eteindre"),"<a href=\"action_machine.php?machine=$mp_en_cours&action=shutdown&parc=$parc&retour=action_parc\"  onclick=\"if (window.confirm('Etes-vous sur de vouloir &#233;teindre la machine $mp_en_cours ?'))
 490                                             {return true;}
 491                                  else {return false;}\"/><img type=\"image\" border=\"0\" src=\"../elements/images/enabled.png\"></a>\n");
 492                              } else { 
 493                          $etat=aide(gettext("La machine est actuellement &#233;teinte, cliquez pour l allumer"),"<a href=\"action_machine.php?machine=$mp_en_cours&action=wol&parc=$parc&retour=action_parc\"><img type=\"image\" border=\"0\" src=\"../elements/images/disabled.png\"></a>\n"); 
 494                      }
 495                  
 496                  if (file_exists ("/var/www/se3/includes/dbconfig.inc.php")) {
 497                      // Inventaire
 498                      $sessid=session_id();
 499                      $systemid=avoir_systemid($mpenc);
 500  
 501                        // Affichage du tableau
 502                      echo "<tr>";
 503                      // Affichage de l'icone informatique
 504                      // Type d'icone en fonction de l'OS
 505                      require_once ("fonc_outils.inc.php");
 506                      $retourOs = type_os($mpenc);
 507                      if($retourOs == "0") { $icone="computer.png"; }
 508                      elseif($retourOs == "Linux") { $icone="linux.png"; }
 509                      elseif($retourOs == "XP") { $icone="winxp.png"; }
 510                      elseif($retourOs == "98") { $icone="win.png"; }
 511                  
 512                      echo "<td align=\"center\">\n";
 513                      echo "<img style=\"border: 0px solid ;\" src=\"../elements/images/$icone\" onclick=\"popuprecherche('../ocsreports/machine.php?sessid=$sessid&amp;systemid=$systemid','popuprecherche','scrollbars=yes,width=500,height=500');\"  title=\"Station\" alt=\"Station\"></TD>";
 514                  }
 515                  else {
 516                      echo "<tr><td align=\"center\"><img style=\"border: 0px solid ;\" src=\"../elements/images/computer.png\" title=\"Station\" alt=\"Station\"></TD>";
 517                  }
 518                  echo "<td align=center ><a href=show_histo.php?selectionne=2&amp;mpenc=$mp_en_cours>$mp_en_cours</A></td>\n<td align=center >$etat</td>\n<td align=center>$etat_session </td>\n";
 519                  echo "<td align=\"center\">";
 520                  if ($ping) {
 521                                $ts=ts($iphost);
 522                                $vnc=vnc($iphost);
 523                                if ($ts) { echo $ts; }
 524                                if ($vnc) { echo $vnc; }
 525                                 if ((!$ts) and (!$vnc)) { echo "<img type=\"image\" border=\"0\" src=\"../elements/images/disabled.png\">\n"; }
 526                   
 527                            }  else { echo "<img type=\"image\" border=\"0\" src=\"../elements/images/disabled.png\">\n"; }
 528                            echo "</td></tr>\n";
 529                        }
 530  
 531             }
 532              }
 533      }
 534      echo "</table>\n";   
 535      echo "</center>\n";
 536  
 537  }
 538  
 539  
 540  
 541  /**
 542  
 543  * Affiche un tableau des imprimantes dans un parc
 544  * @Parametres $parc le nom du parc a  tester
 545  * @Return
 546  */
 547  
 548  function detail_parc_printer($parc)
 549  {
 550      // include "printers.inc.php";
 551  
 552          $mp_all=gof_members($parc,"parcs",1);
 553  
 554      // Filtrage selon critere
 555          if ("$filtrecomp"=="") $mp=$mp_all;
 556          else {
 557                  $lmloop=0;
 558                  $mpcount=count($mp_all);
 559                  for ($loop=0; $loop < count($mp_all); $loop++) {
 560                      $mach=$mp_all[$loop];
 561                         if (preg_match("/$filtrecomp/",$mach)) $mp[$lmloop++]=$mach;
 562                  }
 563          }
 564  
 565          if ( count($mp)>0) {
 566                   sort($mp);
 567  
 568          $tableau_printer = "\n<br>\n<CENTER>\n";
 569          $tableau_printer .=  "<TABLE border=1 width=\"60%\">\n<tr class=menuheader style=\"height: 30\">\n";
 570          $tableau_printer .=  "<td align=\"center\"></td>\n";
 571          $tableau_printer .=  "<td align=\"center\">Imprimantes</td>\n";
 572          $tableau_printer .=  "<td align=\"center\">Etat</td>\n";
 573         
 574          $tableau_printer .=  "<td align=\"center\">Travaux d'impression</td>\n";
 575                 $tableau_printer .=  "</tr>\n";
 576  
 577          $suisje_printer="0";
 578          for ($loop=0; $loop < count($mp); $loop++) {
 579                          $mpenc=urlencode($mp[$loop]);
 580                       $mp_en_cours=urldecode($mpenc);
 581                 $mp_curr=search_machines("(&(cn=$mp_en_cours)(objectClass=ipHost))","computers");
 582  
 583                     // Test si on a une imprimante ou une machine
 584              $resultat=search_imprimantes("printer-name=$mp_en_cours","printers");
 585              for ($loopp=0; $loopp < count($resultat); $loopp++) {
 586                  if ($mp_en_cours==$resultat[$loopp]['printer-name']) {
 587                      $suisje_printer="1";
 588                      $tableau_printer .= "<tr>";                
 589                      $tableau_printer .= "<td align=\"center\"><img style=\"border: 0px solid ;\" src=\"../elements/images/printer.png\" title=\"Imprimante\" alt=\"Imprimante\"></TD>";
 590                      
 591                      $tableau_printer .= "<TD align=\"center\"><A href='../printers/view_printers.php?one_printer=$mp_en_cours'>$mp_en_cours</A></TD>\n";
 592                      
 593                      $printer = $mp_en_cours;
 594                      $sys= exec("/usr/bin/lpstat -p $printer | grep enabled");
 595                      $sys2= exec("/usr/bin/lpstat -a $printer | grep not");
 596  
 597                      if (($sys != "") and ($sys2 == "")) {
 598                          $tableau_printer .= "<TD align=\"center\"><u onmouseover=\"this.T_SHADOWWIDTH=5;this.T_STICKY=1;return escape('$printer est actuellement active.')\"><img type=\"image\" border=\"0\" src=\"../elements/images/enabled.png\"></u>\n"; 
 599  
 600                                      }  else { 
 601                          if ($sys2 == "") {
 602                              $tableau_printer .= "<TD align=\"center\"><u onmouseover=\"this.T_SHADOWWIDTH=5;this.T_STICKY=1;return escape('$printer est actuellement inactive. Les documents sont stock&#233;s dans la file d impression.')\"><img type=\"image\" border=\"0\" src=\"../elements/images/disabled.png\"></u>\n"; 
 603                          } else {
 604                              $tableau_printer .= "<TD align=\"center\"><u onmouseover=\"this.T_SHADOWWIDTH=5;this.T_STICKY=1;return escape('$printer rejette actuellement tout travail d impression.')\"><img type=\"image\" border=\"0\" src=\"../elements/images/disabled.png\"></u>\n"; 
 605                          }
 606                      }
 607                      $tableau_printer .= "</TD>\n";
 608                  
 609                      // Travaux d'impression
 610                      $sys= exec("/usr/bin/lpstat -o $printer");
 611                      if ($sys != "") {
 612                          $tableau_printer .= "<TD align=\"center\"><img type=\"image\" border=\"0\" src=\"../elements/images/enabled.png\">\n";
 613                                          }  else {
 614                                                  $tableau_printer .= "<TD align=\"center\"><img type=\"image\" border=\"0\" src=\"../elements/images/disabled.png\">\n";
 615                                          }
 616                      
 617                      $tableau_printer .= "</tr>\n";
 618                      continue;
 619                  }
 620              }
 621          }
 622          $tableau_printer .=  "</table></center>";
 623          if ($suisje_printer=="1") {
 624              echo $tableau_printer;
 625              echo "<br>";
 626          }    
 627      }
 628  }    
 629  
 630  
 631  
 632  
 633  /**
 634  
 635  * Cette machine a-t-elle ete validee pour la liaison ssh?
 636  * @Parametres $mpenc le nom de la machine a tester
 637  * @Return
 638  */
 639  
 640  
 641  function deja_valid($mpenc)
 642  {
 643      $fichier_valid="/var/se3/unattended/install/computers/$mpenc.tmp";
 644                   
 645      if(!(file_exists($fichier_valid) and (filesize($fichier_valid) > 2) )) {
 646              return aide(gettext("Cette machine n a jamais &eacute;t&eacute; valid&eacute;e compl&egrave;tement"),"<img src=\"../elements/images/serviceevent.gif\" alt=\"".gettext("Machine jamais valid&eacute;e")."\"  width=\"20\" height=\"20\" border=\"0\" />"); }
 647                   else {
 648                        return aide(gettext("Pour supprimer ce poste de la liste des clients valid&eacute;s, n&eacute;c&eacute;ssaire si <ul><li>un poste est r&eacute;install&eacute; </li><li>apr&egrave;s un clonage</li><li>apr&egrave;s une r&eacute;instalation du client ssh</li></ul>"),"<a href=\"install_locale.php?action=trash&mpenc=$mpenc\"><img src=\"../elements/images/edittrash.png\" alt=\"Supprimer un client\" title=\"Supprimer $mpenc\" width=\"16\" height=\"16\" border=\"0\" /></a>");   }
 649  }
 650  
 651  
 652  /**
 653  
 654  * Supprime l'anti slash
 655  * @Parametres $string la chaine a traiter
 656  * @Return
 657  */
 658  
 659  function enleveantislash($string)
 660  {
 661              $temp=rawurlencode($string);
 662              $temp1=preg_replace("/%5C%27/","%27",$temp);
 663              $temp2=preg_replace("/%5C%22/","%22",$temp1);
 664              $final=rawurldecode($temp2);
 665  return $final;
 666  }
 667  
 668  
 669  
 670  /**
 671  
 672  * Supprime la double barre
 673  * @Parametres $string la chaine a traiter
 674  * @Return
 675  */
 676  
 677  function enlevedoublebarre($string)
 678  {
 679              $temp=rawurlencode($string);
 680              $temp1=preg_replace("/%5C%5C/","%5C",$temp);
 681              $final=rawurldecode($temp1);
 682  return $final;
 683  }
 684  
 685  
 686  /**
 687  
 688  * Test reponse d'une url 
 689  * @Parametres $string la chaine a traiter
 690  * @Return
 691  */
 692  
 693  function filemtime_remote($uri)
 694  {
 695     $uri = parse_url($uri);
 696     $handle = @fsockopen($uri['host'],80);
 697     if(!$handle)
 698         return 0;
 699  
 700     fputs($handle,"GET $uri[path] HTTP/1.1\r\nHost: $uri[host]\r\n\r\n");
 701     $result = 0;
 702     while(!feof($handle))
 703     {
 704         $line = fgets($handle,1024);
 705         if(!trim($line))
 706             break;
 707  
 708         $col = strpos($line,':');
 709         if($col !== false)
 710         {
 711             $header = trim(substr($line,0,$col));
 712             $value = trim(substr($line,$col+1));
 713             if(strtolower($header) == 'last-modified')
 714             {
 715                 $result = strtotime($value);
 716                 break;
 717             }
 718         }
 719     }
 720     fclose($handle);
 721     return $result;
 722  }
 723  
 724  
 725  /**
 726  
 727  * Selectionne des scripts 
 728  * @Parametres 
 729  * @Return
 730  */
 731  
 732  
 733  function list_alpha()
 734  {
 735  global $authlink;
 736  
 737  $query="Select nom,script,valide from appli_se3 order by nom asc;";
 738  $resultat = mysql_query($query) or die ( "Probleme d'acc&#232;s &#224; la base" );
 739  $query_nom="Select nom from appli_se3 order by nom asc;";
 740  $resultat_nom = mysql_query($query_nom) or die ( "Probleme d'acc&#232;s &#224; la base" );
 741  
 742  //echo "<div align=center><a href=appli_client.php?action=list_cat><img src=\"../elements/images/left.gif\" alt=\"\" title=\"left\" width=\"15\" height=\"15\" border=\"0\" />&nbsp;Retour vers liste par cat&#233;gories</a></div>";
 743  echo "<table align=center width=\"60%\">\n<tr><td class=menuheader height=\"30\" align=\"center\">".gettext("NOM")."</td>\n<td class=menuheader height=\"30\" align=\"center\">".gettext("SCRIPT")."</td>\n<td class=menuheader height=\"30\" align=\"center\" width=\"25\">".gettext("ETAT")."</td>\n<td class=menuheader height=\"30\" width=\"25\" align=\"center\">\n<img src=\"../elements/images/edit.png\" alt=\"\" title=\"edit\" width=\"16\" height=\"16\" border=\"0\" /></td>\n</tr>\n</table>\n";
 744  echo "<table align=center width=\"60%\">\n<tr>\n";
 745  while ($row_nom=mysql_fetch_row($resultat_nom))
 746  {
 747  $chaine = strtoupper(substr("$row_nom[0]", 0,1));
 748  if ($test_alpha<>$chaine)
 749  {
 750  echo "<td align=center><a href=#$chaine>$chaine</a></td>\n";
 751  $test_alpha=$chaine;
 752  }
 753  }
 754  echo "</table>\n<table align=center width=\"60%\">\n";
 755  while ($row=mysql_fetch_row($resultat))
 756  {
 757  $chaine = strtoupper(substr("$row[0]", 0,1));
 758  if ($test_alpha<>$chaine)
 759  {
 760  echo "<tr><td colspan=4 class=menuheader ><a name=\"$chaine\">$chaine</a></td></tr>\n";
 761  $test_alpha=$chaine;
 762  }
 763  if  ((!$row[2]) or (!file_exists('/var/se3/unattended/install/scripts/'.$row[1])))
 764  {
 765  $alert=aide(gettext("Une application n est pas valid&#233e si lors de la cr&#233ation ou de la modification de de cette application, les executables demand&#233s dans le script ne sont pas trouv&#233s &#224 l endroit indiqu&#233. A vous de les placer au bon endroit (X:\\unattended\\install\\packages) puis Editer l application, puis cliquer sur Enregistrer mes modifications, si les executables sont trouv&#233s, votre application sera automatiquement valid&#233e."),"<img src=\"../elements/images/critical.png\" alt=\"Application non valid&eacute;e\" width=\"20\" height=\"20\" border=\"0\" />");
 766  }
 767  else
 768  {
 769  $alert=aide(gettext("Cette application a &#233t&#233 valid&#233e, cela signifie que les executables ont &#233t&#233 trouv&#233s. Cela ne signifie pas que le script associ&#233 &#224 l application est correct. Seul les scripts import&#233s du serveur central ont &#233t&#233 test&#233s par l equipe de sambaedu."),"<img src=\"../elements/images/enabled.png\" alt=\"Application valid&eacute;e\"  width=\"20\" height=\"20\" border=\"0\" />");
 770  }
 771  echo "<tr><td align=\"center\" >".$row[0]."</td><td align=\"center\">".$row[1]."</td>\n<td align=\"center\">$alert</td>\n<td align=\"center\"><a href=appli_client.php?action=edit_appli&appli=".urlencode($row[0])."><img src=\"../elements/images/edit.png\" alt=\"\" title=\"Editer l appllication\" width=\"16\" height=\"16\" border=\"0\" /></A></td>\n</tr>\n";
 772  }
 773  echo "</table>\n";
 774  }
 775  
 776  
 777  /**
 778  
 779  * Test la presence d'un fichier de log pour une machine 
 780  * @Parametres $machine la machine a tester
 781  * @Return
 782  */
 783  
 784  function test_log($machine)
 785  {
 786      $fichier_log="/var/se3/unattended/install/computers/$machine.log";
 787                   
 788      if(!(file_exists($fichier_log) and (filesize($fichier_valid) > 2) )) {
 789             //    $fp = @fopen($fichier_log, "r");
 790              $tab = file($fichier_log);
 791      
 792              $inverse_tab=array_reverse($tab);
 793              if (preg_match("/A)bort/i",$inverse_tab[0])) { 
 794                  return true;
 795          } else {
 796                  return false;
 797              }
 798      }
 799  }
 800  
 801  /**
 802  * Ajoute une machine dans un parc
 803  
 804  * @Parametres $name : nom de la machine - $parc : Parc dans lequel on veut ajouter la machine
 805  
 806  * @Return Affichage HTML d'un message d'ajout
 807  
 808  */
 809  
 810  function add_machine_parc($name,$parc)
 811  {
 812      include("config.inc.php");
 813      $ret .= "Ajout de l'ordinateur $name au parc <U>$parc</U><BR>";
 814      $cDn = "cn=".$name.",".$computersRdn.",".$ldap_base_dn;
 815      $pDn = "cn=".$parc.",".$parcsRdn.",".$ldap_base_dn;
 816      exec ("/usr/share/se3/sbin/groupAddEntry.pl \"$cDn\" \"$pDn\"");
 817      // #NJ 10-2004 reconstruction des partages imprimantes par parc
 818      exec ("/usr/share/se3/sbin/printers_group.pl");
 819      update_wpkg();
 820      return $ret;
 821  }
 822  
 823  /**
 824  
 825  * vire une machine d'un parc, Supprime le parc si la machine est la derniere dedans
 826  
 827  * @Parametres  Nom du parc et de la machine
 828  * @Return  
 829  */
 830  
 831  function supprime_machine_parc($mpenc,$parc) {
 832      include "config.inc.php";
 833      require_once  ("ihm.inc.php");
 834      require_once ("ldap.inc.php");
 835      require_once ("printers.inc.php");
 836      // On compte si la demande ne porte pas sur toutes les machines
 837      $mp_all=gof_members($parc,"parcs",1);
 838      $mpcount=count($mp_all);
 839      // Si la demande porte sur la derniere machine du parc
 840      // On vire le parc
 841      if ($mpcount == "1") {
 842          $cDn = "cn=".$parc.",".$parcsRdn.",".$ldap_base_dn; 
 843          exec ("/usr/share/se3/sbin/entryDel.pl \"$cDn\"");
 844      }
 845      if ($mpcount > "1") {
 846          $resultat=search_imprimantes("printer-name=$mpenc","printers");
 847          $suisje_printer="non";
 848          for ($loopp=0; $loopp < count($resultat); $loopp++) {
 849              if ($mpenc==$resultat[$loopp]['printer-name']) {
 850                  $suisje_printer="yes";    
 851                  continue;
 852              }    
 853          }
 854          $pDn = "cn=".$parc.",".$parcsRdn.",".$ldap_base_dn;
 855          if ($suisje_printer=="yes") {
 856              // je suis une imprimante
 857              $cDn = "cn=".$mpenc.",".$printersRdn.",".$ldap_base_dn;
 858          } else {
 859              // je suis un ordinateur
 860              $cDn = "cn=".$mpenc.",".$computersRdn.",".$ldap_base_dn;
 861          }
 862          // on supprime
 863          exec ("/usr/share/se3/sbin/groupDelEntry.pl \"$cDn\" \"$pDn\"");
 864      }
 865      update_wpkg();
 866  
 867      // Modif pour italc
 868      exec ("/usr/bin/sudo /usr/share/se3/scripts/italc_generate.sh");
 869  }
 870  
 871  /**
 872  
 873  * renomme une machine dans tous ses parcs
 874  
 875  * @Parametres  $oldname $name
 876  * @Return  affichage html
 877  */
 878  
 879  
 880  function renomme_machine_parcs($oldname,$name)
 881  {
 882      require_once  ("ihm.inc.php");
 883      require_once  ("ldap.inc.php");
 884      if ("$name"=="$oldname") { 
 885          $ret="rien a faire<br>";
 886      } else {
 887          $ret="renommage de $oldname en $name dans :<br>";
 888          $parc=search_parcs($oldname);
 889          if (isset($parc)) {
 890              foreach($parc as $key=>$value) {
 891                   $ret .=    add_machine_parc($name,$parc[$key]['cn']);
 892                  supprime_machine_parc($oldname,$parc[$key]['cn']);
 893              }
 894          }
 895      }
 896      return $ret;
 897  }
 898  
 899  
 900  
 901  /**
 902  
 903  * Test si un parc exist
 904  
 905  * @Parametres  Nom du parc 
 906  * @Return yes ou no
 907  */
 908  
 909  function parc_exist($parc) {
 910      include "config.inc.php";
 911      $list_parcs=search_machines("objectclass=groupOfNames","parcs");
 912      if ( count($list_parcs)>0) {
 913          for ($loop=0; $loop < count($list_parcs); $loop++) {
 914              if ($parc==$list_parcs[$loop]["cn"]) {
 915                  return yes;
 916              }
 917          }
 918      }
 919      return no;
 920  }    
 921  
 922  
 923  /**
 924  
 925  *  Fonction permettant de nettoyer la table delegation en fonction des parcs existants
 926  
 927  * @Parametres 
 928  * @Return
 929  */
 930  
 931  
 932  function nettoie_delegation() {
 933      include "config.inc.php";
 934      $query="select parc from delegation GROUP BY parc";
 935          $result= mysql_query($query);
 936      if ($result) {
 937          $ligne= mysql_num_rows($result);
 938          if ($ligne>0) {
 939              while ($row = mysql_fetch_row($result)) {
 940                  $exist_parc=parc_exist($row[0]);
 941                  if ($exist_parc=="no") {
 942                      $query_del="delete from delegation where parc='$row[0]'";
 943                      mysql_query($query_del);
 944                      echo "<BR> Suppression de la d&#233;l&#233;gation pour le parc $row[0]";
 945                      echo "<BR>";
 946                  } else { continue; }
 947              }
 948          }
 949      }    
 950  }
 951  
 952  
 953  /**
 954  
 955  * Mises a jour des fichiers xml de wpkg 
 956  
 957  * @Parametres
 958  * @Return
 959  */
 960  
 961  
 962  function update_wpkg() {
 963      global $computersRdn, $parcsRdn, $ldap_base_dn;
 964      // Met a jour les fichiers :
 965      //   /var/se3/unattended/install/wpkg/hosts.xml
 966      //   /var/se3/unattended/install/wpkg/profiles.xml
 967      $wpkgUpdateHostsProfiles="/usr/share/se3/scripts/update_hosts_profiles_xml.sh";
 968      if (file_exists($wpkgUpdateHostsProfiles)) exec ("$wpkgUpdateHostsProfiles '$computersRdn' '$parcsRdn' '$ldap_base_dn'");
 969      
 970      // Met a jour le fichier /var/se3/unattended/install/wpkg/droits.xml
 971      $wpkgUpdateDroit="/usr/share/se3/scripts/update_droits_xml.sh";
 972      if (file_exists($wpkgUpdateDroit)) exec ("$wpkgUpdateDroit");
 973  }
 974  
 975  
 976  
 977  /**
 978  * Supprime une machine de l'inventaire
 979  * @Parametres $name : Nom de la machine
 980  * @Return Message d'erreur SQL en cas de non suppression
 981  
 982  */
 983  
 984  function suppr_inventaire($name)
 985  {
 986      $id=avoir_systemid($name);
 987      if($id!=0) {
 988          $exec = mysql_query("SHOW TABLES FROM `ocsweb`");
 989                  include "dbconfig.inc.php";
 990                  $dbnameinvent="ocsweb";
 991                  $authlink_invent=@mysql_connect($_SESSION["SERVEUR_SQL"],$_SESSION["COMPTE_BASE"],$_SESSION["PSWD_BASE"]);
 992                  @mysql_select_db($dbnameinvent) or die("Impossible de se connecter &#224; la base $dbnameinvent.");
 993                  while($row = mysql_fetch_row($exec)) {
 994                          if($row[0]=="hardware") {
 995                                 mysql_query("DELETE from `hardware` where `ID`='$id'",$authlink_invent);
 996                          } else {
 997                                  mysql_query("DELETE from `$row[0]` where `HARDWARE_ID`='$id'",$authlink_invent);
 998                          }
 999                  }
1000          }
1001  }
1002  
1003  /*
1004   * fonction generant un tableau global a partir de smbstatus
1005   * on cache le resultat 2 minutes afin de reduire la charge
1006   * @Parametres : aucun
1007   * @ smb_status["machine"]["login"]
1008   *                        ["ip"]
1009   */
1010  
1011  function smbstatus() {
1012      static $smb_login;
1013      static $timestamp;
1014      if ((time() > ($timestamp + 120)) || !(isset($smb_login))) {
1015          $timestamp = time();
1016          unset($smb_login);
1017          require_once  ("ldap.inc.php");
1018          exec("sudo smbstatus -b 2>/dev/null", $resultat);
1019          foreach ($resultat as $ligne) {
1020              $table = preg_split("/[\s]+/", $ligne);
1021              if ((count($table) == 5) && ($table[1] != root) && ($table[1] != nobody) && (preg_match("/(.+)\\$/", $table[1]) === 0)) {
1022                              $mp_curr=search_machines("(&(ipHostNumber=$table[3])(objectClass=ipHost))","computers");
1023                              if (isset($mp_curr[0]["cn"])) {
1024                                      $hostname=$mp_curr[0]["cn"];
1025                      $smb_login[$hostname]["login"] = $table[1];
1026                      $smb_login[$hostname]["ip"] = preg_replace("/[\(\)]/", "", $table[3]);
1027                  } else {
1028                                      $mp_curr=search_machines("(&(cn=$table[3])(objectClass=ipHost))","computers");
1029                                  if (isset($mp_curr[0]["cn"])) {
1030                                          $hostname=$mp_curr[0]["cn"];
1031                                               $smb_login[$hostname]["login"] = $table[1];
1032                                        $smb_login[$hostname]["ip"] = preg_replace("/\(ipv4:(.+):(.+)\)/", "\$1}", $table[4]);
1033                      }
1034                  } 
1035              }
1036          }
1037      }
1038      return($smb_login);
1039  }
1040  
1041  /*
1042   * fonction destinee a supprimer completement une machine
1043   * @Parametres $computer : Nom de la machine
1044   */
1045  //function suppression_computer($computer, $tab_options=array('all')) {
1046  function suppression_computer($computer) {
1047      global $computersRdn, $parcsRdn, $printersRdn, $ldap_base_dn;
1048  
1049      $retour="";
1050  
1051      $resultat=search_imprimantes("printer-name=$computer","printers");
1052      $suisje_printer="non";
1053      for ($loopp=0; $loopp < count($resultat); $loopp++) {
1054          if ($computer==$resultat[$loopp]['printer-name']) {
1055              $suisje_printer="yes";
1056              $retour="$computer est une imprimante. Suppression non effectuee.<br />\n";
1057              break;
1058          }
1059      }
1060  
1061      if($suisje_printer=="non") {
1062          $tab_parcs=search_machines("(&(member=cn=$computer,$computersRdn,$ldap_base_dn)(objectClass=groupOfNames))","parcs");
1063  
1064          for ($loop=0;$loop<count($tab_parcs);$loop++) {
1065              $parc=$tab_parcs[$loop]['cn'];
1066  
1067              supprime_machine_parc($computer,$parc);
1068              // Si le parc est vide la fonction supprime_machine_parc() se charge de supprimer le parc
1069              $retour.="Suppression de $computer du parc $parc<br />\n";
1070  
1071              // Test la machine prof pour italc
1072              $machine_prof=search_description_parc("$parc");
1073              if($computer==$machine_prof) {
1074                  $retour.="<b>Attention :</b> vous ne disposez plus de machine professeur pour le parc $parc<br />\n";
1075                  modif_description_parc ($parc,"0");
1076              }
1077  
1078          }
1079  
1080          $retour.="Suppression de $computer de la branche Computers.";
1081          $retour.="<br />\n";
1082          $cDn = "cn=".$computer.",".$computersRdn.",".$ldap_base_dn;
1083          exec ("/usr/share/se3/sbin/entryDel.pl \"$cDn\"");
1084          $cDn = "uid=".$computer."$,".$computersRdn.",".$ldap_base_dn;
1085          exec ("/usr/share/se3/sbin/entryDel.pl \"$cDn\"");
1086  
1087          $retour.="Suppression des rapports wpkg de $computer";
1088          $retour.="<br />\n";
1089          $rapport_computer="/var/se3/unattended/install/wpkg/rapports/".$computer.".txt";
1090          $log_computer="/var/se3/unattended/install/wpkg/rapports/".$computer.".log";
1091          if(file_exists($rapport_computer)) { @unlink($rapport_computer); }
1092          if(file_exists($log_computer)) { @unlink($log_computer);}
1093  
1094          // Entree DHCP:
1095          $suppr_query = "DELETE FROM se3_dhcp where name='$computer';";
1096          if(mysql_query($suppr_query)) {$retour.="Suppression de la reservation DHCP.<br />";} else {$retour.="<span style='color:red'>ERREUR</span> lors de la suppression de la reservation DHCP.<br />";}
1097          // On relance dhcp si celui-ci est active... A TESTER QUELQUE PART
1098          exec("sudo /usr/share/se3/scripts/makedhcpdconf",$ret);
1099  
1100          // Nettoyage de l'inventaire
1101          $retour.="Suppression de $computer de l'inventaire.";
1102          $retour.="<br />\n";
1103          suppr_inventaire($computer);
1104          exec("/usr/bin/touch /tmp/csvtodo",$ret);
1105          exec("sudo /usr/share/se3/sbin/update-csv.sh",$ret);
1106      }
1107  
1108      return $retour;
1109  }
1110  
1111  
1112  /*
1113   * fonction destinee a determiner si on a une machine ou une imprimante 
1114   * @Parametres $device : Nom de l'unite a verifier
1115   */
1116  //function is_printer($device) {
1117  function is_printer($device) {
1118  //    require_once "config.inc.php";
1119  //    require_once ("ihm.inc.php");
1120  //    require_once("ldap.inc.php");
1121      require_once ("printers.inc.php");
1122      $resultat=search_imprimantes("printer-name=$device", "printers");
1123          $suisje_printer = "0";
1124          for ($loopp = 0; $loopp < count($resultat); $loopp++) {
1125              if ($device == $resultat[$loopp]['printer-name']) {
1126                  $suisje_printer = "1";
1127                  return true;
1128                  break;
1129              }
1130          }
1131  }
1132  
1133  /*
1134   * fonction destinee a connaitre l'etat de la session samba d'une machine
1135   * @Parametres $device : Nom de la machine
1136   */
1137  
1138  function get_smbsess($mp_en_cours) {
1139      global $action_parc;
1140      $smb_login = smbstatus();
1141      $login = $smb_login[$mp_en_cours]['login'];
1142      if (!($login)) {
1143          $etat_session = "<img type=\"image\" src=\"../elements/images/disabled.png\">\n";
1144      } else {
1145          $texte = $login . $action_parc['msgUserLogged'];
1146          $etat_session.="<img onmouseout=\"UnTip();\" onmouseover=\"Tip('" . $texte . "',WIDTH,250,SHADOW,true,DURATION,5000);\" src=\"../elements/images/enabled.png\" border=\"0\" />";
1147      }
1148      return array(login => $login, html => $etat_session);
1149  }
1150  
1151  /*
1152   * fonction destinee rebooter une machine
1153   * @Parametres $ip : adresse ip
1154   *           $nom : nom machnie
1155   *             $wake : action
1156   *             $shutdownreboot
1157   */
1158  
1159  function wake_shutdown_or_reboot($ip, $nom, $wake, $shutdown_reboot) {
1160  
1161      global $restriction_parcs, $tab_delegated_parcs;
1162      if($restriction_parcs=='y') {
1163          $temoin_erreur="y";
1164          for($loop=0;$loop<count($tab_delegated_parcs);$loop++) {
1165              // La machine est-elle dans un des parcs d�l�gu�s?
1166              if(is_machine_in_parc($nom,$tab_delegated_parcs[$loop])) {
1167                  $temoin_erreur='n';
1168                  break;
1169              }
1170          }
1171          if($temoin_erreur=="y") {
1172              echo "<p style='color:red'>La machine $nom n'est pas dans un de vos parcs delegues.</p>\n";
1173              die();
1174          }
1175      }
1176  
1177      if (fping($ip)) {
1178      $smb_login = smbstatus();
1179          if ($shutdown_reboot == "wait1") {
1180              echo $action_parc['msgNoSignal'];
1181          } elseif ($shutdown_reboot == "wait2") {
1182              $login = $smb_login[$nom]['login'];
1183              if (!($login)) {
1184                  @start_poste("shutdown", $nom);
1185                  echo $action_parc['cmdSendReboot'];
1186              } else {
1187                  echo $login . $action_parc['msgUserIsLogged'];
1188              }
1189          } elseif ($shutdown_reboot == "reboot") {
1190              @start_poste("reboot", $nom);
1191              echo $action_parc['msgSendReboot'];
1192          }
1193      } else {
1194          if ("$wake" == "y") {
1195              @start_poste("wol", $nom);
1196              echo $action_parc['msgSendWakeup'];
1197          }
1198      }
1199  }
1200  
1201  
1202  ?>


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