[ Index ] |
PHP Cross Reference of Unnamed Project |
[Summary view] [Print] [Text view]
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éploiement d'applications</h2> 33 <div class=error_msg>Vous n'avez pas les droits nécessaires à 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 été mis à 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 à la page <a href='index.php'>Dé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 été mis à 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 à la page <a href='index.php'>Dé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 à la page <a href='index.php'>Dé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éjà 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 été transféré avec succè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éfini !<br>\n"; 147 } 148 } else { 149 Erreur(404); 150 echo "Erreur : urlWawadebMD5 n'est pas défini et le contrôle MD5 est demandé !<br>\n"; 151 } 152 echo "<br>Retourner à la page <a href='index.php'>Dé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 à 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élé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'était sélectionnée !<br/>\n"; 189 } 190 echo "<br>Retourner à la page <a href='index.php'>Dé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é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 été ajouté aux applications disponibles.<br>"; 223 } else { 224 #echo "<br>Félicitation ! Le contenu du fichier <b>$Appli</b> a été ajouté avec succè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é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 ?>
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated: Tue Mar 17 22:47:18 2015 | Cross-referenced by PHPXref 0.7.1 |