<?php
-// $Id: proxy.php,v 1.8 2005/06/27 14:47:40 henoheno Exp $
-// Copyright (C) 2003-2005 PukiWiki Developers Team
+// PukiWiki - Yet another WikiWikiWeb clone
+// proxy.php
+// Copyright: 2003-2016 PukiWiki Development Team
// License: GPL v2 or (at your option) any later version
//
// HTTP-Proxy related functions
// Max number of 'track' redirection message with 301 or 302 response
define('PKWK_HTTP_REQUEST_URL_REDIRECT_MAX', 2);
+// We also define deprecated function 'http_request' for backward compatibility
+if (!function_exists('http_request')) {
+ // pecl_http extension also have the function named 'http_request'
+ function http_request($url, $method = 'GET', $headers = '',
+ $post = array(), $redirect_max = PKWK_HTTP_REQUEST_URL_REDIRECT_MAX,
+ $content_charset = '') {
+ return pkwk_http_request($url, $method, $headers, $post,
+ $redirect_max, $content_charset);
+ }
+}
+
/*
- * http_request($url)
+ * pkwk_http_request($url)
* Get / Send data via HTTP request
* $url : URI started with http:// (http://user:pass@host:port/path?query)
* $method : GET, POST, or HEAD
* $redirect_max : Max number of HTTP redirect
* $content_charset : Content charset. Use '' or CONTENT_CHARSET
*/
-function http_request($url, $method = 'GET', $headers = '', $post = array(),
+function pkwk_http_request($url, $method = 'GET', $headers = '', $post = array(),
$redirect_max = PKWK_HTTP_REQUEST_URL_REDIRECT_MAX, $content_charset = '')
{
global $use_proxy, $no_proxy, $proxy_host, $proxy_port;
$url = $url_base . $url; // Add sheme, host
}
// Redirect
- return http_request($url, $method, $headers, $post, $redirect_max);
+ return pkwk_http_request($url, $method, $headers, $post, $redirect_max);
}
}
return array(
// Check if the $host is in the specified network(s)
function in_the_net($networks = array(), $host = '')
{
- if (empty($networks) || $hosts == '') return FALSE;
+ if (empty($networks) || $host == '') return FALSE;
+ if (! is_array($networks)) $networks = array($networks);
$matches = array();
}
$l_ip = ip2long($ip);
- if (is_long($l_ip) && long2ip($l_ip) == $ip) {
- // $host seems valid IPv4 address
- foreach ($networks as $network) {
- if (preg_match(PKWK_CIDR_NETWORK_REGEX, $network, $matches)) {
- // Sample: '10.0.0.0/8' or '10.0.0.0/255.0.0.0'
- $l_net = ip2long($matches[1]); // '10.0.0.0'
- $mask = isset($matches[2]) ? $matches[2] : 32; // '8' or '255.0.0.0'
- $mask = is_numeric($mask) ?
- pow(2, 32) - pow(2, 32 - $mask) : // '8' means '8-bit mask'
- ip2long($mask); // '255.0.0.0' (the same)
-
- if (($l_ip & $mask) == $l_net) return TRUE;
- }
+ foreach ($networks as $network) {
+ if (preg_match(PKWK_CIDR_NETWORK_REGEX, $network, $matches) &&
+ is_long($l_ip) && long2ip($l_ip) == $ip) {
+ // $host seems valid IPv4 address
+ // Sample: '10.0.0.0/8' or '10.0.0.0/255.0.0.0'
+ $l_net = ip2long($matches[1]); // '10.0.0.0'
+ $mask = isset($matches[2]) ? $matches[2] : 32; // '8' or '255.0.0.0'
+ $mask = is_numeric($mask) ?
+ pow(2, 32) - pow(2, 32 - $mask) : // '8' means '8-bit mask'
+ ip2long($mask); // '255.0.0.0' (the same)
+
+ if (($l_ip & $mask) == $l_net) return TRUE;
+ } else {
+ // $host seems not IPv4 address. May be a DNS name like 'foobar.example.com'?
+ foreach ($networks as $network)
+ if (preg_match('/\.?\b' . preg_quote($network, '/') . '$/', $host))
+ return TRUE;
}
- } else {
- // $host seems not IPv4 address. May be a DNS name like 'foobar.example.com'?
- foreach ($networks as $network)
- if (preg_match('/\b' . preg_quote($network, '/') . '$/', $host))
- return TRUE;
}
return FALSE; // Not found
}
-?>