20
20
*/
21
21
namespace Fastly \Cdn \Controller \Adminhtml \FastlyCdn \Blocking ;
22
22
23
- use Magento \Backend \App \Action ;
23
+ use Fastly \Cdn \Helper \Vcl ;
24
+ use Fastly \Cdn \Model \Api ;
25
+ use Fastly \Cdn \Model \Config ;
24
26
use Magento \Backend \App \Action \Context ;
27
+ use Magento \Config \App \Config \Type \System as SystemConfig ;
28
+ use Magento \Framework \App \Cache \TypeListInterface as CacheTypeList ;
29
+ use Magento \Framework \App \Config \Storage \WriterInterface as ConfigWriter ;
25
30
use Magento \Framework \App \Request \Http ;
26
31
use Magento \Framework \Controller \Result \JsonFactory ;
27
- use Fastly \Cdn \Model \Config ;
28
- use Fastly \Cdn \Model \Api ;
29
- use Fastly \Cdn \Helper \Vcl ;
30
- use Magento \Framework \App \Config \Storage \WriterInterface as ConfigWriter ;
31
- use Magento \Framework \App \Cache \TypeListInterface as CacheTypeList ;
32
- use Magento \Config \App \Config \Type \System as SystemConfig ;
33
32
use Magento \Framework \Exception \LocalizedException ;
34
33
35
34
/**
36
35
* Class UpdateBlocking
37
36
*
38
37
* @package Fastly\Cdn\Controller\Adminhtml\FastlyCdn\Blocking
39
38
*/
40
- class UpdateBlocking extends Action
39
+ class UpdateBlocking extends AbstractBlocking
41
40
{
42
41
/**
43
42
* @var Http
@@ -59,10 +58,6 @@ class UpdateBlocking extends Action
59
58
* @var Vcl
60
59
*/
61
60
private $ vcl ;
62
- /**
63
- * @var ConfigWriter
64
- */
65
- private $ configWriter ;
66
61
/**
67
62
* @var CacheTypeList
68
63
*/
@@ -104,7 +99,7 @@ public function __construct(
104
99
$ this ->configWriter = $ configWriter ;
105
100
$ this ->cacheTypeList = $ cacheTypeList ;
106
101
$ this ->systemConfig = $ systemConfig ;
107
- parent ::__construct ($ context );
102
+ parent ::__construct ($ context, $ configWriter );
108
103
}
109
104
110
105
/**
@@ -118,34 +113,36 @@ public function execute()
118
113
try {
119
114
$ service = $ this ->api ->checkServiceDetails ();
120
115
$ currActiveVersion = $ this ->vcl ->determineVersions ($ service ->versions );
116
+ if (!isset ($ currActiveVersion ['active_version ' ])) {
117
+ throw new LocalizedException (__ ('No version is currently active. ' ));
118
+ }
121
119
122
120
$ snippet = $ this ->config ->getVclSnippets (
123
121
Config::VCL_BLOCKING_PATH ,
124
122
Config::VCL_BLOCKING_SNIPPET
125
123
);
126
124
127
- $ country_codes = $ this ->prepareCountryCodes ($ this ->request ->getParam ('countries ' ));
128
- $ acls = $ this ->prepareAcls ($ this ->request ->getParam ('acls ' ));
129
-
130
- $ blockedItems = $ country_codes . $ acls ;
131
- $ strippedBlockedItems = substr ($ blockedItems , 0 , strrpos ($ blockedItems , '|| ' , -1 ));
132
125
$ blockingType = $ this ->request ->getParam ('blocking_type ' );
133
-
134
126
$ this ->configWriter ->save (
135
127
Config::XML_FASTLY_BLOCKING_TYPE ,
136
128
$ blockingType ,
137
129
'default ' ,
138
130
'0 '
139
131
);
140
132
133
+ $ countryCodes = $ this ->getParamArray ('countries ' );
134
+ $ this ->storeConfigArray (Config::XML_FASTLY_BLOCK_BY_COUNTRY , $ countryCodes );
135
+
136
+ $ acls = $ this ->getParamArray ('acls ' );
137
+ $ this ->storeConfigArray (Config::XML_FASTLY_BLOCK_BY_ACL , $ acls );
138
+
139
+ $ blockedItems = $ this ->prepareBlockedItems ($ countryCodes , $ acls , (int ) $ blockingType );
140
+
141
141
// Add blocking snippet
142
142
foreach ($ snippet as $ key => $ value ) {
143
- if ($ strippedBlockedItems === '' ) {
144
- $ value = '' ;
145
- } else {
146
- $ strippedBlockedItems = $ this ->config ->processBlockedItems ($ strippedBlockedItems , $ blockingType );
147
- $ value = str_replace ('####BLOCKED_ITEMS#### ' , $ strippedBlockedItems , $ value );
148
- }
143
+ $ value = $ blockedItems !== '' ?
144
+ str_replace ('####BLOCKED_ITEMS#### ' , $ blockedItems , $ value ) :
145
+ '' ;
149
146
150
147
$ snippetName = Config::FASTLY_MAGENTO_MODULE . '_blocking_ ' . $ key ;
151
148
$ snippetId = $ this ->api ->getSnippet ($ currActiveVersion ['active_version ' ], $ snippetName );
@@ -176,76 +173,4 @@ public function execute()
176
173
]);
177
174
}
178
175
}
179
-
180
- /**
181
- * Prepares ACL VCL snippets
182
- *
183
- * @param $blockedAcls
184
- * @return string
185
- */
186
- private function prepareAcls ($ blockedAcls )
187
- {
188
- $ result = '' ;
189
- $ aclsArray = [];
190
- $ acls = '' ;
191
-
192
- if ($ blockedAcls != null ) {
193
- foreach ($ blockedAcls as $ key => $ value ) {
194
- $ aclsArray [] = $ value ['value ' ];
195
- }
196
- $ acls = implode (', ' , $ aclsArray );
197
- }
198
-
199
- $ this ->configWriter ->save (
200
- Config::XML_FASTLY_BLOCK_BY_ACL ,
201
- $ acls ,
202
- 'default ' ,
203
- '0 '
204
- );
205
-
206
- if ($ acls != '' ) {
207
- $ blockedAclsPieces = explode (", " , $ acls );
208
- foreach ($ blockedAclsPieces as $ acl ) {
209
- $ result .= ' req.http.Fastly-Client-Ip ~ ' . $ acl . ' || ' ;
210
- }
211
- }
212
-
213
- return $ result ;
214
- }
215
-
216
- /**
217
- * Prepares blocked countries VCL snippet
218
- *
219
- * @param $blockedCountries
220
- * @return string
221
- */
222
- private function prepareCountryCodes ($ blockedCountries )
223
- {
224
- $ result = '' ;
225
- $ countriesArray = [];
226
- $ countries = '' ;
227
-
228
- if ($ blockedCountries != null ) {
229
- foreach ($ blockedCountries as $ key => $ value ) {
230
- $ countriesArray [] = $ value ['value ' ];
231
- }
232
- $ countries = implode (', ' , $ countriesArray );
233
- }
234
-
235
- $ this ->configWriter ->save (
236
- Config::XML_FASTLY_BLOCK_BY_COUNTRY ,
237
- $ countries ,
238
- 'default ' ,
239
- '0 '
240
- );
241
-
242
- if ($ countries != '' ) {
243
- $ blockedCountriesPieces = explode (", " , $ countries );
244
- foreach ($ blockedCountriesPieces as $ code ) {
245
- $ result .= ' client.geo.country_code == " ' . $ code . '" || ' ;
246
- }
247
- }
248
-
249
- return $ result ;
250
- }
251
176
}
0 commit comments