allow only filter some HTTP methods

This commit is contained in:
lifegpc
2021-05-23 10:28:25 +08:00
parent db8b363b4a
commit 2e7c4385ad

View File

@@ -216,6 +216,12 @@ function start() {
for (let re = 0; re < redirections.length; re++) { for (let re = 0; re < redirections.length; re++) {
providers[p].addRedirection(redirections[re]); providers[p].addRedirection(redirections[re]);
} }
let methods = data.providers[prvKeys[p]].getOrDefault('methods', []);
//Add HTTP methods list to provider
for (let re = 0; re < methods.length; re++) {
providers[p].addMethod(methods[re]);
}
} }
} }
@@ -344,6 +350,7 @@ function start() {
let disabled_rawRules = {}; let disabled_rawRules = {};
let enabled_referralMarketing = {}; let enabled_referralMarketing = {};
let disabled_referralMarketing = {}; let disabled_referralMarketing = {};
let methods = [];
if (_completeProvider) { if (_completeProvider) {
enabled_rules[".*"] = true; enabled_rules[".*"] = true;
@@ -496,6 +503,28 @@ function start() {
} }
}; };
/**
* Add a HTTP method to methods list.
*
* @param {String} method HTTP Method Name
*/
this.addMethod = function (method) {
if (methods.indexOf(method) == -1) {
methods.push(method);
}
}
/**
* Check the requests' method.
*
* @param {requestDetails} details Requests deatils
* @returns {boolean} if need filter? true: false
*/
this.matchMethod = function (details) {
if (!methods.length) return true;
return methods.indexOf(details['method']) > -1 ? true : false;
}
/** /**
* Private helper method to check if the url * Private helper method to check if the url
* an exception. * an exception.
@@ -598,6 +627,7 @@ function start() {
* Call for every provider the removeFieldsFormURL method. * Call for every provider the removeFieldsFormURL method.
*/ */
for (let i = 0; i < providers.length; i++) { for (let i = 0; i < providers.length; i++) {
if (!providers[i].matchMethod(request)) continue;
if (providers[i].matchURL(request.url)) { if (providers[i].matchURL(request.url)) {
result = removeFieldsFormURL(providers[i], request.url, false, request); result = removeFieldsFormURL(providers[i], request.url, false, request);
} }