Skip to content

Commit ca4cde0

Browse files
committed
chore(auto-ss-config): refactor config management
1 parent dcbe530 commit ca4cde0

File tree

4 files changed

+75
-7
lines changed

4 files changed

+75
-7
lines changed

scripts/auto-ss-config/clash_config_tmp.yaml

+5-4
Original file line numberDiff line numberDiff line change
@@ -109,20 +109,21 @@ rules:
109109
- IP-CIDR,127.0.0.0/8,DIRECT
110110
- IP-CIDR,100.64.0.0/10,DIRECT
111111
- IP-CIDR,224.0.0.0/4,DIRECT
112-
- DOMAIN-SUFFIX,scholar.google.com,AI
112+
- DOMAIN-SUFFIX,quora.com,AI
113+
- DOMAIN-SUFFIX,binance.com,AI
114+
- DOMAIN-SUFFIX,google.com,AI
115+
- DOMAIN-SUFFIX,googleapis.com,AI
113116
- DOMAIN-SUFFIX,linkedin.com,Proxy
114117
- DOMAIN-SUFFIX,deepseek.com,Proxy
118+
- DOMAIN-SUFFIX,tiktokv.com,AI
115119
- DOMAIN-SUFFIX,quora.com,AI
116120
- DOMAIN-SUFFIX,claude.ai,AI
117121
- DOMAIN-SUFFIX,chatgpt.com,AI
118-
- DOMAIN-SUFFIX,gemini.google.com,AI
119122
- DOMAIN-SUFFIX,openrouter.ai,AI
120123
- DOMAIN-SUFFIX,chatboxai.app,AI
121-
- DOMAIN-SUFFIX,googleapis.com,AI
122124
- DOMAIN-SUFFIX,x.ai,AI
123125
- DOMAIN-SUFFIX,openai.com,AI
124126
- DOMAIN-SUFFIX,anthropic.com,AI
125-
- DOMAIN-SUFFIX,aistudio.google.com,AI
126127
- RULE-SET,Global,Proxy
127128
- RULE-SET,China,DIRECT
128129
- RULE-SET,ChinaIP,DIRECT
+42
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
import yaml
2+
import os
3+
4+
def convert_clash_rules_to_shadowrocket(clash_rules):
5+
shadowrocket_rules = []
6+
for rule in clash_rules:
7+
parts = rule.split(',')
8+
if len(parts) < 3:
9+
continue
10+
11+
rule_type = parts[0].strip()
12+
rule_value = parts[1].strip()
13+
rule_policy = parts[2].strip()
14+
15+
if rule_type == "IP-CIDR":
16+
shadowrocket_rules.append(f"IP-CIDR,{rule_value},{rule_policy}")
17+
elif rule_type == "DOMAIN-SUFFIX":
18+
shadowrocket_rules.append(f"DOMAIN-SUFFIX,{rule_value},{rule_policy}")
19+
elif rule_type == "RULE-SET":
20+
# Assuming the rule value is a URL or a file path
21+
shadowrocket_rules.append(f"RULE-SET,{rule_value},{rule_policy}")
22+
elif rule_type == "GEOIP":
23+
shadowrocket_rules.append(f"GEOIP,{rule_value},{rule_policy}")
24+
elif rule_type == "MATCH":
25+
shadowrocket_rules.append(f"MATCH,{rule_policy}")
26+
return shadowrocket_rules
27+
28+
def main():
29+
file_path = os.path.join(os.path.dirname(__file__), 'clash_config_tmp.yaml')
30+
with open(file_path, 'r') as file:
31+
config = yaml.safe_load(file)
32+
33+
clash_rules = config.get('rules', [])
34+
35+
shadowrocket_rules = convert_clash_rules_to_shadowrocket(clash_rules)
36+
37+
print("[Rule]")
38+
for rule in shadowrocket_rules:
39+
print(rule)
40+
41+
if __name__ == "__main__":
42+
main()

assets/confs/ss.conf scripts/auto-ss-config/ss.conf

+19-3
Original file line numberDiff line numberDiff line change
@@ -20,15 +20,31 @@ include =
2020
[Proxy]
2121

2222
[Proxy Group]
23+
AI = select,DIRECT,PROXY
24+
Proxy = select,DIRECT,PROXY
25+
2326

2427
[Rule]
2528
RULE-SET,https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/QuantumultX/Apple/Apple.list,DIRECT
2629
RULE-SET,https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/QuantumultX/Global/Global.list,PROXY
2730
RULE-SET,https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Shadowrocket/Lan/Lan.list,DIRECT
28-
DOMAIN-SUFFIX,linkedin.com,PROXY
29-
DOMAIN-SUFFIX,deepseek.com,PROXY
31+
DOMAIN-SUFFIX,quora.com,AI
32+
DOMAIN-SUFFIX,binance.com,AI
33+
DOMAIN-SUFFIX,google.com,AI
34+
DOMAIN-SUFFIX,googleapis.com,AI
35+
DOMAIN-SUFFIX,linkedin.com,Proxy
36+
DOMAIN-SUFFIX,deepseek.com,Proxy
37+
DOMAIN-SUFFIX,tiktokv.com,AI
38+
DOMAIN-SUFFIX,quora.com,AI
39+
DOMAIN-SUFFIX,claude.ai,AI
40+
DOMAIN-SUFFIX,chatgpt.com,AI
41+
DOMAIN-SUFFIX,openrouter.ai,AI
42+
DOMAIN-SUFFIX,chatboxai.app,AI
43+
DOMAIN-SUFFIX,x.ai,AI
44+
DOMAIN-SUFFIX,openai.com,AI
45+
DOMAIN-SUFFIX,anthropic.com,AI
3046
GEOIP,CN,DIRECT
31-
FINAL,PROXY
47+
FINAL,Proxy
3248

3349
[Host]
3450

scripts/auto-ss-config/upload_configs.py

+9
Original file line numberDiff line numberDiff line change
@@ -114,6 +114,11 @@ def generate_ss_urls_file(ss_urls):
114114
logger.info("Generated ss_urls.txt")
115115
return output_file_path
116116

117+
def generate_ss_config():
118+
output_file_path = _get_file_path('ss.conf')
119+
logger.info("Generated ss.conf")
120+
return output_file_path
121+
117122
def upload_file(bucket_name, source_file, destination_blob_name):
118123
if source_file is None:
119124
logger.error("Source file is None, skipping upload")
@@ -146,10 +151,14 @@ def main():
146151

147152
logger.info("Generating ss_urls.txt...")
148153
ss_urls_file = generate_ss_urls_file(ss_urls)
154+
155+
logger.info("Generating ss.conf...")
156+
ss_config_file = generate_ss_config()
149157

150158
logger.info("Uploading config files...")
151159
yaml_url = upload_file(bucket_name, clash_config_file, 'clash_config.yaml')
152160
ss_urls_url = upload_file(bucket_name, ss_urls_file, 'ss_urls.txt')
161+
ss_config_url = upload_file(bucket_name, ss_config_file, 'ss.conf')
153162
logger.info("Upload completed")
154163

155164
if __name__ == "__main__":

0 commit comments

Comments
 (0)