diff options
author | Thomas Müller <thomas.mueller@tmit.eu> | 2015-03-16 09:56:31 +0100 |
---|---|---|
committer | Thomas Müller <thomas.mueller@tmit.eu> | 2015-03-16 09:56:31 +0100 |
commit | b159c7f27404c639f06aac2d0188f0dd59575ff1 (patch) | |
tree | 06ac206cbd0220f26deb908d3eb4a1274cfc9bf5 /lib | |
parent | c1a3394f485b566d83300173c364506d27059a59 (diff) | |
parent | 5855108e9b413c69b95dcd68972cac7f4f01f4cc (diff) | |
download | nextcloud-server-b159c7f27404c639f06aac2d0188f0dd59575ff1.tar.gz nextcloud-server-b159c7f27404c639f06aac2d0188f0dd59575ff1.zip |
Merge pull request #14848 from owncloud/kill-curl-fallback-master
drop any fallback code related to curl
Diffstat (limited to 'lib')
-rw-r--r-- | lib/private/files/storage/dav.php | 6 | ||||
-rw-r--r-- | lib/private/httphelper.php | 143 | ||||
-rw-r--r-- | lib/private/largefilehelper.php | 14 | ||||
-rw-r--r-- | lib/private/setup.php | 10 |
4 files changed, 61 insertions, 112 deletions
diff --git a/lib/private/files/storage/dav.php b/lib/private/files/storage/dav.php index 7ca18262115..e0f24e0532d 100644 --- a/lib/private/files/storage/dav.php +++ b/lib/private/files/storage/dav.php @@ -512,11 +512,7 @@ class DAV extends \OC\Files\Storage\Common { * check if curl is installed */ public static function checkDependencies() { - if (function_exists('curl_init')) { - return true; - } else { - return array('curl'); - } + return true; } /** {@inheritdoc} */ diff --git a/lib/private/httphelper.php b/lib/private/httphelper.php index 08c35e4ae08..6bb8e1d3ec0 100644 --- a/lib/private/httphelper.php +++ b/lib/private/httphelper.php @@ -60,82 +60,68 @@ class HTTPHelper { $proxy = $this->config->getSystemValue('proxy', null); $proxyUserPwd = $this->config->getSystemValue('proxyuserpwd', null); - if (function_exists('curl_init')) { - $curl = curl_init(); - $max_redirects = 10; - - curl_setopt($curl, CURLOPT_HEADER, 0); - curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); - curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 10); - curl_setopt($curl, CURLOPT_URL, $url); - curl_setopt($curl, CURLOPT_PROTOCOLS, CURLPROTO_HTTP | CURLPROTO_HTTPS); - curl_setopt($curl, CURLOPT_REDIR_PROTOCOLS, CURLPROTO_HTTP | CURLPROTO_HTTPS); - - curl_setopt($curl, CURLOPT_USERAGENT, self::USER_AGENT); - if ($proxy !== null) { - curl_setopt($curl, CURLOPT_PROXY, $proxy); - } - if ($proxyUserPwd !== null) { - curl_setopt($curl, CURLOPT_PROXYUSERPWD, $proxyUserPwd); - } + $curl = curl_init(); + $max_redirects = 10; + + curl_setopt($curl, CURLOPT_HEADER, 0); + curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); + curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 10); + curl_setopt($curl, CURLOPT_URL, $url); + curl_setopt($curl, CURLOPT_PROTOCOLS, CURLPROTO_HTTP | CURLPROTO_HTTPS); + curl_setopt($curl, CURLOPT_REDIR_PROTOCOLS, CURLPROTO_HTTP | CURLPROTO_HTTPS); + + curl_setopt($curl, CURLOPT_USERAGENT, self::USER_AGENT); + if ($proxy !== null) { + curl_setopt($curl, CURLOPT_PROXY, $proxy); + } + if ($proxyUserPwd !== null) { + curl_setopt($curl, CURLOPT_PROXYUSERPWD, $proxyUserPwd); + } - if (ini_get('open_basedir') === '') { - curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true); - curl_setopt($curl, CURLOPT_MAXREDIRS, $max_redirects); - $data = curl_exec($curl); - } else { - curl_setopt($curl, CURLOPT_FOLLOWLOCATION, false); - $mr = $max_redirects; - if ($mr > 0) { - $newURL = curl_getinfo($curl, CURLINFO_EFFECTIVE_URL); - $rcurl = curl_copy_handle($curl); - curl_setopt($rcurl, CURLOPT_HEADER, true); - curl_setopt($rcurl, CURLOPT_NOBODY, true); - curl_setopt($rcurl, CURLOPT_FORBID_REUSE, false); - curl_setopt($rcurl, CURLOPT_RETURNTRANSFER, true); - curl_setopt($rcurl, CURLOPT_USERAGENT, self::USER_AGENT); - do { - curl_setopt($rcurl, CURLOPT_URL, $newURL); - $header = curl_exec($rcurl); - if (curl_errno($rcurl)) { - $code = 0; + if (ini_get('open_basedir') === '') { + curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true); + curl_setopt($curl, CURLOPT_MAXREDIRS, $max_redirects); + $data = curl_exec($curl); + } else { + curl_setopt($curl, CURLOPT_FOLLOWLOCATION, false); + $mr = $max_redirects; + if ($mr > 0) { + $newURL = curl_getinfo($curl, CURLINFO_EFFECTIVE_URL); + $rCurl = curl_copy_handle($curl); + curl_setopt($rCurl, CURLOPT_HEADER, true); + curl_setopt($rCurl, CURLOPT_NOBODY, true); + curl_setopt($rCurl, CURLOPT_FORBID_REUSE, false); + curl_setopt($rCurl, CURLOPT_RETURNTRANSFER, true); + curl_setopt($rCurl, CURLOPT_USERAGENT, self::USER_AGENT); + do { + curl_setopt($rCurl, CURLOPT_URL, $newURL); + $header = curl_exec($rCurl); + if (curl_errno($rCurl)) { + $code = 0; + } else { + $code = curl_getinfo($rCurl, CURLINFO_HTTP_CODE); + if ($code == 301 || $code == 302) { + preg_match('/Location:(.*?)\n/', $header, $matches); + $newURL = trim(array_pop($matches)); } else { - $code = curl_getinfo($rcurl, CURLINFO_HTTP_CODE); - if ($code == 301 || $code == 302) { - preg_match('/Location:(.*?)\n/', $header, $matches); - $newURL = trim(array_pop($matches)); - } else { - $code = 0; - } + $code = 0; } - } while ($code && --$mr); - curl_close($rcurl); - if ($mr > 0) { - curl_setopt($curl, CURLOPT_URL, $newURL); } - } - - if ($mr == 0 && $max_redirects > 0) { - $data = false; - } else { - $data = curl_exec($curl); + } while ($code && --$mr); + curl_close($rCurl); + if ($mr > 0) { + curl_setopt($curl, CURLOPT_URL, $newURL); } } - curl_close($curl); - } else { - $url = $this->getFinalLocationOfURL($url); - $contextArray = $this->getDefaultContextArray(); - if ($proxy !== null) { - $contextArray['http']['proxy'] = $proxy; + if ($mr == 0 && $max_redirects > 0) { + $data = false; + } else { + $data = curl_exec($curl); } - - $ctx = stream_context_create( - $contextArray - ); - $data = @file_get_contents($url, 0, $ctx); - } + curl_close($curl); + return $data; } @@ -159,29 +145,6 @@ class HTTPHelper { } /** - * Returns the last HTTP or HTTPS site the request has been redirected too using the Location HTTP header - * This is a very ugly workaround about the missing functionality to restrict fopen() to protocols - * @param string $location Needs to be a HTTPS or HTTP URL - * @throws \Exception In case the initial URL is not a HTTP or HTTPS one - * @return string - */ - public function getFinalLocationOfURL($location) { - if(!$this->isHTTPURL($location)) { - throw new \Exception('URL must begin with HTTPS or HTTP.'); - } - $headerArray = $this->getHeaders($location, 1); - - if($headerArray !== false && isset($headerArray['Location'])) { - while($this->isHTTPURL($headerArray['Location'])) { - $location = $headerArray['Location']; - $headerArray = $this->getHeaders($location); - } - } - - return $location; - } - - /** * create string of parameters for post request * * @param array $parameters diff --git a/lib/private/largefilehelper.php b/lib/private/largefilehelper.php index b6a8c536e9b..a5a8f302eab 100644 --- a/lib/private/largefilehelper.php +++ b/lib/private/largefilehelper.php @@ -94,15 +94,15 @@ class LargeFileHelper { /** * @brief Tries to get the size of a file via a CURL HEAD request. * - * @param string $filename Path to the file. + * @param string $fileName Path to the file. * * @return null|int|float Number of bytes as number (float or int) or * null on failure. */ - public function getFileSizeViaCurl($filename) { - if (function_exists('curl_init') && \OC::$server->getIniWrapper()->getString('open_basedir') === '') { - $fencoded = rawurlencode($filename); - $ch = curl_init("file://$fencoded"); + public function getFileSizeViaCurl($fileName) { + if (\OC::$server->getIniWrapper()->getString('open_basedir') === '') { + $encodedFileName = rawurlencode($fileName); + $ch = curl_init("file://$encodedFileName"); curl_setopt($ch, CURLOPT_NOBODY, true); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_HEADER, true); @@ -129,8 +129,8 @@ class LargeFileHelper { */ public function getFileSizeViaCOM($filename) { if (class_exists('COM')) { - $fsobj = new \COM("Scripting.FileSystemObject"); - $file = $fsobj->GetFile($filename); + $fsObj = new \COM("Scripting.FileSystemObject"); + $file = $fsObj->GetFile($filename); return 0 + $file->Size; } return null; diff --git a/lib/private/setup.php b/lib/private/setup.php index 44b6ad56cb8..830a6176caf 100644 --- a/lib/private/setup.php +++ b/lib/private/setup.php @@ -184,16 +184,6 @@ class Setup { 'hint' => $this->l10n->t('Please remove the open_basedir setting within your php.ini or switch to 64-bit PHP.') ); } - if(!function_exists('curl_init') && PHP_INT_SIZE === 4) { - $errors[] = array( - 'error' => $this->l10n->t( - 'It seems that this %s instance is running on a 32-bit PHP environment and cURL is not installed. ' . - 'This will lead to problems with files over 4 GB and is highly discouraged.', - $this->defaults->getName() - ), - 'hint' => $this->l10n->t('Please install the cURL extension and restart your webserver.') - ); - } return array( 'hasSQLite' => isset($databases['sqlite']), |