示例#1
0
 if ($szLayer == '') {
     continue;
 }
 // Nom du layer pour le GetLegendGraphic de la legende
 $szLayer_legend = $szLayer;
 // si plus d'une couche dans un ajouter service web : on prend le premier nom du layer pour le GetLegendGraphic de la legende
 if (strstr($szLayer_legend, ',')) {
     list($szLayer_legend) = explode(",", $szLayer_legend);
 }
 $szLayer_legend = str_replace(" ", ",", $szLayer_legend);
 $szURL = strrpos($aszURLs[$i], '?') === false ? $aszURLs[$i] . '?' : $aszURLs[$i];
 $szFormat = $aszFormats[$i];
 $szOpacity = $aszOpacity[$i];
 $szTime = $aszTimes[$i];
 $szLegendTitle = $aszTitles[$i];
 $igoController = new IgoController();
 //TODO afficher des messages d'erreur pour les URLS qui
 //ne fonctionne pas.
 $szUrl = $igoController->verifierPermis($szURL);
 if ($szURL === false) {
     continue;
 }
 if ($showLegend) {
     if ($hasbaselayer == "false" || $i != 0) {
         // Construit requete GetLegendGraphic
         $getLegendGraphic = $szURL . "&TRANSPARENT=TRUE&NOCACHE=0.39793555804004654&SERVICE=WMS&VERSION=1.1.1&REQUEST=GetLegendGraphic&LAYER=" . $szLayer_legend . "&FORMAT=image%2Fpng";
         // Requete a GetLegendGraphic
         $resource = curl_file_get_contents($getLegendGraphic);
         if (strpos($resource, '<?xml') !== false) {
             continue;
         }
示例#2
0
文件: index.php 项目: benoitlesp/igo
 function proxyNavigateur()
 {
     //todo: http://php.net/manual/en/function.curl-setopt.php
     global $app;
     $config = $app->getDI()->get("config");
     $method = $_SERVER['REQUEST_METHOD'];
     if ($method !== "GET" && $method !== "POST") {
         http_response_code(405);
         die("Seules les méthodes POST ou GET sont autorisées");
     }
     $paramsGet = $_GET;
     $paramsPost = $method == "POST" ? $_POST : array();
     $options = array();
     $files = count($_FILES) > 0 ? $_FILES : null;
     if ($files != null) {
         $options['files'] = $files;
     }
     $service = urldecode(isset($paramsPost['_service']) ? $paramsPost['_service'] : $paramsGet['_service']);
     unset($paramsPost['_service']);
     unset($paramsGet['_service']);
     unset($paramsPost['_url']);
     unset($paramsGet['_url']);
     unset($paramsPost['_client_IP']);
     unset($paramsGet['_client_IP']);
     //Session
     $session = $app->getDI()->getSession();
     if (!$session->has("info_utilisateur")) {
         http_response_code(401);
         die("Vous devez être connecté pour utiliser ce service");
     }
     //Services
     $igoController = new IgoController();
     $url = $igoController->verifierPermis($service);
     if ($url === false) {
         http_response_code(403);
         die("Vous n'avez pas les droits pour ce service.");
     }
     $protocole = strtolower(substr($_SERVER["SERVER_PROTOCOL"], 0, strpos($_SERVER["SERVER_PROTOCOL"], '/'))) . '://';
     if (isset($url) && is_string($url) && $url !== "") {
         //$url = str_replace("//localhost/","//".$appelant."/", $url);
         if (substr($url, 0, 1) === "/") {
             //$url = $protocole.$appelant.$url;
             $url = $protocole . "localhost" . $url;
         }
     } else {
         http_response_code(403);
         die("Ce service n'est pas permis.");
     }
     $urlParse = parse_url($url);
     if (!isset($urlParse['scheme']) || $urlParse['scheme'] . "://" != $protocole) {
         http_response_code(403);
         die('Seul le protocole (' . $protocole . ') est valide');
     }
     $encodage = isset($paramsPost['_encodage']) ? $paramsPost['_encodage'] : (isset($paramsGet['_encodage']) ? $paramsGet['_encodage'] : NULL);
     if ($encodage != NULL) {
         $options['encodage'] = $encodage;
         unset($paramsPost['_encodage']);
         unset($paramsGet['_encodage']);
     }
     //ajouter la clé
     if (isset($paramsPost['_cle'])) {
         $_cle = $paramsPost['_cle'];
         $cleM = "POST";
     } else {
         if (isset($paramsGet['_cle'])) {
             $_cle = $paramsGet['_cle'];
             $cleM = "GET";
         }
     }
     if (isset($_cle)) {
         if ($session->has("info_utilisateur") && isset($config['profilsDroit'])) {
             //utilisateur
             if ($session->info_utilisateur->identifiant && isset($config->profilsDroit[$session->info_utilisateur->identifiant]["cles"])) {
                 $clesUser = $config->profilsDroit[$session->info_utilisateur->identifiant]["cles"];
                 if (isset($clesUser[$_cle])) {
                     $cle = $clesUser[$_cle];
                 }
             }
             //profils
             if (!isset($cle) && isset($session->info_utilisateur->profils)) {
                 $profilActif = $session->info_utilisateur->profilActif;
                 $nbProfils = count($session->info_utilisateur->profils);
                 foreach ($session->info_utilisateur->profils as $key => $value) {
                     if (is_array($value)) {
                         $idValue = $value["id"];
                         $profil = $value["libelle"];
                     } else {
                         $idValue = $value->id;
                         $profil = $value->libelle;
                     }
                     if ($nbProfils === 1 || $idValue == $profilActif) {
                         if (isset($profil) && isset($config->profilsDroit[$profil]["cles"])) {
                             $clesProfil = $config->profilsDroit[$profil]["cles"];
                             if (isset($clesProfil[$_cle])) {
                                 $cle = $clesProfil[$_cle];
                             }
                         }
                         break;
                     }
                 }
             }
         }
         if (!isset($cle)) {
             if (isset($config['cles'][$_cle])) {
                 $cle = $config['cles'][$_cle];
             } else {
                 $cle = $_cle;
             }
         }
         unset($paramsPost['_cle']);
         unset($paramsGet['_cle']);
         if ($cleM == "POST") {
             $paramsPost['_client_IP'] = ObtenirAdresseIP($_SERVER);
             $paramsPost['cle'] = $cle;
         } else {
             $paramsGet['_client_IP'] = ObtenirAdresseIP($_SERVER);
             $paramsGet['cle'] = $cle;
         }
     }
     if (count($paramsGet) != 0) {
         if (strpos($url, '?') === false) {
             $url = $url . '?';
         } else {
             if (substr($url, -1) !== '?') {
                 $url = $url . '&';
             }
         }
         $url = $url . http_build_query($paramsGet);
         //remplacer les parametres array ([0]= , [1]= , ...) par le même nom.
         //todo en faire une option?
         $url = preg_replace('/%5B(?:[0-9]|[1-9][0-9]+)%5D=/', '=', $url);
     }
     proxyRequestNavigateur($url, $paramsPost, $method, $options);
 }