From: Thomas Müller Date: Thu, 12 Mar 2015 20:43:41 +0000 (+0100) Subject: drop any fallback code related to curl - refs https://github.com/owncloud/core/pull... X-Git-Tag: v8.1.0alpha1~284^2 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=5855108e9b413c69b95dcd68972cac7f4f01f4cc;p=nextcloud-server.git drop any fallback code related to curl - refs https://github.com/owncloud/core/pull/14838#issuecomment-78586447 --- diff --git a/apps/files_external/lib/amazons3.php b/apps/files_external/lib/amazons3.php index 4d94e3561f8..73345d30893 100644 --- a/apps/files_external/lib/amazons3.php +++ b/apps/files_external/lib/amazons3.php @@ -627,11 +627,7 @@ class AmazonS3 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; } } diff --git a/apps/files_external/lib/dropbox.php b/apps/files_external/lib/dropbox.php index cc1e628f851..3dea8515b7b 100644 --- a/apps/files_external/lib/dropbox.php +++ b/apps/files_external/lib/dropbox.php @@ -316,11 +316,7 @@ class Dropbox 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; } } diff --git a/apps/files_external/lib/google.php b/apps/files_external/lib/google.php index bd9bdce2a67..92351bc0886 100644 --- a/apps/files_external/lib/google.php +++ b/apps/files_external/lib/google.php @@ -617,11 +617,7 @@ class Google 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; } } diff --git a/apps/files_external/lib/swift.php b/apps/files_external/lib/swift.php index 79effc04874..37f81313701 100644 --- a/apps/files_external/lib/swift.php +++ b/apps/files_external/lib/swift.php @@ -567,11 +567,7 @@ class Swift 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; } } 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; } @@ -158,29 +144,6 @@ class HTTPHelper { return stripos($url, 'https://') === 0 || stripos($url, 'http://') === 0; } - /** - * 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 * 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']), diff --git a/tests/lib/httphelper.php b/tests/lib/httphelper.php index 48d6543f1f2..fe76f984258 100644 --- a/tests/lib/httphelper.php +++ b/tests/lib/httphelper.php @@ -40,49 +40,6 @@ class TestHTTPHelper extends \Test\TestCase { ); } - /** - * Note: Not using a dataprovider because onConsecutiveCalls expects not - * an array but the function arguments directly - */ - public function testGetFinalLocationOfURLValid() { - $url = 'https://www.owncloud.org/enterprise/'; - $expected = 'https://www.owncloud.com/enterprise/'; - $this->httpHelperMock->expects($this->any()) - ->method('getHeaders') - ->will($this->onConsecutiveCalls( - array('Location' => 'http://www.owncloud.com/enterprise/'), - array('Location' => 'https://www.owncloud.com/enterprise/') - )); - $result = $this->httpHelperMock->getFinalLocationOfURL($url); - $this->assertSame($expected, $result); - } - - /** - * Note: Not using a dataprovider because onConsecutiveCalls expects not - * an array but the function arguments directly - */ - public function testGetFinalLocationOfURLInvalid() { - $url = 'https://www.owncloud.org/enterprise/'; - $expected = 'http://www.owncloud.com/enterprise/'; - $this->httpHelperMock->expects($this->any()) - ->method('getHeaders') - ->will($this->onConsecutiveCalls( - array('Location' => 'http://www.owncloud.com/enterprise/'), - array('Location' => 'file://etc/passwd'), - array('Location' => 'http://www.example.com/') - )); - $result = $this->httpHelperMock->getFinalLocationOfURL($url); - $this->assertSame($expected, $result); - } - - /** - * @expectedException \Exception - * @expectedExceptionMessage URL must begin with HTTPS or HTTP. - */ - public function testGetFinalLocationOfURLException() { - $this->httpHelperMock->getFinalLocationOfURL('file://etc/passwd'); - } - /** * @dataProvider isHttpTestData */ @@ -90,11 +47,10 @@ class TestHTTPHelper extends \Test\TestCase { $this->assertSame($expected, $this->httpHelperMock->isHTTPURL($url)); } - /** * @dataProvider postParameters */ - public function testassemblePostParameters($parameterList, $expectedResult) { + public function testAssemblePostParameters($parameterList, $expectedResult) { $helper = \OC::$server->getHTTPHelper(); $result = \Test_Helper::invokePrivate($helper, 'assemblePostParameters', array($parameterList)); $this->assertSame($expectedResult, $result); @@ -107,6 +63,4 @@ class TestHTTPHelper extends \Test\TestCase { array(array(), ''), ); } - - }