diff options
author | Steffen185 <steffen.weber@gmail.com> | 2014-02-11 14:40:33 +0100 |
---|---|---|
committer | Steffen185 <steffen.weber@gmail.com> | 2014-02-11 14:40:33 +0100 |
commit | add515bc7411ef9950f94e3a3bf60379f162a6e0 (patch) | |
tree | ed7c099a4b5f939020fff7b7123c887b85713297 /program/steps | |
parent | 03de1329efbcff2a4052ba6289bde1befb1ef0df (diff) |
Make modcss.inc work with allow_url_fopen = Off
Alternatively use the PHP cURL extension
Diffstat (limited to 'program/steps')
-rw-r--r-- | program/steps/utils/modcss.inc | 48 |
1 files changed, 34 insertions, 14 deletions
diff --git a/program/steps/utils/modcss.inc b/program/steps/utils/modcss.inc index c8a7cb524..f88ae1a96 100644 --- a/program/steps/utils/modcss.inc +++ b/program/steps/utils/modcss.inc @@ -33,24 +33,44 @@ if (!preg_match('~^(https?)://~i', $realurl, $matches)) { exit("Invalid URL"); } -if (!ini_get('allow_url_fopen')) { +if (ini_get('allow_url_fopen')) { + $scheme = strtolower($matches[1]); + $options = array( + $scheme => array( + 'method' => 'GET', + 'timeout' => 15, + ) + ); + + $context = stream_context_create($options); + $source = @file_get_contents($realurl, false, $context); + + // php.net/manual/en/reserved.variables.httpresponseheader.php + $headers = implode("\n", (array)$http_response_header); +} else if (function_exists('curl_init')) { + $curl = curl_init($realurl); + curl_setopt($curl, CURLOPT_TIMEOUT, 15); + curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 15); + curl_setopt($curl, CURLOPT_PROTOCOLS, CURLPROTO_HTTP | CURLPROTO_HTTPS); + curl_setopt($curl, CURLOPT_ENCODING, ''); + curl_setopt($curl, CURLOPT_HEADER, true); + curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); + $data = curl_exec($curl); + + if ($data !== false) + { + list($headers, $source) = explode("\r\n\r\n", $data, 2); + } + else + { + $headers = false; + $source = false; + } +} else { header('HTTP/1.1 403 Forbidden'); exit("HTTP connections disabled"); } -$scheme = strtolower($matches[1]); -$options = array( - $scheme => array( - 'method' => 'GET', - 'timeout' => 15, - ) -); - -$context = stream_context_create($options); -$source = @file_get_contents($realurl, false, $context); - -// php.net/manual/en/reserved.variables.httpresponseheader.php -$headers = implode("\n", (array)$http_response_header); $ctype = '~Content-Type:\s+text/(css|plain)~i'; if ($source !== false && preg_match($ctype, $headers)) { |