This commit is contained in:
@@ -1,172 +0,0 @@
|
||||
<?php
|
||||
|
||||
|
||||
class fianet_socket
|
||||
{
|
||||
var $host;
|
||||
var $port;
|
||||
|
||||
var $is_ssl = false;
|
||||
|
||||
var $method = 'GET';
|
||||
|
||||
var $data = array();
|
||||
var $path;
|
||||
|
||||
function fianet_socket($fianet_url, $fianet_file, $method = 'GET', $data = array())
|
||||
{
|
||||
if (is_array($data))
|
||||
{
|
||||
$this->data = $data;
|
||||
}
|
||||
$this->parse_fianet_url($fianet_url, $fianet_file);
|
||||
if (strtoupper($method) == 'GET' || strtoupper($method) == 'POST')
|
||||
{
|
||||
$this->method = strtoupper($method);
|
||||
}
|
||||
}
|
||||
|
||||
function parse_fianet_url($fianet_url, $fianet_file)
|
||||
{
|
||||
if (ereg("^http://", $fianet_url))
|
||||
{
|
||||
$this->is_ssl = false;
|
||||
$this->host = eregi_replace("http://([^/]+)/.+", "\\1", $fianet_url);
|
||||
$this->port = 80;
|
||||
$this->path = eregi_replace("http://[^/]+/", "/", $fianet_url) . $fianet_file;
|
||||
}
|
||||
if (ereg("^https://", $fianet_url))
|
||||
{
|
||||
$this->is_ssl = true;
|
||||
$this->host = eregi_replace("https://([^/]+)/.+", "\\1", $fianet_url);
|
||||
$this->port = 443;
|
||||
$this->path = eregi_replace("https://[^/]+/", "/", $fianet_url) . $fianet_file;
|
||||
}
|
||||
//debug($this->path);
|
||||
}
|
||||
|
||||
function determine_boundary()
|
||||
{
|
||||
srand((double)microtime() * 1000000);
|
||||
return ("---------------------".substr(md5(rand(0,32000)),0,10));
|
||||
}
|
||||
|
||||
function build_header($boundary, $data)
|
||||
{
|
||||
if ($this->method == 'POST')
|
||||
{
|
||||
$header = "POST ".$this->path." HTTP/1.0\r\n";
|
||||
$header .= "Host: ".$this->host."\r\n";
|
||||
$header .= "Content-type: application/x-www-form-urlencoded; boundary=$boundary\r\n";
|
||||
$header .= "Content-length: " . strlen($data) . "\r\n\r\n";
|
||||
}
|
||||
elseif ($this->method == 'GET')
|
||||
{
|
||||
if ($data != '')
|
||||
{
|
||||
if (strlen($this->path."?".$data) > 2048)
|
||||
{
|
||||
fianet_insert_log("fianet_socket.php - build_header() <br />\nMaximum length in get method reached(".strlen($this->path."?".$data).") : <br />\n".$this->path."?".$data);
|
||||
}
|
||||
$header = "GET ".$this->path."?".$data." HTTP/1.1\r\n";
|
||||
}
|
||||
else
|
||||
{
|
||||
$header = "GET ".$this->path." HTTP/1.1\r\n";
|
||||
}
|
||||
$header .= "Host: ".$this->host."\r\n";
|
||||
$header .= "Connection: close\r\n\r\n";
|
||||
}
|
||||
return ($header);
|
||||
}
|
||||
|
||||
function build_data($boundary)
|
||||
{
|
||||
$data = "";
|
||||
foreach($this->data as $index => $value)
|
||||
{
|
||||
if ($data == '')
|
||||
{
|
||||
$data .= $index . '='. urlencode($value);
|
||||
}
|
||||
else
|
||||
{
|
||||
$data .= '&'.$index . '='. urlencode($value);
|
||||
}
|
||||
}
|
||||
return ($data);
|
||||
}
|
||||
|
||||
function send()
|
||||
{
|
||||
$boundary = $this->determine_boundary();
|
||||
$data = $this->build_data($boundary);
|
||||
$header = $this->build_header($boundary, $data);
|
||||
|
||||
//debug($header, 'header');
|
||||
//debug(htmlentities($data), 'data');
|
||||
$response = $this->connect($header, $data);
|
||||
if ($response != false)
|
||||
{
|
||||
$d['header'] = $response['header'];
|
||||
$d['data'] = htmlentities($response['data']);
|
||||
//debug($d, 'Réponse');
|
||||
}
|
||||
|
||||
return ($response);
|
||||
}
|
||||
|
||||
function connect($header, $data)
|
||||
{
|
||||
$res['header'] = "";
|
||||
$res['data'] = "";
|
||||
if ($this->is_ssl)
|
||||
{
|
||||
$host = 'ssl://'.$this->host . ':'.$this->port;
|
||||
$socket = fsockopen ('ssl://'.$this->host, $this->port);
|
||||
}
|
||||
else
|
||||
{
|
||||
$host = $this->host . ':' . $this->port;
|
||||
$socket = fsockopen ($this->host, $this->port);
|
||||
}
|
||||
if ($socket !== false)
|
||||
{
|
||||
$data_reached = false;
|
||||
if (@fputs($socket, $header.$data))
|
||||
{
|
||||
while (!feof($socket))
|
||||
{
|
||||
$line = fgets($socket);
|
||||
if (!$data_reached)
|
||||
{
|
||||
if ($line == "\r\n")
|
||||
{
|
||||
$data_reached = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
$res['header'] .= $line;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$res['data'] .= $line;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
fianet_insert_log("fianet_socket.php - connect() <br />\nEnvoie des données impossible sur : <br />\n".$host);
|
||||
$res = false;
|
||||
}
|
||||
fclose($socket);
|
||||
}
|
||||
else
|
||||
{
|
||||
fianet_insert_log("fianet_socket.php - connect() <br />\nConnexion socket impossible : <br />\n".$host);
|
||||
$res = false;
|
||||
}
|
||||
return ($res);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user