]> granicus.if.org Git - php/commitdiff
* add support for http proxy authorization (thanks Arnaud)
authorStig Bakken <ssb@php.net>
Wed, 2 Oct 2002 21:27:25 +0000 (21:27 +0000)
committerStig Bakken <ssb@php.net>
Wed, 2 Oct 2002 21:27:25 +0000 (21:27 +0000)
pear/PEAR/Command/Remote.php
pear/PEAR/Common.php
pear/PEAR/Remote.php

index dfb3f77707209b65045aa35a3034fce7f06e7941..0e6e94d11d776dcd911d8cfd18cbacf7962666aa 100644 (file)
@@ -147,7 +147,7 @@ version of DB is 1.2, the downloaded file will be DB-1.2.tgz.',
             'headline' => array('Package', 'Version'),
             );
         foreach ($available as $name => $info) {
-            $data['data'][] = array($name, $info['stable']);
+            $data['data'][] = array($name, isset($info['stable']) ? $info['stable'] : '-n/a-');
         }
         if (count($available)==0) {
             $data = '(no packages installed yet)';
index 6f82ff5c86c51dae21ea6c939215e365d7046154..46d5eb34bb348d0e93b1e1ab9a6b37eb7f06750b 100644 (file)
@@ -1470,11 +1470,14 @@ class PEAR_Common extends PEAR
         } else {
             $config = &PEAR_Config::singleton();
         }
-        $proxy_host = $proxy_port = null;
-        if ($proxy = $config->get('http_proxy')) {
-            $proxy = str_replace('http://', '', $proxy);
-            list($proxy_host, $proxy_port) = explode(':', $proxy);
-            if (empty($proxy_port)) {
+        $proxy_host = $proxy_port = $proxy_user = $proxy_pass = '';
+        if ($proxy = parse_url($config->get('http_proxy'))) {
+            $proxy_host = @$proxy['host'];
+            $proxy_port = @$proxy['port'];
+            $proxy_user = @$proxy['user'];
+            $proxy_pass = @$proxy['pass'];
+
+            if ($proxy_port == '') {
                 $proxy_port = 8080;
             }
             if ($callback) {
@@ -1484,7 +1487,7 @@ class PEAR_Common extends PEAR
         if (empty($port)) {
             $port = 80;
         }
-        if ($proxy_host) {
+        if ($proxy_host != '') {
             $fp = @fsockopen($proxy_host, $proxy_port, $errno, $errstr);
             if (!$fp) {
                 if ($callback) {
@@ -1506,8 +1509,12 @@ class PEAR_Common extends PEAR
             $request = "GET $path HTTP/1.0\r\n";
         }
         $request .= "Host: $host:$port\r\n".
-            "User-Agent: PHP/".PHP_VERSION."\r\n".
-            "\r\n";
+            "User-Agent: PHP/".PHP_VERSION."\r\n";
+        if ($proxy_host != '' && $proxy_user != '') {
+            $request .= 'Proxy-Authorization: Basic ' .
+                base64_encode($proxy_user . ':' . $proxy_pass) . "\r\n";
+        }
+        $request .= "\r\n";
         fwrite($fp, $request);
         $headers = array();
         while (trim($line = fgets($fp, 1024))) {
index 353f94ff88a227855941a7436be925177a0ee49b..aa122c0513a69568906ab4fa287c5e6069d1e39f 100644 (file)
@@ -64,6 +64,13 @@ class PEAR_Remote extends PEAR
             'lastChange' => filemtime($filename),
             'content'    => unserialize(implode('', file($filename))),
             );
+        $proxy_host = $proxy_port = $proxy_user = $proxy_pass = '';
+        if ($proxy = parse_url($this->config->get('http_proxy'))) {
+            $proxy_host = @$proxy['host'];
+            $proxy_port = @$proxy['port'];
+            $proxy_user = @$proxy['user'];
+            $proxy_pass = @$proxy['pass'];
+        }        
         return $result;
     }
     
@@ -116,7 +123,7 @@ class PEAR_Remote extends PEAR
         } else {
             $maxAge = '';
         };
-        $c = new XML_RPC_Client('/xmlrpc.php'.$maxAge, $server_host, 80);
+        $c = new XML_RPC_Client('/xmlrpc.php'.$maxAge, $server_host, 80, $proxy_host, $proxy_port, $proxy_user, $proxy_pass);
         if ($username && $password) {
             $c->setCredentials($username, $password);
         }