From 08e8c8d5e6ef08803fc8759140786a63924bd3d1 Mon Sep 17 00:00:00 2001 From: Fil <fil@rezo.net> Date: Fri, 22 May 2009 15:17:08 +0000 Subject: [PATCH] savoir gerer les URLs de la forme http://user:pass@hostname --- ecrire/inc/distant.php | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/ecrire/inc/distant.php b/ecrire/inc/distant.php index 33c4c3d4cf..ad3c94184e 100644 --- a/ecrire/inc/distant.php +++ b/ecrire/inc/distant.php @@ -558,16 +558,14 @@ function init_http($method, $url, $refuse_gz=false, $referer = '', $datas="", $v else { $scheme = $t['scheme']; $noproxy = $scheme.'://'; } - if (isset($t['user'])) { - $scheme_fsock .= $t['user']; - if (isset($t['pass'])) $scheme_fsock .= ':'.$t['pass']; - $scheme_fsock .= '@'; - } + 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, $host, $path, $port, $noproxy, $refuse_gz, $referer, $datas, $vers); + $f = lance_requete($method, $scheme, $user, $host, $path, $port, $noproxy, $refuse_gz, $referer, $datas, $vers); if (!$f) { // fallback : fopen if (!$GLOBALS['tester_proxy']) { @@ -581,12 +579,14 @@ function init_http($method, $url, $refuse_gz=false, $referer = '', $datas="", $v } // http://doc.spip.org/@lance_requete -function lance_requete($method, $scheme, $host, $path, $port, $noproxy, $refuse_gz=false, $referer = '', $datas="", $vers="HTTP/1.0") { +function lance_requete($method, $scheme, $user, $host, $path, $port, $noproxy, $refuse_gz=false, $referer = '', $datas="", $vers="HTTP/1.0") { $http_proxy = need_proxy($host); if ($http_proxy) { - $path = "$scheme://$host" . (($port != 80) ? ":$port" : "") . $path; + $path = "$scheme://" + . (!$user ? '' : urlencode($user[0]).":".urlencode($user[1])."@") + . "$host" . (($port != 80) ? ":$port" : "") . $path; $t2 = @parse_url($http_proxy); $proxy_user = $t2['user']; $proxy_pass = $t2['pass']; @@ -606,6 +606,8 @@ function lance_requete($method, $scheme, $host, $path, $port, $noproxy, $refuse_ . "User-Agent: SPIP-".$GLOBALS['spip_version_affichee']." (http://www.spip.net/)\r\n" . ($refuse_gz ? '' : "Accept-Encoding: gzip\r\n") . (!$site ? '' : "Referer: $site/$referer\r\n") + . (!$user ? '' : "Authorization: Basic " + . base64_encode(urlencode($user[0]).":".urlencode($user[1])) ."\r\n") . (!$proxy_user ? '' : ("Proxy-Authorization: Basic " . base64_encode($proxy_user . ":" . $proxy_pass) . "\r\n")); -- GitLab