Version Notes
1.9.3.0
Download this release
Release Info
Developer | Magento Core Team |
Extension | Mage_Downloader |
Version | 1.9.3.0 |
Comparing to | |
See all releases |
Code changes from version 1.9.2.4 to 1.9.3.0
- .htaccess +15 -0
- downloader/Maged/BruteForce/Validator.php +148 -0
- downloader/Maged/Connect.php +3 -6
- downloader/Maged/Connect/Frontend.php +4 -2
- downloader/Maged/Controller.php +85 -3
- downloader/Maged/Model/BruteForce/ConfigIni.php +115 -0
- downloader/Maged/Model/BruteForce/ModelConfigInterface.php +55 -0
- downloader/Maged/Model/BruteForce/Resource/FTP.php +115 -0
- downloader/Maged/Model/BruteForce/Resource/File.php +91 -0
- downloader/Maged/Model/BruteForce/Resource/ResourceInterface.php +54 -0
- downloader/Maged/Model/Session.php +6 -1
- downloader/lib/Mage/Connect/Packager.php +8 -7
- downloader/lib/Mage/HTTP/Client/Curl.php +8 -2
- downloader/lib/Mage/System/Dirs.php +18 -0
- downloader/template/connect/iframe.phtml +2 -2
- downloader/template/install/download.phtml +8 -0
- downloader/template/install/header.phtml +1 -1
- downloader/template/install/writable.phtml +1 -1
- downloader/template/login.phtml +1 -1
- downloader/template/settings.phtml +1 -1
- package.xml +5 -5
.htaccess
CHANGED
@@ -144,6 +144,21 @@
|
|
144 |
RewriteCond %{REQUEST_METHOD} ^TRAC[EK]
|
145 |
RewriteRule .* - [L,R=405]
|
146 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
147 |
############################################
|
148 |
## redirect for mobile user agents
|
149 |
|
144 |
RewriteCond %{REQUEST_METHOD} ^TRAC[EK]
|
145 |
RewriteRule .* - [L,R=405]
|
146 |
|
147 |
+
<IfModule mod_setenvif.c>
|
148 |
+
<IfModule mod_headers.c>
|
149 |
+
|
150 |
+
############################################
|
151 |
+
# X-Content-Type-Options: nosniff disable content-type sniffing on some browsers.
|
152 |
+
Header set X-Content-Type-Options: nosniff
|
153 |
+
|
154 |
+
############################################
|
155 |
+
# This header forces to enables the Cross-site scripting (XSS) filter in browsers (if disabled)
|
156 |
+
BrowserMatch \bMSIE\s8 ie8
|
157 |
+
Header set X-XSS-Protection: "1; mode=block" env=!ie8
|
158 |
+
|
159 |
+
</IfModule>
|
160 |
+
</IfModule>
|
161 |
+
|
162 |
############################################
|
163 |
## redirect for mobile user agents
|
164 |
|
downloader/Maged/BruteForce/Validator.php
ADDED
@@ -0,0 +1,148 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
/**
|
4 |
+
* Magento
|
5 |
+
*
|
6 |
+
* NOTICE OF LICENSE
|
7 |
+
*
|
8 |
+
* This source file is subject to the Open Software License (OSL 3.0)
|
9 |
+
* that is bundled with this package in the file LICENSE.txt.
|
10 |
+
* It is also available through the world-wide-web at this URL:
|
11 |
+
* http://opensource.org/licenses/osl-3.0.php
|
12 |
+
* If you did not receive a copy of the license and are unable to
|
13 |
+
* obtain it through the world-wide-web, please send an email
|
14 |
+
* to license@magento.com so we can send you a copy immediately.
|
15 |
+
*
|
16 |
+
* DISCLAIMER
|
17 |
+
*
|
18 |
+
* Do not edit or add to this file if you wish to upgrade Magento to newer
|
19 |
+
* versions in the future. If you wish to customize Magento for your
|
20 |
+
* needs please refer to http://www.magento.com for more information.
|
21 |
+
*
|
22 |
+
* @category Mage
|
23 |
+
* @package Mage_Connect
|
24 |
+
* @copyright Copyright (c) 2006-2016 X.commerce, Inc. and affiliates (http://www.magento.com)
|
25 |
+
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
26 |
+
*/
|
27 |
+
class Maged_BruteForce_Validator
|
28 |
+
{
|
29 |
+
const MODEL_KEY_ATTEMPTS_COUNT = "brute-force-attempts-count";
|
30 |
+
const MODEL_KEY_BAD_ATTEMPTS_COUNT = "brute-force-bad-attempts-count";
|
31 |
+
const MODEL_KEY_LAST_BAD_TIME = "brute-force-last-bad-time";
|
32 |
+
const MODEL_KEY_DIFF_TIME_TO_ATTEMPT = "brute-force-diff-time-to-attempt";
|
33 |
+
|
34 |
+
const DEFAULT_ATTEMPTS_COUNT = 3;
|
35 |
+
const DEFAULT_BAD_ATTEMPTS_COUNT = 0;
|
36 |
+
const DEFAULT_DIFF_TIME_TO_ATTEMPT = 180;// 3 minutes
|
37 |
+
|
38 |
+
|
39 |
+
/** @var Maged_Model_BruteForce_ModelConfigInterface */
|
40 |
+
protected $model;
|
41 |
+
|
42 |
+
/**
|
43 |
+
* BruteForce constructor.
|
44 |
+
* @param Maged_Model_BruteForce_ModelConfigInterface $model
|
45 |
+
*/
|
46 |
+
public function __construct(Maged_Model_BruteForce_ModelConfigInterface $model)
|
47 |
+
{
|
48 |
+
$this->model = $model;
|
49 |
+
}
|
50 |
+
|
51 |
+
/**
|
52 |
+
* @return bool
|
53 |
+
*/
|
54 |
+
public function isCanLogin()
|
55 |
+
{
|
56 |
+
$badAttempts = $this->getBadAttempts();
|
57 |
+
$configAttemptsCount = $this->getConfigAttemptsCount();
|
58 |
+
|
59 |
+
if ($badAttempts >= $configAttemptsCount and $badAttempts % $configAttemptsCount === 0) {
|
60 |
+
$lastBadLogin = intval($this->model->get(self::MODEL_KEY_LAST_BAD_TIME));
|
61 |
+
if ($lastBadLogin > 0) {
|
62 |
+
$timeDiff = $this->model->get(self::MODEL_KEY_DIFF_TIME_TO_ATTEMPT, self::DEFAULT_DIFF_TIME_TO_ATTEMPT);
|
63 |
+
$currentTime = time();
|
64 |
+
$checkTime = $lastBadLogin + $timeDiff;
|
65 |
+
if ($checkTime > $currentTime) {
|
66 |
+
return false;
|
67 |
+
}
|
68 |
+
}
|
69 |
+
}
|
70 |
+
return true;
|
71 |
+
}
|
72 |
+
|
73 |
+
/**
|
74 |
+
* @return int
|
75 |
+
*/
|
76 |
+
protected function getBadAttempts()
|
77 |
+
{
|
78 |
+
return (int)$this->model->get(self::MODEL_KEY_BAD_ATTEMPTS_COUNT, self::DEFAULT_BAD_ATTEMPTS_COUNT);
|
79 |
+
}
|
80 |
+
|
81 |
+
/**
|
82 |
+
* @return int
|
83 |
+
*/
|
84 |
+
protected function getConfigAttemptsCount()
|
85 |
+
{
|
86 |
+
return (int)$this->model->get(self::MODEL_KEY_ATTEMPTS_COUNT, self::DEFAULT_ATTEMPTS_COUNT);
|
87 |
+
}
|
88 |
+
|
89 |
+
/**
|
90 |
+
* @return int
|
91 |
+
*/
|
92 |
+
public function getTimeToAttempt()
|
93 |
+
{
|
94 |
+
return (int)$this->model->get(self::MODEL_KEY_DIFF_TIME_TO_ATTEMPT, self::DEFAULT_DIFF_TIME_TO_ATTEMPT);
|
95 |
+
}
|
96 |
+
|
97 |
+
/**
|
98 |
+
* @return $this
|
99 |
+
*/
|
100 |
+
public function doGoodLogin()
|
101 |
+
{
|
102 |
+
$this->reset();
|
103 |
+
return $this;
|
104 |
+
}
|
105 |
+
|
106 |
+
/**
|
107 |
+
* @return void
|
108 |
+
*/
|
109 |
+
public function reset()
|
110 |
+
{
|
111 |
+
$this->model
|
112 |
+
->set(self::MODEL_KEY_BAD_ATTEMPTS_COUNT, self::DEFAULT_BAD_ATTEMPTS_COUNT)
|
113 |
+
->set(self::MODEL_KEY_DIFF_TIME_TO_ATTEMPT, self::DEFAULT_DIFF_TIME_TO_ATTEMPT)
|
114 |
+
->delete(self::MODEL_KEY_LAST_BAD_TIME)
|
115 |
+
->save();
|
116 |
+
}
|
117 |
+
|
118 |
+
/**
|
119 |
+
* @return $this
|
120 |
+
*/
|
121 |
+
public function doBadLogin()
|
122 |
+
{
|
123 |
+
$badAttempts = $this->getBadAttempts() + 1;
|
124 |
+
$configAttemptsCount = $this->getConfigAttemptsCount();
|
125 |
+
$timeToNextLogin = $this->getDiffTimeToNextAttempt();
|
126 |
+
|
127 |
+
if ($badAttempts % $configAttemptsCount == 0 and $badAttempts != $configAttemptsCount) {
|
128 |
+
$timeToNextLogin += self::DEFAULT_DIFF_TIME_TO_ATTEMPT;
|
129 |
+
}
|
130 |
+
|
131 |
+
$this->model
|
132 |
+
->set(self::MODEL_KEY_BAD_ATTEMPTS_COUNT, $badAttempts)
|
133 |
+
->set(self::MODEL_KEY_DIFF_TIME_TO_ATTEMPT, $timeToNextLogin)
|
134 |
+
->set(self::MODEL_KEY_ATTEMPTS_COUNT, $configAttemptsCount)
|
135 |
+
->set(self::MODEL_KEY_LAST_BAD_TIME, time())
|
136 |
+
->save();
|
137 |
+
|
138 |
+
return $this;
|
139 |
+
}
|
140 |
+
|
141 |
+
/**
|
142 |
+
* @return int
|
143 |
+
*/
|
144 |
+
protected function getDiffTimeToNextAttempt()
|
145 |
+
{
|
146 |
+
return (int)$this->model->get(self::MODEL_KEY_DIFF_TIME_TO_ATTEMPT, self::DEFAULT_DIFF_TIME_TO_ATTEMPT);
|
147 |
+
}
|
148 |
+
}
|
downloader/Maged/Connect.php
CHANGED
@@ -459,12 +459,9 @@ function clear_cache(callbacks)
|
|
459 |
onSuccess: function(transport, json) {
|
460 |
var result = true;
|
461 |
try{
|
462 |
-
var response =
|
463 |
-
|
464 |
-
|
465 |
-
} else {
|
466 |
-
result = false;
|
467 |
-
}
|
468 |
if (typeof response.message != 'undefined') {
|
469 |
if (response.message.length > 0) {
|
470 |
message = response.message;
|
459 |
onSuccess: function(transport, json) {
|
460 |
var result = true;
|
461 |
try{
|
462 |
+
var response = transport.responseJSON || transport.responseText.evalJSON(true) || {};
|
463 |
+
result = response.result || false;
|
464 |
+
|
|
|
|
|
|
|
465 |
if (typeof response.message != 'undefined') {
|
466 |
if (response.message.length > 0) {
|
467 |
message = response.message;
|
downloader/Maged/Connect/Frontend.php
CHANGED
@@ -117,10 +117,12 @@ class Maged_Connect_Frontend extends Mage_Connect_Frontend
|
|
117 |
*/
|
118 |
public function confirm($string)
|
119 |
{
|
120 |
-
$
|
|
|
|
|
121 |
echo <<<SCRIPT
|
122 |
<script type="text/javascript">
|
123 |
-
if (confirm("{$
|
124 |
parent.document.getElementById('ignore_local_modification').value=1;
|
125 |
parent.onSuccess();
|
126 |
if (parent && parent.disableInputs) {
|
117 |
*/
|
118 |
public function confirm($string)
|
119 |
{
|
120 |
+
$confirmString = htmlentities($string, ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8');
|
121 |
+
$formId = htmlspecialchars($_POST['form_id'], ENT_COMPAT | ENT_HTML401, 'UTF-8');
|
122 |
+
|
123 |
echo <<<SCRIPT
|
124 |
<script type="text/javascript">
|
125 |
+
if (confirm("{$confirmString}")) {
|
126 |
parent.document.getElementById('ignore_local_modification').value=1;
|
127 |
parent.onSuccess();
|
128 |
if (parent && parent.disableInputs) {
|
downloader/Maged/Controller.php
CHANGED
@@ -34,6 +34,10 @@
|
|
34 |
*/
|
35 |
final class Maged_Controller
|
36 |
{
|
|
|
|
|
|
|
|
|
37 |
/**
|
38 |
* Request key of action
|
39 |
*/
|
@@ -820,7 +824,18 @@ final class Maged_Controller
|
|
820 |
$this->setAction('index');
|
821 |
}
|
822 |
} else {
|
823 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
824 |
}
|
825 |
|
826 |
while (!$this->_isDispatched) {
|
@@ -1033,8 +1048,8 @@ final class Maged_Controller
|
|
1033 |
return array(
|
1034 |
'major' => '1',
|
1035 |
'minor' => '9',
|
1036 |
-
'revision' => '
|
1037 |
-
'patch' => '
|
1038 |
'stability' => '',
|
1039 |
'number' => '',
|
1040 |
);
|
@@ -1151,4 +1166,71 @@ final class Maged_Controller
|
|
1151 |
{
|
1152 |
return $this->session()->getFormKey();
|
1153 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1154 |
}
|
34 |
*/
|
35 |
final class Maged_Controller
|
36 |
{
|
37 |
+
|
38 |
+
const DOWNLOADER_DIRECTORY = "downloader";
|
39 |
+
const BRUTE_FORCE_CONFIG_NAME = "brute-force.ini";
|
40 |
+
|
41 |
/**
|
42 |
* Request key of action
|
43 |
*/
|
824 |
$this->setAction('index');
|
825 |
}
|
826 |
} else {
|
827 |
+
try {
|
828 |
+
/** @var Maged_BruteForce_Validator $bruteForce */
|
829 |
+
$bruteForce = $this->createBruteForceValidator();
|
830 |
+
if ($bruteForce->isCanLogin()) {
|
831 |
+
$this->session()->authenticate($bruteForce);
|
832 |
+
} else {
|
833 |
+
throw new Exception ("Access is locked. Please try again in a few minutes.");
|
834 |
+
}
|
835 |
+
} catch (Exception $e) {
|
836 |
+
$this->session()->addMessage("error", $e->getMessage());
|
837 |
+
$this->setAction("login");
|
838 |
+
}
|
839 |
}
|
840 |
|
841 |
while (!$this->_isDispatched) {
|
1048 |
return array(
|
1049 |
'major' => '1',
|
1050 |
'minor' => '9',
|
1051 |
+
'revision' => '3',
|
1052 |
+
'patch' => '0',
|
1053 |
'stability' => '',
|
1054 |
'number' => '',
|
1055 |
);
|
1166 |
{
|
1167 |
return $this->session()->getFormKey();
|
1168 |
}
|
1169 |
+
|
1170 |
+
/**
|
1171 |
+
* @return Maged_BruteForce_Validator
|
1172 |
+
* @throws Exception
|
1173 |
+
*/
|
1174 |
+
protected function createBruteForceValidator()
|
1175 |
+
{
|
1176 |
+
$isRemote = (strlen($this->config()->remote_config) > 0);
|
1177 |
+
$localFileName = ($isRemote) ? "brute-force.tmp.ini" : self::BRUTE_FORCE_CONFIG_NAME;
|
1178 |
+
$localFile = $this->getBruteForceLocalFile($localFileName);
|
1179 |
+
|
1180 |
+
if (!is_file($localFile)) {
|
1181 |
+
$this->createBruteForceTemporaryFile($localFile, $this->getBruteForceLocalDirectory());
|
1182 |
+
}
|
1183 |
+
if (!is_writable($localFile)) {
|
1184 |
+
throw new Exception("Unable to write to the configuration file.");
|
1185 |
+
}
|
1186 |
+
if ($isRemote) {
|
1187 |
+
$resource = new Maged_Model_BruteForce_Resource_FTP($this->config()->remote_config, $localFile, self::DOWNLOADER_DIRECTORY . DIRECTORY_SEPARATOR . self::BRUTE_FORCE_CONFIG_NAME);
|
1188 |
+
} else {
|
1189 |
+
$resource = new Maged_Model_BruteForce_Resource_File($localFile, self::DOWNLOADER_DIRECTORY . DIRECTORY_SEPARATOR . self::BRUTE_FORCE_CONFIG_NAME);
|
1190 |
+
}
|
1191 |
+
return new Maged_BruteForce_Validator(new Maged_Model_BruteForce_ConfigIni($resource));
|
1192 |
+
}
|
1193 |
+
|
1194 |
+
/**
|
1195 |
+
* @param string $fileName
|
1196 |
+
* @return false |string
|
1197 |
+
*/
|
1198 |
+
protected function getBruteForceLocalFile($fileName)
|
1199 |
+
{
|
1200 |
+
$varFolder = $this->getBruteForceLocalDirectory();
|
1201 |
+
return rtrim($varFolder . DIRECTORY_SEPARATOR . str_replace('/', DIRECTORY_SEPARATOR, $fileName), DIRECTORY_SEPARATOR);
|
1202 |
+
}
|
1203 |
+
|
1204 |
+
/**
|
1205 |
+
* @param string $localBruteForceConfigFile
|
1206 |
+
* @param string $folder
|
1207 |
+
* @throws Exception
|
1208 |
+
*/
|
1209 |
+
protected function createBruteForceTemporaryFile($localBruteForceConfigFile, $folder)
|
1210 |
+
{
|
1211 |
+
$error = false;
|
1212 |
+
if (!is_dir($folder)) {
|
1213 |
+
if (false === mkdir($folder)) {
|
1214 |
+
$error = true;
|
1215 |
+
};
|
1216 |
+
}
|
1217 |
+
$fp = fopen($localBruteForceConfigFile, "w");
|
1218 |
+
if ($fp !== false) {
|
1219 |
+
fclose($fp);
|
1220 |
+
} else {
|
1221 |
+
$error = true;
|
1222 |
+
}
|
1223 |
+
|
1224 |
+
if ($error) {
|
1225 |
+
throw new Exception("Unable to create a temporary file. Please add write permission to the var/ folder.");
|
1226 |
+
}
|
1227 |
+
}
|
1228 |
+
|
1229 |
+
/**
|
1230 |
+
* @return string
|
1231 |
+
*/
|
1232 |
+
protected function getBruteForceLocalDirectory()
|
1233 |
+
{
|
1234 |
+
return $this->getMageDir() . DIRECTORY_SEPARATOR . "var" . DIRECTORY_SEPARATOR;
|
1235 |
+
}
|
1236 |
}
|
downloader/Maged/Model/BruteForce/ConfigIni.php
ADDED
@@ -0,0 +1,115 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
/**
|
4 |
+
* Magento
|
5 |
+
*
|
6 |
+
* NOTICE OF LICENSE
|
7 |
+
*
|
8 |
+
* This source file is subject to the Open Software License (OSL 3.0)
|
9 |
+
* that is bundled with this package in the file LICENSE.txt.
|
10 |
+
* It is also available through the world-wide-web at this URL:
|
11 |
+
* http://opensource.org/licenses/osl-3.0.php
|
12 |
+
* If you did not receive a copy of the license and are unable to
|
13 |
+
* obtain it through the world-wide-web, please send an email
|
14 |
+
* to license@magento.com so we can send you a copy immediately.
|
15 |
+
*
|
16 |
+
* DISCLAIMER
|
17 |
+
*
|
18 |
+
* Do not edit or add to this file if you wish to upgrade Magento to newer
|
19 |
+
* versions in the future. If you wish to customize Magento for your
|
20 |
+
* needs please refer to http://www.magento.com for more information.
|
21 |
+
*
|
22 |
+
* @category Mage
|
23 |
+
* @package Mage_Connect
|
24 |
+
* @copyright Copyright (c) 2006-2016 X.commerce, Inc. and affiliates (http://www.magento.com)
|
25 |
+
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
26 |
+
*/
|
27 |
+
class Maged_Model_BruteForce_ConfigIni implements Maged_Model_BruteForce_ModelConfigInterface
|
28 |
+
{
|
29 |
+
/**
|
30 |
+
* @var array
|
31 |
+
*/
|
32 |
+
protected $data = array();
|
33 |
+
/**
|
34 |
+
* @var Maged_Model_BruteForce_Resource_ResourceInterface
|
35 |
+
*/
|
36 |
+
private $resource;
|
37 |
+
|
38 |
+
/**
|
39 |
+
* BruteForceConfig constructor.
|
40 |
+
* @param Maged_Model_BruteForce_Resource_ResourceInterface $resource
|
41 |
+
* @throws Exception
|
42 |
+
*/
|
43 |
+
public function __construct(Maged_Model_BruteForce_Resource_ResourceInterface $resource)
|
44 |
+
{
|
45 |
+
if ($resource->isReadable()) {
|
46 |
+
$this->resource = $resource;
|
47 |
+
$this->readConfig();
|
48 |
+
} else {
|
49 |
+
throw new Exception("Unable to read the configuration file.");
|
50 |
+
}
|
51 |
+
}
|
52 |
+
|
53 |
+
/**
|
54 |
+
* @throws Exception
|
55 |
+
*/
|
56 |
+
public function readConfig()
|
57 |
+
{
|
58 |
+
if (false === $data = parse_ini_string($this->resource->read())) {
|
59 |
+
throw new Exception("Incorrect configuration file.");
|
60 |
+
}
|
61 |
+
$this->data = $data;
|
62 |
+
}
|
63 |
+
|
64 |
+
/**
|
65 |
+
* @param string $name
|
66 |
+
* @param null $defaultValue
|
67 |
+
* @return mixed|null
|
68 |
+
*/
|
69 |
+
public function get($name, $defaultValue = null)
|
70 |
+
{
|
71 |
+
return (isset($this->data[$name]) ? $this->data[$name] : $defaultValue);
|
72 |
+
}
|
73 |
+
|
74 |
+
/**
|
75 |
+
* @param string $name
|
76 |
+
* @param mixed $value
|
77 |
+
* @return $this
|
78 |
+
* @throws Exception
|
79 |
+
*/
|
80 |
+
public function set($name, $value)
|
81 |
+
{
|
82 |
+
if (is_array($value) or is_object($value)) {
|
83 |
+
throw new Exception ("Bad value type.");
|
84 |
+
}
|
85 |
+
$this->data[$name] = $value;
|
86 |
+
return $this;
|
87 |
+
}
|
88 |
+
|
89 |
+
public function save()
|
90 |
+
{
|
91 |
+
if ($this->resource->isWritable()) {
|
92 |
+
$res = array();
|
93 |
+
foreach ($this->data as $key => $value) {
|
94 |
+
$res[] = "$key = " . (is_numeric($value) ? $value : '"' . $value . '"');
|
95 |
+
}
|
96 |
+
$content = implode("\n", $res);
|
97 |
+
$this->resource->write($content);
|
98 |
+
} else {
|
99 |
+
throw new Exception("Unable to write to the configuration file.");
|
100 |
+
}
|
101 |
+
}
|
102 |
+
|
103 |
+
/**
|
104 |
+
* @param string $name
|
105 |
+
* @return $this
|
106 |
+
*/
|
107 |
+
public function delete($name)
|
108 |
+
{
|
109 |
+
if (isset($this->data[$name])) {
|
110 |
+
unset($this->data[$name]);
|
111 |
+
}
|
112 |
+
return $this;
|
113 |
+
}
|
114 |
+
|
115 |
+
}
|
downloader/Maged/Model/BruteForce/ModelConfigInterface.php
ADDED
@@ -0,0 +1,55 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Magento
|
4 |
+
*
|
5 |
+
* NOTICE OF LICENSE
|
6 |
+
*
|
7 |
+
* This source file is subject to the Open Software License (OSL 3.0)
|
8 |
+
* that is bundled with this package in the file LICENSE.txt.
|
9 |
+
* It is also available through the world-wide-web at this URL:
|
10 |
+
* http://opensource.org/licenses/osl-3.0.php
|
11 |
+
* If you did not receive a copy of the license and are unable to
|
12 |
+
* obtain it through the world-wide-web, please send an email
|
13 |
+
* to license@magento.com so we can send you a copy immediately.
|
14 |
+
*
|
15 |
+
* DISCLAIMER
|
16 |
+
*
|
17 |
+
* Do not edit or add to this file if you wish to upgrade Magento to newer
|
18 |
+
* versions in the future. If you wish to customize Magento for your
|
19 |
+
* needs please refer to http://www.magento.com for more information.
|
20 |
+
*
|
21 |
+
* @category Mage
|
22 |
+
* @package Mage_Connect
|
23 |
+
* @copyright Copyright (c) 2006-2016 X.commerce, Inc. and affiliates (http://www.magento.com)
|
24 |
+
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
25 |
+
*/
|
26 |
+
|
27 |
+
interface Maged_Model_BruteForce_ModelConfigInterface
|
28 |
+
{
|
29 |
+
|
30 |
+
/**
|
31 |
+
* @param string $key
|
32 |
+
* @param mixed|null $defaultValue
|
33 |
+
* @return mixed
|
34 |
+
*/
|
35 |
+
public function get($key, $defaultValue = null);
|
36 |
+
|
37 |
+
/**
|
38 |
+
* @param string $key
|
39 |
+
* @param mixed $value
|
40 |
+
* @return Maged_Model_BruteForce_ModelConfigInterface
|
41 |
+
* @throws Exception
|
42 |
+
*/
|
43 |
+
public function set($key, $value);
|
44 |
+
|
45 |
+
/**
|
46 |
+
* @return void
|
47 |
+
*/
|
48 |
+
public function save();
|
49 |
+
|
50 |
+
/**
|
51 |
+
* @param string $key
|
52 |
+
* @return Maged_Model_BruteForce_ModelConfigInterface
|
53 |
+
*/
|
54 |
+
public function delete($key);
|
55 |
+
}
|
downloader/Maged/Model/BruteForce/Resource/FTP.php
ADDED
@@ -0,0 +1,115 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
/**
|
4 |
+
* Magento
|
5 |
+
*
|
6 |
+
* NOTICE OF LICENSE
|
7 |
+
*
|
8 |
+
* This source file is subject to the Open Software License (OSL 3.0)
|
9 |
+
* that is bundled with this package in the file LICENSE.txt.
|
10 |
+
* It is also available through the world-wide-web at this URL:
|
11 |
+
* http://opensource.org/licenses/osl-3.0.php
|
12 |
+
* If you did not receive a copy of the license and are unable to
|
13 |
+
* obtain it through the world-wide-web, please send an email
|
14 |
+
* to license@magento.com so we can send you a copy immediately.
|
15 |
+
*
|
16 |
+
* DISCLAIMER
|
17 |
+
*
|
18 |
+
* Do not edit or add to this file if you wish to upgrade Magento to newer
|
19 |
+
* versions in the future. If you wish to customize Magento for your
|
20 |
+
* needs please refer to http://www.magento.com for more information.
|
21 |
+
*
|
22 |
+
* @category Mage
|
23 |
+
* @package Mage_Connect
|
24 |
+
* @copyright Copyright (c) 2006-2016 X.commerce, Inc. and affiliates (http://www.magento.com)
|
25 |
+
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
26 |
+
*/
|
27 |
+
class Maged_Model_BruteForce_Resource_FTP implements Maged_Model_BruteForce_Resource_ResourceInterface
|
28 |
+
{
|
29 |
+
/** @var string */
|
30 |
+
protected $connectionString;
|
31 |
+
/** @var Mage_Connect_Ftp */
|
32 |
+
protected $ftp;
|
33 |
+
/**
|
34 |
+
* @var string
|
35 |
+
*/
|
36 |
+
private $localFilePath;
|
37 |
+
/**
|
38 |
+
* @var string
|
39 |
+
*/
|
40 |
+
private $remoteFilePath;
|
41 |
+
|
42 |
+
/**
|
43 |
+
* FTP constructor.
|
44 |
+
* @param $connectionString
|
45 |
+
* @param $localFilePath
|
46 |
+
* @param $remoteFileName
|
47 |
+
* @throws Exception
|
48 |
+
*/
|
49 |
+
public function __construct($connectionString, $localFilePath, $remoteFileName)
|
50 |
+
{
|
51 |
+
$this->connectionString = $connectionString;
|
52 |
+
$this->ftp = new Mage_Connect_Ftp();
|
53 |
+
$this->localFilePath = $localFilePath;
|
54 |
+
$this->remoteFilePath = $remoteFileName;
|
55 |
+
|
56 |
+
$this->ftp->connect($this->connectionString);
|
57 |
+
}
|
58 |
+
|
59 |
+
/**
|
60 |
+
* @return string
|
61 |
+
*/
|
62 |
+
public function read()
|
63 |
+
{
|
64 |
+
if ($this->isReadable()) {
|
65 |
+
return file_get_contents($this->localFilePath);
|
66 |
+
}
|
67 |
+
return false;
|
68 |
+
}
|
69 |
+
|
70 |
+
/**
|
71 |
+
* @return boolean
|
72 |
+
*/
|
73 |
+
public function isReadable()
|
74 |
+
{
|
75 |
+
return ($this->ftp->get($this->localFilePath, $this->remoteFilePath) === true);
|
76 |
+
}
|
77 |
+
|
78 |
+
public function __destruct()
|
79 |
+
{
|
80 |
+
unlink($this->localFilePath);
|
81 |
+
$this->ftp->close();
|
82 |
+
}
|
83 |
+
|
84 |
+
/**
|
85 |
+
* @param string $content
|
86 |
+
* @return boolean
|
87 |
+
*/
|
88 |
+
public function write($content)
|
89 |
+
{
|
90 |
+
if ($this->isWritable()) {
|
91 |
+
file_put_contents($this->localFilePath, $content);
|
92 |
+
return $this->ftp->upload(
|
93 |
+
$this->remoteFilePath,
|
94 |
+
$this->localFilePath
|
95 |
+
);
|
96 |
+
}
|
97 |
+
return false;
|
98 |
+
}
|
99 |
+
|
100 |
+
/**
|
101 |
+
* @return string
|
102 |
+
*/
|
103 |
+
public function isWritable()
|
104 |
+
{
|
105 |
+
return ($this->isReadable());
|
106 |
+
}
|
107 |
+
|
108 |
+
/**
|
109 |
+
* @return string
|
110 |
+
*/
|
111 |
+
public function getResourcePath()
|
112 |
+
{
|
113 |
+
return $this->remoteFilePath;
|
114 |
+
}
|
115 |
+
}
|
downloader/Maged/Model/BruteForce/Resource/File.php
ADDED
@@ -0,0 +1,91 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
/**
|
4 |
+
* Magento
|
5 |
+
*
|
6 |
+
* NOTICE OF LICENSE
|
7 |
+
*
|
8 |
+
* This source file is subject to the Open Software License (OSL 3.0)
|
9 |
+
* that is bundled with this package in the file LICENSE.txt.
|
10 |
+
* It is also available through the world-wide-web at this URL:
|
11 |
+
* http://opensource.org/licenses/osl-3.0.php
|
12 |
+
* If you did not receive a copy of the license and are unable to
|
13 |
+
* obtain it through the world-wide-web, please send an email
|
14 |
+
* to license@magento.com so we can send you a copy immediately.
|
15 |
+
*
|
16 |
+
* DISCLAIMER
|
17 |
+
*
|
18 |
+
* Do not edit or add to this file if you wish to upgrade Magento to newer
|
19 |
+
* versions in the future. If you wish to customize Magento for your
|
20 |
+
* needs please refer to http://www.magento.com for more information.
|
21 |
+
*
|
22 |
+
* @category Mage
|
23 |
+
* @package Mage_Connect
|
24 |
+
* @copyright Copyright (c) 2006-2016 X.commerce, Inc. and affiliates (http://www.magento.com)
|
25 |
+
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
26 |
+
*/
|
27 |
+
class Maged_Model_BruteForce_Resource_File implements Maged_Model_BruteForce_Resource_ResourceInterface
|
28 |
+
{
|
29 |
+
/** @var string */
|
30 |
+
protected $filePath;
|
31 |
+
/** @var string */
|
32 |
+
protected $displayFileName;
|
33 |
+
|
34 |
+
/**
|
35 |
+
* File constructor.
|
36 |
+
* @param string $filePath
|
37 |
+
* @param displayFileName
|
38 |
+
*/
|
39 |
+
public function __construct($filePath, $displayFileName)
|
40 |
+
{
|
41 |
+
$this->filePath = $filePath;
|
42 |
+
$this->displayFileName = $displayFileName;
|
43 |
+
}
|
44 |
+
|
45 |
+
/**
|
46 |
+
* @return string
|
47 |
+
*/
|
48 |
+
public function read()
|
49 |
+
{
|
50 |
+
if ($this->isReadable()) {
|
51 |
+
return file_get_contents($this->filePath);
|
52 |
+
}
|
53 |
+
return false;
|
54 |
+
}
|
55 |
+
|
56 |
+
/**
|
57 |
+
* @return boolean
|
58 |
+
*/
|
59 |
+
public function isReadable()
|
60 |
+
{
|
61 |
+
return (is_file($this->filePath) and is_readable($this->filePath));
|
62 |
+
}
|
63 |
+
|
64 |
+
/**
|
65 |
+
* @param string $content
|
66 |
+
* @return boolean
|
67 |
+
*/
|
68 |
+
public function write($content)
|
69 |
+
{
|
70 |
+
if ($this->isWritable()) {
|
71 |
+
return (boolean)file_put_contents($this->filePath, $content);
|
72 |
+
}
|
73 |
+
return false;
|
74 |
+
}
|
75 |
+
|
76 |
+
/**
|
77 |
+
* @return string
|
78 |
+
*/
|
79 |
+
public function isWritable()
|
80 |
+
{
|
81 |
+
return (is_file($this->filePath) and is_writable($this->filePath));
|
82 |
+
}
|
83 |
+
|
84 |
+
/**
|
85 |
+
* @return string
|
86 |
+
*/
|
87 |
+
public function getResourcePath()
|
88 |
+
{
|
89 |
+
return $this->displayFileName;
|
90 |
+
}
|
91 |
+
}
|
downloader/Maged/Model/BruteForce/Resource/ResourceInterface.php
ADDED
@@ -0,0 +1,54 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
/**
|
4 |
+
* Magento
|
5 |
+
*
|
6 |
+
* NOTICE OF LICENSE
|
7 |
+
*
|
8 |
+
* This source file is subject to the Open Software License (OSL 3.0)
|
9 |
+
* that is bundled with this package in the file LICENSE.txt.
|
10 |
+
* It is also available through the world-wide-web at this URL:
|
11 |
+
* http://opensource.org/licenses/osl-3.0.php
|
12 |
+
* If you did not receive a copy of the license and are unable to
|
13 |
+
* obtain it through the world-wide-web, please send an email
|
14 |
+
* to license@magento.com so we can send you a copy immediately.
|
15 |
+
*
|
16 |
+
* DISCLAIMER
|
17 |
+
*
|
18 |
+
* Do not edit or add to this file if you wish to upgrade Magento to newer
|
19 |
+
* versions in the future. If you wish to customize Magento for your
|
20 |
+
* needs please refer to http://www.magento.com for more information.
|
21 |
+
*
|
22 |
+
* @category Mage
|
23 |
+
* @package Mage_Connect
|
24 |
+
* @copyright Copyright (c) 2006-2016 X.commerce, Inc. and affiliates (http://www.magento.com)
|
25 |
+
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
26 |
+
*/
|
27 |
+
interface Maged_Model_BruteForce_Resource_ResourceInterface
|
28 |
+
{
|
29 |
+
/**
|
30 |
+
* @return boolean
|
31 |
+
*/
|
32 |
+
public function isReadable();
|
33 |
+
|
34 |
+
/**
|
35 |
+
* @return string
|
36 |
+
*/
|
37 |
+
public function read();
|
38 |
+
|
39 |
+
/**
|
40 |
+
* @return string
|
41 |
+
*/
|
42 |
+
public function isWritable();
|
43 |
+
|
44 |
+
/**
|
45 |
+
* @param string $content
|
46 |
+
* @return boolean
|
47 |
+
*/
|
48 |
+
public function write($content);
|
49 |
+
|
50 |
+
/**
|
51 |
+
* @return string
|
52 |
+
*/
|
53 |
+
public function getResourcePath();
|
54 |
+
}
|
downloader/Maged/Model/Session.php
CHANGED
@@ -83,8 +83,10 @@ class Maged_Model_Session extends Maged_Model
|
|
83 |
|
84 |
/**
|
85 |
* Authentication to downloader
|
|
|
|
|
86 |
*/
|
87 |
-
public function authenticate()
|
88 |
{
|
89 |
if (!$this->_session) {
|
90 |
return $this;
|
@@ -121,7 +123,10 @@ class Maged_Model_Session extends Maged_Model
|
|
121 |
$user = $this->_session->login($_POST['username'], $_POST['password']);
|
122 |
$this->_session->refreshAcl();
|
123 |
if ($this->_checkUserAccess($user)) {
|
|
|
124 |
return $this;
|
|
|
|
|
125 |
}
|
126 |
} catch (Exception $e) {
|
127 |
$this->addMessage('error', $e->getMessage());
|
83 |
|
84 |
/**
|
85 |
* Authentication to downloader
|
86 |
+
* @param Maged_BruteForce_Validator $bruteForceValidator
|
87 |
+
* @return $this
|
88 |
*/
|
89 |
+
public function authenticate(Maged_BruteForce_Validator $bruteForceValidator )
|
90 |
{
|
91 |
if (!$this->_session) {
|
92 |
return $this;
|
123 |
$user = $this->_session->login($_POST['username'], $_POST['password']);
|
124 |
$this->_session->refreshAcl();
|
125 |
if ($this->_checkUserAccess($user)) {
|
126 |
+
$bruteForceValidator->doGoodLogin();
|
127 |
return $this;
|
128 |
+
} else {
|
129 |
+
$bruteForceValidator->doBadLogin();
|
130 |
}
|
131 |
} catch (Exception $e) {
|
132 |
$this->addMessage('error', $e->getMessage());
|
downloader/lib/Mage/Connect/Packager.php
CHANGED
@@ -247,7 +247,8 @@ class Mage_Connect_Packager
|
|
247 |
if (@rmdir($dir)) {
|
248 |
$this->removeEmptyDirectory(dirname($dir), $ftp);
|
249 |
} else {
|
250 |
-
throw new RuntimeException('Failed to delete dir ' . $dir
|
|
|
251 |
}
|
252 |
}
|
253 |
}
|
@@ -275,7 +276,7 @@ class Mage_Connect_Packager
|
|
275 |
$dest = $targetPath . DIRECTORY_SEPARATOR . $filePath . DIRECTORY_SEPARATOR . $fileName;
|
276 |
if(@file_exists($dest)) {
|
277 |
if (!@unlink($dest)) {
|
278 |
-
$failedFiles[] = $dest;
|
279 |
}
|
280 |
}
|
281 |
$this->removeEmptyDirectory(dirname($dest));
|
@@ -308,7 +309,7 @@ class Mage_Connect_Packager
|
|
308 |
foreach ($contents as $file) {
|
309 |
$ftp->delete($file);
|
310 |
if ($ftp->fileExists($file)) {
|
311 |
-
$failedFiles[] = $file;
|
312 |
continue;
|
313 |
}
|
314 |
$this->removeEmptyDirectory(dirname($file), $ftp);
|
@@ -402,14 +403,14 @@ class Mage_Connect_Packager
|
|
402 |
$failedFiles = array();
|
403 |
foreach ($contents as $file) {
|
404 |
$source = $tar . DS . $file;
|
405 |
-
if (file_exists($source) && is_file($source)) {
|
406 |
$args = array(ltrim($file,"/"), $source);
|
407 |
if($modeDir||$modeFile) {
|
408 |
$args[] = $modeDir;
|
409 |
$args[] = $modeFile;
|
410 |
}
|
411 |
if (call_user_func_array(array($ftp,'upload'), $args) === false) {
|
412 |
-
$failedFiles[] = $source;
|
413 |
}
|
414 |
}
|
415 |
}
|
@@ -457,7 +458,7 @@ class Mage_Connect_Packager
|
|
457 |
$filePath = dirname($file);
|
458 |
$source = $tar . DS . $file;
|
459 |
$dest = $targetPath . DS . $filePath . DS . $fileName;
|
460 |
-
if (is_file($source)) {
|
461 |
@copy($source, $dest);
|
462 |
if($modeFile) {
|
463 |
@chmod($dest, $modeFile);
|
@@ -498,7 +499,7 @@ class Mage_Connect_Packager
|
|
498 |
continue;
|
499 |
}
|
500 |
if (!mkdir($targetPath . DS . $dirPath, $modeDir, true)) {
|
501 |
-
$failedDirs[] = $targetPath . DS . $dirPath;
|
502 |
} else {
|
503 |
$createdDirs[] = $targetPath . DS . $dirPath;
|
504 |
}
|
247 |
if (@rmdir($dir)) {
|
248 |
$this->removeEmptyDirectory(dirname($dir), $ftp);
|
249 |
} else {
|
250 |
+
throw new RuntimeException('Failed to delete dir ' . Mage_System_Dirs::getFilteredPath($dir)
|
251 |
+
. "\r\n Check permissions");
|
252 |
}
|
253 |
}
|
254 |
}
|
276 |
$dest = $targetPath . DIRECTORY_SEPARATOR . $filePath . DIRECTORY_SEPARATOR . $fileName;
|
277 |
if(@file_exists($dest)) {
|
278 |
if (!@unlink($dest)) {
|
279 |
+
$failedFiles[] = Mage_System_Dirs::getFilteredPath($dest);
|
280 |
}
|
281 |
}
|
282 |
$this->removeEmptyDirectory(dirname($dest));
|
309 |
foreach ($contents as $file) {
|
310 |
$ftp->delete($file);
|
311 |
if ($ftp->fileExists($file)) {
|
312 |
+
$failedFiles[] = Mage_System_Dirs::getFilteredPath($file);
|
313 |
continue;
|
314 |
}
|
315 |
$this->removeEmptyDirectory(dirname($file), $ftp);
|
403 |
$failedFiles = array();
|
404 |
foreach ($contents as $file) {
|
405 |
$source = $tar . DS . $file;
|
406 |
+
if (file_exists($source) && is_file($source) && $file != '.htaccess') {
|
407 |
$args = array(ltrim($file,"/"), $source);
|
408 |
if($modeDir||$modeFile) {
|
409 |
$args[] = $modeDir;
|
410 |
$args[] = $modeFile;
|
411 |
}
|
412 |
if (call_user_func_array(array($ftp,'upload'), $args) === false) {
|
413 |
+
$failedFiles[] = Mage_System_Dirs::getFilteredPath($source);
|
414 |
}
|
415 |
}
|
416 |
}
|
458 |
$filePath = dirname($file);
|
459 |
$source = $tar . DS . $file;
|
460 |
$dest = $targetPath . DS . $filePath . DS . $fileName;
|
461 |
+
if (is_file($source) && ($fileName != '.htaccess' || !is_file($dest))) {
|
462 |
@copy($source, $dest);
|
463 |
if($modeFile) {
|
464 |
@chmod($dest, $modeFile);
|
499 |
continue;
|
500 |
}
|
501 |
if (!mkdir($targetPath . DS . $dirPath, $modeDir, true)) {
|
502 |
+
$failedDirs[] = Mage_System_Dirs::getFilteredPath($targetPath . DS . $dirPath);
|
503 |
} else {
|
504 |
$createdDirs[] = $targetPath . DS . $dirPath;
|
505 |
}
|
downloader/lib/Mage/HTTP/Client/Curl.php
CHANGED
@@ -373,8 +373,14 @@ implements Mage_HTTP_IClient
|
|
373 |
$uriModified = $this->getModifiedUri($uri, $https);
|
374 |
$this->_ch = curl_init();
|
375 |
$this->curlOption(CURLOPT_URL, $uriModified);
|
376 |
-
$this->curlOption(CURLOPT_SSL_VERIFYPEER,
|
377 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
378 |
$this->getCurlMethodSettings($method, $params, $isAuthorizationRequired);
|
379 |
|
380 |
if(count($this->_headers)) {
|
373 |
$uriModified = $this->getModifiedUri($uri, $https);
|
374 |
$this->_ch = curl_init();
|
375 |
$this->curlOption(CURLOPT_URL, $uriModified);
|
376 |
+
$this->curlOption(CURLOPT_SSL_VERIFYPEER, true);
|
377 |
+
/**
|
378 |
+
* Use value from CURL_SSLVERSION_TLSv1 (available since PHP 5.5)
|
379 |
+
*
|
380 |
+
* @link http://php.net/manual/ru/function.curl-setopt.php
|
381 |
+
*/
|
382 |
+
|
383 |
+
$this->curlOption(CURLOPT_SSLVERSION, 1);
|
384 |
$this->getCurlMethodSettings($method, $params, $isAuthorizationRequired);
|
385 |
|
386 |
if(count($this->_headers)) {
|
downloader/lib/Mage/System/Dirs.php
CHANGED
@@ -84,10 +84,12 @@ class Mage_System_Dirs
|
|
84 |
return true;
|
85 |
}
|
86 |
if($exists && !is_dir($path)) {
|
|
|
87 |
throw new Exception("'{$path}' already exists, should be a dir, not a file!");
|
88 |
}
|
89 |
$out = @mkdir($path, $mode, $recursive);
|
90 |
if(false === $out) {
|
|
|
91 |
throw new Exception("Can't create dir: '{$path}'");
|
92 |
}
|
93 |
return true;
|
@@ -101,4 +103,20 @@ class Mage_System_Dirs
|
|
101 |
}
|
102 |
|
103 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
104 |
}
|
84 |
return true;
|
85 |
}
|
86 |
if($exists && !is_dir($path)) {
|
87 |
+
$path = Mage_System_Dirs::getFilteredPath($path);
|
88 |
throw new Exception("'{$path}' already exists, should be a dir, not a file!");
|
89 |
}
|
90 |
$out = @mkdir($path, $mode, $recursive);
|
91 |
if(false === $out) {
|
92 |
+
$path = Mage_System_Dirs::getFilteredPath($path);
|
93 |
throw new Exception("Can't create dir: '{$path}'");
|
94 |
}
|
95 |
return true;
|
103 |
}
|
104 |
|
105 |
}
|
106 |
+
|
107 |
+
/**
|
108 |
+
* Replace full path to relative
|
109 |
+
*
|
110 |
+
* @param $path
|
111 |
+
* @return string
|
112 |
+
*/
|
113 |
+
public static function getFilteredPath($path)
|
114 |
+
{
|
115 |
+
$dir = pathinfo($_SERVER['SCRIPT_FILENAME'], PATHINFO_DIRNAME);
|
116 |
+
$position = strpos($path, $dir);
|
117 |
+
if ($position !== false && $position < 1) {
|
118 |
+
$path = substr_replace($path, '.', 0, strlen($dir));
|
119 |
+
}
|
120 |
+
return $path;
|
121 |
+
}
|
122 |
}
|
downloader/template/connect/iframe.phtml
CHANGED
@@ -67,7 +67,7 @@ function onSuccess()
|
|
67 |
{
|
68 |
var div = top.$('connect_iframe_success');
|
69 |
if (div) {
|
70 |
-
top.location.
|
71 |
div.style.display = '';
|
72 |
}
|
73 |
}
|
@@ -76,7 +76,7 @@ function onFailure()
|
|
76 |
{
|
77 |
var div = top.$('connect_iframe_failure');
|
78 |
if (div) {
|
79 |
-
top.location.
|
80 |
div.style.display = '';
|
81 |
}
|
82 |
}
|
67 |
{
|
68 |
var div = top.$('connect_iframe_success');
|
69 |
if (div) {
|
70 |
+
top.location.hash = 'connect_iframe_result';
|
71 |
div.style.display = '';
|
72 |
}
|
73 |
}
|
76 |
{
|
77 |
var div = top.$('connect_iframe_failure');
|
78 |
if (div) {
|
79 |
+
top.location.hash = 'connect_iframe_result';
|
80 |
div.style.display = '';
|
81 |
}
|
82 |
}
|
downloader/template/install/download.phtml
CHANGED
@@ -103,6 +103,14 @@
|
|
103 |
</tr>
|
104 |
</table>
|
105 |
<table cellspacing="0" cellpadding="0" class="form-list" id="inst_protocol_panel">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
106 |
<tr>
|
107 |
<td class="label">Host:</td>
|
108 |
<td class="value">
|
103 |
</tr>
|
104 |
</table>
|
105 |
<table cellspacing="0" cellpadding="0" class="form-list" id="inst_protocol_panel">
|
106 |
+
<tr>
|
107 |
+
<td colspan="2">
|
108 |
+
<div class="notice-msg">
|
109 |
+
Remember: all .htaccess file will be skipped if you use FTP to upload.
|
110 |
+
</div>
|
111 |
+
</td>
|
112 |
+
</tr>
|
113 |
+
|
114 |
<tr>
|
115 |
<td class="label">Host:</td>
|
116 |
<td class="value">
|
downloader/template/install/header.phtml
CHANGED
@@ -85,7 +85,7 @@
|
|
85 |
|
86 |
<br/>
|
87 |
<p>
|
88 |
-
Having trouble installing Magento? Check out our <a href="http://www.magentocommerce.com/knowledge-base/entry/magento-installation-
|
89 |
<script type="text/javascript">
|
90 |
$('installation_guide_link').target = "installation_guide";
|
91 |
</script>
|
85 |
|
86 |
<br/>
|
87 |
<p>
|
88 |
+
Having trouble installing Magento? Check out our <a href="http://www.magentocommerce.com/knowledge-base/entry/magento-installation-guide" id="installation_guide_link">Installation Guide</a>
|
89 |
<script type="text/javascript">
|
90 |
$('installation_guide_link').target = "installation_guide";
|
91 |
</script>
|
downloader/template/install/writable.phtml
CHANGED
@@ -35,6 +35,6 @@
|
|
35 |
<button class="form-button" type="button" onclick="location.reload()"><span>Refresh</span></button>
|
36 |
<br/><br/><br/>
|
37 |
<p>To learn more about setting write permissions, please visit <a href="http://www.magentocommerce.com/knowledge-base/entry/magento-installation-guide" target="Install_Help">the Magento community site</a> for further details.</p>
|
38 |
-
<p>Alternatively, if you are a developer and familiar with SVN, you can follow <a href="http://
|
39 |
<?php echo $this->template('install/footer.phtml') ?>
|
40 |
|
35 |
<button class="form-button" type="button" onclick="location.reload()"><span>Refresh</span></button>
|
36 |
<br/><br/><br/>
|
37 |
<p>To learn more about setting write permissions, please visit <a href="http://www.magentocommerce.com/knowledge-base/entry/magento-installation-guide" target="Install_Help">the Magento community site</a> for further details.</p>
|
38 |
+
<p>Alternatively, if you are a developer and familiar with SVN, you can follow <a href="http://magento.com/help/documentation" target="Install_Help">these instructions</a> to check out the latest Magento branch.</p>
|
39 |
<?php echo $this->template('install/footer.phtml') ?>
|
40 |
|
downloader/template/login.phtml
CHANGED
@@ -35,7 +35,7 @@
|
|
35 |
<p><small>Please re-enter your Magento Adminstration Credentials.<br/>Only administrators with full permissions will be able to log in.</small></p>
|
36 |
<table class="form-list">
|
37 |
<tr><td class="label"><label for="username">Username:</label></td><td class="value"><input id="username" name="username" value=""/></td></tr>
|
38 |
-
<tr><td class="label"><label for="password">Password:</label></td><td class="value"><input type="password" id="password" name="password"/></td></tr>
|
39 |
<tr><td></td>
|
40 |
<td class="value"><button type="submit">Log In</button></td></tr>
|
41 |
</table>
|
35 |
<p><small>Please re-enter your Magento Adminstration Credentials.<br/>Only administrators with full permissions will be able to log in.</small></p>
|
36 |
<table class="form-list">
|
37 |
<tr><td class="label"><label for="username">Username:</label></td><td class="value"><input id="username" name="username" value=""/></td></tr>
|
38 |
+
<tr><td class="label"><label for="password">Password:</label></td><td class="value"><input type="password" id="password" name="password" autocomplete="off"/></td></tr>
|
39 |
<tr><td></td>
|
40 |
<td class="value"><button type="submit">Log In</button></td></tr>
|
41 |
</table>
|
downloader/template/settings.phtml
CHANGED
@@ -147,7 +147,7 @@ function changeDeploymentType (element)
|
|
147 |
<tr>
|
148 |
<td class="label">FTP Password:</td>
|
149 |
<td class="value">
|
150 |
-
<input id="ftp_password" name="ftp_password" value="
|
151 |
</td>
|
152 |
</tr>
|
153 |
<tr>
|
147 |
<tr>
|
148 |
<td class="label">FTP Password:</td>
|
149 |
<td class="value">
|
150 |
+
<input id="ftp_password" name="ftp_password" value="" class="input-text" type="password"></input>
|
151 |
</td>
|
152 |
</tr>
|
153 |
<tr>
|
package.xml
CHANGED
@@ -1,18 +1,18 @@
|
|
1 |
<?xml version="1.0"?>
|
2 |
<package>
|
3 |
<name>Mage_Downloader</name>
|
4 |
-
<version>1.9.
|
5 |
<stability>stable</stability>
|
6 |
<license uri="http://opensource.org/licenses/osl-3.0.php">OSL v3.0</license>
|
7 |
<channel>community</channel>
|
8 |
<extends/>
|
9 |
<summary>Magento Downloader</summary>
|
10 |
<description>Magento Downloader</description>
|
11 |
-
<notes>1.9.
|
12 |
<authors><author><name>Magento Core Team</name><user>core</user><email>core@magentocommerce.com</email></author></authors>
|
13 |
-
<date>2016-
|
14 |
-
<time>
|
15 |
-
<contents><target name="mage"><dir name="downloader"><dir name="js"><file name="prototype.js" hash="3766aeff5778b54f74f93670322ca0df"/></dir><dir name="Maged"><dir name="Connect"><file name="Frontend.php" hash="1fe594862033bdaa75e04ca2bdbbff17"/></dir><file name="Connect.php" hash="c5733623d0aa65c0f139f4871cb7fa4f"/><file name="Controller.php" hash="935bc6849724d39acfdf5a8de12d9268"/><file name="Exception.php" hash="a42db400bc39f8bf3b59f72ba97d977f"/><dir name="Model"><dir name="Config"><file name="Abstract.php" hash="a0cf5733571ff2e6290c21364e3f5c24"/><file name="Community.php" hash="a636eb518434ca1dfe8ca1f01bf379fd"/><file name="Interface.php" hash="4d5fab4370d1d139f066bfebc0feb695"/></dir><file name="Config.php" hash="b97bd285b6de78866c30ee0e7789f916"/><dir name="Connect"><file name="Request.php" hash="00448a099046a24ab66fd5182c963114"/></dir><file name="Connect.php" hash="325bd131537d3b88a3f1c6ce7eec7bf1"/><file name="Dowloader.php" hash="1b11353e50d943a105f2a3de69f58bc4"/><file name="Session.php" hash="7b7cf4f320a9235a3be6ebca96ee5ae2"/></dir><file name="Model.php" hash="6cdf4d7f15043aac54102397fa8969df"/><file name="View.php" hash="fbaf1cf8fc0200f90ee1c02f567b7ee8"/><file name=".htaccess" hash="72617d60821288133a367f70bf39ad93"/></dir><dir name="skin"><file name="boxes.css" hash="252cc12205a39279b5c5330e23aad7ac"/><file name="ie7boxes.css" hash="f17d5252a3f67fdbcdb4e9df4f7971fb"/><file name="ieboxes.css" hash="cae83da82fef24e35155fb56b2c4a85f"/><dir name="images"><file name="Magento_Connect.jpg" hash="20e1378c09506fdc5723abc0115d5f57"/><file name="ajax-loader-tr.gif" hash="1ae32bc8232ff2527c627e5b38eb319a"/><file name="btn_bg.gif" hash="37c51a4d48a92da9648dcd3ca011039f"/><file name="header_bg.gif" hash="8440b04c5cb6b1451bb886bfbef260a5"/><file name="logo.gif" hash="5eb089ecea67d82311d7c91898460104"/><file name="nav_bg.gif" hash="1cb1366f03a9efad6b17e4483aef20cf"/><file name="nav_separator.gif" hash="492011a7de2de84a9c7837bfd879ab95"/></dir><dir name="install"><file name="boxes.css" hash="de9a4050805ee8eaee88dc30351170ae"/><file name="clears.css" hash="4d4f27ee5e4fd5d33a9aa192f952d674"/><file name="ie7minus.css" hash="8cc457cdbbe8842902ca91f23a44adf7"/><file name="iestyles.css" hash="f9d8a7f31aa41ce449a2b14eb5e961e9"/><dir name="images"><file name="error_msg_icon.gif" hash="e4f28607f075a105e53fa3113d84bd26"/><file name="footer_bg.gif" hash="d59784af16fd95ea82226e5708a89232"/><file name="footer_container_bg.gif" hash="d468e3943943cbbf711586e69d40ca42"/><file name="footer_info_separator.gif" hash="7da64eefaf4da3855ab6ee76dbced0c2"/><file name="footer_informational_bg.gif" hash="72d37f4b2ea747bf8969c2654ad1d1e0"/><file name="footer_left.gif" hash="2b15a54bea9409a75c142d14a62f0149"/><file name="footer_legality_bg.gif" hash="4eb1602e3369dccd901ffe98ea0fd4b3"/><file name="footer_right.gif" hash="a45eaf35c8797d299bd4d9b936528e8f"/><file name="header_bg.gif" hash="795c6de754d0d49717ed08d5cd8168c8"/><file name="header_nav_bg.gif" hash="80c6a18686eb0243e06d6176506a2502"/><file name="header_top_bg.jpg" hash="143f524392ee62fcc8183f5930d7258b"/><file name="header_top_container_bg.jpg" hash="294c18f3f6b838bba06ae41dd3c3d638"/><file name="logo.gif" hash="073a947a39b967af678455a5c7f66e90"/><file name="main_bg.gif" hash="cf18ba9f7c7e6b058b439cde1a897e9c"/><file name="main_container_bg.gif" hash="a8f5717873dc6cf8f6bd22924b5838fe"/><file name="note_msg_icon.gif" hash="e774ee481a2820789c1a77112377c4e0"/><file name="success_msg_icon.gif" hash="834dfafd5f8b44c4b24a4c00add56fcf"/><file name="validation_advice_bg.gif" hash="b85432906de8985a8b14eeb2dc652d3c"/></dir><file name="reset.css" hash="d10ef7911c66830825b0367b46fc203c"/></dir></dir><dir name="template"><dir name="connect"><file name="iframe.phtml" hash="7184ea4efaefe2e49952e06ebc82b7e4"/><file name="packages.phtml" hash="83fb56d37655a352008a46084f69f29b"/><file name="packages_prepare.phtml" hash="d664da715e3d9e35e51cf51a356d7ad6"/></dir><file name="exception.phtml" hash="446cb7db443dac90fd179e4dc9042208"/><file name="footer.phtml" hash="c19c11172aa91e03e99e387226236ba4"/><file name="header.phtml" hash="cd119717f993edab2532033fd1e7031a"/><file name="index.phtml" hash="af7fd53abba1ceee7931a59727baf1ac"/><dir name="install"><file name="download.phtml" hash="f8cd81dfdad9316ee9cc436a80d034d1"/><file name="footer.phtml" hash="ffd35db4058f3e1612214f2f76b3f445"/><file name="header.phtml" hash="ee4d96860229d06a436457dacbe335b5"/><file name="writable.phtml" hash="1573d8b6e869adf198e7245e2faefdd2"/></dir><file name="login.phtml" hash="f090def42f337e6c0d831606b62d2446"/><file name="messages.phtml" hash="a25f4bd907224f5124b00c166414d2d5"/><file name="noroute.phtml" hash="e3701c3664d76611110209e88d36ea9e"/><file name="settings.phtml" hash="6b2baacc34089a3d0d63bff0132ce261"/><file name="writable.phtml" hash="934410a54bd3fb796c2bfa7e0d011d51"/><file name=".htaccess" hash="72617d60821288133a367f70bf39ad93"/></dir><file name="index.php" hash="2d785a16995da61d6ea03aa9eb130c3a"/><dir name="lib"><dir name="Mage"><dir name="Archive"><file name="Abstract.php" hash="fe932085a8ee80ced42caa531114f1e0"/><file name="Bz.php" hash="d6426ab0a7999ef9829f8f4ad0ae4f65"/><file name="Gz.php" hash="0825c0e8ac799f5071edc5441935b74b"/><dir name="Helper"><dir name="File"><file name="Bz.php" hash="f9bed06826ecc6d6ad55f303ddaf45c7"/><file name="Gz.php" hash="c839c55d72b3ec5c524113222a650936"/></dir><file name="File.php" hash="5fc72860b28ec0c3a9d075d9ec3899f5"/></dir><file name="Interface.php" hash="141a427b2de40a2425f04a59d84a5ac1"/><file name="Tar.php" hash="6c10e519a593c0414dabc848fdb84baf"/></dir><file name="Archive.php" hash="0644f8db11f1c357b7869945cb5bcd53"/><dir name="Autoload"><file name="Simple.php" hash="286dbec2676d0e7537e5d10d63f03b64"/></dir><dir name="Backup"><file name="Abstract.php" hash="bfe563b766fadff97fd363de8c4df8b1"/><dir name="Archive"><file name="Tar.php" hash="c8fe2ced6e6eec732be365c03cca7a1f"/></dir><file name="Db.php" hash="2ec2fe7b4017b861be4d1440627b3c19"/><dir name="Exception"><file name="CantLoadSnapshot.php" hash="8dda1d8fcb58b38f3a6b34fe14c19738"/><file name="FtpConnectionFailed.php" hash="ac9e832b2502a85d87de7ecd24d0a06e"/><file name="FtpValidationFailed.php" hash="38a4d1b979b7aa23ec285d4ed0cfcbdb"/><file name="NotEnoughFreeSpace.php" hash="18730975d2f1eeb8a7f4e95ea783bbf7"/><file name="NotEnoughPermissions.php" hash="30be06ac99390b6c5a2e697583d967e7"/></dir><file name="Exception.php" hash="e50bd4ee85b423143f408252403938f8"/><dir name="Filesystem"><file name="Helper.php" hash="3a50c7daffcd2a32dfade3b056c6e809"/><dir name="Iterator"><file name="File.php" hash="daac2b8602774cb2ca4dcf2cee275375"/><file name="Filter.php" hash="2f2a5a7b993e5ed9e98b444bf01cfc18"/></dir><dir name="Rollback"><file name="Abstract.php" hash="dbd411d64baeb4255fcd68ea8f4a8657"/><file name="Fs.php" hash="05c8e69bdb6cc499ee6d2e9dfe0df806"/><file name="Ftp.php" hash="e52f99c00cc30c52ce9cf82b39df6cc4"/></dir></dir><file name="Filesystem.php" hash="b94ad4d595d0e4ef7c3255cdad1c7ada"/><file name="Interface.php" hash="1bbad039d29cf54675c59764c0baf381"/><file name="Media.php" hash="267a6da8299593324304af34b9016a88"/><file name="Nomedia.php" hash="f59f14a1dac8f40800a6477341c68df8"/><file name="Snapshot.php" hash="e12f7f3819445d6fce43abc9d6a6d249"/></dir><file name="Backup.php" hash="40a2c5a18460690bfb24474e162f58b2"/><dir name="Connect"><file name="Backup.php" hash="2e4d1e2c1fb8f78bc2033fca475c476f"/><dir name="Channel"><file name="Generator.php" hash="ce1306cd397921a92dabc281215ebcf4"/><file name="Parser.php" hash="0ff7c4822bbce0b4390e3e1bec6f4d5d"/><file name="VO.php" hash="e9e715cf8b85960faddaf064f9adcdf0"/></dir><dir name="Command"><file name="Channels.php" hash="3149451cfe1be57bb5cb18b2a9759ec3"/><file name="Channels_Header.php" hash="ad00027c4f5642211ba51d2648931967"/><file name="Config.php" hash="c4aefacf1e0d77b595802700a03b9091"/><file name="Config_Header.php" hash="6308fc5c62ad94c92579e6ba8532764f"/><file name="Install.php" hash="eb7afec2d9b017c40e02561447180cac"/><file name="Install_Header.php" hash="9909984d7cbaedd4433d2638d0c30e55"/><file name="Package.php" hash="19cc7ad69932e84482b87c6c48f8b109"/><file name="Package_Header.php" hash="6783594e2920fcee8c04fdd869ab8dbd"/><file name="Registry.php" hash="623d0f1ab6e7b1c5f8b42bc418db63f8"/><file name="Registry_Header.php" hash="59d72375eac65124fead2e39d65d012e"/><file name="Remote.php" hash="9acf14759e955d7d4bcf5005c59d512f"/><file name="Remote_Header.php" hash="d1e7a277fe5671fb8783100d77bf6517"/></dir><file name="Command.php" hash="6d3eff81db6d7890ed8acf616d0d11a5"/><file name="Config.php" hash="08752165f08baec4736c39c1b2ec6bf7"/><file name="Converter.php" hash="253e0faaf11b3b6ebd4f131b6e194f2b"/><dir name="Frontend"><file name="CLI.php" hash="9640aaca77e3a34934ec543e0bfe8391"/></dir><file name="Frontend.php" hash="1293aa36c6a18cb283a4eee12f7230b5"/><file name="Ftp.php" hash="0323c80694b6acadf93c4a8d0e298a22"/><dir name="Loader"><file name="Ftp.php" hash="2bd56f41f20cbc78725a3ca480f3ecde"/></dir><file name="Loader.php" hash="620b95d854f29f3d7e4d74d192e113a8"/><dir name="Package"><file name="Extension.php" hash="0ff7c4822bbce0b4390e3e1bec6f4d5d"/><file name="Hotfix.php" hash="3964d63fe528ff52445afdbef9a3efce"/><file name="Maintainer.php" hash="0ff7c4822bbce0b4390e3e1bec6f4d5d"/><file name="Reader.php" hash="f4d55460659a19a38f1e29f08aff71a7"/><file name="Target.php" hash="0674dfd23e69adc5832e330d5fb041d8"/><file name="VO.php" hash="1a37cad472e2d61044321b20ed4ceae4"/><file name="Writer.php" hash="fe7b796442aaf844296baeb9c63715a0"/></dir><file name="Package.php" hash="c301c73d327c386776c196390021f7b5"/><file name="Packager.php" hash="af7af012704cced243becf84fa5baba9"/><dir name="Repository"><file name="Abstract.php" hash="0ff7c4822bbce0b4390e3e1bec6f4d5d"/><dir name="Channel"><file name="Abstract.php" hash="0ff7c4822bbce0b4390e3e1bec6f4d5d"/><file name="Commercial.php" hash="0ff7c4822bbce0b4390e3e1bec6f4d5d"/><file name="Community.php" hash="0ff7c4822bbce0b4390e3e1bec6f4d5d"/><file name="Core.php" hash="0ff7c4822bbce0b4390e3e1bec6f4d5d"/></dir><file name="Channel.php" hash="0ff7c4822bbce0b4390e3e1bec6f4d5d"/><file name="Local.php" hash="0ff7c4822bbce0b4390e3e1bec6f4d5d"/></dir><file name="Repository.php" hash="0ff7c4822bbce0b4390e3e1bec6f4d5d"/><dir name="Rest"><file name="Builder.php" hash="1a009de2ca883a6686900e42f28691c3"/><file name="Factory.php" hash="816de1ef0e376e4a610aa0d97600e479"/></dir><file name="Rest.php" hash="3030c97d6128590bea0b7fb704505a99"/><file name="Singleconfig.php" hash="c6572e5c0159a79d12c05b96cd179f90"/><dir name="Structures"><file name="Graph.php" hash="823112810f5ea1c5382079591ebd9282"/><file name="Node.php" hash="089a0a309aedd56f8ef506a613eb92c9"/></dir><file name="Validator.php" hash="085a0fa83fc246d5390fb23b1d330d9e"/></dir><dir name="DB"><file name="Exception.php" hash="df87dc0b525da51748422213e3fdfc34"/><file name="Mysqli.php" hash="c6ff8085cdc797ecd73202a82dc0268d"/></dir><file name="Exception.php" hash="a6044f488f965fa1f35ebe509a1c7cf7"/><dir name="HTTP"><dir name="Client"><file name="Curl.php" hash="3ee84f5f785cf70b17e1ce7853f9654c"/><file name="Socket.php" hash="5183aa4839c4387ff5ea38ffb7fab98c"/></dir><file name="Client.php" hash="a5a702957a0b5a2f45f608dc95bcfdad"/><file name="IClient.php" hash="4412c30e01d49bf54389ecb74afa917e"/></dir><dir name="System"><file name="Args.php" hash="7f596269c4f2c524ba1897c88033186e"/><file name="Dirs.php" hash="3a1c0021175e04a93082e3084e0d1dfb"/><file name="Ftp.php" hash="543f8aa70d392454b6739c3f29396a09"/></dir><dir name="Xml"><file name="Generator.php" hash="dc74586a864fbc9901ae981aec967c99"/><file name="Parser.php" hash="5b6dd20e89f0aa8cda3c24a73df316bb"/></dir></dir><file name=".htaccess" hash="72617d60821288133a367f70bf39ad93"/></dir><file name="config.ini" hash="a52ba98e71ab19de387b3af1a04c6102"/><file name=".htaccess" hash="520cc012c84739584526b8a9ff098e23"/><file name="mage.php" hash="58571168f6ac531be694577b5c106823"/><file name="favicon.ico" hash="88733ee53676a47fc354a61c32516e82"/><file name="target.xml" hash="9037fc86de8dd2aea215ca3c3714e03b"/></dir><dir name="."><file name=".htaccess" hash="deca82965182800d87a097f3111515f1"/><file name="index.php" hash="1cdcc86d7ba78d75ac5a2169301e5f72"/><file name="mage" hash="30b755910b5f0149b0dc14e86475b875"/></dir></target></contents>
|
16 |
<compatible/>
|
17 |
<dependencies><required><php><min>5.2.0</min><max>6.0.0</max></php></required></dependencies>
|
18 |
</package>
|
1 |
<?xml version="1.0"?>
|
2 |
<package>
|
3 |
<name>Mage_Downloader</name>
|
4 |
+
<version>1.9.3.0</version>
|
5 |
<stability>stable</stability>
|
6 |
<license uri="http://opensource.org/licenses/osl-3.0.php">OSL v3.0</license>
|
7 |
<channel>community</channel>
|
8 |
<extends/>
|
9 |
<summary>Magento Downloader</summary>
|
10 |
<description>Magento Downloader</description>
|
11 |
+
<notes>1.9.3.0</notes>
|
12 |
<authors><author><name>Magento Core Team</name><user>core</user><email>core@magentocommerce.com</email></author></authors>
|
13 |
+
<date>2016-10-04</date>
|
14 |
+
<time>13:04:45</time>
|
15 |
+
<contents><target name="mage"><dir name="downloader"><dir name="js"><file name="prototype.js" hash="3766aeff5778b54f74f93670322ca0df"/></dir><dir name="Maged"><dir name="BruteForce"><file name="Validator.php" hash="5bf221ba9f4abe8c454cb5dfb4e8fe61"/></dir><dir name="Connect"><file name="Frontend.php" hash="78a776b53c0fb66d1b76dd3ac2b3fb6a"/></dir><file name="Connect.php" hash="2480fc6a2688a2b24c439ae7eeac73e2"/><file name="Controller.php" hash="bff143dded5ba43f133089e0e25f3e2f"/><file name="Exception.php" hash="a42db400bc39f8bf3b59f72ba97d977f"/><dir name="Model"><dir name="BruteForce"><file name="ConfigIni.php" hash="4fae9ddb08886881c77993ef7b49e785"/><file name="ModelConfigInterface.php" hash="1650a63f84dfbf53b9800bc31fa1f038"/><dir name="Resource"><file name="FTP.php" hash="9a8861eb938c334942d865b0514dbc7b"/><file name="File.php" hash="e9496e7915f14dd863ff13095f9f552d"/><file name="ResourceInterface.php" hash="310041c37da8e98af156d742e5c6b96f"/></dir></dir><dir name="Config"><file name="Abstract.php" hash="a0cf5733571ff2e6290c21364e3f5c24"/><file name="Community.php" hash="a636eb518434ca1dfe8ca1f01bf379fd"/><file name="Interface.php" hash="4d5fab4370d1d139f066bfebc0feb695"/></dir><file name="Config.php" hash="b97bd285b6de78866c30ee0e7789f916"/><dir name="Connect"><file name="Request.php" hash="00448a099046a24ab66fd5182c963114"/></dir><file name="Connect.php" hash="325bd131537d3b88a3f1c6ce7eec7bf1"/><file name="Dowloader.php" hash="1b11353e50d943a105f2a3de69f58bc4"/><file name="Session.php" hash="2df34c95e8c47fc5c219c00edceb34c0"/></dir><file name="Model.php" hash="6cdf4d7f15043aac54102397fa8969df"/><file name="View.php" hash="fbaf1cf8fc0200f90ee1c02f567b7ee8"/><file name=".htaccess" hash="72617d60821288133a367f70bf39ad93"/></dir><dir name="skin"><file name="boxes.css" hash="252cc12205a39279b5c5330e23aad7ac"/><file name="ie7boxes.css" hash="f17d5252a3f67fdbcdb4e9df4f7971fb"/><file name="ieboxes.css" hash="cae83da82fef24e35155fb56b2c4a85f"/><dir name="images"><file name="Magento_Connect.jpg" hash="20e1378c09506fdc5723abc0115d5f57"/><file name="ajax-loader-tr.gif" hash="1ae32bc8232ff2527c627e5b38eb319a"/><file name="btn_bg.gif" hash="37c51a4d48a92da9648dcd3ca011039f"/><file name="header_bg.gif" hash="8440b04c5cb6b1451bb886bfbef260a5"/><file name="logo.gif" hash="5eb089ecea67d82311d7c91898460104"/><file name="nav_bg.gif" hash="1cb1366f03a9efad6b17e4483aef20cf"/><file name="nav_separator.gif" hash="492011a7de2de84a9c7837bfd879ab95"/></dir><dir name="install"><file name="boxes.css" hash="de9a4050805ee8eaee88dc30351170ae"/><file name="clears.css" hash="4d4f27ee5e4fd5d33a9aa192f952d674"/><file name="ie7minus.css" hash="8cc457cdbbe8842902ca91f23a44adf7"/><file name="iestyles.css" hash="f9d8a7f31aa41ce449a2b14eb5e961e9"/><dir name="images"><file name="error_msg_icon.gif" hash="e4f28607f075a105e53fa3113d84bd26"/><file name="footer_bg.gif" hash="d59784af16fd95ea82226e5708a89232"/><file name="footer_container_bg.gif" hash="d468e3943943cbbf711586e69d40ca42"/><file name="footer_info_separator.gif" hash="7da64eefaf4da3855ab6ee76dbced0c2"/><file name="footer_informational_bg.gif" hash="72d37f4b2ea747bf8969c2654ad1d1e0"/><file name="footer_left.gif" hash="2b15a54bea9409a75c142d14a62f0149"/><file name="footer_legality_bg.gif" hash="4eb1602e3369dccd901ffe98ea0fd4b3"/><file name="footer_right.gif" hash="a45eaf35c8797d299bd4d9b936528e8f"/><file name="header_bg.gif" hash="795c6de754d0d49717ed08d5cd8168c8"/><file name="header_nav_bg.gif" hash="80c6a18686eb0243e06d6176506a2502"/><file name="header_top_bg.jpg" hash="143f524392ee62fcc8183f5930d7258b"/><file name="header_top_container_bg.jpg" hash="294c18f3f6b838bba06ae41dd3c3d638"/><file name="logo.gif" hash="073a947a39b967af678455a5c7f66e90"/><file name="main_bg.gif" hash="cf18ba9f7c7e6b058b439cde1a897e9c"/><file name="main_container_bg.gif" hash="a8f5717873dc6cf8f6bd22924b5838fe"/><file name="note_msg_icon.gif" hash="e774ee481a2820789c1a77112377c4e0"/><file name="success_msg_icon.gif" hash="834dfafd5f8b44c4b24a4c00add56fcf"/><file name="validation_advice_bg.gif" hash="b85432906de8985a8b14eeb2dc652d3c"/></dir><file name="reset.css" hash="d10ef7911c66830825b0367b46fc203c"/></dir></dir><dir name="template"><dir name="connect"><file name="iframe.phtml" hash="3f86f07b3cc49aa3add499b5f99a2ceb"/><file name="packages.phtml" hash="83fb56d37655a352008a46084f69f29b"/><file name="packages_prepare.phtml" hash="d664da715e3d9e35e51cf51a356d7ad6"/></dir><file name="exception.phtml" hash="446cb7db443dac90fd179e4dc9042208"/><file name="footer.phtml" hash="c19c11172aa91e03e99e387226236ba4"/><file name="header.phtml" hash="cd119717f993edab2532033fd1e7031a"/><file name="index.phtml" hash="af7fd53abba1ceee7931a59727baf1ac"/><dir name="install"><file name="download.phtml" hash="278ec476e6af69c0ca27efc3a638bc8a"/><file name="footer.phtml" hash="ffd35db4058f3e1612214f2f76b3f445"/><file name="header.phtml" hash="df212cdef481852c3926a96e70e94586"/><file name="writable.phtml" hash="472ff87b5d7158beec57fd6d7fa27f0d"/></dir><file name="login.phtml" hash="9645fca3d92f81ce92ffd184facbbc9c"/><file name="messages.phtml" hash="a25f4bd907224f5124b00c166414d2d5"/><file name="noroute.phtml" hash="e3701c3664d76611110209e88d36ea9e"/><file name="settings.phtml" hash="bb70adcbe7f76d4d6fbb9974a97a2571"/><file name="writable.phtml" hash="934410a54bd3fb796c2bfa7e0d011d51"/><file name=".htaccess" hash="72617d60821288133a367f70bf39ad93"/></dir><file name="index.php" hash="2d785a16995da61d6ea03aa9eb130c3a"/><dir name="lib"><dir name="Mage"><dir name="Archive"><file name="Abstract.php" hash="fe932085a8ee80ced42caa531114f1e0"/><file name="Bz.php" hash="d6426ab0a7999ef9829f8f4ad0ae4f65"/><file name="Gz.php" hash="0825c0e8ac799f5071edc5441935b74b"/><dir name="Helper"><dir name="File"><file name="Bz.php" hash="f9bed06826ecc6d6ad55f303ddaf45c7"/><file name="Gz.php" hash="c839c55d72b3ec5c524113222a650936"/></dir><file name="File.php" hash="5fc72860b28ec0c3a9d075d9ec3899f5"/></dir><file name="Interface.php" hash="141a427b2de40a2425f04a59d84a5ac1"/><file name="Tar.php" hash="6c10e519a593c0414dabc848fdb84baf"/></dir><file name="Archive.php" hash="0644f8db11f1c357b7869945cb5bcd53"/><dir name="Autoload"><file name="Simple.php" hash="286dbec2676d0e7537e5d10d63f03b64"/></dir><dir name="Backup"><file name="Abstract.php" hash="bfe563b766fadff97fd363de8c4df8b1"/><dir name="Archive"><file name="Tar.php" hash="c8fe2ced6e6eec732be365c03cca7a1f"/></dir><file name="Db.php" hash="2ec2fe7b4017b861be4d1440627b3c19"/><dir name="Exception"><file name="CantLoadSnapshot.php" hash="8dda1d8fcb58b38f3a6b34fe14c19738"/><file name="FtpConnectionFailed.php" hash="ac9e832b2502a85d87de7ecd24d0a06e"/><file name="FtpValidationFailed.php" hash="38a4d1b979b7aa23ec285d4ed0cfcbdb"/><file name="NotEnoughFreeSpace.php" hash="18730975d2f1eeb8a7f4e95ea783bbf7"/><file name="NotEnoughPermissions.php" hash="30be06ac99390b6c5a2e697583d967e7"/></dir><file name="Exception.php" hash="e50bd4ee85b423143f408252403938f8"/><dir name="Filesystem"><file name="Helper.php" hash="3a50c7daffcd2a32dfade3b056c6e809"/><dir name="Iterator"><file name="File.php" hash="daac2b8602774cb2ca4dcf2cee275375"/><file name="Filter.php" hash="2f2a5a7b993e5ed9e98b444bf01cfc18"/></dir><dir name="Rollback"><file name="Abstract.php" hash="dbd411d64baeb4255fcd68ea8f4a8657"/><file name="Fs.php" hash="05c8e69bdb6cc499ee6d2e9dfe0df806"/><file name="Ftp.php" hash="e52f99c00cc30c52ce9cf82b39df6cc4"/></dir></dir><file name="Filesystem.php" hash="b94ad4d595d0e4ef7c3255cdad1c7ada"/><file name="Interface.php" hash="1bbad039d29cf54675c59764c0baf381"/><file name="Media.php" hash="267a6da8299593324304af34b9016a88"/><file name="Nomedia.php" hash="f59f14a1dac8f40800a6477341c68df8"/><file name="Snapshot.php" hash="e12f7f3819445d6fce43abc9d6a6d249"/></dir><file name="Backup.php" hash="40a2c5a18460690bfb24474e162f58b2"/><dir name="Connect"><file name="Backup.php" hash="2e4d1e2c1fb8f78bc2033fca475c476f"/><dir name="Channel"><file name="Generator.php" hash="ce1306cd397921a92dabc281215ebcf4"/><file name="Parser.php" hash="0ff7c4822bbce0b4390e3e1bec6f4d5d"/><file name="VO.php" hash="e9e715cf8b85960faddaf064f9adcdf0"/></dir><dir name="Command"><file name="Channels.php" hash="3149451cfe1be57bb5cb18b2a9759ec3"/><file name="Channels_Header.php" hash="ad00027c4f5642211ba51d2648931967"/><file name="Config.php" hash="c4aefacf1e0d77b595802700a03b9091"/><file name="Config_Header.php" hash="6308fc5c62ad94c92579e6ba8532764f"/><file name="Install.php" hash="eb7afec2d9b017c40e02561447180cac"/><file name="Install_Header.php" hash="9909984d7cbaedd4433d2638d0c30e55"/><file name="Package.php" hash="19cc7ad69932e84482b87c6c48f8b109"/><file name="Package_Header.php" hash="6783594e2920fcee8c04fdd869ab8dbd"/><file name="Registry.php" hash="623d0f1ab6e7b1c5f8b42bc418db63f8"/><file name="Registry_Header.php" hash="59d72375eac65124fead2e39d65d012e"/><file name="Remote.php" hash="9acf14759e955d7d4bcf5005c59d512f"/><file name="Remote_Header.php" hash="d1e7a277fe5671fb8783100d77bf6517"/></dir><file name="Command.php" hash="6d3eff81db6d7890ed8acf616d0d11a5"/><file name="Config.php" hash="08752165f08baec4736c39c1b2ec6bf7"/><file name="Converter.php" hash="253e0faaf11b3b6ebd4f131b6e194f2b"/><dir name="Frontend"><file name="CLI.php" hash="9640aaca77e3a34934ec543e0bfe8391"/></dir><file name="Frontend.php" hash="1293aa36c6a18cb283a4eee12f7230b5"/><file name="Ftp.php" hash="0323c80694b6acadf93c4a8d0e298a22"/><dir name="Loader"><file name="Ftp.php" hash="2bd56f41f20cbc78725a3ca480f3ecde"/></dir><file name="Loader.php" hash="620b95d854f29f3d7e4d74d192e113a8"/><dir name="Package"><file name="Extension.php" hash="0ff7c4822bbce0b4390e3e1bec6f4d5d"/><file name="Hotfix.php" hash="3964d63fe528ff52445afdbef9a3efce"/><file name="Maintainer.php" hash="0ff7c4822bbce0b4390e3e1bec6f4d5d"/><file name="Reader.php" hash="f4d55460659a19a38f1e29f08aff71a7"/><file name="Target.php" hash="0674dfd23e69adc5832e330d5fb041d8"/><file name="VO.php" hash="1a37cad472e2d61044321b20ed4ceae4"/><file name="Writer.php" hash="fe7b796442aaf844296baeb9c63715a0"/></dir><file name="Package.php" hash="c301c73d327c386776c196390021f7b5"/><file name="Packager.php" hash="2bf37ef15e8f6160f01a1905888241fa"/><dir name="Repository"><file name="Abstract.php" hash="0ff7c4822bbce0b4390e3e1bec6f4d5d"/><dir name="Channel"><file name="Abstract.php" hash="0ff7c4822bbce0b4390e3e1bec6f4d5d"/><file name="Commercial.php" hash="0ff7c4822bbce0b4390e3e1bec6f4d5d"/><file name="Community.php" hash="0ff7c4822bbce0b4390e3e1bec6f4d5d"/><file name="Core.php" hash="0ff7c4822bbce0b4390e3e1bec6f4d5d"/></dir><file name="Channel.php" hash="0ff7c4822bbce0b4390e3e1bec6f4d5d"/><file name="Local.php" hash="0ff7c4822bbce0b4390e3e1bec6f4d5d"/></dir><file name="Repository.php" hash="0ff7c4822bbce0b4390e3e1bec6f4d5d"/><dir name="Rest"><file name="Builder.php" hash="1a009de2ca883a6686900e42f28691c3"/><file name="Factory.php" hash="816de1ef0e376e4a610aa0d97600e479"/></dir><file name="Rest.php" hash="3030c97d6128590bea0b7fb704505a99"/><file name="Singleconfig.php" hash="c6572e5c0159a79d12c05b96cd179f90"/><dir name="Structures"><file name="Graph.php" hash="823112810f5ea1c5382079591ebd9282"/><file name="Node.php" hash="089a0a309aedd56f8ef506a613eb92c9"/></dir><file name="Validator.php" hash="085a0fa83fc246d5390fb23b1d330d9e"/></dir><dir name="DB"><file name="Exception.php" hash="df87dc0b525da51748422213e3fdfc34"/><file name="Mysqli.php" hash="c6ff8085cdc797ecd73202a82dc0268d"/></dir><file name="Exception.php" hash="a6044f488f965fa1f35ebe509a1c7cf7"/><dir name="HTTP"><dir name="Client"><file name="Curl.php" hash="ba4efbea8341d085f295378e4c784458"/><file name="Socket.php" hash="5183aa4839c4387ff5ea38ffb7fab98c"/></dir><file name="Client.php" hash="a5a702957a0b5a2f45f608dc95bcfdad"/><file name="IClient.php" hash="4412c30e01d49bf54389ecb74afa917e"/></dir><dir name="System"><file name="Args.php" hash="7f596269c4f2c524ba1897c88033186e"/><file name="Dirs.php" hash="e204ece33cf1eac95f9d37f4f4dfb11a"/><file name="Ftp.php" hash="543f8aa70d392454b6739c3f29396a09"/></dir><dir name="Xml"><file name="Generator.php" hash="dc74586a864fbc9901ae981aec967c99"/><file name="Parser.php" hash="5b6dd20e89f0aa8cda3c24a73df316bb"/></dir></dir><file name=".htaccess" hash="72617d60821288133a367f70bf39ad93"/></dir><file name="config.ini" hash="a52ba98e71ab19de387b3af1a04c6102"/><file name=".htaccess" hash="520cc012c84739584526b8a9ff098e23"/><file name="mage.php" hash="58571168f6ac531be694577b5c106823"/><file name="favicon.ico" hash="88733ee53676a47fc354a61c32516e82"/><file name="target.xml" hash="9037fc86de8dd2aea215ca3c3714e03b"/></dir><dir name="."><file name=".htaccess" hash="242b96ab8c820ff12b9e610a8f4352ec"/><file name="index.php" hash="1cdcc86d7ba78d75ac5a2169301e5f72"/><file name="mage" hash="30b755910b5f0149b0dc14e86475b875"/></dir></target></contents>
|
16 |
<compatible/>
|
17 |
<dependencies><required><php><min>5.2.0</min><max>6.0.0</max></php></required></dependencies>
|
18 |
</package>
|