MT#55831 add header filter wildcard match support

'\*' \- matches 0 or more characters
 '?' \- matches any one character
 for more info, refer to <fnmatch\.h>
(real ticket number: TT#53685)

Change-Id: Ib3f9568a3f4174bfe5cab0db3ea0cda0ea1cf701
mr11.2.1
Kirill Solomko 4 years ago committed by Donat Zenichev
parent a532a09507
commit aeabd1bd91

@ -28,6 +28,7 @@
#include "log.h"
#include "AmUtils.h"
#include <algorithm>
#include <fnmatch.h>
const char* FilterType2String(FilterType ft) {
switch(ft) {
@ -216,11 +217,13 @@ int inplaceHeaderFilter(string& hdrs, const vector<FilterEntry>& filter_list) {
}
string hdr_name = hdrs.substr(start_pos, name_end-start_pos);
std::transform(hdr_name.begin(), hdr_name.end(), hdr_name.begin(), ::tolower);
bool erase = false;
if (f_type == Whitelist) {
erase = headerfilter_list.find(hdr_name)==headerfilter_list.end();
} else if (f_type == Blacklist) {
erase = headerfilter_list.find(hdr_name)!=headerfilter_list.end();
bool erase = (f_type == Whitelist);
for (set<string>::iterator it = headerfilter_list.begin();
it != headerfilter_list.end(); ++it) {
if (fnmatch(it->c_str(), hdr_name.c_str(), 0) == 0) {
erase = (f_type != Whitelist);
break;
}
}
if (erase) {
DBG("erasing header '%s' by %s\n", hdr_name.c_str(), FilterType2String(f_type));

Loading…
Cancel
Save