tindy2013 / subconverter

Utility to convert between various subscription format

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

[Feature]需要增加surge的domain-set生成

baobeiboboda opened this issue · comments

verify

  • 我已经仔细阅读项目文档,确认现有功能无法解决我的需求
  • 我已经检索过现有issue,确认与现有issue的内容并不重复
  • 我已经尝试自行解决,确认自己没有能力解决

功能描述

现在的文档当中对于在ini文件中,格式为 Group name,[type:]URL[,interval]Group name,[]Rule ,但是type的类型通过查询https://raw.githubusercontent.com/tindy2013/subconverter/master/src/config/ruleset.hhttps://raw.githubusercontent.com/tindy2013/subconverter/master/src/generator/config/ruleconvert.h 得知 在生成surge的时候仅有SurgeRuleset 这一个选项 即默认surge只能生成rule-set,根据surge的文档 https://manual.nssurge.com/book/understanding-surge/cn/#%E8%A7%84%E5%88%99 中的4.3.5.1 RULE-SET 可包含所有类型的子规则,执行效率和在主配置中的规则没有区别,而 DOMAIN-SET 仅可使用 DOMAIN 和 DOMAIN-SUFFIX 两种形式的内容,使用了特别的逻辑进行优化,在内容非常多时性能有极大的提升。(千条以上,否则两者没有太大的区别),

可能的解决方案

enum ruleset_type
{
RULESET_SURGE,
RULESET_SURGE_DOMAIN,
RULESET_QUANX,
RULESET_CLASH_DOMAIN,
RULESET_CLASH_IPCIDR,
RULESET_CLASH_CLASSICAL
};

if(type == RULESET_SURGE_DOMAIN)
return content;

https://raw.githubusercontent.com/tindy2013/subconverter/master/src/generator/config/ruleconvert.cpp 这个文件的336行做有可能需要修改 识别domain这个参数。

strLine = "RULE-SET," + remote_path_prefix + "/getruleset?type=5&url=" + urlSafeBase64Encode(rule_path_typed) + "," + rule_group;