feat: auto-inject Xiaomi DIRECT rules on subscription push

This commit is contained in:
2026-06-14 17:24:08 +08:00
parent 2002238a0b
commit fb1fa0d0dc
+21 -1
View File
@@ -382,10 +382,30 @@ async function handleApi(req, res, apiPath) {
const subConfigPath = path.join(configDir, 'sub-config.yaml');
fs.writeFileSync(subConfigPath, content, 'utf-8');
// Inject our settings
// Inject our settings and custom rules
let configContent = content;
configContent = configContent.replace(/external-controller:\s*'[^']*'/, "external-controller: '0.0.0.0:9097'");
configContent = configContent.replace(/secret:\s*"[^"]*"/, 'secret: "orangepi"');
// Inject Xiaomi DIRECT rules before existing rules
const xiaomiRules = [
'# Xiaomi domains - DIRECT',
' - DOMAIN-SUFFIX,mi.com,DIRECT',
' - DOMAIN-SUFFIX,miui.com,DIRECT',
' - DOMAIN-SUFFIX,xiaomi.com,DIRECT',
' - DOMAIN-SUFFIX,xiaomi.net,DIRECT',
' - DOMAIN-SUFFIX,mijia.tech,DIRECT',
' - DOMAIN-SUFFIX,duokan.com,DIRECT',
' - DOMAIN-SUFFIX,mi-img.com,DIRECT',
' - DOMAIN-SUFFIX,miwifi.com,DIRECT',
' - DOMAIN-SUFFIX,xiaomiev.com,DIRECT',
' - DOMAIN-SUFFIX,xiaomiyoupin.com,DIRECT',
' - DOMAIN-KEYWORD,xiaomi,DIRECT',
' - DOMAIN-KEYWORD,miui,DIRECT',
' - DOMAIN-KEYWORD,mijia,DIRECT',
].join('\n');
configContent = configContent.replace(/^rules:\s*\n/m, 'rules:\n' + xiaomiRules + '\n');
fs.writeFileSync(subConfigPath, configContent, 'utf-8');
// Reload mihomo with new config