mirror of
https://github.com/asdlokj1qpi233/subconverter.git
synced 2025-10-28 12:22:37 +00:00
Bug fix
Fix failed to load external configuration when enable_rule_generator or overwrite_original_rules is missing in YAML format configuration. Optimize codes.
This commit is contained in:
@@ -64,6 +64,13 @@ template <typename T> void operator >> (const YAML::Node& node, T& i)
|
||||
i = node.as<T>();
|
||||
};
|
||||
|
||||
template <typename T> T safe_as (const YAML::Node& node)
|
||||
{
|
||||
if(node.IsDefined() && !node.IsNull())
|
||||
return node.as<T>();
|
||||
return T();
|
||||
};
|
||||
|
||||
std::string getRuleset(RESPONSE_CALLBACK_ARGS)
|
||||
{
|
||||
std::string url = urlsafe_base64_decode(getUrlArg(argument, "url")), type = getUrlArg(argument, "type"), group = urlsafe_base64_decode(getUrlArg(argument, "group"));
|
||||
@@ -268,7 +275,7 @@ void readGroup(YAML::Node node, string_array &dest)
|
||||
object["url"] >> url;
|
||||
object["interval"] >> interval;
|
||||
for(j = 0; j < object["rule"].size(); j++)
|
||||
tempArray.emplace_back(object["rule"][j].as<std::string>());
|
||||
tempArray.emplace_back(safe_as<std::string>(object["rule"][j]));
|
||||
if(type != "select" && type != "ssid")
|
||||
{
|
||||
tempArray.emplace_back(url);
|
||||
@@ -551,7 +558,7 @@ void readYAMLConf(YAML::Node &node)
|
||||
node["advanced"]["enable_base_gen"] >> enable_base_gen;
|
||||
if(node["advanced"]["enable_cache"].IsDefined())
|
||||
{
|
||||
if(node["advanced"]["enable_cache"].as<bool>())
|
||||
if(safe_as<bool>(node["advanced"]["enable_cache"]))
|
||||
{
|
||||
node["advanced"]["cache_subscription"] >> cache_subscription;
|
||||
node["advanced"]["cache_config"] >> cache_config;
|
||||
@@ -837,8 +844,8 @@ int loadExternalYAML(YAML::Node &node, ExternalConfig &ext)
|
||||
section["quanx_rule_base"] >> ext.quanx_rule_base;
|
||||
section["loon_rule_base"] >> ext.loon_rule_base;
|
||||
|
||||
ext.enable_rule_generator = section["enable_rule_generator"].as<bool>();
|
||||
ext.overwrite_original_rules = section["overwrite_original_rules"].as<bool>();
|
||||
section["enable_rule_generator"] >> ext.enable_rule_generator;
|
||||
section["overwrite_original_rules"] >> ext.overwrite_original_rules;
|
||||
|
||||
if(section["custom_proxy_group"].size())
|
||||
readGroup(section["custom_proxy_group"], ext.custom_proxy_group);
|
||||
|
||||
Reference in New Issue
Block a user