关于 QX 不能根据网络切换配置的问题,我搞了个奇技淫巧

44 天前
 gelilaohuang

思路:

搞三套配置,一套是最终和 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

871 次点击
所在节点    分享发现
8 条回复
zhlxsh
44 天前
厉害👍
neochen13
42 天前
请问一下楼主老哥是 PC 端用 QX 吗,方便分享一下过分规则吗……
gelilaohuang
42 天前
@neochen13 qx 没有 windows 端啊
ilolita
40 天前
不是有 ssid 策略吗?你这离大谱了😧
JonyYang
37 天前
我还是喜欢用 Surge
w12928293
35 天前
目前在用 SSID 切换的方案,想试试 UP 主这个,但是有一点没搞明白,还请指教。
result.conf 这个是干嘛的,比如根据 SSID 判断,当连接到家里的 SSID 时,全部直连,
其他情况都是通过 quanx 的自动最优节点出去,这样的话,我配置两套,那 result.conf 这个应该怎么写呢,都需要包含哪些?
gelilaohuang
26 天前
@ilolita ssid 策略对于分流无效啊,我一些屏蔽广告的都在分流里
gelilaohuang
26 天前
@w12928293 重点不在 result.conf , 而是 withOp 和 noOp 那两套,把那两套内容根据网络环境去决定哪一套最终写入 result ,qx 只关联 result 就行了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1062890

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX