Bug fixes

Fix when rulesets and groups are provided in request URLs, new rules will not be used.
Fix cached rule base not updating after calling "/readconf", "/refreshrules" or "/updateconf".
This commit is contained in:
Tindy X committed 2019-12-29 19:31:17 +08:00
1 parent 914c8e9fbb
commit c38c1b4cf5
1 file changed
+8 -6
+8 -6
View File
@@ -75,7 +75,7 @@ void setcd(char *argv[])
chdir(path.data()); chdir(path.data());
} }
std::string refreshRulesets(string_array &ruleset_list, std::vector<ruleset_content> &rca) void refreshRulesets(string_array &ruleset_list, std::vector<ruleset_content> &rca)
{ {
eraseElements(rca); eraseElements(rca);
std::string rule_group, rule_url; std::string rule_group, rule_url;
@@ -128,8 +128,6 @@ std::string refreshRulesets(string_array &ruleset_list, std::vector<ruleset_cont
else else
std::cerr<<"Warning: No data was fetched from this link. Skipping..."<<std::endl; std::cerr<<"Warning: No data was fetched from this link. Skipping..."<<std::endl;
} }
return "done";
} }
void readConf() void readConf()
@@ -375,7 +373,7 @@ std::string subconverter(RESPONSE_CALLBACK_ARGS)
if(target == "clash" || target == "clashr") if(target == "clash" || target == "clashr")
{ {
std::cerr<<"Clash"<<((target == "clashr") ? "R" : "")<<std::endl; std::cerr<<"Clash"<<((target == "clashr") ? "R" : "")<<std::endl;
if(!ruleset.size() && !groups.size()) if(ruleset.size() || groups.size())
{ {
if(fileExist(clash_rule_base)) if(fileExist(clash_rule_base))
base_content = fileGet(clash_rule_base, false); base_content = fileGet(clash_rule_base, false);
@@ -428,7 +426,7 @@ std::string subconverter(RESPONSE_CALLBACK_ARGS)
else if(target == "mellow") else if(target == "mellow")
{ {
std::cerr<<"Mellow"<<std::endl; std::cerr<<"Mellow"<<std::endl;
if(!ruleset.size() && !groups.size()) if(ruleset.size() || groups.size())
{ {
if(fileExist(mellow_rule_base)) if(fileExist(mellow_rule_base))
base_content = fileGet(mellow_rule_base, false); base_content = fileGet(mellow_rule_base, false);
@@ -598,7 +596,9 @@ int main(int argc, char *argv[])
if(token != access_token) if(token != access_token)
return "Unauthorized"; return "Unauthorized";
} }
return refreshRulesets(rulesets, ruleset_content_array); refreshRulesets(rulesets, ruleset_content_array);
generateBase();
return "done";
}); });
append_response("GET", "/readconf", "text/plain", [](RESPONSE_CALLBACK_ARGS) -> std::string append_response("GET", "/readconf", "text/plain", [](RESPONSE_CALLBACK_ARGS) -> std::string
@@ -610,6 +610,7 @@ int main(int argc, char *argv[])
return "Unauthorized"; return "Unauthorized";
} }
readConf(); readConf();
generateBase();
return "done"; return "done";
}); });
@@ -631,6 +632,7 @@ int main(int argc, char *argv[])
readConf(); readConf();
if(!update_ruleset_on_request) if(!update_ruleset_on_request)
refreshRulesets(rulesets, ruleset_content_array); refreshRulesets(rulesets, ruleset_content_array);
generateBase();
return "done"; return "done";
}); });