OSDN Git Service

Trim() each table cell, allows more readable settings
[pukiwiki/pukiwiki.git] / lib / proxy.php
index b4fc6e0..3559e61 100644 (file)
@@ -2,7 +2,7 @@
 /////////////////////////////////////////////////
 // PukiWiki - Yet another WikiWikiWeb clone.
 //
-// $Id: proxy.php,v 1.1 2004/08/01 01:54:35 henoheno Exp $
+// $Id: proxy.php,v 1.2 2004/10/13 14:30:58 henoheno Exp $
 //
 
 /*
 */
 
 // ¥ê¥À¥¤¥ì¥¯¥È²ó¿ôÀ©¸Â¤Î½é´üÃÍ
-define('HTTP_REQUEST_URL_REDIRECT_MAX',10);
+define('HTTP_REQUEST_URL_REDIRECT_MAX', 10);
 
-function http_request($url,$method='GET',$headers='',$post=array(),
-       $redirect_max=HTTP_REQUEST_URL_REDIRECT_MAX)
+function http_request($url, $method = 'GET', $headers = '', $post = array(),
+       $redirect_max = HTTP_REQUEST_URL_REDIRECT_MAX)
 {
        global $proxy_host, $proxy_port;
        global $need_proxy_auth, $proxy_auth_user, $proxy_auth_pass;
 
-       $rc = array();
+       $rc  = array();
        $arr = parse_url($url);
 
        $via_proxy = via_proxy($arr['host']);
 
        // query
-       $arr['query'] = isset($arr['query']) ? '?'.$arr['query'] : '';
+       $arr['query'] = isset($arr['query']) ? '?' . $arr['query'] : '';
        // port
-       $arr['port'] = isset($arr['port']) ? $arr['port'] : 80;
+       $arr['port']  = isset($arr['port'])  ? $arr['port'] : 80;
 
-       $url_base = $arr['scheme'].'://'.$arr['host'].':'.$arr['port'];
+       $url_base = $arr['scheme'] . '://' . $arr['host'] . ':' . $arr['port'];
        $url_path = isset($arr['path']) ? $arr['path'] : '/';
-       $url = ($via_proxy ? $url_base : '').$url_path.$arr['query'];
+       $url = ($via_proxy ? $url_base : '') . $url_path . $arr['query'];
 
-       $query = $method.' '.$url." HTTP/1.0\r\n";
-       $query .= "Host: ".$arr['host']."\r\n";
-       $query .= "User-Agent: PukiWiki/".S_VERSION."\r\n";
+       $query = $method . ' ' . $url . " HTTP/1.0\r\n";
+       $query .= 'Host: ' . $arr['host'] . "\r\n";
+       $query .= 'User-Agent: PukiWiki/' . S_VERSION . "\r\n";
 
        // proxy¤ÎBasicǧ¾Ú
-       if ($need_proxy_auth and isset($proxy_auth_user) and isset($proxy_auth_pass))
-       {
+       if ($need_proxy_auth && isset($proxy_auth_user) && isset($proxy_auth_pass)) {
                $query .= 'Proxy-Authorization: Basic '.
-                       base64_encode($proxy_auth_user.':'.$proxy_auth_pass)."\r\n";
+                       base64_encode($proxy_auth_user . ':' . $proxy_auth_pass) . "\r\n";
        }
+
        // Basic Ç§¾ÚÍÑ
-       if (isset($arr['user']) and isset($arr['pass']))
-       {
+       if (isset($arr['user']) && isset($arr['pass'])) {
                $query .= 'Authorization: Basic '.
-                       base64_encode($arr['user'].':'.$arr['pass'])."\r\n";
+                       base64_encode($arr['user'] . ':' . $arr['pass']) . "\r\n";
        }
 
        $query .= $headers;
 
        // POST »þ¤Ï¡¢urlencode ¤·¤¿¥Ç¡¼¥¿¤È¤¹¤ë
-       if (strtoupper($method) == 'POST')
-       {
+       if (strtoupper($method) == 'POST') {
                $POST = array();
-               foreach ($post as $name=>$val)
-               {
-                       $POST[] = $name.'='.urlencode($val);
+               foreach ($post as $name=>$val) {
+                       $POST[] = $name . '=' . urlencode($val);
                }
-               $data = join('&',$POST);
+               $data = join('&', $POST);
                $query .= "Content-Type: application/x-www-form-urlencoded\r\n";
-               $query .= 'Content-Length: '.strlen($data)."\r\n";
+               $query .= 'Content-Length: ' . strlen($data) . "\r\n";
                $query .= "\r\n";
                $query .= $data;
-       }
-       else
-       {
+       } else {
                $query .= "\r\n";
        }
 
@@ -80,9 +75,8 @@ function http_request($url,$method='GET',$headers='',$post=array(),
        $fp = fsockopen(
                $via_proxy ? $proxy_host : $arr['host'],
                $via_proxy ? $proxy_port : $arr['port'],
-               $errno,$errstr,30);
-       if (!$fp)
-       {
+               $errno, $errstr, 30);
+       if ($fp === FALSE) {
                return array(
                        'query'  => $query, // Query String
                        'rc'     => $errno, // ¥¨¥é¡¼ÈÖ¹æ
@@ -94,38 +88,33 @@ function http_request($url,$method='GET',$headers='',$post=array(),
        fputs($fp, $query);
 
        $response = '';
-       while (!feof($fp))
-       {
-               $response .= fread($fp,4096);
-       }
+       while (! feof($fp))
+               $response .= fread($fp, 4096);
        fclose($fp);
 
-       $resp = explode("\r\n\r\n",$response,2);
-       $rccd = explode(' ',$resp[0],3); // array('HTTP/1.1','200','OK\r\n...')
+       $resp = explode("\r\n\r\n", $response, 2);
+       $rccd = explode(' ', $resp[0], 3); // array('HTTP/1.1', '200', 'OK\r\n...')
        $rc = (integer)$rccd[1];
 
        // Redirect
        $matches = array();
-       switch ($rc)
-       {
-               case 302: // Moved Temporarily
-               case 301: // Moved Permanently
-                       if (preg_match('/^Location: (.+)$/m',$resp[0],$matches)
-                               and --$redirect_max > 0)
-                       {
-                               $url = trim($matches[1]);
-                               if (!preg_match('/^https?:\//',$url)) // no scheme
-                               {
-                                       if ($url{0} != '/') // Relative path
-                                       {
-                                               // to Absolute path
-                                               $url = substr($url_path,0,strrpos($url_path,'/')).'/'.$url;
-                                       }
-                                       // add sheme,host
-                                       $url = $url_base.$url;
+       switch ($rc) {
+       case 302: // Moved Temporarily
+       case 301: // Moved Permanently
+               if (preg_match('/^Location: (.+)$/m', $resp[0], $matches)
+                       && --$redirect_max > 0)
+               {
+                       $url = trim($matches[1]);
+                       if (! preg_match('/^https?:\//', $url)) {
+                               // No scheme
+                               if ($url{0} != '/') {
+                                       // Relative path to Absolute
+                                       $url = substr($url_path, 0, strrpos($url_path, '/')) . '/' . $url;
                                }
-                               return http_request($url,$method,$headers,$post,$redirect_max);
+                               $url = $url_base . $url; // Add sheme, host
                        }
+                       return http_request($url, $method, $headers, $post, $redirect_max);
+               }
        }
 
        return array(
@@ -142,35 +131,25 @@ function via_proxy($host)
        global $use_proxy, $no_proxy;
        static $ip_pattern = '/^(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})(?:\/(.+))?$/';
 
-       if (!$use_proxy)
-       {
-               return FALSE;
-       }
-       $ip = gethostbyname($host);
-       $l_ip = ip2long($ip);
-       $valid = (is_long($l_ip) and long2ip($l_ip) == $ip); // valid ip address
+       if (! $use_proxy) return FALSE;
+
+       $ip    = gethostbyname($host);
+       $l_ip  = ip2long($ip);
+       $valid = (is_long($l_ip) && long2ip($l_ip) == $ip); // valid ip address
 
        $matches = array();
-       foreach ($no_proxy as $network)
-       {
-               if ($valid and preg_match($ip_pattern,$network,$matches))
-               {
+       foreach ($no_proxy as $network) {
+               if ($valid && preg_match($ip_pattern, $network, $matches)) {
                        $l_net = ip2long($matches[1]);
-                       $mask = array_key_exists(2,$matches) ? $matches[2] : 32;
-                       $mask = is_numeric($mask) ?
-                               pow(2,32) - pow(2,32 - $mask) : // "10.0.0.0/8"
-                               ip2long($mask);                 // "10.0.0.0/255.0.0.0"
-                       if (($l_ip & $mask) == $l_net)
-                       {
+                       $mask  = isset($matches[2]) ? $matches[2] : 32;
+                       $mask  = is_numeric($mask) ?
+                               pow(2, 32) - pow(2, 32 - $mask) : // "10.0.0.0/8"
+                               ip2long($mask);                   // "10.0.0.0/255.0.0.0"
+
+                       if (($l_ip & $mask) == $l_net) return FALSE;
+               } else {
+                       if (preg_match('/' . preg_quote($network, '/') . '/', $host))
                                return FALSE;
-                       }
-               }
-               else
-               {
-                       if (preg_match('/'.preg_quote($network,'/').'/',$host))
-                       {
-                               return FALSE;
-                       }
                }
        }
        return TRUE;