V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
gelilaohuang
V2EX  ›  分享发现

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

  •  
  •   gelilaohuang · 114 天前 · 990 次点击
    这是一个创建于 114 天前的主题,其中的信息可能已经有所发展或是发生改变。

    思路:

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

    第 1 条附言  ·  114 天前

    无论在哪个配置下,都要保证有这个task,以便在下一次网络变化时不影响切换

    [task_local]
    event-network Auto-switch-config.js, tag=自动切换配置, enabled=true
    
    8 条回复    2024-08-24 10:59:32 +08:00
    zhlxsh
        1
    zhlxsh  
       114 天前 via iPhone
    厉害👍
    neochen13
        2
    neochen13  
       112 天前
    请问一下楼主老哥是 PC 端用 QX 吗,方便分享一下过分规则吗……
    gelilaohuang
        3
    gelilaohuang  
    OP
       112 天前
    @neochen13 qx 没有 windows 端啊
    ilolita
        4
    ilolita  
       110 天前 via iPhone
    不是有 ssid 策略吗?你这离大谱了😧
    JonyYang
        5
    JonyYang  
       107 天前 via iPhone
    我还是喜欢用 Surge
    w12928293
        6
    w12928293  
       105 天前
    目前在用 SSID 切换的方案,想试试 UP 主这个,但是有一点没搞明白,还请指教。
    result.conf 这个是干嘛的,比如根据 SSID 判断,当连接到家里的 SSID 时,全部直连,
    其他情况都是通过 quanx 的自动最优节点出去,这样的话,我配置两套,那 result.conf 这个应该怎么写呢,都需要包含哪些?
    gelilaohuang
        7
    gelilaohuang  
    OP
       96 天前
    @ilolita ssid 策略对于分流无效啊,我一些屏蔽广告的都在分流里
    gelilaohuang
        8
    gelilaohuang  
    OP
       96 天前
    @w12928293 重点不在 result.conf , 而是 withOp 和 noOp 那两套,把那两套内容根据网络环境去决定哪一套最终写入 result ,qx 只关联 result 就行了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1043 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 20ms · UTC 21:49 · PVG 05:49 · LAX 13:49 · JFK 16:49
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.