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". |