From 3f6f085769de4df84e831eefb767c4cdbfb7c64b Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Thu, 18 Apr 2013 11:35:58 +0400 Subject: add better gzdecode support for php native fetch, use curl under open_basedir --- include/functions.php | 16 ++++++++++++---- include/rssfuncs.php | 8 ++++++++ 2 files changed, 20 insertions(+), 4 deletions(-) (limited to 'include') diff --git a/include/functions.php b/include/functions.php index 8215127de..42aebec83 100644 --- a/include/functions.php +++ b/include/functions.php @@ -8,6 +8,7 @@ $fetch_last_error = false; $fetch_last_error_code = false; $fetch_last_content_type = false; + $fetch_curl_used = false; $pluginhost = false; mb_internal_encoding("UTF-8"); @@ -240,7 +241,7 @@ } $rows = db_affected_rows($result); - + ccache_update($feed_id, $owner_uid); if ($debug) { @@ -305,10 +306,13 @@ global $fetch_last_error; global $fetch_last_error_code; global $fetch_last_content_type; + global $fetch_curl_used; $url = str_replace(' ', '%20', $url); - if (!defined('NO_CURL') && function_exists('curl_init') && !ini_get("open_basedir")) { + if (!defined('NO_CURL') && function_exists('curl_init')) { + + $fetch_curl_used = true; if (ini_get("safe_mode") || ini_get("open_basedir")) { $ch = curl_init(geturl($url)); @@ -330,7 +334,7 @@ curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY); curl_setopt($ch, CURLOPT_USERAGENT, SELF_USER_AGENT); - curl_setopt($ch, CURLOPT_ENCODING , "gzip"); + curl_setopt($ch, CURLOPT_ENCODING, ""); curl_setopt($ch, CURLOPT_REFERER, $url); if ($post_query) { @@ -373,6 +377,9 @@ return $contents; } else { + + $fetch_curl_used = false; + if ($login && $pass){ $url_parts = array(); @@ -4064,7 +4071,8 @@ function geturl($url){ - (function_exists('curl_init')) ? '' : die('cURL Must be installed for geturl function to work. Ask your host to enable it or uncomment extension=php_curl.dll in php.ini'); + if (!function_exists('curl_init')) + return user_error('CURL Must be installed for geturl function to work. Ask your host to enable it or uncomment extension=php_curl.dll in php.ini', E_USER_ERROR); $curl = curl_init(); $header[0] = "Accept: text/xml,application/xml,application/xhtml+xml,"; diff --git a/include/rssfuncs.php b/include/rssfuncs.php index 537a4c338..494e050a6 100644 --- a/include/rssfuncs.php +++ b/include/rssfuncs.php @@ -304,6 +304,14 @@ $no_cache ? FEED_FETCH_NO_CACHE_TIMEOUT : FEED_FETCH_TIMEOUT, $force_refetch ? 0 : max($last_updated_timestamp, $cache_timestamp)); + global $fetch_curl_used; + + if (!$fetch_curl_used) { + $tmp = @gzdecode($feed_data); + + if ($tmp) $feed_data = $tmp; + } + if ($debug_enabled) { _debug("update_rss_feed: fetch done."); } -- cgit v1.2.3