[ Index ]

PHP Cross Reference of Unnamed Project

title

Body

[close]

/se3-wpkg/sources/www/ -> index.php (source)

   1  <?php
   2  // Interface de gestion de wpkg
   3  //
   4  // ## $Id: index.php 7283 2012-06-15 00:50:26Z keyser $ ##
   5  
   6  // Compatibilit� register_globals = Off
   7  foreach($_POST AS $key => $value) {
   8      ${$key} = $value;
   9  }
  10  foreach($_GET AS $key => $value) {
  11      ${$key} = $value;
  12  }
  13  $login = "";
  14  $wpkgAdmin = false;
  15  $wpkgUser = false;
  16  
  17  include  "inc/wpkg.auth.php";
  18  
  19  $DEBUG=1;
  20  
  21  $urlMD5 = "";
  22  $status = "";
  23  
  24  if (! $login ) {
  25      echo "<script language=\"JavaScript\" type=\"text/javascript\">\n<!--\n";
  26      $request = '/wpkg/index.php';
  27      echo "top.location.href = '/auth.php?request=" . rawurlencode($request) . "';\n";
  28      echo "//-->\n</script>\n";
  29  } else {
  30      if ( ! $wpkgUser ) { 
  31          include entete.inc.php; ?>
  32              <h2>D&#233;ploiement d'applications</h2>
  33              <div class=error_msg>Vous n'avez pas les droits n&#233;cessaires &#224; l'utilisation de ce module !</div>
  34  <?        include pdp.inc.php;
  35          exit;
  36      } else { 
  37          # On a affaire a un utilisateur autorise de wpkg
  38  
  39          if ( isset($getXml) ) {
  40              # Download d'un fichier xml
  41              get_xml($_GET['getXml']);
  42  
  43          } elseif ( isset($logfile) ) {
  44              # Download d'un fichier log
  45              get_fichierCP850("rapports/".$_GET['logfile']);
  46  
  47          } elseif ( isset($iCmd) && isset($associer) && isset($idPackage) && isset($idProfile)) {
  48              # Association ou dissociation d'une appli � un profile
  49              //sleep(4); // Simule un serveur qui r�pond lentement
  50              associer($_GET['iCmd'], $_GET['associer'], $_GET['idPackage'], $_GET['idProfile']);
  51  
  52          } elseif ( isset($updateProfiles) ) {
  53              echo "<pre>";
  54              echo "bash /usr/share/se3/scripts/update_hosts_profiles_xml.sh '$computersRdn' '$parcsRdn' '$ldap_base_dn'\n";
  55              passthru ( "bash /usr/share/se3/scripts/update_hosts_profiles_xml.sh '$computersRdn' '$parcsRdn' '$ldap_base_dn'", $status);
  56              echo "</pre>\n";
  57              if ( $status == 0 ) {
  58                  echo "Les fichiers hosts.xml et profiles.xml ont &#233;t&#233; mis &#224; jour.<br>\n";
  59              } else {
  60                  echo "Erreur $status : bash /usr/share/se3/scripts/update_hosts_profiles_xml.sh '$parcsRdn' '$ldap_base_dn'<br>\n";
  61              }
  62              echo "<br>Retourner &#224; la page <a href='index.php'>D&#233;ploiement d'applications</a>.<br>\n";
  63  
  64          } elseif ( isset($updateDroits) ) {
  65              echo "<pre>";
  66              echo "bash /usr/share/se3/scripts/update_droits_xml.sh\n";
  67              passthru ( "bash /usr/share/se3/scripts/update_droits_xml.sh", $status);
  68              echo "</pre>\n";
  69              if ( $status == 0 ) {
  70                  echo "Le fichier droits.xml a &#233;t&#233; mis &#224; jour.<br>\n";
  71              } else {
  72                  echo "Erreur $status : bash /usr/share/se3/scripts/update_droits_xml.sh<br>\n";
  73              }
  74              echo "<br>Retourner &#224; la page <a href='index.php'>D&#233;ploiement d'applications</a>.<br>\n";
  75  
  76          } elseif ( isset($extractAppli) ) {
  77              extractAppli($extractAppli);
  78  
  79          } elseif ( isset($SupprimerAppli) ) {
  80              if ( adminWpkg() ) {
  81                  # Suppression d'une Appli
  82                  $SupprimerAppli = $_POST['SupprimerAppli'];
  83                  printHead();
  84                  if ( "$SupprimerAppli" != "" ) {
  85                      $deleteFiles = $_POST['deleteFiles'];
  86                      if ( count($deleteFiles) > 0 ) {
  87                          $listdeleteFiles = implode(' ',$deleteFiles);
  88                      } else {
  89                          $listdeleteFiles = '';
  90                      }
  91                      # echo "SupprimerAppli = $SupprimerAppli<br>eleteFiles = $deleteFiles<br>listdeleteFiles=$listdeleteFiles<br>\n";
  92                      SupprAppli( "$SupprimerAppli", "$listdeleteFiles");
  93                  } else {
  94                      echo "Erreur _POST['SupprimerAppli'] est vide !<br>";
  95                  }
  96                  echo "<br>Retourner &#224; la page <a href='index.php'>D&#233;ploiement d'applications</a>.<br>\n";
  97                  echo "</body></html>\n";
  98              }
  99          } elseif ( isset($displayDelPackage) ) {
 100              if ( adminWpkg() ) {
 101                  passthru ( "xsltproc --stringparam idPackage '$displayDelPackage' $wpkgwebdir/displayDelPackage.xsl $wpkgroot/packages.xml", $status);
 102              }
 103          } elseif ( $_GET['upload'] == "1" ) {
 104              if ( adminWpkg() ) {
 105                  # Upload d'un fichier appli.xml
 106                  $ignoreMD5 = $_POST['ignoreWawadebMD5'];
 107                  $pasDeDownload = $_POST['noDownload'];
 108                  if ( $ignoreMD5 || isset($urlWawadebMD5) ) {
 109                      if (isset($urlWawadebMD5)) {
 110                          $urlMD5 = $_POST['urlWawadebMD5'];
 111                      } else {
 112                          $urlMD5 = '';
 113                      }
 114                      if ( isset($LocalappliXml) ) {
 115                          # V�rification que l'appli est d&#233;j&#224; sur le serveur
 116                          if ( file_exists("$wpkgroot/$LocalappliXml") ) {
 117                              printHead();
 118                              $appli = basename("$wpkgroot/$LocalappliXml");
 119                              configAppli($appli);
 120                              
 121                          } else {
 122                              Erreur(404);
 123                              echo "Erreur : le fichier '$wpkgroot/$LocalappliXml' est introuvable !<br>\n";
 124                          }
 125                      } elseif (isset($_FILES['appliXml'])) {
 126                          $uploaddir = "$wpkgroot/tmp/";
 127                          $appli = basename($_FILES['appliXml']['name']);
 128                          $uploadfile = $uploaddir . $appli;
 129                          if (move_uploaded_file($_FILES['appliXml']['tmp_name'], $uploadfile)) {
 130                              printHead();
 131                              echo "<h1>Ajout d'une application</h1>\n";
 132                              echo "<h2>Transfert du fichier XML</h2>\n";
 133                              echo "Le fichier '$appli' a &#233;t&#233; transf&#233;r&#233; avec succ&#232;s.<br>\n";
 134                              flush();
 135                              configAppli($appli);
 136                              echo "</body></html>";
 137                          } else {
 138                              Erreur(404);
 139                              echo "Erreur de transfert du fichier '" . $_FILES['appliXml']['tmp_name'] . "' dans $uploadfile.<br>\n";
 140                              echo '<pre>';
 141                              print_r($_FILES);
 142                              echo '</pre>';
 143                          }
 144                      } else {
 145                          Erreur(404);
 146                          echo "Erreur : appliXml n'est pas d&#233;fini !<br>\n";
 147                      }
 148                  } else {
 149                      Erreur(404);
 150                      echo "Erreur : urlWawadebMD5 n'est pas d&#233;fini et le contr&#244;le MD5 est demand&#233; !<br>\n";
 151                  }
 152                  echo "<br>Retourner &#224; la page <a href='index.php'>D&#233;ploiement d'applications</a>.<br>\n";
 153                  echo "</body></html>";
 154              }
 155          } elseif ( $_GET['UpdateApplis'] == "1" ) {
 156              if ( adminWpkg() ) {
 157                  # Installation d'applis � partir du d�pot officiel
 158                  if (isset($urlWawadebMD5)) {
 159                      $urlMD5 = isset($urlWawadebMD5) ? $_POST['urlWawadebMD5'] : '';
 160                      $pasDeDownload = $_POST['noDownload'];
 161                      $ignoreMD5 = $_POST['ignoreWawadebMD5'];
 162                      printHead();
 163                      if (count($chk) > 0) {
 164                          echo "<h1>Mise &#224; jour des applications</h1>\n";
 165                          while (list ($key,$val) = @each ($chk)) {
 166                              # Pour eviter : Fatal error:  Maximum execution time of 30 seconds exceeded
 167                              set_time_limit(300);
 168                              //echo "key=$key, val=$val<br>\n";
 169                              list($forum, $xml, $url) = preg_split('/:/', $val, 3); 
 170  
 171                              echo "<div style='width: 100%;padding-top: 10px;padding-right: 10px;padding-bottom: 10px;padding-left: 10px;vertical-align: text-bottom;text-align: center;color: #005594;font-weight: bold;font-size: 16pt;background-color: #6699cc;'>Installation de '<b>$xml</b>'</div>\n";
 172                              echo "<h3>T&#233;l&#233;chargement</h3>\n";
 173                              echo "<pre>";
 174                              passthru ( "cd $wpkgroot/tmp;wget --output-document='$xml' '$url' 2>&1", $status);
 175                              echo "</pre>";
 176                              if ($status != 0 ) {
 177                                  echo "Erreur : status=$status<br>\n";
 178                              } else {
 179                                  $LastignoreMD5 = $ignoreMD5;
 180                                  if ($forum == 'test') {
 181                                      $ignoreMD5 = '1';
 182                                  }
 183                                  configAppli($xml);
 184                                  $ignoreMD5 = $LastignoreMD5;
 185                              }
 186                          } 
 187                      } else {
 188                          echo "Aucune application n'&#233;tait s&#233;lectionn&#233;e !<br/>\n";
 189                      }
 190                      echo "<br>Retourner &#224; la page <a href='index.php'>D&#233;ploiement d'applications</a>.<br>\n";
 191                      echo "</body></html>";
 192                  }
 193              }
 194          } else {
 195              # Par d�faut redirection sur admin.html
 196              header("Location: http://" . $_SERVER['HTTP_HOST'] . rtrim(dirname($_SERVER['PHP_SELF']), '/\\') . "/admin.html");
 197          }
 198      }
 199  }
 200  
 201  function adminWpkg() {
 202      global $wpkgAdmin;
 203      if ( ! $wpkgAdmin ) { 
 204          ?>
 205              <link  href='../style.css' rel='StyleSheet' type='text/css'>
 206              <html><body>
 207              <h2>D&#233;ploiement d'applications</h2>
 208              <div class=error_msg>Vous devez avoir des droits d'administration pour utiliser cette fonction !</div>
 209  <?        include "pdp.inc.php";
 210          return false;
 211      } else { 
 212          return true;
 213      }
 214  }
 215  function configAppli($Appli) {
 216      global $urlMD5, $wpkgroot, $wpkgwebdir, $ignoreMD5, $pasDeDownload, $status, $login;
 217      $md5Checked = $ignoreMD5;
 218  
 219      $status = runprint("bash $wpkgwebdir/bin/installPackage.sh '$Appli' '$pasDeDownload' '$login' '$urlMD5' '$ignoreMD5'");
 220      # echo "status=$status<br>\n";
 221      if ( $status != 0 ) {
 222          #echo "Erreur $status. Le contenu du fichier '$Appli' n'a pas &#233;t&#233; ajout&#233; aux applications disponibles.<br>";
 223      } else {
 224          #echo "<br>F&#233;licitation ! Le contenu du fichier <b>$Appli</b> a &#233;t&#233; ajout&#233; avec succ&#232;s.<br>\n";
 225      }
 226      echo '</body></html>';
 227  
 228  }
 229  
 230  function microtime_float() {
 231      list($usec, $sec) = explode(" ", microtime());
 232      return ((float)$usec + (float)$sec);
 233  }
 234  
 235  function runprint ( $cmd ) {
 236      # Ex�cute $cmd en affichant son r�sultat
 237  
 238      $handle = popen("$cmd 2>&1", 'r');
 239      if (is_resource($handle)) {
 240          $timestamp = microtime_float();
 241          $ch = "";
 242          sleep(1);
 243          while ( !feof($handle) ) {
 244              # Pour eviter : Fatal error:  Maximum execution time of 30 seconds exceeded
 245              set_time_limit(300);
 246              $car = fread($handle, 1);
 247              if ( strlen($car) == 0 ) {
 248                  sleep(1);
 249              } else {
 250                  $ch = "$ch$car";
 251              }
 252              if ( (microtime_float() - $timestamp) > 1 ) {
 253                  echo "$ch";
 254                  $ch = "";
 255                  $timestamp = microtime_float();
 256                  flush();
 257              }
 258          }
 259          echo "$ch";
 260          flush();
 261          if (pclose($handle)) {
 262              return 0;
 263          }else {
 264              return 1;
 265          }
 266      } else {
 267          return 1;
 268      }
 269  
 270  }
 271  
 272  function printHead() { 
 273  ?>
 274      <html>
 275          <head>
 276              <title>D&#233;ploiement d'applications</title>
 277              <link  href='../style.css' rel='StyleSheet' type='text/css'>
 278          </head>
 279      <body>  
 280  <?
 281  }
 282  
 283  function Erreur($iErr) {
 284      if ( $iErr == 404 ) {
 285          header("HTTP/1.1 404 Not found");
 286          header("Status: 404 Not found"); 
 287      } elseif ( $iErr == 403 ) {
 288          header("HTTP/1.1 403 Forbidden");
 289          header("Status: 403 Forbidden"); 
 290      } else {
 291          header("HTTP/1.1 $iErr Erreur $iErr");
 292          header("Status: $iErr Erreur $iErr"); 
 293      }
 294  }
 295  
 296  function extractAppli ($idAppli) {
 297      global $DEBUG, $wpkgwebdir, $wpkgroot;
 298      // Retourne au client le xml de l'appli extraite du fichier $wpkgroot/packages.xml
 299      $DateFichier = gmdate("D, d M Y H:i:s T", filemtime("$wpkgroot/packages.xml"));
 300      header("Content-type: application/xml");
 301      header("Last-Modified: $DateFichier");
 302      header("Expires: " . gmdate("D, d M Y H:i:s T", time() + 5));
 303      header("Pragma: no-cache");
 304      header("Cache-Control: max-age=5, s-maxage=5, no-cache, must-revalidate");
 305      #header("Content-Disposition: attachment; filename=".$filename);
 306      #header("Cache-Control: no-store, no-cache, must-revalidate");
 307      
 308      //echo "xsltproc --stringparam Appli \"$idAppli\"  $wpkgwebdir/bin/extractAppli.xsl $wpkgroot/packages.xml\n";
 309      passthru ( "xsltproc --stringparam Appli \"$idAppli\"  $wpkgwebdir/bin/extractAppli.xsl $wpkgroot/packages.xml", $status);
 310      if ( $status == 0 ) {
 311          return true;
 312      } else {
 313          return false;
 314      }
 315  }
 316  
 317  function associer ($iCmd, $operation, $package, $profile) {
 318      global $DEBUG, $wpkgwebdir, $wpkgroot, $wpkgAdmin, $wpkgUser, $login;
 319      # Associe un appli � un profil si l'utilisateur en a le droit
 320      
 321      exec ( "$wpkgwebdir/bin/associer.sh '$operation' '$package' '$profile' '$login' 2>&1", $output, $status );
 322      //$last_line = system ( "$wpkgwebdir/bin/associer.sh '$operation' '$package' '$profile' '$login' >/dev/null 2>&1", $status);
 323      if ( $status == 10 ) {
 324          header("Pragma: no-cache");
 325          header("Cache-Control: max-age=5, s-maxage=5, no-cache, must-revalidate");
 326          //header("Cache-Control: no-cache, must-revalidate");
 327          echo "OK\n";
 328          return true;
 329      } else {
 330          Erreur(403);
 331          header("Pragma: no-cache");
 332          header("Cache-Control: max-age=5, s-maxage=5, no-cache, must-revalidate");
 333          //echo "$last_line\n";
 334          echo "Erreur : $login ne peut pas $operation '$profile' et '$package'\n";
 335          echo "status=$status\n";
 336          echo "iCmd=$iCmd\n";
 337          echo "\n";
 338          foreach($output as $key => $value) {
 339              echo "   $value\n";
 340          }
 341          //echo "last_line=$last_line\n";
 342          return false;
 343      }
 344  }
 345  
 346  function SupprAppli ( $idAppli, $delFiles) {
 347      global $wpkgwebdir, $login;
 348      # echo "Ex�cution de : bash $wpkgwebdir/bin/deletePackage.sh '$idAppli' '$delFiles'<br>";
 349      echo "<h3>Suppression de l'application '$idAppli'</h3>\n";
 350      echo "<pre>";
 351      passthru ( "bash $wpkgwebdir/bin/deletePackage.sh '$login' '$idAppli' '$delFiles' 2>&1", $status);
 352      echo "</pre>\n";
 353      if ( $status != 0 ) {
 354          echo "Erreur $status<br>\n";
 355      }
 356  }
 357  ?>


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