1
+ // std::map
2
+ #include < map>
3
+
4
+ // string
5
+ #include < string>
6
+
1
7
// std::ifstream
2
8
#include < fstream>
3
9
@@ -204,12 +210,36 @@ class Config{
204
210
}catch (const std::exception & e){}
205
211
206
212
if (newFilter.GetContent () != NULL ){
207
- filtersPostContent.Add (newFilter);
213
+ // PostContent
214
+ if (newFilter.GetDomains ().Count () != 0 )
215
+ {
216
+ for (int i = 0 ; i < newFilter.GetDomains ().Count (); i++){
217
+ domainFiltersPostContent[newFilter.GetDomains ().Get (i)].Add (newFilter);
218
+ }
219
+ }
220
+ else
221
+ filtersPostContent.Add (newFilter);
208
222
}
209
223
else if (newFilter.GetStatusCode () != 0 ){
210
- filtersPostRequest.Add (newFilter);
224
+ // PostProcessing
225
+ if (newFilter.GetDomains ().Count () != 0 )
226
+ {
227
+ for (int i = 0 ; i < newFilter.GetDomains ().Count (); i++){
228
+ domainFiltersPostRequest[newFilter.GetDomains ().Get (i)].Add (newFilter);
229
+ }
230
+ }
231
+ else
232
+ filtersPostRequest.Add (newFilter);
211
233
} else {
212
- filtersPreRequest.Add (newFilter);
234
+ // PreProcessing
235
+ if (newFilter.GetDomains ().Count () != 0 )
236
+ {
237
+ for (int i = 0 ; i < newFilter.GetDomains ().Count (); i++){
238
+ domainFiltersPreRequest[newFilter.GetDomains ().Get (i)].Add (newFilter);
239
+ }
240
+ }
241
+ else
242
+ filtersPreRequest.Add (newFilter);
213
243
}
214
244
215
245
}
@@ -229,6 +259,21 @@ class Config{
229
259
return filtersPostContent;
230
260
}
231
261
262
+ static FilterList DomainFiltersPreRequest (const char * domain){
263
+ std::string str = domain;
264
+ return domainFiltersPreRequest[domain];
265
+ }
266
+
267
+ static FilterList DomainFiltersPostRequest (const char * domain){
268
+ std::string str = domain;
269
+ return domainFiltersPostRequest[domain];
270
+ }
271
+
272
+ static FilterList DomainFiltersPostContent (const char * domain){
273
+ std::string str = domain;
274
+ return domainFiltersPostContent[domain];
275
+ }
276
+
232
277
static int TickDown (){
233
278
return tickDown;
234
279
}
@@ -285,9 +330,15 @@ class Config{
285
330
static int maxHits;
286
331
static int tickDown;
287
332
static int blockTime;
333
+
288
334
static FilterList filtersPreRequest;
289
335
static FilterList filtersPostRequest;
290
336
static FilterList filtersPostContent;
337
+
338
+ static std::map<std::string, FilterList> domainFiltersPreRequest;
339
+ static std::map<std::string, FilterList> domainFiltersPostRequest;
340
+ static std::map<std::string, FilterList> domainFiltersPostContent;
341
+
291
342
static Filter* defaults;
292
343
static CharList whitelist;
293
344
@@ -308,6 +359,11 @@ Filter* Config::defaults;
308
359
FilterList Config::filtersPreRequest;
309
360
FilterList Config::filtersPostRequest;
310
361
FilterList Config::filtersPostContent;
362
+
363
+ std::map<std::string, FilterList> Config::domainFiltersPreRequest;
364
+ std::map<std::string, FilterList> Config::domainFiltersPostRequest;
365
+ std::map<std::string, FilterList> Config::domainFiltersPostContent;
366
+
311
367
CharList Config::whitelist;
312
368
313
369
char * Config::blockCommandFormat;
0 commit comments