思路:
搞三套配置,一套是最终和 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 108 天前 via iPhone
厉害👍
|
2
neochen13 106 天前
请问一下楼主老哥是 PC 端用 QX 吗,方便分享一下过分规则吗……
|
3
gelilaohuang OP @neochen13 qx 没有 windows 端啊
|
4
ilolita 104 天前 via iPhone
不是有 ssid 策略吗?你这离大谱了😧
|
5
JonyYang 101 天前 via iPhone
我还是喜欢用 Surge
|
6
w12928293 99 天前
目前在用 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 就行了
|