Subversion Repositories Applications.framework

Compare Revisions

Ignore whitespace Rev 495 → Rev 496

/trunk/tests/x-forwarded-for/test_x_forwarded_for_post.php
New file
0,0 → 1,18
<?php
 
/*
* To change this license header, choose License Headers in Project Pro
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
 
echo "</br>coucou j'envoie des trucs !</br>";
echo "</br>Méthode : " . $_SERVER['REQUEST_METHOD'] . '</br>';
echo "</br>La chaine postée :</br>";
echo "<pre>";
var_dump($_POST);
echo "</pre>";
echo "</br>Mes entêtes : </br>";
echo "<pre>";
var_dump(apache_request_headers());
echo "</pre>";
/trunk/tests/x-forwarded-for/test_x_forwarded_for_index.php
New file
0,0 → 1,22
<?php
 
$mRoot = $_SERVER['DOCUMENT_ROOT'];
 
require_once($mRoot . '/tbframework_trunk/framework/Framework.php');
//require_once($mRoot . '/tbframework_trunk/framework/RestClient.php');
Framework::setCheminAppli(__FILE__); // Obligatoire
Framework::setInfoAppli(array('nom' => 'TestMonitorRestApiClient'));
 
$mRestClient = new RestClient();
 
$retour = $mRestClient->consulter("http://localhost/tbframework_trunk/tests/x-forwarded-for/test_x_forwarded_for_get.php");
 
echo "</br>Retour de la page appelée par GET :</br>";
echo $retour;
 
$donnees_post = array('var1' => 'Coucou', 'var2' => 'Beuh');
 
$retour = $mRestClient->modifier("http://localhost/tbframework_trunk/tests/x-forwarded-for/test_x_forwarded_for_post.php", $donnees_post);
 
echo "</br>Retour de la page appelée par POST :</br>";
echo $retour;
/trunk/tests/x-forwarded-for/configurations/config.ini
New file
0,0 → 1,10
; this is an INI file
 
; +------------------------------------------------------------------------------------------------------+
; Tracer l'IP réelle de l'utilisateur
; tracer_ip_source : Indiquer ici si l'IP réelle de l'utilisateur doit être tracée.
;
 
tracer_ip_source = "php:TRUE"
 
;debogage_contexte = true
/trunk/tests/x-forwarded-for/test_x_forwarded_for_get.php
New file
0,0 → 1,14
<?php
 
/*
* To change this license header, choose License Headers in Project Pro
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
 
echo "</br>coucou je réceptionne des trucs !</br>";
echo "</br>Méthode : " . $_SERVER['REQUEST_METHOD'];
echo "</br>Mes entêtes : </br>";
echo "<pre>";
var_dump(apache_request_headers());
echo "</pre>";
/trunk/framework/config.defaut.ini
254,6 → 254,14
identification = true
 
; +------------------------------------------------------------------------------------------------------+
; Tracer l'IP réelle de l'utilisateur - acces_log
; tracer_ip_source : Indiquer ici si l'IP réelle de l'utilisateur doit être tracée, utilisation
; de l'entête X-Forwarded-For, et d'un module le gérant côté serveur.
; Pour activer, passer sur "php:TRUE".
 
tracer_ip_source = "php:FALSE"
 
; +------------------------------------------------------------------------------------------------------+
; Serveur REST
; Les paramètres ci-dessous sont à définir obligatoirement dans votre dossier de services web REST.
; serveur.baseURL : morceau de l'url pour appeler le serveur relative au domaine.
/trunk/framework/RestClient.php
18,7 → 18,19
protected $parametres = null;
private $url = null;
private $reponse_entetes = null;
 
private $tracer_ip_source = null;
private $requete_headers = array();
public function __construct() {
//verifie si paramètre tracer_ip_source est sur TRUE dans config.ini
if (Config::existe('tracer_ip_source')) {
//lire la config
$valeur = Config::get('tracer_ip_source');
//si oui, active X-Forwarded-For
$this->setTracerIPSource($valeur);
}
//pas de else, si pas dans la config $tracer_ip_source sera NULL/FALSE
}
//+------------------------------------------------------------------------------------------------------+
// ACCESSEURS
 
42,7 → 54,11
public function nettoyerParametres() {
$this->parametres = null;
}
 
public function setTracerIPSource($valeur) {
$this->tracer_ip_source = $valeur;
}
//+------------------------------------------------------------------------------------------------------+
// MÉTHODES
 
74,28 → 90,35
// vraisemblablement induire des comportements différents. (test-suite needed)
$contenu = $this->envoyerCurlRequete($url, $mode, $donnees);
} else {
$contenu = $this->envoyerStreamRequete($url, $mode, $donnees);
$contenu = $this->envoyerStreamRequete($url, $mode, $donnees);
}
return $contenu;
}
 
private function envoyerStreamRequete($url, $mode, Array $donnees = array()) {
$this->url = $url;
$this->url = $url;
$contenu = false;
if (! in_array($mode, $this->http_methodes)) {
$e = "Le mode de requête '$mode' n'est pas accepté!";
trigger_error($e, E_USER_WARNING);
} else {
if ($mode == 'GET') {
if ($mode == 'GET') {
$this->traiterUrlParametres();
}
$content = http_build_query($donnees, null, self::HTTP_URL_REQUETE_SEPARATEUR);
$contexte = stream_context_create(array(
'http' => array(
'method' => $mode,
'header' => "Content-type: application/x-www-form-urlencoded\r\n",
'content' => $content)));
$flux = @fopen($this->url, 'r', false, $contexte);
$content = http_build_query($donnees, null, self::HTTP_URL_REQUETE_SEPARATEUR);
$this->requete_headers['http'] = array();
$this->requete_headers['http']['method'] = $mode;
$this->requete_headers['http']['header'] = "Content-type: application/x-www-form-urlencoded\r\n";
if ($this->tracer_ip_source) {
// ajoute X-Forwarded-For au header
$this->requete_headers['http']['header'] .= "X-Forwarded-For: {$_SERVER['REMOTE_ADDR']}, {$_SERVER['SERVER_ADDR']}\r\n";
}
$this->requete_headers['http']['header'] .= "User-Agent: {$_SERVER['HTTP_USER_AGENT']} ApiTela/";
$this->requete_headers['http']['header'] .= Framework::getInfoAppli('nom');
$this->requete_headers['http']['header'] .= "\r\n";
$this->requete_headers['http']['content'] = $content;
$contexte = stream_context_create($this->requete_headers);
$flux = @fopen($this->url, 'r', false, $contexte);
if (!$flux) {
$entetesFmt = print_r($this->analyserEntete(), true);
$e = "Echec requête '$mode' : {$this->url}\n".