
思路:
搞三套配置,一套是最终和 qx 关联的, result.conf
一套是 openwrt 环境下的, withOP.conf
另外一套是蜂窝网络环境下的, noOP.conf
随便先关联哪一套,但在那一套里设置一条
[task_local] event-network Auto-switch-config.js, tag=自动切换配置, enabled=true 也就是说网络环境变化时做一些东西,相当于个钩子函数,在 Auto-switch-config.js 用 $enviorment 去获取 ssid ,有 ssid 就是 wifi ,没 ssid 就是蜂窝。同时也可以根据 ssid 的名字去判断在哪个 wifi 下
有网络环境就好办了,然后就是切换配置,用 qx 的$iCloud 去读写那三套的配置,只要不同配置最终写入 result.conf 就行
下面是我的 Auto-switch-config.js 配置,供参考
const isWIFI = $environment.hasOwnProperty('ssid') const opSSIDS = ['102'] let underOpenwrt = false if(isWIFI){ let ssid = $environment.ssid if(opSSIDS.includes(ssid)){ underOpenwrt = true }else{ underOpenwrt = false } } const withOpenwrt = "../Profiles/withOp.conf" const noOpenwrt = "../Profiles/noOp.conf" const resultCOnfig= "../Profiles/result.conf" const filePath = underOpenwrt ? withOpenwrt : noOpenwrt let read_bytes = $iCloud.readFile(filePath); let textDecoder = new TextDecoder(); let readCOntent= textDecoder.decode(read_bytes) let encoder = new TextEncoder(); let writeUint8Array = encoder.encode(readContent); if ($iCloud.writeFile(writeUint8Array, resultConfig)) { console.log(`iCloud 内容已替换为${underOpenwrt?"简约模式":"丰富模式"}`); } else { console.log("iCloud 内容已替换失败"); } $done() 目前用下来确实没问题,但是发现会有大约一分钟时间的延迟,在仓库里也没找到什么能立即 refresh 或 restart 的 api ,但总归是能根据网络环境切配置了,还讲究那么多干嘛
#quantumultx
无论在哪个配置下,都要保证有这个task,以便在下一次网络变化时不影响切换
[task_local] event-network Auto-switch-config.js, tag=自动切换配置, enabled=true 1 zhlxsh 2024-08-06 13:31:26 +08:00 via iPhone 厉害 |
2 BearCookie 2024-08-08 13:29:51 +08:00 请问一下楼主老哥是 PC 端用 QX 吗,方便分享一下过分规则吗…… |
3 gelilaohuang OP @neochen13 qx 没有 windows 端啊 |
4 ilolita 2024-08-10 20:21:56 +08:00 via iPhone 不是有 ssid 策略吗?你这离大谱了 |
5 JonyYang 2024-08-13 11:34:14 +08:00 via iPhone 我还是喜欢用 Surge |
6 w12928293 2024-08-15 17:09:01 +08:00 目前在用 SSID 切换的方案,想试试 UP 主这个,但是有一点没搞明白,还请指教。 result.conf 这个是干嘛的,比如根据 SSID 判断,当连接到家里的 SSID 时,全部直连, 其他情况都是通过 quanx 的自动最优节点出去,这样的话,我配置两套,那 result.conf 这个应该怎么写呢,都需要包含哪些? |
7 gelilaohuang OP @ilolita ssid 策略对于分流无效啊,我一些屏蔽广告的都在分流里 |
8 gelilaohuang OP @w12928293 重点不在 result.conf , 而是 withOp 和 noOp 那两套,把那两套内容根据网络环境去决定哪一套最终写入 result ,qx 只关联 result 就行了 |