mirror of
https://github.com/asdlokj1qpi233/subconverter.git
synced 2026-11-01 17:25:02 +00:00
Add support for importing snippets
Clean up file structure.
This commit is contained in:
19 files changed
+282
-194
No files matched your search
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
@@ -3,20 +3,21 @@
|
||||
;All possible customization settings are shown below
|
||||
|
||||
;Options for custom groups
|
||||
custom_proxy_group=Proxy`select`.*`[]AUTO`[]DIRECT`.*
|
||||
custom_proxy_group=AUTO`url-test`.*`http://www.gstatic.com/generate_204`300
|
||||
custom_proxy_group=google`select`.*
|
||||
custom_proxy_group=netflix`select`.*
|
||||
custom_proxy_group=动画疯`select`(深台|彰化|新北|台)
|
||||
custom_proxy_group=fox+`select`(HGC|HKBN|PCCW|HKT|深台|彰化|新北|台|新加坡|sg|hk|tw)
|
||||
custom_proxy_group=美区影视`select`(美|美国)
|
||||
custom_proxy_group=Global_media`select`.*
|
||||
custom_proxy_group=Domestic`select`[]DIRECT`[]Proxy
|
||||
custom_proxy_group=Apple`select`[]DIRECT`[]Proxy
|
||||
custom_proxy_group=Final`select`[]Proxy`[]DIRECT
|
||||
custom_proxy_group=屏蔽广告`select`[]REJECT`[]DIRECT
|
||||
custom_proxy_group=UnblockNeteaseMusic`select`云音乐解锁`[]DIRECT
|
||||
custom_proxy_group=Telegram`select`新加坡`[]Proxy
|
||||
;custom_proxy_group=Proxy`select`.*`[]AUTO`[]DIRECT`.*
|
||||
;custom_proxy_group=AUTO`url-test`.*`http://www.gstatic.com/generate_204`300
|
||||
;custom_proxy_group=google`select`.*
|
||||
;custom_proxy_group=netflix`select`.*
|
||||
;custom_proxy_group=动画疯`select`(深台|彰化|新北|台)
|
||||
;custom_proxy_group=fox+`select`(HGC|HKBN|PCCW|HKT|深台|彰化|新北|台|新加坡|sg|hk|tw)
|
||||
;custom_proxy_group=美区影视`select`(美|美国)
|
||||
;custom_proxy_group=Global_media`select`.*
|
||||
;custom_proxy_group=Domestic`select`[]DIRECT`[]Proxy
|
||||
;custom_proxy_group=Apple`select`[]DIRECT`[]Proxy
|
||||
;custom_proxy_group=Final`select`[]Proxy`[]DIRECT
|
||||
;custom_proxy_group=屏蔽广告`select`[]REJECT`[]DIRECT
|
||||
;custom_proxy_group=UnblockNeteaseMusic`select`云音乐解锁`[]DIRECT
|
||||
;custom_proxy_group=Telegram`select`新加坡`[]Proxy
|
||||
custom_proxy_group=!!import:snippets/groups_forcerule.txt
|
||||
|
||||
;Options for custom rulesets
|
||||
enable_rule_generator=false
|
||||
@@ -36,12 +37,12 @@ overwrite_original_rules=false
|
||||
;surge_ruleset=DIRECT,https://raw.githubusercontent.com/ConnersHua/Profiles/master/Surge/Ruleset/China.list
|
||||
|
||||
;Options for custom base configuration file
|
||||
clash_rule_base=config/forcerule.yml
|
||||
;surge_rule_base=surge.conf
|
||||
;surfboard_rule_base=surfboard.conf
|
||||
;mellow_rule_base=mellow.conf
|
||||
;quan_rule_base=quan.conf
|
||||
;quanx_rule_base=quanx.conf
|
||||
clash_rule_base=base/forcerule.yml
|
||||
;surge_rule_base=base/surge.conf
|
||||
;surfboard_rule_base=base/surfboard.conf
|
||||
;mellow_rule_base=base/mellow.conf
|
||||
;quan_rule_base=base/quan.conf
|
||||
;quanx_rule_base=base/quanx.conf
|
||||
|
||||
;Options for renaming nodes
|
||||
;rename=Test-(.*?)-(.*?)-(.*?)\((.*?)\)@\1\4x测试线路_自\2到\3
|
||||
|
||||
+18
-146
@@ -16,22 +16,22 @@ exclude_remarks=(到期|剩余流量|时间|官网|产品)
|
||||
;include_remarks=V3.*港
|
||||
|
||||
;Clash config base used by the generator, supports local files/URL
|
||||
clash_rule_base=simple_base.yml
|
||||
clash_rule_base=base/simple_base.yml
|
||||
|
||||
;Surge config base used by the generator, supports local files/URL
|
||||
surge_rule_base=surge.conf
|
||||
surge_rule_base=base/surge.conf
|
||||
|
||||
;Surfboard config base used by the generator, supports local files/URL
|
||||
surfboard_rule_base=surfboard.conf
|
||||
surfboard_rule_base=base/surfboard.conf
|
||||
|
||||
;Mellow config base used by the generator, supports local files/URL
|
||||
mellow_rule_base=mellow.conf
|
||||
mellow_rule_base=base/mellow.conf
|
||||
|
||||
;Quantumult X config base used by the generator, supports local files/URL
|
||||
quan_rule_base=quan.conf
|
||||
quan_rule_base=base/quan.conf
|
||||
|
||||
;Quantumult X config base used by the generator, supports local files/URL
|
||||
quanx_rule_base=quanx.conf
|
||||
quanx_rule_base=base/quanx.conf
|
||||
|
||||
;Proxy used to download rulesets or subscriptions, set to NONE or empty to disable it, set to SYSTEM to use system proxy.
|
||||
;Accept cURL-supported proxies (http:// https:// socks4a:// socks5://)
|
||||
@@ -69,53 +69,7 @@ filter_deprecated_nodes=false
|
||||
;rename_node=RELAY@中转
|
||||
;rename_node=BGP-@
|
||||
|
||||
; short names
|
||||
; rename_node=中国@中
|
||||
; rename_node=徐州@徐
|
||||
; rename_node=深圳@深
|
||||
; rename_node=上海@沪
|
||||
; rename_node=广州@穗
|
||||
; rename_node=宁波@甬
|
||||
; rename_node=贵阳@筑
|
||||
; rename_node=武汉@汉
|
||||
; rename_node=南京@宁
|
||||
; rename_node=天津@津
|
||||
; rename_node=北京@京
|
||||
; rename_node=沈阳@沈
|
||||
; rename_node=江苏@苏
|
||||
; rename_node=浙江@浙
|
||||
; rename_node=安徽@皖
|
||||
; rename_node=福建@闽
|
||||
; rename_node=湖南@湘
|
||||
; rename_node=广东@粤
|
||||
; rename_node=海南@琼
|
||||
; rename_node=四川@川
|
||||
; rename_node=贵州@贵
|
||||
; rename_node=云南@云
|
||||
; rename_node=青海@青
|
||||
; rename_node=台湾@台
|
||||
; rename_node=香港@港
|
||||
; rename_node=澳门@澳
|
||||
; rename_node=美国@美
|
||||
; rename_node=英国@英
|
||||
; rename_node=加拿大@加
|
||||
; rename_node=法国@法
|
||||
; rename_node=德国@德
|
||||
; rename_node=瑞士@瑞
|
||||
; rename_node=日本@日
|
||||
; rename_node=韩国@韩
|
||||
; rename_node=芬兰@芬
|
||||
; rename_node=印度@印
|
||||
; rename_node=泰国@泰
|
||||
; rename_node=越南@越
|
||||
; rename_node=新加坡@新
|
||||
; rename_node=意大利@意
|
||||
; rename_node=菲律宾@菲
|
||||
; rename_node=俄罗斯@俄
|
||||
; rename_node=土耳其@土
|
||||
|
||||
; times RE
|
||||
rename_node=\(?((x|X)?(\d+)(\.?\d+)?)((\s?倍率?)|(x|X))\)?@$1x
|
||||
rename_node=!!import:snippets/rename_node.txt
|
||||
|
||||
[managed_config]
|
||||
;Append a '#!MANAGED-CONFIG' info to Surge configurations
|
||||
@@ -134,45 +88,10 @@ remove_old_emoji=true
|
||||
;Rule to add emojis. Supports regular expression.
|
||||
;Format: Remark_Search_Pattern,emoji
|
||||
|
||||
rule=(流量|时间|应急|过期|Bandwidth|expire),🏳️🌈
|
||||
rule=AC,🇦🇨
|
||||
rule=(AR|阿根廷),🇦🇷
|
||||
rule=(奥地利|维也纳),🇦🇹
|
||||
rule=(AU|Australia|Sydney|澳大利亚|悉尼),🇦🇺
|
||||
rule=BE,🇧🇪
|
||||
rule=(BR|Brazil|巴西|圣保罗),🇧🇷
|
||||
rule=(Canada|加拿大|蒙特利尔|温哥华|楓葉|枫叶),🇨🇦
|
||||
rule=(瑞士|苏黎世),🇨🇭
|
||||
rule=(DE|Germany|德国|法兰克福|德),🇩🇪
|
||||
rule=丹麦,🇩🇰
|
||||
rule=ES,🇪🇸
|
||||
rule=EU,🇪🇺
|
||||
rule=(Finland|芬兰|赫尔辛基),🇫🇮
|
||||
rule=(FR|France|法国|巴黎),🇫🇷
|
||||
rule=(UK|England|United.*?Kingdom|英国|英|伦敦),🇬🇧
|
||||
rule=(?i)(HK|Hong.*?Kong|香港|深港|沪港|呼港|HKT|HKBN|HGC|WTT|CMI|穗港|京港|港),🇭🇰
|
||||
rule=(Indonesia|印尼|印度尼西亚|雅加达),🇮🇩
|
||||
rule=(Ireland|爱尔兰|都柏林),🇮🇪
|
||||
rule=(India|印度|孟买),🇮🇳
|
||||
rule=(Italy|意大利|米兰),🇮🇹
|
||||
rule=(JP|Japan|日本|东京|大阪|埼玉|沪日|穗日|川日|中日|泉日|杭日),🇯🇵
|
||||
rule=(KP|朝鲜),🇰🇵
|
||||
rule=(KR|Korea|KOR|韩国|首尔|韩|韓),🇰🇷
|
||||
rule=(MO|Macao|澳门|CTM),🇲🇴
|
||||
rule=(MY|Malaysia|马来西亚),🇲🇾
|
||||
rule=(NL|Netherlands|荷兰|阿姆斯特丹),🇳🇱
|
||||
rule=(PH|Philippines|菲律宾),🇵🇭
|
||||
rule=(RO|罗马尼亚),🇷🇴
|
||||
rule=(RU|Russia|俄罗斯|伯力|莫斯科|圣彼得堡|西伯利亚|新西伯利亚|京俄|杭俄),🇷🇺
|
||||
rule=(沙特|迪拜),🇸🇦
|
||||
rule=(SE|Sweden),🇸🇪
|
||||
rule=(SG|Singapore|新加坡|狮城|沪新|京新|泉新|穗新|深新|杭新),🇸🇬
|
||||
rule=(TH|Thailand|泰国|曼谷),🇹🇭
|
||||
rule=(TR|Turkey|土耳其|伊斯坦布尔),🇹🇷
|
||||
rule=(US|America|UnitedStates|美国|美|京美|波特兰|达拉斯|俄勒冈|凤凰城|费利蒙|硅谷|拉斯维加斯|洛杉矶|圣何塞|圣克拉拉|西雅图|芝加哥|沪美),🇺🇲
|
||||
rule=(VN|越南),🇻🇳
|
||||
rule=(ZA|南非),🇿🇦
|
||||
rule=(CN|China|回国|中国|江苏|北京|上海|广州|深圳|杭州|徐州|青岛|宁波|镇江|back|TW|Taiwan|台湾|台北|台中|新北|彰化|CHT|新北|台|HINET),🇨🇳
|
||||
;rule=(流量|时间|应急|过期|Bandwidth|expire),🏳️🌈
|
||||
;rule=AC,🇦🇨
|
||||
|
||||
rule=!!import:snippets/emoji.txt
|
||||
|
||||
[ruleset]
|
||||
;Enable generating rules with rulesets
|
||||
@@ -189,34 +108,11 @@ update_ruleset_on_request=false
|
||||
; Group name,[]Rule
|
||||
|
||||
;surge_ruleset=DIRECT,https://raw.githubusercontent.com/ConnersHua/Profiles/master/Surge/Ruleset/Unbreak.list
|
||||
;surge_ruleset=⛔️ 广告拦截,https://raw.githubusercontent.com/ConnersHua/Profiles/master/Surge/Ruleset/Advertising.list
|
||||
;surge_ruleset=🚫 运营劫持,https://raw.githubusercontent.com/ConnersHua/Profiles/master/Surge/Ruleset/Hijacking.list
|
||||
;surge_ruleset=🌌 YouTube,https://raw.githubusercontent.com/ConnersHua/Profiles/master/Surge/Ruleset/Media/YouTube.list
|
||||
;surge_ruleset=🎥 NETFLIX,https://raw.githubusercontent.com/ConnersHua/Profiles/master/Surge/Ruleset/Media/Netflix.list
|
||||
;surge_ruleset=HBO,https://raw.githubusercontent.com/ConnersHua/Profiles/master/Surge/Ruleset/Media/HBO.list
|
||||
;surge_ruleset=Fox,https://raw.githubusercontent.com/ConnersHua/Profiles/master/Surge/Ruleset/Media/Fox.list
|
||||
;surge_ruleset=🌍 国外媒体,https://raw.githubusercontent.com/ConnersHua/Profiles/master/Surge/Ruleset/GlobalMedia.list
|
||||
;surge_ruleset=🌏 港台媒体,https://raw.githubusercontent.com/ConnersHua/Profiles/master/Surge/Ruleset/HKMTMedia.list
|
||||
;surge_ruleset=📲 电报信息,https://raw.githubusercontent.com/ConnersHua/Profiles/master/Surge/Ruleset/Telegram.list
|
||||
;surge_ruleset=🔰 节点选择,https://raw.githubusercontent.com/ConnersHua/Profiles/master/Surge/Ruleset/Global.list
|
||||
;surge_ruleset=🍎 苹果服务,https://raw.githubusercontent.com/ConnersHua/Profiles/master/Surge/Ruleset/Apple.list
|
||||
;surge_ruleset=DIRECT,https://raw.githubusercontent.com/ConnersHua/Profiles/master/Surge/Ruleset/China.list
|
||||
;surge_ruleset=🎯 全球直连,rules/LocalAreaNetwork.list
|
||||
;surge_ruleset=🎯 全球直连,[]GEOIP,CN
|
||||
;surge_ruleset=🐟 漏网之鱼,[]FINAL
|
||||
|
||||
surge_ruleset=🎯 全球直连,rules/LocalAreaNetwork.list
|
||||
surge_ruleset=Ⓜ️ 微软服务,rules/MSServices.list
|
||||
surge_ruleset=🎯 全球直连,rules/ConnersHua/Surge/Ruleset/Unbreak.list
|
||||
surge_ruleset=🛑 全球拦截,rules/NobyDa/Surge/AdRule.list
|
||||
surge_ruleset=🛑 全球拦截,rules/ConnersHua/Surge/Ruleset/Hijacking.list
|
||||
;surge_ruleset=🎥 NETFLIX,rules/ConnersHua/Surge/Ruleset/Media/Netflix.list
|
||||
surge_ruleset=🌍 国外媒体,rules/ConnersHua/Surge/Ruleset/GlobalMedia.list
|
||||
surge_ruleset=🌏 国内媒体,rules/lhie1/Surge/Surge 3/Provider/AsianTV.list
|
||||
surge_ruleset=📲 电报信息,rules/ConnersHua/Surge/Ruleset/Telegram.list
|
||||
surge_ruleset=🔰 节点选择,rules/ConnersHua/Surge/Ruleset/Global.list
|
||||
surge_ruleset=🍎 苹果服务,rules/ConnersHua/Surge/Ruleset/Apple.list
|
||||
surge_ruleset=🎯 全球直连,rules/ConnersHua/Surge/Ruleset/China.list
|
||||
surge_ruleset=🎯 全球直连,rules/NobyDa/Surge/Download.list
|
||||
surge_ruleset=🎯 全球直连,[]GEOIP,CN
|
||||
surge_ruleset=🐟 漏网之鱼,[]FINAL
|
||||
surge_ruleset=!!import:snippets/rulesets.txt
|
||||
|
||||
[clash_proxy_group]
|
||||
;Generate Clash Proxy Group with the following patterns. Node filterting rule supports regular expression.
|
||||
@@ -224,6 +120,7 @@ surge_ruleset=🐟 漏网之鱼,[]FINAL
|
||||
; Group_Name`url-test|fallback|load-balance`Rule_1`Rule_2`...`test_url`interval
|
||||
;Rule with "[]" prefix will be added directly.
|
||||
|
||||
;custom_proxy_group=Proxy`select`.*`[]AUTO`[]DIRECT`.*
|
||||
;custom_proxy_group=UrlTest`url-test`.*`http://www.gstatic.com/generate_204`300
|
||||
;custom_proxy_group=FallBack`fallback`.*`http://www.gstatic.com/generate_204`300
|
||||
;custom_proxy_group=LoadBalance`load-balance`.*`http://www.gstatic.com/generate_204`300
|
||||
@@ -236,35 +133,10 @@ surge_ruleset=🐟 漏网之鱼,[]FINAL
|
||||
;custom_proxy_group=sstw`select`!!GROUP=V2RayProvider!!(深台|彰化|新北|台|tw)
|
||||
|
||||
;for forcerule.yml
|
||||
;custom_proxy_group=Proxy`select`.*`[]AUTO`[]DIRECT`.*
|
||||
;custom_proxy_group=AUTO`url-test`.*`http://www.gstatic.com/generate_204`300
|
||||
;custom_proxy_group=google`select`.*
|
||||
;custom_proxy_group=netflix`select`.*
|
||||
;custom_proxy_group=动画疯`select`(深台|彰化|新北|台)
|
||||
;custom_proxy_group=fox+`select`(HGC|HKBN|PCCW|HKT|深台|彰化|新北|台|新加坡|sg|hk|tw)
|
||||
;custom_proxy_group=美区影视`select`(美|美国)
|
||||
;custom_proxy_group=Global_media`select`.*
|
||||
;custom_proxy_group=Domestic`select`[]DIRECT`[]Proxy
|
||||
;custom_proxy_group=Apple`select`[]DIRECT`[]Proxy
|
||||
;custom_proxy_group=Final`select`[]Proxy`[]DIRECT
|
||||
;custom_proxy_group=屏蔽广告`select`[]REJECT`[]DIRECT
|
||||
;custom_proxy_group=UnblockNeteaseMusic`select`云音乐解锁`[]DIRECT
|
||||
;custom_proxy_group=Telegram`select`新加坡`[]Proxy
|
||||
;custom_proxy_group=!!import:snippets/groups_forcerule.txt
|
||||
|
||||
;for Surge rulesets
|
||||
custom_proxy_group=🔰 节点选择`select`[]♻️ 自动选择`[]🎯 全球直连`.*
|
||||
custom_proxy_group=♻️ 自动选择`url-test`.*`http://www.gstatic.com/generate_204`300
|
||||
;custom_proxy_group=🎥 NETFLIX`select`[]🔰 节点选择`[]♻️ 自动选择`[]🎯 全球直连`.*
|
||||
;custom_proxy_group=⛔️ 广告拦截`select`[]🛑 全球拦截`[]🎯 全球直连`[]🔰 节点选择
|
||||
;custom_proxy_group=🚫 运营劫持`select`[]🛑 全球拦截`[]🎯 全球直连`[]🔰 节点选择
|
||||
custom_proxy_group=🌍 国外媒体`select`[]🔰 节点选择`[]♻️ 自动选择`[]🎯 全球直连`.*
|
||||
custom_proxy_group=🌏 国内媒体`select`[]🎯 全球直连`(HGC|HKBN|PCCW|HKT|深台|彰化|新北|台|hk|港|tw)`[]🔰 节点选择
|
||||
custom_proxy_group=Ⓜ️ 微软服务`select`[]🎯 全球直连`[]🔰 节点选择`.*
|
||||
custom_proxy_group=📲 电报信息`select`[]🔰 节点选择`[]🎯 全球直连`.*
|
||||
custom_proxy_group=🍎 苹果服务`select`[]🔰 节点选择`[]🎯 全球直连`[]♻️ 自动选择`.*
|
||||
custom_proxy_group=🎯 全球直连`select`[]DIRECT
|
||||
custom_proxy_group=🛑 全球拦截`select`[]REJECT`[]DIRECT
|
||||
custom_proxy_group=🐟 漏网之鱼`select`[]🔰 节点选择`[]🎯 全球直连`[]♻️ 自动选择`.*
|
||||
custom_proxy_group=!!import:snippets/groups.txt
|
||||
|
||||
[server]
|
||||
;Address to bind on for Web Server
|
||||
|
||||
@@ -0,0 +1,39 @@
|
||||
(流量|时间|应急|过期|Bandwidth|expire),🏳️🌈
|
||||
AC,🇦🇨
|
||||
(AR|阿根廷),🇦🇷
|
||||
(奥地利|维也纳),🇦🇹
|
||||
(AU|Australia|Sydney|澳大利亚|悉尼),🇦🇺
|
||||
BE,🇧🇪
|
||||
(BR|Brazil|巴西|圣保罗),🇧🇷
|
||||
(Canada|加拿大|蒙特利尔|温哥华|楓葉|枫叶),🇨🇦
|
||||
(瑞士|苏黎世),🇨🇭
|
||||
(DE|Germany|德国|法兰克福|德),🇩🇪
|
||||
丹麦,🇩🇰
|
||||
ES,🇪🇸
|
||||
EU,🇪🇺
|
||||
(Finland|芬兰|赫尔辛基),🇫🇮
|
||||
(FR|France|法国|巴黎),🇫🇷
|
||||
(UK|England|United.*?Kingdom|英国|英|伦敦),🇬🇧
|
||||
(?i)(HK|Hong.*?Kong|香港|深港|沪港|呼港|HKT|HKBN|HGC|WTT|CMI|穗港|京港|港),🇭🇰
|
||||
(Indonesia|印尼|印度尼西亚|雅加达),🇮🇩
|
||||
(Ireland|爱尔兰|都柏林),🇮🇪
|
||||
(India|印度|孟买),🇮🇳
|
||||
(Italy|意大利|米兰),🇮🇹
|
||||
(JP|Japan|日本|东京|大阪|埼玉|沪日|穗日|川日|中日|泉日|杭日),🇯🇵
|
||||
(KP|朝鲜),🇰🇵
|
||||
(KR|Korea|KOR|韩国|首尔|韩|韓),🇰🇷
|
||||
(MO|Macao|澳门|CTM),🇲🇴
|
||||
(MY|Malaysia|马来西亚),🇲🇾
|
||||
(NL|Netherlands|荷兰|阿姆斯特丹),🇳🇱
|
||||
(PH|Philippines|菲律宾),🇵🇭
|
||||
(RO|罗马尼亚),🇷🇴
|
||||
(RU|Russia|俄罗斯|伯力|莫斯科|圣彼得堡|西伯利亚|新西伯利亚|京俄|杭俄),🇷🇺
|
||||
(沙特|迪拜),🇸🇦
|
||||
(SE|Sweden),🇸🇪
|
||||
(SG|Singapore|新加坡|狮城|沪新|京新|泉新|穗新|深新|杭新),🇸🇬
|
||||
(TH|Thailand|泰国|曼谷),🇹🇭
|
||||
(TR|Turkey|土耳其|伊斯坦布尔),🇹🇷
|
||||
(US|America|UnitedStates|美国|美|京美|波特兰|达拉斯|俄勒冈|凤凰城|费利蒙|硅谷|拉斯维加斯|洛杉矶|圣何塞|圣克拉拉|西雅图|芝加哥|沪美),🇺🇲
|
||||
(VN|越南),🇻🇳
|
||||
(ZA|南非),🇿🇦
|
||||
(CN|China|回国|中国|江苏|北京|上海|广州|深圳|杭州|徐州|青岛|宁波|镇江|back|TW|Taiwan|台湾|台北|台中|新北|彰化|CHT|新北|台|HINET),🇨🇳
|
||||
@@ -0,0 +1,13 @@
|
||||
🔰 节点选择`select`[]♻️ 自动选择`[]🎯 全球直连`.*
|
||||
♻️ 自动选择`url-test`.*`http://www.gstatic.com/generate_204`300
|
||||
;🎥 NETFLIX`select`[]🔰 节点选择`[]♻️ 自动选择`[]🎯 全球直连`.*
|
||||
;⛔️ 广告拦截`select`[]🛑 全球拦截`[]🎯 全球直连`[]🔰 节点选择
|
||||
;🚫 运营劫持`select`[]🛑 全球拦截`[]🎯 全球直连`[]🔰 节点选择
|
||||
🌍 国外媒体`select`[]🔰 节点选择`[]♻️ 自动选择`[]🎯 全球直连`.*
|
||||
🌏 国内媒体`select`[]🎯 全球直连`(HGC|HKBN|PCCW|HKT|深台|彰化|新北|台|hk|港|tw)`[]🔰 节点选择
|
||||
Ⓜ️ 微软服务`select`[]🎯 全球直连`[]🔰 节点选择`.*
|
||||
📲 电报信息`select`[]🔰 节点选择`[]🎯 全球直连`.*
|
||||
🍎 苹果服务`select`[]🔰 节点选择`[]🎯 全球直连`[]♻️ 自动选择`.*
|
||||
🎯 全球直连`select`[]DIRECT
|
||||
🛑 全球拦截`select`[]REJECT`[]DIRECT
|
||||
🐟 漏网之鱼`select`[]🔰 节点选择`[]🎯 全球直连`[]♻️ 自动选择`.*
|
||||
@@ -0,0 +1,15 @@
|
||||
;for forcerule.yml
|
||||
Proxy`select`.*`[]AUTO`[]DIRECT`.*
|
||||
AUTO`url-test`.*`http://www.gstatic.com/generate_204`300
|
||||
google`select`.*
|
||||
netflix`select`.*
|
||||
动画疯`select`(深台|彰化|新北|台)
|
||||
fox+`select`(HGC|HKBN|PCCW|HKT|深台|彰化|新北|台|新加坡|sg|hk|tw)
|
||||
美区影视`select`(美|美国)
|
||||
Global_media`select`.*
|
||||
Domestic`select`[]DIRECT`[]Proxy
|
||||
Apple`select`[]DIRECT`[]Proxy
|
||||
Final`select`[]Proxy`[]DIRECT
|
||||
屏蔽广告`select`[]REJECT`[]DIRECT
|
||||
UnblockNeteaseMusic`select`云音乐解锁`[]DIRECT
|
||||
Telegram`select`新加坡`[]Proxy
|
||||
@@ -0,0 +1,47 @@
|
||||
;short names
|
||||
;中国@中
|
||||
;徐州@徐
|
||||
;深圳@深
|
||||
;上海@沪
|
||||
;广州@穗
|
||||
;宁波@甬
|
||||
;贵阳@筑
|
||||
;武汉@汉
|
||||
;南京@宁
|
||||
;天津@津
|
||||
;北京@京
|
||||
;沈阳@沈
|
||||
;江苏@苏
|
||||
;浙江@浙
|
||||
;安徽@皖
|
||||
;福建@闽
|
||||
;湖南@湘
|
||||
;广东@粤
|
||||
;海南@琼
|
||||
;四川@川
|
||||
;贵州@贵
|
||||
;云南@云
|
||||
;青海@青
|
||||
;台湾@台
|
||||
;香港@港
|
||||
;澳门@澳
|
||||
;美国@美
|
||||
;英国@英
|
||||
;加拿大@加
|
||||
;法国@法
|
||||
;德国@德
|
||||
;瑞士@瑞
|
||||
;日本@日
|
||||
;韩国@韩
|
||||
;芬兰@芬
|
||||
;印度@印
|
||||
;泰国@泰
|
||||
;越南@越
|
||||
;新加坡@新
|
||||
;意大利@意
|
||||
;菲律宾@菲
|
||||
;俄罗斯@俄
|
||||
;土耳其@土
|
||||
|
||||
;times RE
|
||||
\(?((x|X)?(\d+)(\.?\d+)?)((\s?倍率?)|(x|X))\)?@$1x
|
||||
@@ -0,0 +1,15 @@
|
||||
🎯 全球直连,rules/LocalAreaNetwork.list
|
||||
Ⓜ️ 微软服务,rules/MSServices.list
|
||||
🎯 全球直连,rules/ConnersHua/Surge/Ruleset/Unbreak.list
|
||||
🛑 全球拦截,rules/NobyDa/Surge/AdRule.list
|
||||
🛑 全球拦截,rules/ConnersHua/Surge/Ruleset/Hijacking.list
|
||||
;🎥 NETFLIX,rules/ConnersHua/Surge/Ruleset/Media/Netflix.list
|
||||
🌍 国外媒体,rules/ConnersHua/Surge/Ruleset/GlobalMedia.list
|
||||
🌏 国内媒体,rules/lhie1/Surge/Surge 3/Provider/AsianTV.list
|
||||
📲 电报信息,rules/ConnersHua/Surge/Ruleset/Telegram.list
|
||||
🔰 节点选择,rules/ConnersHua/Surge/Ruleset/Global.list
|
||||
🍎 苹果服务,rules/ConnersHua/Surge/Ruleset/Apple.list
|
||||
🎯 全球直连,rules/ConnersHua/Surge/Ruleset/China.list
|
||||
🎯 全球直连,rules/NobyDa/Surge/Download.list
|
||||
🎯 全球直连,[]GEOIP,CN
|
||||
🐟 漏网之鱼,[]FINAL
|
||||
@@ -0,0 +1,12 @@
|
||||
⛔️ 广告拦截,https://raw.githubusercontent.com/ConnersHua/Profiles/master/Surge/Ruleset/Advertising.list
|
||||
🚫 运营劫持,https://raw.githubusercontent.com/ConnersHua/Profiles/master/Surge/Ruleset/Hijacking.list
|
||||
🌌 YouTube,https://raw.githubusercontent.com/ConnersHua/Profiles/master/Surge/Ruleset/Media/YouTube.list
|
||||
🎥 NETFLIX,https://raw.githubusercontent.com/ConnersHua/Profiles/master/Surge/Ruleset/Media/Netflix.list
|
||||
HBO,https://raw.githubusercontent.com/ConnersHua/Profiles/master/Surge/Ruleset/Media/HBO.list
|
||||
Fox,https://raw.githubusercontent.com/ConnersHua/Profiles/master/Surge/Ruleset/Media/Fox.list
|
||||
🌍 国外媒体,https://raw.githubusercontent.com/ConnersHua/Profiles/master/Surge/Ruleset/GlobalMedia.list
|
||||
🌏 港台媒体,https://raw.githubusercontent.com/ConnersHua/Profiles/master/Surge/Ruleset/HKMTMedia.list
|
||||
📲 电报信息,https://raw.githubusercontent.com/ConnersHua/Profiles/master/Surge/Ruleset/Telegram.list
|
||||
🔰 节点选择,https://raw.githubusercontent.com/ConnersHua/Profiles/master/Surge/Ruleset/Global.list
|
||||
🍎 苹果服务,https://raw.githubusercontent.com/ConnersHua/Profiles/master/Surge/Ruleset/Apple.list
|
||||
DIRECT,https://raw.githubusercontent.com/ConnersHua/Profiles/master/Surge/Ruleset/China.list
|
||||
+77
-20
@@ -16,6 +16,7 @@
|
||||
#include "subexport.h"
|
||||
#include "multithread.h"
|
||||
#include "version.h"
|
||||
#include "logger.h"
|
||||
|
||||
//common settings
|
||||
std::string pref_path = "pref.ini";
|
||||
@@ -56,28 +57,63 @@ void SetConsoleTitle(std::string title)
|
||||
}
|
||||
#endif // _WIN32
|
||||
|
||||
void setcd(char *argv[])
|
||||
void setcd(std::string &file)
|
||||
{
|
||||
char szTemp[1024] = {};
|
||||
std::string path;
|
||||
char szTmp[1024];
|
||||
#ifndef _WIN32
|
||||
path.assign(argv[0]);
|
||||
if(path[0] != '/')
|
||||
{
|
||||
getcwd(szTmp, 1023);
|
||||
path.assign(szTmp);
|
||||
path.append("/");
|
||||
path.append(argv[0]);
|
||||
}
|
||||
path = path.substr(0, path.rfind("/") + 1);
|
||||
#ifdef _WIN32
|
||||
DWORD retVal = GetFullPathName(file.data(), 1023, szTemp, NULL);
|
||||
if(!retVal)
|
||||
return;
|
||||
#else
|
||||
GetModuleFileName(NULL, szTmp, 1023);
|
||||
strrchr(szTmp, '\\')[1] = '\0';
|
||||
path.assign(szTmp);
|
||||
char *ret = realpath(file.data(), &szTemp);
|
||||
if(ret == NULL)
|
||||
return;
|
||||
#endif // _WIN32
|
||||
path.assign(szTemp);
|
||||
chdir(path.data());
|
||||
}
|
||||
|
||||
int importItems(string_array &target)
|
||||
{
|
||||
string_array result;
|
||||
std::stringstream ss;
|
||||
std::string path, content, strLine;
|
||||
unsigned int itemCount = 0;
|
||||
for(std::string &x : target)
|
||||
{
|
||||
if(x.find("!!import:") == x.npos)
|
||||
{
|
||||
result.emplace_back(x);
|
||||
continue;
|
||||
}
|
||||
path = x.substr(x.find(":") + 1);
|
||||
writeLog(0, "Trying to import items from " + path);
|
||||
|
||||
if(fileExist(path))
|
||||
content = fileGet(path, false, api_mode);
|
||||
else
|
||||
content = webGet(path, "");
|
||||
if(!content.size())
|
||||
return -1;
|
||||
|
||||
ss << content;
|
||||
char delimiter = count(content.begin(), content.end(), '\n') < 1 ? '\r' : '\n';
|
||||
std::string::size_type lineSize;
|
||||
while(getline(ss, strLine, delimiter))
|
||||
{
|
||||
lineSize = strLine.size();
|
||||
if(!lineSize || strLine[0] == ';' || strLine[0] == '#' || (lineSize >= 2 && strLine[0] == '/' && strLine[1] == '/')) //empty lines and comments are ignored
|
||||
continue;
|
||||
result.emplace_back(strLine);
|
||||
itemCount++;
|
||||
}
|
||||
}
|
||||
target.swap(result);
|
||||
writeLog(0, "Imported " + std::to_string(itemCount) + " item(s).");
|
||||
return 0;
|
||||
}
|
||||
|
||||
void refreshRulesets(string_array &ruleset_list, std::vector<ruleset_content> &rca)
|
||||
{
|
||||
eraseElements(rca);
|
||||
@@ -206,6 +242,7 @@ void readConf()
|
||||
if(ini.ItemPrefixExist("rename_node"))
|
||||
{
|
||||
ini.GetAll("rename_node", tempArray);
|
||||
importItems(tempArray);
|
||||
safe_set_renames(tempArray);
|
||||
eraseElements(tempArray);
|
||||
}
|
||||
@@ -217,12 +254,14 @@ void readConf()
|
||||
if(ini.ItemPrefixExist("stream_rule"))
|
||||
{
|
||||
ini.GetAll("stream_rule", tempArray);
|
||||
importItems(tempArray);
|
||||
safe_set_streams(tempArray);
|
||||
eraseElements(tempArray);
|
||||
}
|
||||
if(ini.ItemPrefixExist("time_rule"))
|
||||
{
|
||||
ini.GetAll("time_rule", tempArray);
|
||||
importItems(tempArray);
|
||||
safe_set_times(tempArray);
|
||||
eraseElements(tempArray);
|
||||
}
|
||||
@@ -242,6 +281,7 @@ void readConf()
|
||||
if(ini.ItemPrefixExist("rule"))
|
||||
{
|
||||
ini.GetAll("rule", tempArray);
|
||||
importItems(tempArray);
|
||||
safe_set_emojis(tempArray);
|
||||
eraseElements(tempArray);
|
||||
}
|
||||
@@ -254,7 +294,11 @@ void readConf()
|
||||
if(ini.ItemExist("update_ruleset_on_request"))
|
||||
update_ruleset_on_request = ini.GetBool("update_ruleset_on_request");
|
||||
if(ini.ItemPrefixExist("surge_ruleset"))
|
||||
{
|
||||
ini.GetAll("surge_ruleset", rulesets);
|
||||
importItems(rulesets);
|
||||
}
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -264,7 +308,10 @@ void readConf()
|
||||
|
||||
ini.EnterSection("clash_proxy_group");
|
||||
if(ini.ItemPrefixExist("custom_proxy_group"))
|
||||
{
|
||||
ini.GetAll("custom_proxy_group", clash_extra_group);
|
||||
importItems(clash_extra_group);
|
||||
}
|
||||
|
||||
ini.EnterSection("server");
|
||||
if(ini.ItemExist("listen"))
|
||||
@@ -303,7 +350,7 @@ int loadExternalConfig(std::string &path, ExternalConfig &ext, std::string proxy
|
||||
{
|
||||
std::string base_content;
|
||||
if(fileExist(path))
|
||||
base_content = fileGet(path, false);
|
||||
base_content = fileGet(path, false, api_mode);
|
||||
else
|
||||
base_content = webGet(path, proxy);
|
||||
|
||||
@@ -318,9 +365,15 @@ int loadExternalConfig(std::string &path, ExternalConfig &ext, std::string proxy
|
||||
|
||||
ini.EnterSection("custom");
|
||||
if(ini.ItemPrefixExist("custom_proxy_group"))
|
||||
{
|
||||
ini.GetAll("custom_proxy_group", ext.custom_proxy_group);
|
||||
importItems(ext.custom_proxy_group);
|
||||
}
|
||||
if(ini.ItemPrefixExist("surge_ruleset"))
|
||||
{
|
||||
ini.GetAll("surge_ruleset", ext.surge_ruleset);
|
||||
importItems(ext.surge_ruleset);
|
||||
}
|
||||
|
||||
if(ini.ItemExist("clash_rule_base"))
|
||||
ext.clash_rule_base = ini.Get("clash_rule_base");
|
||||
@@ -341,9 +394,15 @@ int loadExternalConfig(std::string &path, ExternalConfig &ext, std::string proxy
|
||||
ext.enable_rule_generator = ini.GetBool("enable_rule_generator");
|
||||
|
||||
if(ini.ItemPrefixExist("rename"))
|
||||
{
|
||||
ini.GetAll("rename", ext.rename);
|
||||
importItems(ext.rename);
|
||||
}
|
||||
if(ini.ItemPrefixExist("emoji"))
|
||||
{
|
||||
ini.GetAll("emoji", ext.emoji);
|
||||
importItems(ext.emoji);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -818,11 +877,9 @@ int main(int argc, char *argv[])
|
||||
SetConsoleOutputCP(65001);
|
||||
#endif // _WIN32
|
||||
|
||||
#ifndef _DEBUG
|
||||
setcd(argv);
|
||||
#endif // _DEBUG
|
||||
SetConsoleTitle("subconverter " VERSION);
|
||||
chkArg(argc, argv);
|
||||
setcd(pref_path);
|
||||
readConf();
|
||||
if(!update_ruleset_on_request)
|
||||
refreshRulesets(rulesets, ruleset_content_array);
|
||||
@@ -955,7 +1012,7 @@ int main(int argc, char *argv[])
|
||||
|
||||
append_response("GET", "/getlocal", "text/plain;charset=utf-8", [](RESPONSE_CALLBACK_ARGS) -> std::string
|
||||
{
|
||||
return fileGet(UrlDecode(getUrlArg(argument, "path")));
|
||||
return fileGet(UrlDecode(getUrlArg(argument, "path")), false);
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
+24
-7
@@ -446,6 +446,7 @@ std::string getUrlArg(std::string url, std::string request)
|
||||
return std::string();
|
||||
}
|
||||
*/
|
||||
/*
|
||||
std::string::size_type spos = url.find("?");
|
||||
if(spos != url.npos)
|
||||
url.erase(0, spos + 1);
|
||||
@@ -453,10 +454,6 @@ std::string getUrlArg(std::string url, std::string request)
|
||||
string_array vArray, arglist = split(url, "&");
|
||||
for(std::string &x : arglist)
|
||||
{
|
||||
/*
|
||||
if(regex_search(x.cbegin(), x.cend(), result, std::regex("^" + request + "=(.*)$")))
|
||||
return result[1];
|
||||
*/
|
||||
std::string::size_type epos = x.find("=");
|
||||
if(epos != x.npos)
|
||||
{
|
||||
@@ -464,6 +461,14 @@ std::string getUrlArg(std::string url, std::string request)
|
||||
return x.substr(epos + 1);
|
||||
}
|
||||
}
|
||||
*/
|
||||
std::string pattern = request + "=";
|
||||
std::string::size_type pos = url.rfind(pattern);
|
||||
if(pos != url.npos)
|
||||
{
|
||||
pos += pattern.size();
|
||||
return url.substr(pos, url.find("&", pos) - pos);
|
||||
}
|
||||
return std::string();
|
||||
}
|
||||
|
||||
@@ -659,12 +664,24 @@ std::string getMD5(std::string data)
|
||||
return result;
|
||||
}
|
||||
|
||||
std::string fileGet(std::string path, bool binary)
|
||||
std::string fileGet(std::string path, bool binary, bool scope_limit)
|
||||
{
|
||||
std::ifstream infile;
|
||||
std::stringstream strstrm;
|
||||
std::ios::openmode mode = binary ? std::ios::binary : std::ios::in;
|
||||
|
||||
if(scope_limit)
|
||||
{
|
||||
#ifdef _WIN32
|
||||
if(path.find(":/") != path.npos || path.find("..") != path.npos)
|
||||
return std::string();
|
||||
#else
|
||||
if(path.find("/") == 0 || path.find("..") != path.npos)
|
||||
return std::string();
|
||||
#endif // _WIN32
|
||||
}
|
||||
|
||||
|
||||
infile.open(path, mode);
|
||||
if(infile)
|
||||
{
|
||||
@@ -707,12 +724,12 @@ bool fileCopy(std::string source, std::string dest)
|
||||
|
||||
std::string fileToBase64(std::string filepath)
|
||||
{
|
||||
return base64_encode(fileGet(filepath));
|
||||
return base64_encode(fileGet(filepath, true));
|
||||
}
|
||||
|
||||
std::string fileGetMD5(std::string filepath)
|
||||
{
|
||||
return getMD5(fileGet(filepath));
|
||||
return getMD5(fileGet(filepath, true));
|
||||
}
|
||||
|
||||
int fileWrite(std::string path, std::string content, bool overwrite)
|
||||
|
||||
+1
-1
@@ -56,7 +56,7 @@ int to_int(std::string str, int def_vaule = 0);
|
||||
std::string UTF8ToCodePoint(std::string data);
|
||||
std::string GetEnv(std::string name);
|
||||
|
||||
std::string fileGet(std::string path, bool binary = true);
|
||||
std::string fileGet(std::string path, bool binary, bool scope_limit = false);
|
||||
int fileWrite(std::string path, std::string content, bool overwrite);
|
||||
bool fileExist(std::string path);
|
||||
bool fileCopy(std::string source,std::string dest);
|
||||
|
||||
Reference in new issue
Block a user