ET_IpSecurity - Version 2.3.0

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 extends Mage_Eav_Model_Entity_Attribute_Source_Abstract
24
  {
 
 
 
25
  /**
26
  * Option getter
27
  * @return array
28
  */
29
- public function getAllOptions()
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->getAllOptions() as $option) {
65
  $_options[$option['value']] = $option['label'];
66
  }
67
  return $_options;
68
  }
69
 
 
70
  /**
 
 
71
  * @return array
72
  */
73
- public function toOptionArray()
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: '.$fullUrl);
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
- $this->_redirectPage = $this->trimTrailingSlashes(Mage::app()->getStore($pageStoreId)->getBaseUrl())
506
- . "/" . $this->_redirectPage;
 
 
 
 
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
- $stores = array();
576
- $pageStoreIds = array();
577
-
578
- foreach (Mage::app()->getStores() as $store) {
579
- /* @var $store Mage_Core_Model_Store */
580
- $stores[] = $store->getId();
581
- $pageId = Mage::getModel('cms/page')->checkIdentifier($this->_redirectPage, $store->getId());
582
- if ($pageId === false) {
583
- continue;
584
- }
585
- $pageStoreIds = Mage::getResourceModel('cms/page')->lookupStoreIds($pageId);
586
- if (count($pageStoreIds)) { // found page
587
- break;
588
- }
589
- }
590
-
591
- if (!count($pageStoreIds)) { // no found in any store
592
- $pageStoreIds[] = 0;
593
- }
594
- //default
595
- $pageStoreId = 0;
596
- foreach ($pageStoreIds as $pageStoreId) {
597
- if ($pageStoreId > 0) {
598
- break;
599
  }
600
  }
601
-
602
- if ($pageStoreId == 0) {
603
- $pageStoreId = $stores[0];
604
- return $pageStoreId; // first available store
 
605
  }
606
- return $pageStoreId;
 
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.2.0</version>
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.2.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,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>2016-08-31</date>
14
- <time>10:26:15</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="8752e013d2ce56ad566b90034fcb6037"/><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="5b33a978342b63a5703b6cbf5b22e990"/><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="b83e8cb04ac532ca3e26c70a05b21498"/><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>6.0.0</max></php></required></dependencies>
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>