<?php
-// $Id: proxy.php,v 1.9 2005/06/28 14:03:29 henoheno Exp $
-// Copyright (C) 2003-2005 PukiWiki Developers Team
+// PukiWiki - Yet another WikiWikiWeb clone
+// proxy.php
+// Copyright: 2003-2017 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;
global $need_proxy_auth, $proxy_auth_user, $proxy_auth_pass;
-
$rc = array();
$arr = parse_url($url);
// query
$arr['query'] = isset($arr['query']) ? '?' . $arr['query'] : '';
// port
- $arr['port'] = isset($arr['port']) ? $arr['port'] : 80;
+ if (!isset($arr['port'])) {
+ if ($arr['scheme'] === 'https') {
+ $arr['port'] = 443;
+ } else {
+ $arr['port'] = 80;
+ }
+ }
$url_base = $arr['scheme'] . '://' . $arr['host'] . ':' . $arr['port'];
$url_path = isset($arr['path']) ? $arr['path'] : '/';
$errno = 0;
$errstr = '';
+ $ssl_prefix = '';
+ if ($arr['scheme'] === 'https') {
+ $ssl_prefix = 'ssl://';
+ }
$fp = fsockopen(
- $via_proxy ? $proxy_host : $arr['host'],
+ $ssl_prefix . ($via_proxy ? $proxy_host : $arr['host']),
$via_proxy ? $proxy_port : $arr['port'],
$errno, $errstr, 30);
if ($fp === FALSE) {
$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(
return FALSE; // Not found
}
-?>