mirror of
https://github.com/phpbb/phpbb.git
synced 2025-06-08 04:18:52 +00:00
[ticket/16764] Remove unused files
PHPBB3-16764
This commit is contained in:
parent
3e6e8ece18
commit
e543874d08
6 changed files with 0 additions and 692 deletions
|
@ -62,25 +62,3 @@ services:
|
||||||
- '@language'
|
- '@language'
|
||||||
- '@php_ini'
|
- '@php_ini'
|
||||||
- '@request'
|
- '@request'
|
||||||
|
|
||||||
files.types.remote:
|
|
||||||
class: phpbb\files\types\remote
|
|
||||||
shared: false
|
|
||||||
arguments:
|
|
||||||
- '@config'
|
|
||||||
- '@files.factory'
|
|
||||||
- '@filesystem.temp'
|
|
||||||
- '@language'
|
|
||||||
- '@php_ini'
|
|
||||||
- '@request'
|
|
||||||
|
|
||||||
files.types.remote_storage:
|
|
||||||
class: phpbb\files\types\remote_storage
|
|
||||||
shared: false
|
|
||||||
arguments:
|
|
||||||
- '@config'
|
|
||||||
- '@files.factory'
|
|
||||||
- '@filesystem.temp'
|
|
||||||
- '@language'
|
|
||||||
- '@php_ini'
|
|
||||||
- '@request'
|
|
||||||
|
|
|
@ -20,7 +20,6 @@ class avatar_types extends \phpbb\db\migration\migration
|
||||||
*/
|
*/
|
||||||
protected $avatar_type_map = array(
|
protected $avatar_type_map = array(
|
||||||
AVATAR_UPLOAD => 'avatar.driver.upload',
|
AVATAR_UPLOAD => 'avatar.driver.upload',
|
||||||
AVATAR_REMOTE => 'avatar.driver.remote',
|
|
||||||
AVATAR_GALLERY => 'avatar.driver.local',
|
AVATAR_GALLERY => 'avatar.driver.local',
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
|
@ -1,205 +0,0 @@
|
||||||
<?php
|
|
||||||
/**
|
|
||||||
*
|
|
||||||
* This file is part of the phpBB Forum Software package.
|
|
||||||
*
|
|
||||||
* @copyright (c) phpBB Limited <https://www.phpbb.com>
|
|
||||||
* @license GNU General Public License, version 2 (GPL-2.0)
|
|
||||||
*
|
|
||||||
* For full copyright and license information, please see
|
|
||||||
* the docs/CREDITS.txt file.
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
|
|
||||||
namespace phpbb\files\types;
|
|
||||||
|
|
||||||
use bantu\IniGetWrapper\IniGetWrapper;
|
|
||||||
use phpbb\config\config;
|
|
||||||
use phpbb\files\factory;
|
|
||||||
use phpbb\files\filespec;
|
|
||||||
use phpbb\filesystem\temp;
|
|
||||||
use phpbb\language\language;
|
|
||||||
use phpbb\request\request_interface;
|
|
||||||
|
|
||||||
class remote extends base
|
|
||||||
{
|
|
||||||
/** @var config phpBB config */
|
|
||||||
protected $config;
|
|
||||||
|
|
||||||
/** @var factory Files factory */
|
|
||||||
protected $factory;
|
|
||||||
|
|
||||||
/** @var temp Filesystem temp */
|
|
||||||
protected $temp;
|
|
||||||
|
|
||||||
/** @var language */
|
|
||||||
protected $language;
|
|
||||||
|
|
||||||
/** @var IniGetWrapper */
|
|
||||||
protected $php_ini;
|
|
||||||
|
|
||||||
/** @var request_interface */
|
|
||||||
protected $request;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Construct a form upload type
|
|
||||||
*
|
|
||||||
* @param config $config phpBB config
|
|
||||||
* @param factory $factory Files factory
|
|
||||||
* @param temp $temp Filesystem temp
|
|
||||||
* @param language $language Language class
|
|
||||||
* @param IniGetWrapper $php_ini ini_get() wrapper
|
|
||||||
* @param request_interface $request Request object
|
|
||||||
*/
|
|
||||||
public function __construct(config $config, factory $factory, temp $temp, language $language, IniGetWrapper $php_ini, request_interface $request)
|
|
||||||
{
|
|
||||||
$this->config = $config;
|
|
||||||
$this->factory = $factory;
|
|
||||||
$this->temp = $temp;
|
|
||||||
$this->language = $language;
|
|
||||||
$this->php_ini = $php_ini;
|
|
||||||
$this->request = $request;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* {@inheritdoc}
|
|
||||||
*/
|
|
||||||
public function upload()
|
|
||||||
{
|
|
||||||
$args = func_get_args();
|
|
||||||
return $this->remote_upload($args[0]);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Remote upload method
|
|
||||||
* Uploads file from given url
|
|
||||||
*
|
|
||||||
* @param string $upload_url URL pointing to file to upload, for example http://www.foobar.com/example.gif
|
|
||||||
* @return filespec $file Object "filespec" is returned, all further operations can be done with this object
|
|
||||||
* @access public
|
|
||||||
*/
|
|
||||||
protected function remote_upload($upload_url)
|
|
||||||
{
|
|
||||||
$upload_ary = array();
|
|
||||||
$upload_ary['local_mode'] = true;
|
|
||||||
|
|
||||||
if (!preg_match('#^(https?://).*?\.(' . implode('|', $this->upload->allowed_extensions) . ')$#i', $upload_url, $match))
|
|
||||||
{
|
|
||||||
return $this->factory->get('filespec')->set_error($this->language->lang($this->upload->error_prefix . 'URL_INVALID'));
|
|
||||||
}
|
|
||||||
|
|
||||||
$url = parse_url($upload_url);
|
|
||||||
|
|
||||||
$upload_ary['type'] = 'application/octet-stream';
|
|
||||||
|
|
||||||
$url['path'] = explode('.', $url['path']);
|
|
||||||
$ext = array_pop($url['path']);
|
|
||||||
|
|
||||||
$url['path'] = implode('', $url['path']);
|
|
||||||
$upload_ary['name'] = utf8_basename($url['path']) . (($ext) ? '.' . $ext : '');
|
|
||||||
|
|
||||||
$remote_max_filesize = $this->get_max_file_size();
|
|
||||||
|
|
||||||
$guzzle_options = [
|
|
||||||
'timeout' => $this->upload->upload_timeout,
|
|
||||||
'connect_timeout' => $this->upload->upload_timeout,
|
|
||||||
'verify' => !empty($this->config['remote_upload_verify']) ? (bool) $this->config['remote_upload_verify'] : false,
|
|
||||||
];
|
|
||||||
$client = new \GuzzleHttp\Client($guzzle_options);
|
|
||||||
|
|
||||||
try
|
|
||||||
{
|
|
||||||
$response = $client->get($upload_url, $guzzle_options);
|
|
||||||
}
|
|
||||||
catch (\GuzzleHttp\Exception\ClientException $clientException)
|
|
||||||
{
|
|
||||||
return $this->factory->get('filespec')->set_error($this->upload->error_prefix . 'URL_NOT_FOUND');
|
|
||||||
}
|
|
||||||
catch (\GuzzleHttp\Exception\RequestException $requestException)
|
|
||||||
{
|
|
||||||
if (strpos($requestException->getMessage(), 'cURL error 28') !== false || preg_match('/408|504/', $requestException->getCode()))
|
|
||||||
{
|
|
||||||
return $this->factory->get('filespec')->set_error($this->upload->error_prefix . 'REMOTE_UPLOAD_TIMEOUT');
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
return $this->factory->get('filespec')->set_error($this->language->lang($this->upload->error_prefix . 'NOT_UPLOADED'));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
catch (\Exception $e)
|
|
||||||
{
|
|
||||||
return $this->factory->get('filespec')->set_error($this->language->lang($this->upload->error_prefix . 'NOT_UPLOADED'));
|
|
||||||
}
|
|
||||||
|
|
||||||
$content_length = $response->getBody()->getSize();
|
|
||||||
if ($remote_max_filesize && $content_length > $remote_max_filesize)
|
|
||||||
{
|
|
||||||
$max_filesize = get_formatted_filesize($remote_max_filesize, false);
|
|
||||||
|
|
||||||
return $this->factory->get('filespec')->set_error($this->language->lang($this->upload->error_prefix . 'WRONG_FILESIZE', $max_filesize['value'], $max_filesize['unit']));
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($content_length == 0)
|
|
||||||
{
|
|
||||||
return $this->factory->get('filespec')->set_error($this->upload->error_prefix . 'EMPTY_REMOTE_DATA');
|
|
||||||
}
|
|
||||||
|
|
||||||
$data = $response->getBody();
|
|
||||||
|
|
||||||
$filename = tempnam($this->temp->get_dir(), unique_id() . '-');
|
|
||||||
|
|
||||||
if (!($fp = @fopen($filename, 'wb')))
|
|
||||||
{
|
|
||||||
return $this->factory->get('filespec')->set_error($this->upload->error_prefix . 'NOT_UPLOADED');
|
|
||||||
}
|
|
||||||
|
|
||||||
$upload_ary['size'] = fwrite($fp, $data);
|
|
||||||
fclose($fp);
|
|
||||||
unset($data);
|
|
||||||
|
|
||||||
$upload_ary['tmp_name'] = $filename;
|
|
||||||
|
|
||||||
/** @var filespec $file */
|
|
||||||
$file = $this->factory->get('filespec')
|
|
||||||
->set_upload_ary($upload_ary)
|
|
||||||
->set_upload_namespace($this->upload);
|
|
||||||
$this->upload->common_checks($file);
|
|
||||||
|
|
||||||
return $file;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Get maximum file size for remote uploads
|
|
||||||
*
|
|
||||||
* @return int Maximum file size
|
|
||||||
*/
|
|
||||||
protected function get_max_file_size()
|
|
||||||
{
|
|
||||||
$max_file_size = $this->upload->max_filesize;
|
|
||||||
if (!$max_file_size)
|
|
||||||
{
|
|
||||||
$max_file_size = $this->php_ini->getString('upload_max_filesize');
|
|
||||||
|
|
||||||
if (!empty($max_file_size))
|
|
||||||
{
|
|
||||||
$unit = strtolower(substr($max_file_size, -1, 1));
|
|
||||||
$max_file_size = (int) $max_file_size;
|
|
||||||
|
|
||||||
switch ($unit)
|
|
||||||
{
|
|
||||||
case 'g':
|
|
||||||
$max_file_size *= 1024;
|
|
||||||
// no break
|
|
||||||
case 'm':
|
|
||||||
$max_file_size *= 1024;
|
|
||||||
// no break
|
|
||||||
case 'k':
|
|
||||||
$max_file_size *= 1024;
|
|
||||||
// no break
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return $max_file_size;
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,204 +0,0 @@
|
||||||
<?php
|
|
||||||
/**
|
|
||||||
*
|
|
||||||
* This file is part of the phpBB Forum Software package.
|
|
||||||
*
|
|
||||||
* @copyright (c) phpBB Limited <https://www.phpbb.com>
|
|
||||||
* @license GNU General Public License, version 2 (GPL-2.0)
|
|
||||||
*
|
|
||||||
* For full copyright and license information, please see
|
|
||||||
* the docs/CREDITS.txt file.
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
|
|
||||||
namespace phpbb\files\types;
|
|
||||||
|
|
||||||
use bantu\IniGetWrapper\IniGetWrapper;
|
|
||||||
use phpbb\config\config;
|
|
||||||
use phpbb\files\factory;
|
|
||||||
use phpbb\files\filespec;
|
|
||||||
use phpbb\filesystem\temp;
|
|
||||||
use phpbb\language\language;
|
|
||||||
use phpbb\request\request_interface;
|
|
||||||
|
|
||||||
class remote_storage extends base
|
|
||||||
{
|
|
||||||
/** @var config phpBB config */
|
|
||||||
protected $config;
|
|
||||||
|
|
||||||
/** @var factory Files factory */
|
|
||||||
protected $factory;
|
|
||||||
|
|
||||||
/** @var temp Filesystem temp */
|
|
||||||
protected $temp;
|
|
||||||
|
|
||||||
/** @var language */
|
|
||||||
protected $language;
|
|
||||||
|
|
||||||
/** @var IniGetWrapper */
|
|
||||||
protected $php_ini;
|
|
||||||
|
|
||||||
/** @var request_interface */
|
|
||||||
protected $request;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Construct a form upload type
|
|
||||||
*
|
|
||||||
* @param config $config phpBB config
|
|
||||||
* @param factory $factory Files factory
|
|
||||||
* @param temp $temp Filesystem temp
|
|
||||||
* @param language $language Language class
|
|
||||||
* @param IniGetWrapper $php_ini ini_get() wrapper
|
|
||||||
* @param request_interface $request Request object
|
|
||||||
*/
|
|
||||||
public function __construct(config $config, factory $factory, temp $temp, language $language, IniGetWrapper $php_ini, request_interface $request)
|
|
||||||
{
|
|
||||||
$this->config = $config;
|
|
||||||
$this->factory = $factory;
|
|
||||||
$this->temp = $temp;
|
|
||||||
$this->language = $language;
|
|
||||||
$this->php_ini = $php_ini;
|
|
||||||
$this->request = $request;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* {@inheritdoc}
|
|
||||||
*/
|
|
||||||
public function upload()
|
|
||||||
{
|
|
||||||
$args = func_get_args();
|
|
||||||
return $this->remote_upload($args[0]);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Remote upload method
|
|
||||||
* Uploads file from given url
|
|
||||||
*
|
|
||||||
* @param string $upload_url URL pointing to file to upload, for example http://www.foobar.com/example.gif
|
|
||||||
* @return filespec $file Object "filespec" is returned, all further operations can be done with this object
|
|
||||||
*/
|
|
||||||
protected function remote_upload($upload_url)
|
|
||||||
{
|
|
||||||
$upload_ary = array();
|
|
||||||
$upload_ary['local_mode'] = true;
|
|
||||||
|
|
||||||
if (!preg_match('#^(https?://).*?\.(' . implode('|', $this->upload->allowed_extensions) . ')$#i', $upload_url, $match))
|
|
||||||
{
|
|
||||||
return $this->factory->get('filespec')->set_error($this->language->lang($this->upload->error_prefix . 'URL_INVALID'));
|
|
||||||
}
|
|
||||||
|
|
||||||
$url = parse_url($upload_url);
|
|
||||||
|
|
||||||
$upload_ary['type'] = 'application/octet-stream';
|
|
||||||
|
|
||||||
$url['path'] = explode('.', $url['path']);
|
|
||||||
$ext = array_pop($url['path']);
|
|
||||||
|
|
||||||
$url['path'] = implode('', $url['path']);
|
|
||||||
$upload_ary['name'] = utf8_basename($url['path']) . (($ext) ? '.' . $ext : '');
|
|
||||||
|
|
||||||
$remote_max_filesize = $this->get_max_file_size();
|
|
||||||
|
|
||||||
$guzzle_options = [
|
|
||||||
'timeout' => $this->upload->upload_timeout,
|
|
||||||
'connect_timeout' => $this->upload->upload_timeout,
|
|
||||||
'verify' => !empty($this->config['remote_upload_verify']) ? (bool) $this->config['remote_upload_verify'] : false,
|
|
||||||
];
|
|
||||||
$client = new \GuzzleHttp\Client($guzzle_options);
|
|
||||||
|
|
||||||
try
|
|
||||||
{
|
|
||||||
$response = $client->get($upload_url, $guzzle_options);
|
|
||||||
}
|
|
||||||
catch (\GuzzleHttp\Exception\ClientException $clientException)
|
|
||||||
{
|
|
||||||
return $this->factory->get('filespec')->set_error($this->upload->error_prefix . 'URL_NOT_FOUND');
|
|
||||||
}
|
|
||||||
catch (\GuzzleHttp\Exception\RequestException $requestException)
|
|
||||||
{
|
|
||||||
if (strpos($requestException->getMessage(), 'cURL error 28') !== false || preg_match('/408|504/', $requestException->getCode()))
|
|
||||||
{
|
|
||||||
return $this->factory->get('filespec')->set_error($this->upload->error_prefix . 'REMOTE_UPLOAD_TIMEOUT');
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
return $this->factory->get('filespec')->set_error($this->language->lang($this->upload->error_prefix . 'NOT_UPLOADED'));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
catch (\Exception $e)
|
|
||||||
{
|
|
||||||
return $this->factory->get('filespec')->set_error($this->language->lang($this->upload->error_prefix . 'NOT_UPLOADED'));
|
|
||||||
}
|
|
||||||
|
|
||||||
$content_length = $response->getBody()->getSize();
|
|
||||||
if ($remote_max_filesize && $content_length > $remote_max_filesize)
|
|
||||||
{
|
|
||||||
$max_filesize = get_formatted_filesize($remote_max_filesize, false);
|
|
||||||
|
|
||||||
return $this->factory->get('filespec')->set_error($this->language->lang($this->upload->error_prefix . 'WRONG_FILESIZE', $max_filesize['value'], $max_filesize['unit']));
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($content_length === 0)
|
|
||||||
{
|
|
||||||
return $this->factory->get('filespec')->set_error($this->upload->error_prefix . 'EMPTY_REMOTE_DATA');
|
|
||||||
}
|
|
||||||
|
|
||||||
$data = $response->getBody();
|
|
||||||
|
|
||||||
$filename = tempnam($this->temp->get_dir(), unique_id() . '-');
|
|
||||||
|
|
||||||
if (!($fp = @fopen($filename, 'wb')))
|
|
||||||
{
|
|
||||||
return $this->factory->get('filespec')->set_error($this->upload->error_prefix . 'NOT_UPLOADED');
|
|
||||||
}
|
|
||||||
|
|
||||||
$upload_ary['size'] = fwrite($fp, $data);
|
|
||||||
fclose($fp);
|
|
||||||
unset($data);
|
|
||||||
|
|
||||||
$upload_ary['tmp_name'] = $filename;
|
|
||||||
|
|
||||||
/** @var filespec $file */
|
|
||||||
$file = $this->factory->get('filespec_storage')
|
|
||||||
->set_upload_ary($upload_ary)
|
|
||||||
->set_upload_namespace($this->upload);
|
|
||||||
$this->upload->common_checks($file);
|
|
||||||
|
|
||||||
return $file;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Get maximum file size for remote uploads
|
|
||||||
*
|
|
||||||
* @return int Maximum file size
|
|
||||||
*/
|
|
||||||
protected function get_max_file_size()
|
|
||||||
{
|
|
||||||
$max_file_size = $this->upload->max_filesize;
|
|
||||||
if (!$max_file_size)
|
|
||||||
{
|
|
||||||
$max_file_size = $this->php_ini->getString('upload_max_filesize');
|
|
||||||
|
|
||||||
if (!empty($max_file_size))
|
|
||||||
{
|
|
||||||
$unit = strtolower(substr($max_file_size, -1, 1));
|
|
||||||
$max_file_size = (int) $max_file_size;
|
|
||||||
|
|
||||||
switch ($unit)
|
|
||||||
{
|
|
||||||
case 'g':
|
|
||||||
$max_file_size *= 1024;
|
|
||||||
// no break
|
|
||||||
case 'm':
|
|
||||||
$max_file_size *= 1024;
|
|
||||||
// no break
|
|
||||||
case 'k':
|
|
||||||
$max_file_size *= 1024;
|
|
||||||
// no break
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return $max_file_size;
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,135 +0,0 @@
|
||||||
<?php
|
|
||||||
/**
|
|
||||||
*
|
|
||||||
* This file is part of the phpBB Forum Software package.
|
|
||||||
*
|
|
||||||
* @copyright (c) phpBB Limited <https://www.phpbb.com>
|
|
||||||
* @license GNU General Public License, version 2 (GPL-2.0)
|
|
||||||
*
|
|
||||||
* For full copyright and license information, please see
|
|
||||||
* the docs/CREDITS.txt file.
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
|
|
||||||
require_once __DIR__ . '/type_foo.php';
|
|
||||||
|
|
||||||
class phpbb_files_types_remote_test extends phpbb_test_case
|
|
||||||
{
|
|
||||||
/** @var \phpbb\filesystem\filesystem */
|
|
||||||
private $filesystem;
|
|
||||||
|
|
||||||
/** @var \phpbb\filesystem\temp */
|
|
||||||
private $temp;
|
|
||||||
|
|
||||||
/** @var \phpbb\config\config */
|
|
||||||
protected $config;
|
|
||||||
|
|
||||||
/** @var \Symfony\Component\DependencyInjection\ContainerInterface */
|
|
||||||
protected $container;
|
|
||||||
|
|
||||||
/** @var \phpbb\files\factory */
|
|
||||||
protected $factory;
|
|
||||||
|
|
||||||
/** @var \bantu\IniGetWrapper\IniGetWrapper */
|
|
||||||
protected $php_ini;
|
|
||||||
|
|
||||||
/** @var \phpbb\language\language */
|
|
||||||
protected $language;
|
|
||||||
|
|
||||||
/** @var \phpbb\request\request_interface */
|
|
||||||
protected $request;
|
|
||||||
|
|
||||||
/** @var string phpBB root path */
|
|
||||||
protected $phpbb_root_path;
|
|
||||||
|
|
||||||
protected function setUp(): void
|
|
||||||
{
|
|
||||||
global $config, $phpbb_root_path, $phpEx;
|
|
||||||
|
|
||||||
$config = new \phpbb\config\config(array());
|
|
||||||
$this->config = $config;
|
|
||||||
$this->config->set('remote_upload_verify', 0);
|
|
||||||
$this->request = $this->createMock('\phpbb\request\request');
|
|
||||||
|
|
||||||
$cache_path = $phpbb_root_path . 'cache/files';
|
|
||||||
$this->filesystem = new \phpbb\filesystem\filesystem();
|
|
||||||
$this->temp = new \phpbb\filesystem\temp($this->filesystem, $cache_path);
|
|
||||||
$this->language = new \phpbb\language\language(new \phpbb\language\language_file_loader($phpbb_root_path, $phpEx));
|
|
||||||
$this->php_ini = new \bantu\IniGetWrapper\IniGetWrapper;
|
|
||||||
|
|
||||||
$this->container = new phpbb_mock_container_builder();
|
|
||||||
$this->container->set('files.filespec', new \phpbb\files\filespec(
|
|
||||||
$this->filesystem,
|
|
||||||
$this->language,
|
|
||||||
$this->php_ini,
|
|
||||||
new \FastImageSize\FastImageSize(),
|
|
||||||
$phpbb_root_path,
|
|
||||||
new \phpbb\mimetype\guesser(array(
|
|
||||||
'mimetype.extension_guesser' => new \phpbb\mimetype\extension_guesser(),
|
|
||||||
))));
|
|
||||||
$this->factory = new \phpbb\files\factory($this->container);
|
|
||||||
|
|
||||||
$this->phpbb_root_path = $phpbb_root_path;
|
|
||||||
}
|
|
||||||
|
|
||||||
public function test_upload_fsock_fail()
|
|
||||||
{
|
|
||||||
$type_remote = new \phpbb\files\types\remote($this->config, $this->factory, $this->temp, $this->language, $this->php_ini, $this->request);
|
|
||||||
$upload = new \phpbb\files\upload($this->factory, $this->language, $this->php_ini, $this->request);
|
|
||||||
$upload->set_allowed_extensions(array('png'));
|
|
||||||
$type_remote->set_upload($upload);
|
|
||||||
|
|
||||||
$file = $type_remote->upload('https://bärföö.com/foo.png');
|
|
||||||
|
|
||||||
$this->assertSame(array('NOT_UPLOADED'), $file->error);
|
|
||||||
}
|
|
||||||
|
|
||||||
public function data_get_max_file_size()
|
|
||||||
{
|
|
||||||
return array(
|
|
||||||
array('', 'http://phpbb.com/foo/bar.png'),
|
|
||||||
array('2k', 'http://phpbb.com/foo/bar.png'),
|
|
||||||
array('500k', 'http://phpbb.com/foo/bar.png'),
|
|
||||||
array('500M', 'http://phpbb.com/foo/bar.png'),
|
|
||||||
array('500m', 'http://phpbb.com/foo/bar.png'),
|
|
||||||
array('500k', 'http://google.com/?.png', array('DISALLOWED_EXTENSION', 'DISALLOWED_CONTENT')),
|
|
||||||
array('1', 'http://google.com/?.png', array('WRONG_FILESIZE')),
|
|
||||||
array('500g', 'http://phpbb.com/foo/bar.png'),
|
|
||||||
array('foobar', 'http://phpbb.com/foo/bar.png'),
|
|
||||||
array('-5k', 'http://phpbb.com/foo/bar.png'),
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @dataProvider data_get_max_file_size
|
|
||||||
*/
|
|
||||||
public function test_get_max_file_size($max_file_size, $link, $expected = array('URL_NOT_FOUND'))
|
|
||||||
{
|
|
||||||
$php_ini = $this->createMock('\bantu\IniGetWrapper\IniGetWrapper', array('getString'));
|
|
||||||
$php_ini->expects($this->any())
|
|
||||||
->method('getString')
|
|
||||||
->willReturn($max_file_size);
|
|
||||||
$type_remote = new \phpbb\files\types\remote($this->config, $this->factory, $this->temp, $this->language, $php_ini, $this->request);
|
|
||||||
$upload = new \phpbb\files\upload($this->factory, $this->language, $this->php_ini, $this->request);
|
|
||||||
$upload->set_allowed_extensions(array('png'));
|
|
||||||
$type_remote->set_upload($upload);
|
|
||||||
|
|
||||||
$file = $type_remote->upload($link);
|
|
||||||
|
|
||||||
$this->assertSame($expected, $file->error);
|
|
||||||
}
|
|
||||||
|
|
||||||
public function test_upload_wrong_path()
|
|
||||||
{
|
|
||||||
$type_remote = new \phpbb\files\types\foo($this->config, $this->factory, $this->temp, $this->language, $this->php_ini, $this->request);
|
|
||||||
$upload = new \phpbb\files\upload($this->factory, $this->language, $this->php_ini, $this->request);
|
|
||||||
$upload->set_allowed_extensions(array('png'));
|
|
||||||
$type_remote->set_upload($upload);
|
|
||||||
$type_remote::$tempnam_path = $this->phpbb_root_path . 'cache/wrong/path';
|
|
||||||
|
|
||||||
$file = $type_remote->upload('http://google.com/?.png');
|
|
||||||
|
|
||||||
$this->assertSame(array('NOT_UPLOADED'), $file->error);
|
|
||||||
$type_remote::$tempnam_path = '';
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,125 +0,0 @@
|
||||||
<?php
|
|
||||||
/**
|
|
||||||
*
|
|
||||||
* This file is part of the phpBB Forum Software package.
|
|
||||||
*
|
|
||||||
* @copyright (c) phpBB Limited <https://www.phpbb.com>
|
|
||||||
* @license GNU General Public License, version 2 (GPL-2.0)
|
|
||||||
*
|
|
||||||
* For full copyright and license information, please see
|
|
||||||
* the docs/CREDITS.txt file.
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @group functional
|
|
||||||
*/
|
|
||||||
class phpbb_functional_fileupload_remote_test extends phpbb_functional_test_case
|
|
||||||
{
|
|
||||||
/** @var \phpbb\filesystem\filesystem_interface */
|
|
||||||
protected $filesystem;
|
|
||||||
|
|
||||||
/** @var \phpbb\filesystem\temp */
|
|
||||||
protected $temp;
|
|
||||||
|
|
||||||
/** @var \phpbb\files\factory */
|
|
||||||
protected $factory;
|
|
||||||
|
|
||||||
/** @var \bantu\IniGetWrapper\IniGetWrapper */
|
|
||||||
protected $php_ini;
|
|
||||||
|
|
||||||
/** @var \phpbb\language\language */
|
|
||||||
protected $language;
|
|
||||||
|
|
||||||
/** @var \phpbb\request\request_interface */
|
|
||||||
protected $request;
|
|
||||||
|
|
||||||
/** @var string phpBB root path */
|
|
||||||
protected $phpbb_root_path;
|
|
||||||
|
|
||||||
protected function setUp(): void
|
|
||||||
{
|
|
||||||
parent::setUp();
|
|
||||||
// Only doing this within the functional framework because we need a
|
|
||||||
// URL
|
|
||||||
|
|
||||||
// Global $config required by unique_id
|
|
||||||
global $config, $phpbb_root_path, $phpEx;
|
|
||||||
|
|
||||||
if (!is_array($config))
|
|
||||||
{
|
|
||||||
$config = new \phpbb\config\config(array());
|
|
||||||
}
|
|
||||||
|
|
||||||
$config['rand_seed'] = '';
|
|
||||||
$config['rand_seed_last_update'] = time() + 600;
|
|
||||||
$config['remote_upload_verify'] = 0;
|
|
||||||
|
|
||||||
$this->filesystem = new \phpbb\filesystem\filesystem();
|
|
||||||
$this->temp = new \phpbb\filesystem\temp($this->filesystem, '');
|
|
||||||
$this->language = new \phpbb\language\language(new \phpbb\language\language_file_loader($phpbb_root_path, $phpEx));
|
|
||||||
$this->request = $this->createMock('\phpbb\request\request');
|
|
||||||
$this->php_ini = new \bantu\IniGetWrapper\IniGetWrapper;
|
|
||||||
|
|
||||||
$container = new phpbb_mock_container_builder();
|
|
||||||
$container->set('files.filespec', new \phpbb\files\filespec($this->filesystem, $this->language, $this->php_ini, new \FastImageSize\FastImageSize(), $this->phpbb_root_path));
|
|
||||||
$this->factory = new \phpbb\files\factory($container);
|
|
||||||
$container->set('files.factory', $this->factory);
|
|
||||||
$container->set('files.types.remote', new \phpbb\files\types\remote($config, $this->factory, $this->temp, $this->language, $this->php_ini, $this->request));
|
|
||||||
$this->phpbb_root_path = $phpbb_root_path;
|
|
||||||
}
|
|
||||||
|
|
||||||
protected function tearDown(): void
|
|
||||||
{
|
|
||||||
global $config, $user;
|
|
||||||
$user = null;
|
|
||||||
$config = array();
|
|
||||||
}
|
|
||||||
|
|
||||||
public function test_invalid_extension()
|
|
||||||
{
|
|
||||||
/** @var \phpbb\files\upload $upload */
|
|
||||||
$upload = new \phpbb\files\upload($this->factory, $this->language, $this->php_ini, $this->request);
|
|
||||||
$upload->set_error_prefix('')
|
|
||||||
->set_allowed_extensions(array('jpg'))
|
|
||||||
->set_max_filesize(100);
|
|
||||||
$file = $upload->handle_upload('files.types.remote', self::$root_url . 'develop/blank.gif');
|
|
||||||
$this->assertEquals('URL_INVALID', $file->error[0]);
|
|
||||||
}
|
|
||||||
|
|
||||||
public function test_empty_file()
|
|
||||||
{
|
|
||||||
/** @var \phpbb\files\upload $upload */
|
|
||||||
$upload = new \phpbb\files\upload($this->factory, $this->language, $this->php_ini, $this->request);
|
|
||||||
$upload->set_error_prefix('')
|
|
||||||
->set_allowed_extensions(array('jpg'))
|
|
||||||
->set_max_filesize(100);
|
|
||||||
$file = $upload->handle_upload('files.types.remote', self::$root_url . 'develop/blank.jpg');
|
|
||||||
$this->assertEquals('EMPTY_REMOTE_DATA', $file->error[0]);
|
|
||||||
}
|
|
||||||
|
|
||||||
public function test_successful_upload()
|
|
||||||
{
|
|
||||||
/** @var \phpbb\files\upload $upload */
|
|
||||||
$upload = new \phpbb\files\upload($this->factory, $this->language, $this->php_ini, $this->request);
|
|
||||||
$upload->set_error_prefix('')
|
|
||||||
->set_allowed_extensions(array('gif'))
|
|
||||||
->set_max_filesize(2000);
|
|
||||||
$file = $upload->handle_upload('files.types.remote', self::$root_url . 'develop/test.gif');
|
|
||||||
$this->assertEquals(0, count($file->error));
|
|
||||||
$this->assertTrue(file_exists($file->get('filename')));
|
|
||||||
$this->assertTrue($file->is_uploaded());
|
|
||||||
}
|
|
||||||
|
|
||||||
public function test_too_large()
|
|
||||||
{
|
|
||||||
/** @var \phpbb\files\upload $upload */
|
|
||||||
$upload = new \phpbb\files\upload($this->factory, $this->language, $this->php_ini, $this->request);
|
|
||||||
$upload->set_error_prefix('')
|
|
||||||
->set_allowed_extensions(array('gif'))
|
|
||||||
->set_max_filesize(100);
|
|
||||||
$file = $upload->handle_upload('files.types.remote', self::$root_url . 'develop/test.gif');
|
|
||||||
$this->assertEquals(1, count($file->error));
|
|
||||||
$this->assertEquals('WRONG_FILESIZE', $file->error[0]);
|
|
||||||
}
|
|
||||||
}
|
|
Loading…
Add table
Reference in a new issue