1
0
mirror of https://github.com/phpbb/phpbb.git synced 2025-02-25 20:44:01 +01:00

Merge pull request #3929 from kilianr/ticket/12618

[ticket/12618] Allow extension author to use SSL for version-check.
This commit is contained in:
Marc Alexander 2016-01-12 04:11:56 +01:00
commit 826d6aac74
3 changed files with 12 additions and 5 deletions

View File

@ -535,7 +535,7 @@ class acp_extensions
$version_helper = new \phpbb\version_helper($this->cache, $this->config, new \phpbb\file_downloader(), $this->user); $version_helper = new \phpbb\version_helper($this->cache, $this->config, new \phpbb\file_downloader(), $this->user);
$version_helper->set_current_version($meta['version']); $version_helper->set_current_version($meta['version']);
$version_helper->set_file_location($version_check['host'], $version_check['directory'], $version_check['filename']); $version_helper->set_file_location($version_check['host'], $version_check['directory'], $version_check['filename'], isset($version_check['ssl']) ? $version_check['ssl'] : false);
$version_helper->force_stability($this->config['extension_force_unstable'] ? 'unstable' : null); $version_helper->force_stability($this->config['extension_force_unstable'] ? 'unstable' : null);
return $updates = $version_helper->get_suggested_updates($force_update, $force_cache); return $updates = $version_helper->get_suggested_updates($force_update, $force_cache);

View File

@ -42,7 +42,7 @@ class file_downloader
$this->error_number = 0; $this->error_number = 0;
$this->error_string = ''; $this->error_string = '';
if ($socket = @fsockopen($host, $port, $this->error_number, $this->error_string, $timeout)) if ($socket = @fsockopen(($port == 443 ? 'tls://' : '') . $host, $port, $this->error_number, $this->error_string, $timeout))
{ {
@fputs($socket, "GET $directory/$filename HTTP/1.0\r\n"); @fputs($socket, "GET $directory/$filename HTTP/1.0\r\n");
@fputs($socket, "HOST: $host\r\n"); @fputs($socket, "HOST: $host\r\n");

View File

@ -33,6 +33,11 @@ class version_helper
*/ */
protected $file = 'versions.json'; protected $file = 'versions.json';
/**
* @var bool Use SSL or not
*/
protected $use_ssl = false;
/** /**
* @var string Current version installed * @var string Current version installed
*/ */
@ -85,13 +90,15 @@ class version_helper
* @param string $host Host (e.g. version.phpbb.com) * @param string $host Host (e.g. version.phpbb.com)
* @param string $path Path to file (e.g. /phpbb) * @param string $path Path to file (e.g. /phpbb)
* @param string $file File name (Default: versions.json) * @param string $file File name (Default: versions.json)
* @param bool $use_ssl Use SSL or not (Default: false)
* @return version_helper * @return version_helper
*/ */
public function set_file_location($host, $path, $file = 'versions.json') public function set_file_location($host, $path, $file = 'versions.json', $use_ssl = false)
{ {
$this->host = $host; $this->host = $host;
$this->path = $path; $this->path = $path;
$this->file = $file; $this->file = $file;
$this->use_ssl = $use_ssl;
return $this; return $this;
} }
@ -244,7 +251,7 @@ class version_helper
*/ */
public function get_versions($force_update = false, $force_cache = false) public function get_versions($force_update = false, $force_cache = false)
{ {
$cache_file = '_versioncheck_' . $this->host . $this->path . $this->file; $cache_file = '_versioncheck_' . $this->host . $this->path . $this->file . $this->use_ssl;
$info = $this->cache->get($cache_file); $info = $this->cache->get($cache_file);
@ -255,7 +262,7 @@ class version_helper
else if ($info === false || $force_update) else if ($info === false || $force_update)
{ {
try { try {
$info = $this->file_downloader->get($this->host, $this->path, $this->file); $info = $this->file_downloader->get($this->host, $this->path, $this->file, $this->use_ssl ? 443 : 80);
} }
catch (\phpbb\exception\runtime_exception $exception) catch (\phpbb\exception\runtime_exception $exception)
{ {