function init_http($method, $url, $refuse_gz = false, $referer = '', $datas = "", $vers = "HTTP/1.0", $date = '') { $user = $via_proxy = $proxy_user = ''; $fopen = false; $t = @parse_url($url); $host = $t['host']; if ($t['scheme'] == 'http') { $scheme = 'http'; $noproxy = ''; } elseif ($t['scheme'] == 'https') { $scheme = 'ssl'; $noproxy = 'ssl://'; if (!isset($t['port']) || !($port = $t['port'])) { $t['port'] = 443; } } else { $scheme = $t['scheme']; $noproxy = $scheme . '://'; } if (isset($t['user'])) { $user = array($t['user'], $t['pass']); } if (!isset($t['port']) || !($port = $t['port'])) { $port = 80; } if (!isset($t['path']) || !($path = $t['path'])) { $path = "/"; } if (@$t['query']) { $path .= "?" . $t['query']; } $f = lance_requete($method, $scheme, $user, $host, $path, $port, $noproxy, $refuse_gz, $referer, $datas, $vers, $date); if (!$f) { // fallback : fopen if (!_request('tester_proxy')) { $f = @fopen($url, "rb"); spip_log("connexion vers {$url} par simple fopen"); $fopen = true; } else { $f = false; } // echec total } return array($f, $fopen); }
/** * Initialise une requete HTTP avec entetes * * Décompose l'url en son schema+host+path+port et lance la requete. * Retourne le descripteur sur lequel lire la réponse. * * @uses lance_requete() * * @param string $method * HEAD, GET, POST * @param string $url * @param bool $refuse_gz * @param string $referer * @param string $datas * @param string $vers * @param string $date * @return array */ function init_http($method, $url, $refuse_gz = false, $referer = '', $datas = "", $vers = "HTTP/1.0", $date = '') { $user = $via_proxy = $proxy_user = ''; $fopen = false; $t = @parse_url($url); $host = $t['host']; if ($t['scheme'] == 'http') { $scheme = 'http'; $noproxy = ''; } elseif ($t['scheme'] == 'https') { $scheme = 'tls'; $noproxy = 'tls://'; if (!isset($t['port']) || !($port = $t['port'])) { $t['port'] = 443; } } else { $scheme = $t['scheme']; $noproxy = $scheme . '://'; } if (isset($t['user'])) { $user = array($t['user'], $t['pass']); } if (!isset($t['port']) || !($port = $t['port'])) { $port = 80; } if (!isset($t['path']) || !($path = $t['path'])) { $path = "/"; } if (!empty($t['query'])) { $path .= "?" . $t['query']; } $f = lance_requete($method, $scheme, $user, $host, $path, $port, $noproxy, $refuse_gz, $referer, $datas, $vers, $date); if (!$f or !is_resource($f)) { // fallback : fopen si on a pas fait timeout dans lance_requete // ce qui correspond a $f===110 if ($f !== 110 and !need_proxy($host) and !_request('tester_proxy') and (!isset($GLOBALS['inc_distant_allow_fopen']) or $GLOBALS['inc_distant_allow_fopen'])) { $f = @fopen($url, "rb"); spip_log("connexion vers {$url} par simple fopen"); $fopen = true; } else { // echec total $f = false; } } return array($f, $fopen); }