[ Index ]

PHP Cross Reference of Unnamed Project

title

Body

[close]

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

   1  <?php
   2  
   3  // inc/wpkg.auth.php
   4  // Gère l'authentification sur le serveur se3 de l'interface web de wpkg
   5  // La fonction get_xml retourne le fichier xml demandé par l'utilisateur authentifié
   6  //
   7  //  $Id: wpkg.auth.php 8435 2015-02-07 00:44:58Z keyser $
   8  
   9  
  10  //include "entete.inc.php";
  11  require_once ('http-conditional.php');
  12  require_once ("config.inc.php");
  13  require_once  ("functions.inc.php");
  14  require_once  "ldap.inc.php";
  15  require_once  "ihm.inc.php";
  16  
  17  $wpkgroot="/var/se3/unattended/install/wpkg";
  18  $wpkgwebdir="/var/www/se3/wpkg";
  19  
  20  $login = isauth();
  21  if (! $login ) {
  22      echo "<script language=\"JavaScript\" type=\"text/javascript\">\n<!--\n";
  23      $request = '/wpkg/index.php';
  24      echo "top.location.href = '/auth.php?request=" . rawurlencode($request) . "';\n";
  25      echo "//-->\n</script>\n";
  26      exit;
  27  }
  28  $wpkgAdmin = isWpkgAdmin($login);
  29  $wpkgUser = isWpkgUser($login);
  30  //echo "<script language=\"JavaScript\" type=\"text/javascript\">\n<!--\n";
  31  //echo "alert('login=$login, wpkgAdmin=$wpkgAdmin, wpkgUser=$wpkgUser');";
  32  //echo "//-->\n</script>\n";
  33  if ( ! $wpkgUser ) {
  34      //include "entete.inc.php";
  35      ?>
  36              <h2>Déploiement d'applications</h2>
  37              <div class=error_msg>Vous n'avez pas les droits nécessaires à l'utilisation de ce module !</div>
  38      <?
  39      include "pdp.inc.php";
  40      exit;
  41  }
  42  
  43  function isWpkgAdmin($login) {
  44      // Droit nécessaire pour ajouter ou supprimer une application
  45      if (is_admin("computers_is_admin",$login)=="Y") {
  46          return true;
  47      } else {
  48          return false;
  49      }
  50  }
  51  
  52  function isWpkgUser($login) {
  53      global $DEBUG, $wpkgAdmin;
  54      if ($wpkgAdmin || is_admin("parc_can_manage",$login)=="Y" || is_admin("parc_can_view",$login)=="Y") {
  55          return true;
  56      } else {
  57          $query="select login from delegation  where login='$login' and ( niveau='view' or niveau='manage');";
  58          $result=mysql_query($query) or die("Impossible d'accéder à la table");
  59          $ligne=mysql_num_rows($result);
  60          return ( $ligne != 0 );
  61      }
  62  }
  63  
  64  function get_html($xsl, $xml, $param)
  65  // retourne le résultat de la transformation appliqué au fichier xml
  66  {
  67      global $DEBUG, $wpkgAdmin, $wpkgUser, $wpkgroot;
  68      $parametres = '';
  69      #$nomFichier = $aFilePath[$nPath-1];
  70      #if ($DEBUG > 0) echo "xsl=".$xsl."<br>\n";
  71      #if ($DEBUG > 0) echo "xml=".$xml."<br>\n";
  72      #if ($DEBUG > 0) print_r($param);
  73  # $wpkgAdmin=1;
  74      if ($wpkgUser) {
  75          if (file_exists("$xml")) {
  76              // Date: Mon, 15 Jan 2007 10:06:50 GMT
  77              $dateLastModification = filemtime("$xml");
  78              if (httpConditional($dateLastModification)) {
  79                  exit(); //No need to send anything
  80              } else {
  81                  $DateFichier = gmdate('D, d M Y H:i:s \G\M\T', $dateLastModification);
  82                  header("Content-type: text/html");
  83                  header("Last-Modified: $DateFichier");
  84                  header("Expires: " . gmdate("D, d M Y H:i:s T", time() ));
  85                  header("Pragma: no-cache");
  86                  //header("Cache-Control: max-age=5, s-maxage=5, no-cache, must-revalidate");
  87                  header("Cache-Control: must-revalidate");
  88                  header("Content-Disposition: inline; filename=".basename ($xml));
  89                  foreach($param as $key=> $val){
  90                      $parametres .= " --stringparam '" . $key . "' '" . $val . "'";
  91                  }
  92                  # echo "xsltproc $parametres '$xsl' '$xml' 2>&1";
  93                  passthru ( "xsltproc $parametres '$xsl' '$xml' 2>&1", $status);
  94                  if ($status != 0 ) {
  95                      echo "<pre>\nErreur xsltproc $parametres $xsl $xml : status=$status</pre><br>\n";
  96                      return false;
  97                  } else {
  98                      return true;
  99                  }
 100              }
 101          } else {
 102              header("HTTP/1.1 404 Not found");
 103              header("Status: 404 Not found"); 
 104              echo "Erreur : Le fichier $xml est introuvable !\n";
 105              echo "Sans doute un problème de droits.\n";
 106              return false;
 107          }
 108      } else {
 109          echo "Erreur : vous n'êtes pas autorisé à afficher cette page !\n";
 110          return false;
 111      }
 112  }
 113  
 114  function get_xml($filename)
 115  // Retourne le fichier xml demandé (profiles.xml, packages.xml ou hosts.xml) si les droits de l'utilisateur en cours le permettent
 116  {
 117      global $DEBUG, $wpkgAdmin, $wpkgUser, $wpkgroot;
 118      #$nomFichier = $aFilePath[$nPath-1];
 119      $PathFichier = "$wpkgroot/$filename";
 120      #if ($DEBUG > 0) echo "nomFichier=".$nomFichier."<br>\n";
 121      #if ($DEBUG > 0) echo "PathFichier=".$PathFichier."<br>\n";
 122  # $wpkgAdmin=1;
 123      if ($wpkgUser) {
 124          if (file_exists("$PathFichier")) {
 125              // Date: Mon, 15 Jan 2007 10:06:50 GMT
 126              $dateLastModification = filemtime("$PathFichier");
 127              if (httpConditional($dateLastModification)) {
 128                  exit(); //No need to send anything
 129              } else {
 130                  //$DateFichier = gmdate("D, d M Y H:i:s T", $dateLastModification);
 131                  //$DateFichier = gmdate("D, d M Y H:i:s", $dateLastModification) . " GMT" ;
 132                  $DateFichier = gmdate('D, d M Y H:i:s \G\M\T', $dateLastModification);
 133                  # mktime ( int   hour  , int   minute  , int   second  , int   month  , int   day  , int   year  , int   is_dst  )
 134                  # $DatePassee = gmdate("D, d M Y H:i:s T", mktime(0, 0, 0, 1, 1, 1998));
 135                  header("Content-type: text/xml");
 136                  header("Last-Modified: $DateFichier");
 137                  //header("Expires: " . gmdate("D, d M Y H:i:s T", time() + 5));
 138                  header("Pragma: no-cache");
 139                  //header("Cache-Control: max-age=5, s-maxage=5, no-cache, must-revalidate");
 140                  header("Cache-Control: must-revalidate");
 141                  header("Content-Disposition: inline; filename=".basename ($filename));
 142                  #header("Cache-Control: no-store, no-cache, must-revalidate");
 143                  //flush();
 144                  if ( readfile("$PathFichier") ) {
 145                      return true;
 146                  } else {
 147                      return false;
 148                  }
 149              }
 150          } else {
 151              header("HTTP/1.1 404 Not found");
 152              header("Status: 404 Not found"); 
 153              echo "Erreur : Le fichier $PathFichier est introuvable !\n";
 154              echo "Sans doute un problème de droits.\n";
 155              return false;
 156          }
 157      } else {
 158          echo "Erreur : vous n'êtes pas administrateur wpkg !\n";
 159          return false;
 160      }
 161  }
 162  
 163  function get_fichierCP850($filename)
 164  // Retourne le fichier demandé (utilisé pour les fichiers rapports/*.log)
 165  // après conversion CP850/CR-LF..819/CR-LF  ( dos oem -> iso-8859-1 )
 166  {
 167      global $DEBUG, $wpkgAdmin, $wpkgUser, $wpkgroot;
 168      #$nomFichier = $aFilePath[$nPath-1];
 169      $PathFichier = "$wpkgroot/$filename";
 170      #if ($DEBUG > 0) echo "nomFichier=".$nomFichier."<br>\n";
 171      #if ($DEBUG > 0) echo "PathFichier=".$PathFichier."<br>\n";
 172  # $wpkgAdmin=1;
 173      if ($wpkgUser) {
 174          if (file_exists("$PathFichier")) {
 175              // Date: Mon, 15 Jan 2007 10:06:50 GMT
 176              $DateFichier = gmdate("D, d M Y H:i:s T", filemtime("$PathFichier"));
 177              # mktime ( int   hour  , int   minute  , int   second  , int   month  , int   day  , int   year  , int   is_dst  )
 178              # $DatePassee = gmdate("D, d M Y H:i:s T", mktime(0, 0, 0, 1, 1, 1998));
 179              
 180              
 181              header("Content-Transfer-Encoding: 8bit");
 182              header("Content-type: text/html; charset=ISO-8859-1"); // IE ne gère pas bien text/plain :(
 183              header("Last-Modified: $DateFichier");
 184              header("Expires: " . gmdate("D, d M Y H:i:s T", time() + 30));
 185              header("Pragma: no-cache");
 186              header("Cache-Control: max-age=5, s-maxage=5, no-cache, must-revalidate");
 187              header("Content-Disposition: inline; filename=".$filename.".txt");
 188              #header("Cache-Control: no-store, no-cache, must-revalidate");
 189              //flush();
 190              echo "<pre>\n"; // toujours pour IE
 191              $handle = fopen ("$PathFichier", "r");
 192              $contents = fread ($handle, filesize ($PathFichier));
 193              fclose ($handle);
 194              echo htmlspecialchars($contents, ENT_COMPAT | ENT_HTML401, 'ISO-8859-1');
 195              //if ( readfile("$PathFichier") ) {
 196              // Conversion OEM -> ANSI déjà faite dans le script (plus de dépendance avec recode)
 197              //passthru ( "cat $PathFichier | recode CP850/CR-LF..819/CR-LF", $status);
 198              // htmlspecialchars(passthru ( "cat $PathFichier", $status));
 199              echo "\n</pre>\n";
 200              if ( $status == 0 ) {
 201                  return true;
 202              } else {
 203                  return false;
 204              }
 205          } else {
 206              header("HTTP/1.1 404 Not found");
 207              header("Status: 404 Not found"); 
 208              echo "Erreur : Le fichier $PathFichier est introuvable !\n";
 209              echo "Sans doute un problème de droits.\n";
 210              return false;
 211          }
 212      } else {
 213          echo "Erreur : vous n'êtes pas autorisé à utiliser cette fonction !\n";
 214          return false;
 215      }
 216  }
 217  ?>


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