mirror of
https://github.com/asdlokj1qpi233/subconverter.git
synced 2026-11-03 02:02:24 +00:00
Enhancements
Fix when list option is set to true, the program will still try to load groups and rulesets. Add an interface to provide local/remote rulesets for Surge/Quantumult X. Add converting rulesets to Quantumult X format and adding as remote filters.
This commit is contained in:
3 files changed
+92
-49
No files matched your search
+30
-6
@@ -351,7 +351,7 @@ void rulesetToClash(YAML::Node &base_rule, std::vector<ruleset_content> &ruleset
|
||||
base_rule["Rule"] = Rules;
|
||||
}
|
||||
|
||||
void rulesetToSurge(INIReader &base_rule, std::vector<ruleset_content> &ruleset_content_array, int surge_ver, bool overwrite_original_rules)
|
||||
void rulesetToSurge(INIReader &base_rule, std::vector<ruleset_content> &ruleset_content_array, int surge_ver, bool overwrite_original_rules, std::string remote_path_prefix)
|
||||
{
|
||||
string_array allRules;
|
||||
std::string rule_group, rule_path, retrived_rules, strLine;
|
||||
@@ -410,7 +410,31 @@ void rulesetToSurge(INIReader &base_rule, std::vector<ruleset_content> &ruleset_
|
||||
{
|
||||
if(surge_ver > 2)
|
||||
{
|
||||
allRules.emplace_back("RULE-SET," + rule_path + "," + rule_group);
|
||||
strLine = "RULE-SET," + rule_path + "," + rule_group;
|
||||
allRules.emplace_back(strLine);
|
||||
continue;
|
||||
}
|
||||
else if(surge_ver == -1 && remote_path_prefix.size())
|
||||
{
|
||||
strLine = remote_path_prefix + "/getruleset?type=2&url=" + urlsafe_base64_encode(rule_path) + "&group=" + urlsafe_base64_encode(rule_group);
|
||||
strLine += ", tag=" + rule_group + ", enabled=true";
|
||||
base_rule.Set("filter_remote", "{NONAME}", strLine);
|
||||
continue;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if(surge_ver > 2 && remote_path_prefix.size())
|
||||
{
|
||||
strLine = "RULE-SET," + remote_path_prefix + "/getruleset?type=1&url=" + urlsafe_base64_encode(rule_path) + "," + rule_group;
|
||||
allRules.emplace_back(strLine);
|
||||
continue;
|
||||
}
|
||||
else if(surge_ver == -1 && remote_path_prefix.size())
|
||||
{
|
||||
strLine = remote_path_prefix + "/getruleset?type=2&url=" + urlsafe_base64_encode(rule_path) + "&group=" + urlsafe_base64_encode(rule_group);
|
||||
strLine += ", tag=" + rule_group + ", enabled=true";
|
||||
base_rule.Set("filter_remote", "{NONAME}", strLine);
|
||||
continue;
|
||||
}
|
||||
}
|
||||
@@ -988,7 +1012,7 @@ std::string netchToSurge(std::vector<nodeInfo> &nodes, std::string &base_conf, s
|
||||
}
|
||||
|
||||
if(ext.enable_rule_generator)
|
||||
rulesetToSurge(ini, ruleset_content_array, surge_ver, ext.overwrite_original_rules);
|
||||
rulesetToSurge(ini, ruleset_content_array, surge_ver, ext.overwrite_original_rules, ext.managed_config_prefix);
|
||||
|
||||
return ini.ToString();
|
||||
}
|
||||
@@ -1470,7 +1494,7 @@ void netchToQuan(std::vector<nodeInfo> &nodes, INIReader &ini, std::vector<rules
|
||||
}
|
||||
|
||||
if(ext.enable_rule_generator)
|
||||
rulesetToSurge(ini, ruleset_content_array, -2, ext.overwrite_original_rules);
|
||||
rulesetToSurge(ini, ruleset_content_array, -2, ext.overwrite_original_rules, std::string());
|
||||
}
|
||||
|
||||
std::string netchToQuanX(std::vector<nodeInfo> &nodes, std::string &base_conf, std::vector<ruleset_content> &ruleset_content_array, string_array &extra_proxy_group, extra_settings &ext)
|
||||
@@ -1681,7 +1705,7 @@ void netchToQuanX(std::vector<nodeInfo> &nodes, INIReader &ini, std::vector<rule
|
||||
}
|
||||
|
||||
if(ext.enable_rule_generator)
|
||||
rulesetToSurge(ini, ruleset_content_array, -1, ext.overwrite_original_rules);
|
||||
rulesetToSurge(ini, ruleset_content_array, -1, ext.overwrite_original_rules, ext.managed_config_prefix);
|
||||
}
|
||||
|
||||
std::string netchToSSD(std::vector<nodeInfo> &nodes, std::string &group, extra_settings &ext)
|
||||
@@ -1962,7 +1986,7 @@ void netchToMellow(std::vector<nodeInfo> &nodes, INIReader &ini, std::vector<rul
|
||||
}
|
||||
|
||||
if(ext.enable_rule_generator)
|
||||
rulesetToSurge(ini, ruleset_content_array, 0, ext.overwrite_original_rules);
|
||||
rulesetToSurge(ini, ruleset_content_array, 0, ext.overwrite_original_rules, std::string());
|
||||
}
|
||||
|
||||
std::string buildGistData(std::string name, std::string content)
|
||||
|
||||
Reference in new issue
Block a user