forked from magento/magento2
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathget.php
98 lines (88 loc) · 3.38 KB
/
get.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
<?php
/**
* Public media files entry point
*
* Magento
*
* NOTICE OF LICENSE
*
* This source file is subject to the Open Software License (OSL 3.0)
* that is bundled with this package in the file LICENSE.txt.
* It is also available through the world-wide-web at this URL:
* http://opensource.org/licenses/osl-3.0.php
* If you did not receive a copy of the license and are unable to
* obtain it through the world-wide-web, please send an email
* to license@magentocommerce.com so we can send you a copy immediately.
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade Magento to newer
* versions in the future. If you wish to customize Magento for your
* needs please refer to http://www.magentocommerce.com for more information.
*
* @copyright Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
use Magento\Framework\App\Cache\Frontend\Factory;
use Magento\Framework\Module\Declaration\Reader\Filesystem;
require dirname(__DIR__) . '/app/bootstrap.php';
$mediaDirectory = null;
$allowedResources = array();
$configCacheFile = dirname(__DIR__) . '/var/resource_config.json';
$relativeFilename = null;
$isAllowed = function ($resource, array $allowedResources) {
$isResourceAllowed = false;
foreach ($allowedResources as $allowedResource) {
if (0 === stripos($resource, $allowedResource)) {
$isResourceAllowed = true;
}
}
return $isResourceAllowed;
};
if (file_exists($configCacheFile) && is_readable($configCacheFile)) {
$config = json_decode(file_get_contents($configCacheFile), true);
//checking update time
if (filemtime($configCacheFile) + $config['update_time'] > time()) {
$mediaDirectory = trim(str_replace(__DIR__, '', $config['media_directory']), '/');
$allowedResources = array_merge($allowedResources, $config['allowed_resources']);
}
}
// Serve file if it's materialized
$request = new \Magento\Core\Model\File\Storage\Request(__DIR__);
if ($mediaDirectory) {
if (0 !== stripos($request->getPathInfo(), $mediaDirectory . '/') || is_dir($request->getFilePath())) {
header('HTTP/1.0 404 Not Found');
exit;
}
$relativeFilename = str_replace($mediaDirectory . '/', '', $request->getPathInfo());
if (!$isAllowed($relativeFilename, $allowedResources)) {
header('HTTP/1.0 404 Not Found');
exit;
}
if (is_readable($request->getFilePath())) {
$transfer = new \Magento\Framework\File\Transfer\Adapter\Http(
new \Magento\Framework\Controller\Response\Http,
new \Magento\Framework\File\Mime
);
$transfer->send($request->getFilePath());
exit;
}
}
// Materialize file in application
$params = $_SERVER;
if (empty($mediaDirectory)) {
$params[Filesystem::PARAM_ALLOWED_MODULES] = array('Magento_Core');
$params[Factory::PARAM_CACHE_FORCED_OPTIONS]['frontend_options']['disable_save'] = true;
}
$entryPoint = new \Magento\Framework\App\EntryPoint\EntryPoint(dirname(__DIR__), $params);
$entryPoint->run(
'Magento\Core\App\Media',
array(
'request' => $request,
'workingDirectory' => __DIR__,
'mediaDirectory' => $mediaDirectory,
'configCacheFile' => $configCacheFile,
'isAllowed' => $isAllowed,
'relativeFileName' => $relativeFilename,
)
);