Version Notes
stable release
Download this release
Release Info
Developer | Jurij |
Extension | ET_IpSecurity |
Version | 2.3.0 |
Comparing to | |
See all releases |
Code changes from version 2.2.0 to 2.3.0
app/code/community/ET/IpSecurity/Model/IpVariable.php
CHANGED
@@ -20,13 +20,16 @@
|
|
20 |
/**
|
21 |
* Class ET_IpSecurity_Model_IpVariable
|
22 |
*/
|
23 |
-
class ET_IpSecurity_Model_IpVariable
|
24 |
{
|
|
|
|
|
|
|
25 |
/**
|
26 |
* Option getter
|
27 |
* @return array
|
28 |
*/
|
29 |
-
public function
|
30 |
{
|
31 |
if (is_null($this->_options)) {
|
32 |
$this->_options = array(
|
@@ -56,22 +59,28 @@ class ET_IpSecurity_Model_IpVariable extends Mage_Eav_Model_Entity_Attribute_Sou
|
|
56 |
}
|
57 |
|
58 |
/**
|
|
|
|
|
59 |
* @return array
|
60 |
*/
|
61 |
public function getOptionArray()
|
62 |
{
|
63 |
$_options = array();
|
64 |
-
foreach ($this->
|
65 |
$_options[$option['value']] = $option['label'];
|
66 |
}
|
67 |
return $_options;
|
68 |
}
|
69 |
|
|
|
70 |
/**
|
|
|
|
|
71 |
* @return array
|
72 |
*/
|
73 |
-
public function
|
74 |
{
|
75 |
return $this->getOptionArray();
|
76 |
}
|
|
|
77 |
}
|
20 |
/**
|
21 |
* Class ET_IpSecurity_Model_IpVariable
|
22 |
*/
|
23 |
+
class ET_IpSecurity_Model_IpVariable
|
24 |
{
|
25 |
+
|
26 |
+
protected $_options;
|
27 |
+
|
28 |
/**
|
29 |
* Option getter
|
30 |
* @return array
|
31 |
*/
|
32 |
+
public function toOptionArray()
|
33 |
{
|
34 |
if (is_null($this->_options)) {
|
35 |
$this->_options = array(
|
59 |
}
|
60 |
|
61 |
/**
|
62 |
+
* Get options in "key-value" format
|
63 |
+
*
|
64 |
* @return array
|
65 |
*/
|
66 |
public function getOptionArray()
|
67 |
{
|
68 |
$_options = array();
|
69 |
+
foreach ($this->toOptionArray() as $option) {
|
70 |
$_options[$option['value']] = $option['label'];
|
71 |
}
|
72 |
return $_options;
|
73 |
}
|
74 |
|
75 |
+
|
76 |
/**
|
77 |
+
* Options getter
|
78 |
+
*
|
79 |
* @return array
|
80 |
*/
|
81 |
+
public function toArray()
|
82 |
{
|
83 |
return $this->getOptionArray();
|
84 |
}
|
85 |
+
|
86 |
}
|
app/code/community/ET/IpSecurity/Model/Observer.php
CHANGED
@@ -24,6 +24,16 @@ class ET_IpSecurity_Model_Observer
|
|
24 |
{
|
25 |
const TOKEN_COOKIE_NAME = 'ipsecurity_token';
|
26 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
27 |
protected $_redirectPage = null;
|
28 |
protected $_redirectBlank = null;
|
29 |
protected $_rawAllowIpData = null;
|
@@ -59,6 +69,30 @@ class ET_IpSecurity_Model_Observer
|
|
59 |
$this->_processIpCheck($observer);
|
60 |
}
|
61 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
62 |
/**
|
63 |
* If loading Admin
|
64 |
*
|
@@ -200,14 +234,16 @@ class ET_IpSecurity_Model_Observer
|
|
200 |
protected function _processIpCheck($observer)
|
201 |
{
|
202 |
$currentIp = $this->getCurrentIp();
|
|
|
|
|
|
|
|
|
|
|
203 |
$allowIps = $this->_ipTextToArray($this->_rawAllowIpData);
|
204 |
$blockIps = $this->_ipTextToArray($this->_rawBlockIpData);
|
205 |
|
206 |
$allow = $this->isIpAllowed($currentIp, $allowIps, $blockIps);
|
207 |
|
208 |
-
//FOR DEBUG TESTING Token Access !!!! REMOVE AFTER TEST
|
209 |
-
//$allow = false;
|
210 |
-
|
211 |
if (!$allow) {
|
212 |
$allow = $this->_checkSecurityTokenAccess($observer);
|
213 |
}
|
@@ -404,9 +440,9 @@ class ET_IpSecurity_Model_Observer
|
|
404 |
);
|
405 |
|
406 |
$ipTokenLogModel->setData('create_time', now());
|
407 |
-
|
408 |
$helper->log('_addTokenLog():');
|
409 |
-
$helper->log('url: '
|
410 |
|
411 |
$ipTokenLogModel->setData('blocked_from', $fullUrl);
|
412 |
|
@@ -496,14 +532,16 @@ class ET_IpSecurity_Model_Observer
|
|
496 |
*/
|
497 |
protected function _processAllowDeny($allow, $currentIp)
|
498 |
{
|
499 |
-
//TODO: Refactoring?
|
500 |
$currentPage = $this->trimTrailingSlashes(Mage::helper('core/url')->getCurrentUrl());
|
501 |
// searching for CMS page storeId
|
502 |
-
// if we don't do it - we have loop in redirect with setting Add Store Code to Urls = Yes
|
503 |
// (block access to admin redirects to admin)
|
504 |
$pageStoreId = $this->getPageStoreId();
|
505 |
-
|
506 |
-
|
|
|
|
|
|
|
|
|
507 |
$scope = $this->_getScopeName();
|
508 |
|
509 |
if (!strlen($this->_redirectPage) && !$this->_isDownloader) {
|
@@ -568,42 +606,42 @@ class ET_IpSecurity_Model_Observer
|
|
568 |
/**
|
569 |
* Get store id of target redirect cms page
|
570 |
*
|
571 |
-
* @return int
|
572 |
*/
|
|
|
573 |
public function getPageStoreId()
|
574 |
{
|
575 |
-
$
|
576 |
-
$
|
577 |
-
|
578 |
-
|
579 |
-
|
580 |
-
|
581 |
-
|
582 |
-
|
583 |
-
|
584 |
-
|
585 |
-
|
586 |
-
|
587 |
-
|
588 |
-
|
589 |
-
|
590 |
-
|
591 |
-
|
592 |
-
|
593 |
-
|
594 |
-
|
595 |
-
|
596 |
-
foreach ($pageStoreIds as $pageStoreId) {
|
597 |
-
if ($pageStoreId > 0) {
|
598 |
-
break;
|
599 |
}
|
600 |
}
|
601 |
-
|
602 |
-
|
603 |
-
|
604 |
-
|
|
|
605 |
}
|
606 |
-
|
|
|
607 |
}
|
608 |
|
609 |
|
@@ -826,6 +864,21 @@ class ET_IpSecurity_Model_Observer
|
|
826 |
default:
|
827 |
$result = $currentIp;
|
828 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
829 |
return $result;
|
830 |
}
|
831 |
|
24 |
{
|
25 |
const TOKEN_COOKIE_NAME = 'ipsecurity_token';
|
26 |
|
27 |
+
/**
|
28 |
+
* Rss with admin authentication
|
29 |
+
* @var array
|
30 |
+
*/
|
31 |
+
protected $_requestPathList = array(
|
32 |
+
'/rss/order/new',
|
33 |
+
'/rss/catalog/notifystock',
|
34 |
+
'/rss/catalog/review'
|
35 |
+
);
|
36 |
+
|
37 |
protected $_redirectPage = null;
|
38 |
protected $_redirectBlank = null;
|
39 |
protected $_rawAllowIpData = null;
|
69 |
$this->_processIpCheck($observer);
|
70 |
}
|
71 |
|
72 |
+
/**
|
73 |
+
* If loading Frontend and router is "rss"
|
74 |
+
*
|
75 |
+
* Event: controller_front_init_routers
|
76 |
+
* @param Varien_Event_Observer $observer
|
77 |
+
*/
|
78 |
+
public function onLoadingRss($observer)
|
79 |
+
{
|
80 |
+
foreach ($this->_requestPathList as $pattern) {
|
81 |
+
if (strpos(Mage::app()->getRequest()->getPathInfo(), $pattern) !== false) {
|
82 |
+
/** @var ET_IpSecurity_Helper_Data $helper */
|
83 |
+
$helper = Mage::helper('etipsecurity');
|
84 |
+
$helper->log('onLoadingRss()');
|
85 |
+
|
86 |
+
$eventName = (string)$observer->getEvent()->getName();
|
87 |
+
$helper->log('event Name: ' . $eventName);
|
88 |
+
|
89 |
+
$this->_readAdminConfig();
|
90 |
+
$this->_readTokenConfig();
|
91 |
+
$this->_processIpCheck($observer);
|
92 |
+
}
|
93 |
+
}
|
94 |
+
}
|
95 |
+
|
96 |
/**
|
97 |
* If loading Admin
|
98 |
*
|
234 |
protected function _processIpCheck($observer)
|
235 |
{
|
236 |
$currentIp = $this->getCurrentIp();
|
237 |
+
//error or IPv6 or localhost
|
238 |
+
if (is_null($currentIp) || $currentIp === "127.0.0.1") {
|
239 |
+
return $this;
|
240 |
+
}
|
241 |
+
|
242 |
$allowIps = $this->_ipTextToArray($this->_rawAllowIpData);
|
243 |
$blockIps = $this->_ipTextToArray($this->_rawBlockIpData);
|
244 |
|
245 |
$allow = $this->isIpAllowed($currentIp, $allowIps, $blockIps);
|
246 |
|
|
|
|
|
|
|
247 |
if (!$allow) {
|
248 |
$allow = $this->_checkSecurityTokenAccess($observer);
|
249 |
}
|
440 |
);
|
441 |
|
442 |
$ipTokenLogModel->setData('create_time', now());
|
443 |
+
|
444 |
$helper->log('_addTokenLog():');
|
445 |
+
$helper->log('url: ' . $fullUrl);
|
446 |
|
447 |
$ipTokenLogModel->setData('blocked_from', $fullUrl);
|
448 |
|
532 |
*/
|
533 |
protected function _processAllowDeny($allow, $currentIp)
|
534 |
{
|
|
|
535 |
$currentPage = $this->trimTrailingSlashes(Mage::helper('core/url')->getCurrentUrl());
|
536 |
// searching for CMS page storeId
|
|
|
537 |
// (block access to admin redirects to admin)
|
538 |
$pageStoreId = $this->getPageStoreId();
|
539 |
+
if ($pageStoreId !== false) {
|
540 |
+
$this->_redirectPage = Mage::getUrl(null, array('_direct' => $this->_redirectPage, "_store" => $pageStoreId));
|
541 |
+
} else {
|
542 |
+
//no active page to redirect - redirecting to no-route
|
543 |
+
$this->_redirectPage = Mage::getUrl('no-route', array("_store" => $pageStoreId));
|
544 |
+
}
|
545 |
$scope = $this->_getScopeName();
|
546 |
|
547 |
if (!strlen($this->_redirectPage) && !$this->_isDownloader) {
|
606 |
/**
|
607 |
* Get store id of target redirect cms page
|
608 |
*
|
609 |
+
* @return int|
|
610 |
*/
|
611 |
+
|
612 |
public function getPageStoreId()
|
613 |
{
|
614 |
+
/* @var $cmsPage Mage_Cms_Model_Page */
|
615 |
+
$cmsPage = Mage::getModel('cms/page');
|
616 |
+
$storeId = Mage::app()->getStore()->getId();
|
617 |
+
|
618 |
+
//if current store is Admin
|
619 |
+
if ($storeId == 0) {
|
620 |
+
if (isset($_SERVER["SERVER_NAME"])) {
|
621 |
+
/** @var Mage_Core_Model_Store $store */
|
622 |
+
foreach (Mage::app()->getStores() as $store) {
|
623 |
+
$url = $store->getBaseUrl(Mage_Core_Model_Store::URL_TYPE_WEB, false);
|
624 |
+
//domain check
|
625 |
+
if (strpos($url, $_SERVER["SERVER_NAME"]) !== false) {
|
626 |
+
$redirectPage = $this->trimTrailingSlashes(
|
627 |
+
Mage::getStoreConfig('etipsecurity/ipsecurityadmin/redirect_page', $store->getId()));
|
628 |
+
//store have that page
|
629 |
+
if ($cmsPage->checkIdentifier($redirectPage, $store->getId())) {
|
630 |
+
$this->_redirectPage = $redirectPage;
|
631 |
+
return $store->getId();
|
632 |
+
}
|
633 |
+
}
|
634 |
+
}
|
|
|
|
|
|
|
635 |
}
|
636 |
}
|
637 |
+
//check identifier check page on active and specified store
|
638 |
+
$pageId = $cmsPage->checkIdentifier($this->_redirectPage, $storeId);
|
639 |
+
if ($pageId > 0) {
|
640 |
+
//current store id
|
641 |
+
return $storeId;
|
642 |
}
|
643 |
+
//no active redirect page for current store
|
644 |
+
return false;
|
645 |
}
|
646 |
|
647 |
|
864 |
default:
|
865 |
$result = $currentIp;
|
866 |
}
|
867 |
+
//IPv6 127.0.0.1
|
868 |
+
if ($result == "::1") {
|
869 |
+
$result = "127.0.0.1";
|
870 |
+
} elseif (substr_count($result, ':') > 0) {
|
871 |
+
//finding ipv4 part
|
872 |
+
$ipVFourArray = explode(".", $result);
|
873 |
+
//IPv4-compatible IPv6
|
874 |
+
if (count($ipVFourArray) == 4) {
|
875 |
+
$ipVFourArray[0] = array_pop(explode(":", $ipVFourArray[0]));
|
876 |
+
return implode(".", $ipVFourArray);
|
877 |
+
}
|
878 |
+
//no real ip4 address
|
879 |
+
return null;
|
880 |
+
}
|
881 |
+
|
882 |
return $result;
|
883 |
}
|
884 |
|
app/code/community/ET/IpSecurity/etc/config.xml
CHANGED
@@ -23,7 +23,7 @@
|
|
23 |
<modules>
|
24 |
<ET_IpSecurity>
|
25 |
<name>ET Ip Security</name>
|
26 |
-
<version>2.
|
27 |
<descr>
|
28 |
<ru_RU><![CDATA[Модуль позволяет ограничивать доступ к сайту посетителям по IP, IP маскам или диапозону IP.
|
29 |
<br>При срабатывании правила перенаправляет посетителя на указанную CMS страницу или просто на пустую страницу.
|
@@ -161,6 +161,11 @@
|
|
161 |
<class>etipsecurity/observer</class>
|
162 |
<method>onLoadingDownloader</method>
|
163 |
</ET_IpSecurity_observer>
|
|
|
|
|
|
|
|
|
|
|
164 |
</observers>
|
165 |
</controller_front_init_routers>
|
166 |
</events>
|
23 |
<modules>
|
24 |
<ET_IpSecurity>
|
25 |
<name>ET Ip Security</name>
|
26 |
+
<version>2.3.0</version>
|
27 |
<descr>
|
28 |
<ru_RU><![CDATA[Модуль позволяет ограничивать доступ к сайту посетителям по IP, IP маскам или диапозону IP.
|
29 |
<br>При срабатывании правила перенаправляет посетителя на указанную CMS страницу или просто на пустую страницу.
|
161 |
<class>etipsecurity/observer</class>
|
162 |
<method>onLoadingDownloader</method>
|
163 |
</ET_IpSecurity_observer>
|
164 |
+
<ET_IpSecurity_observer_rss>
|
165 |
+
<type>singleton</type>
|
166 |
+
<class>etipsecurity/observer</class>
|
167 |
+
<method>onLoadingRss</method>
|
168 |
+
</ET_IpSecurity_observer_rss>
|
169 |
</observers>
|
170 |
</controller_front_init_routers>
|
171 |
</events>
|
package.xml
CHANGED
@@ -1,7 +1,7 @@
|
|
1 |
<?xml version="1.0"?>
|
2 |
<package>
|
3 |
<name>ET_IpSecurity</name>
|
4 |
-
<version>2.
|
5 |
<stability>stable</stability>
|
6 |
<license uri="http://shop.etwebsolutions.com/eng/etws-license-free-v1">ETWS Free License (EFL1)</license>
|
7 |
<channel>community</channel>
|
@@ -10,9 +10,9 @@
|
|
10 |
<description>IP Security can restrict access to website by IP address or IP masks. When restrict rule is triggered, customer gets redirected to CMS page specified in settings or just blank page. You can get notifications about triggered rules by email. There is also opportunity to switch your website off for maintenance.</description>
|
11 |
<notes>stable release</notes>
|
12 |
<authors><author><name>Jurij</name><user>niro</user><email>support@etwebsolutions.com</email></author><author><name>Andrej</name><user>zlojd</user><email>support@etwebsolutions.com</email></author></authors>
|
13 |
-
<date>
|
14 |
-
<time>
|
15 |
-
<contents><target name="magecommunity"><dir name="ET"><dir name="IpSecurity"><dir name="Block"><dir name="Adminhtml"><file name="GetIpInfo.php" hash="ea909a6464f2431531548b504caa8746"/><dir name="Log"><file name="Grid.php" hash="22786f39900c84f41e68515e10c988d2"/><dir name="Renderer"><file name="Translaterule.php" hash="2ef4acf4a351e2f6b5a9ab649d1d9fe0"/></dir></dir><file name="Log.php" hash="3a1f843ff4f17dd2d2dafb9097217461"/><file name="Support.php" hash="5995c5add23eedf7eaada7460436d3bc"/><dir name="System"><dir name="Config"><dir name="Form"><dir name="Field"><dir name="Admin"><file name="Link.php" hash="acccb0a8f76604aea233a3572a367344"/></dir><file name="Link.php" hash="30cbb66b7afed00304570a6bd3fe8170"/><dir name="Token"><file name="Button.php" hash="7f4c6b038036faa3fbc41f0f331f245e"/><dir name="Update"><file name="Date.php" hash="7f27a876527c548cc4e1bc8dfe9a8c2b"/></dir></dir></dir></dir></dir></dir><dir name="Token"><dir name="Log"><file name="Grid.php" hash="29c85a75c5e84816ede1c6ea958855a4"/></dir><file name="Log.php" hash="cec3b21af090a7360401813d71e72c19"/></dir></dir></dir><dir name="Helper"><file name="Data.php" hash="42365704bdf72131af088aae2da0f7e6"/></dir><dir name="Model"><file name="IpVariable.php" hash="
|
16 |
<compatible/>
|
17 |
-
<dependencies><required><php><min>5.0.0</min><max>
|
18 |
</package>
|
1 |
<?xml version="1.0"?>
|
2 |
<package>
|
3 |
<name>ET_IpSecurity</name>
|
4 |
+
<version>2.3.0</version>
|
5 |
<stability>stable</stability>
|
6 |
<license uri="http://shop.etwebsolutions.com/eng/etws-license-free-v1">ETWS Free License (EFL1)</license>
|
7 |
<channel>community</channel>
|
10 |
<description>IP Security can restrict access to website by IP address or IP masks. When restrict rule is triggered, customer gets redirected to CMS page specified in settings or just blank page. You can get notifications about triggered rules by email. There is also opportunity to switch your website off for maintenance.</description>
|
11 |
<notes>stable release</notes>
|
12 |
<authors><author><name>Jurij</name><user>niro</user><email>support@etwebsolutions.com</email></author><author><name>Andrej</name><user>zlojd</user><email>support@etwebsolutions.com</email></author></authors>
|
13 |
+
<date>2017-02-08</date>
|
14 |
+
<time>09:04:49</time>
|
15 |
+
<contents><target name="magecommunity"><dir name="ET"><dir name="IpSecurity"><dir name="Block"><dir name="Adminhtml"><file name="GetIpInfo.php" hash="ea909a6464f2431531548b504caa8746"/><dir name="Log"><file name="Grid.php" hash="22786f39900c84f41e68515e10c988d2"/><dir name="Renderer"><file name="Translaterule.php" hash="2ef4acf4a351e2f6b5a9ab649d1d9fe0"/></dir></dir><file name="Log.php" hash="3a1f843ff4f17dd2d2dafb9097217461"/><file name="Support.php" hash="5995c5add23eedf7eaada7460436d3bc"/><dir name="System"><dir name="Config"><dir name="Form"><dir name="Field"><dir name="Admin"><file name="Link.php" hash="acccb0a8f76604aea233a3572a367344"/></dir><file name="Link.php" hash="30cbb66b7afed00304570a6bd3fe8170"/><dir name="Token"><file name="Button.php" hash="7f4c6b038036faa3fbc41f0f331f245e"/><dir name="Update"><file name="Date.php" hash="7f27a876527c548cc4e1bc8dfe9a8c2b"/></dir></dir></dir></dir></dir></dir><dir name="Token"><dir name="Log"><file name="Grid.php" hash="29c85a75c5e84816ede1c6ea958855a4"/></dir><file name="Log.php" hash="cec3b21af090a7360401813d71e72c19"/></dir></dir></dir><dir name="Helper"><file name="Data.php" hash="42365704bdf72131af088aae2da0f7e6"/></dir><dir name="Model"><file name="IpVariable.php" hash="b93031381f2b600dc717ed701a7c66b1"/><file name="Ipsecuritylog.php" hash="f231196b4baddf2631e5bd04fadf566f"/><file name="Iptokenlog.php" hash="9665497c5d30d4e2a57b4e17368120e9"/><dir name="Mysql4"><dir name="Ipsecuritylog"><file name="Collection.php" hash="639d0518f5c4591a361bca726a64199c"/></dir><file name="Ipsecuritylog.php" hash="276e615ba49454754ee4210394953172"/><dir name="Iptokenlog"><file name="Collection.php" hash="e7e40abc9e7e761fb821889752a97084"/></dir><file name="Iptokenlog.php" hash="030285c846fdc9c1900a2fae98cd9657"/></dir><file name="Observer.php" hash="bb05641e340e077ba764c0141ba4e8d0"/><dir name="System"><dir name="Config"><dir name="Source"><dir name="Cookie"><file name="Expire.php" hash="3dd32275a8489bfd53681242fdbec4f7"/></dir><dir name="Token"><file name="Expire.php" hash="55da91ba0715346124b52b5aaa37998e"/></dir></dir></dir></dir></dir><dir name="Test"><dir name="Model"><dir name="Observer"><dir name="providers"><file name="testIsIpAllowed.yaml" hash="404d102cf95f0ccce2169ff28bdbb74f"/><file name="testIsIpInList.yaml" hash="ba21c5f51a0b20d1e0e04ca3e1a9db11"/></dir></dir><file name="Observer.php" hash="09458ee6341cc5de5a03f2bfef79bfb8"/></dir></dir><dir name="controllers"><dir name="Adminhtml"><dir name="Etipsecurity"><file name="LogController.php" hash="2658feea29ba2bd9b4d153ab51572a7c"/><dir name="Token"><file name="LogController.php" hash="f3debb1aa77c7a7f0adc9e9b2f94b989"/></dir><file name="TokenController.php" hash="efeeb7ed1442ca5a0f10479a7e48e4e7"/></dir></dir></dir><dir name="etc"><file name="config.xml" hash="d89b92d72def5112b71d8982ee307a17"/><file name="system.xml" hash="f8a2a4d756b095d1e28e8495cdccca7a"/></dir><dir name="sql"><dir name="ipsecurity_setup"><file name="mysql4-install-1.5.php" hash="a2c026dec475ac9d9f8153181b590a32"/><file name="mysql4-upgrade-1.5.3-2.0.0.php" hash="dcff32a9576905b3187958cccd11d468"/><file name="mysql4-upgrade-2.1.4-2.1.5.php" hash="562af7bebeaa1a44cb6106762ce88899"/></dir></dir></dir></dir></target><target name="magelocale"><dir name="ru_RU"><file name="ET_IpSecurity.csv" hash="29f6c6dcb9bf71ceb8a2fec656431a3a"/><dir name="template"><dir name="email"><file name="et_ipsecurity.html" hash="e02159d2880a6b786a169c1b821fab64"/><file name="et_ipsecurity_admin.html" hash="bbd286df243d58a76d4c1dee45f7836d"/><file name="et_ipsecurity_ipsecuritytoken.html" hash="28bfe4307be61980300a76dabe349e55"/><file name="et_ipsecurity_ipsecuritytoken_fail.html" hash="98c00b08c94dffaf2e884deb4471fda6"/></dir></dir></dir><dir name="en_US"><file name="ET_IpSecurity.csv" hash="7f9caec31be429a5851a67357eb44848"/><dir name="template"><dir name="email"><file name="et_ipsecurity.html" hash="bbd4e4a1cb7184187d63719439775273"/><file name="et_ipsecurity_admin.html" hash="bbd4e4a1cb7184187d63719439775273"/><file name="et_ipsecurity_ipsecuritytoken.html" hash="70f787d6af15b0a857fee634010c2c00"/><file name="et_ipsecurity_ipsecuritytoken_fail.html" hash="80f1b74078ae512dc16d708cc1a8d592"/></dir></dir></dir></target><target name="mageetc"><dir name="modules"><file name="ET_IpSecurity.xml" hash="3405c1babf6948a8af04228c60894fcf"/></dir></target><target name="magedesign"><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="layout"><file name="et_ipsecurity.xml" hash="1d2513d729a683fb3a302fdd7dce454e"/></dir><dir name="template"><dir name="et_ipsecurity"><file name="admin_config_generation_button.phtml" hash="7dd6a2f86f83140a013cdf80eedec7f6"/><file name="tokenlog-grid-comment.phtml" hash="2d545b6ab6876cde6709bb51967f6e6b"/></dir></dir></dir></dir></dir></target></contents>
|
16 |
<compatible/>
|
17 |
+
<dependencies><required><php><min>5.0.0</min><max>7.9.9</max></php></required></dependencies>
|
18 |
</package>
|