diff --git a/core/ajax/update.php b/core/ajax/update.php index 419992c9891..85d5dc83ccf 100644 --- a/core/ajax/update.php +++ b/core/ajax/update.php @@ -9,7 +9,10 @@ if (OC::checkUpgrade(false)) { $l = new \OC_L10N('core'); $eventSource = \OC::$server->createEventSource(); - $updater = new \OC\Updater(\OC_Log::$object); + $updater = new \OC\Updater( + \OC::$server->getHTTPHelper(), + \OC_Log::$object + ); $updater->listen('\OC\Updater', 'maintenanceStart', function () use ($eventSource, $l) { $eventSource->send('success', (string)$l->t('Turned on maintenance mode')); }); diff --git a/core/command/upgrade.php b/core/command/upgrade.php index aaeb63a3124..1d74ad0a90e 100644 --- a/core/command/upgrade.php +++ b/core/command/upgrade.php @@ -84,7 +84,7 @@ class Upgrade extends Command { if(\OC::checkUpgrade(false)) { $self = $this; - $updater = new Updater(); + $updater = new Updater(\OC::$server->getHTTPHelper()); $updater->setSimulateStepEnabled($simulateStepEnabled); $updater->setUpdateStepEnabled($updateStepEnabled); diff --git a/lib/private/templatelayout.php b/lib/private/templatelayout.php index a066f90bb23..aefb93ec266 100644 --- a/lib/private/templatelayout.php +++ b/lib/private/templatelayout.php @@ -44,7 +44,7 @@ class OC_TemplateLayout extends OC_Template { // Update notification if($this->config->getSystemValue('updatechecker', true) === true && OC_User::isAdminUser(OC_User::getUser())) { - $updater = new \OC\Updater(); + $updater = new \OC\Updater(\OC::$server->getHTTPHelper()); $data = $updater->check(); if(isset($data['version']) && $data['version'] != '' and $data['version'] !== Array()) { diff --git a/lib/private/updater.php b/lib/private/updater.php index e07ff03ffc4..5846a6a655a 100644 --- a/lib/private/updater.php +++ b/lib/private/updater.php @@ -25,6 +25,11 @@ class Updater extends BasicEmitter { * @var \OC\Log $log */ private $log; + + /** + * @var \OC\HTTPHelper $helper; + */ + private $httpHelper; private $simulateStepEnabled; @@ -33,7 +38,8 @@ class Updater extends BasicEmitter { /** * @param \OC\Log $log */ - public function __construct($log = null) { + public function __construct($httpHelper, $log = null) { + $this->httpHelper = $httpHelper; $this->log = $log; $this->simulateStepEnabled = true; $this->updateStepEnabled = true; @@ -95,30 +101,24 @@ class Updater extends BasicEmitter { $url = $updaterUrl . '?version=' . $versionString; // set a sensible timeout of 10 sec to stay responsive even if the update server is down. - $ctx = stream_context_create( - array( - 'http' => array( - 'timeout' => 10 - ) - ) - ); - $xml = @file_get_contents($url, 0, $ctx); - if ($xml == false) { - return array(); - } - $loadEntities = libxml_disable_entity_loader(true); - $data = @simplexml_load_string($xml); - libxml_disable_entity_loader($loadEntities); $tmp = array(); - $tmp['version'] = $data->version; - $tmp['versionstring'] = $data->versionstring; - $tmp['url'] = $data->url; - $tmp['web'] = $data->web; + $xml = $this->httpHelper->getUrlContent($url); + if ($xml !== false) { + $loadEntities = libxml_disable_entity_loader(true); + $data = @simplexml_load_string($xml); + libxml_disable_entity_loader($loadEntities); + + $tmp['version'] = $data->version; + $tmp['versionstring'] = $data->versionstring; + $tmp['url'] = $data->url; + $tmp['web'] = $data->web; + } else { + $data = array(); + } // Cache the result \OC_Appconfig::setValue('core', 'lastupdateResult', json_encode($data)); - return $tmp; }