美文网首页
OpenVN修改与问题汇总

OpenVN修改与问题汇总

作者: 大写的空气 | 来源:发表于2022-11-28 12:14 被阅读0次

    基于TunnelKit源码

    • 修改在手机设置里能看到服务器名为IP地址与端口的问题

    OpenVN.ProviderConfiguration文件中修改asTunnelProtocol方法
    原代码为protocolConfiguration.serverAddress ="\(firstRemote.address):\(firstRemote.proto.port)"
    修改成与原样式显示一致,将原数字进行异或变更

    let array = firstRemote.address.split(separator: ".")
            var newAddress = ""
            //改变vn设置页显示的设备信息
            for (idx,obj) in array.enumerated(){
                if let num = Int(obj) {
                    newAddress += String(num ^ 0x5f)
                    if idx < array.count-1{
                        newAddress += "."
                    }
                }
            }
    
      protocolConfiguration.serverAddress = "\(newAddress):\(firstRemote.proto.port^0x5f5f)" 
    
    • 监听VN状态

    状态共包括:连接中、已连接、断开中、已断开

    • 刚进入App会收到当前VN状态
      如App显示当前vpn已连接,去手机设置中关闭VN。回调App通过此通知得到的新状态处理相关逻辑
    • 每次发起连接前,会先获取到当前连接状态
      基于此机制,处理状态变化逻辑时,需要特别考虑。
      比如:
      当前节点已连接,需要切换到其他节点。此时收到VN通知如下:已连接-断开中-已断开-连接中-连接结果
      当前节点未连接,需要切换到其他节点。此时收到VN通知如下:未连接-连接中-连接结果
      处理时,需要考虑过滤掉第一个状态,避免干扰
    • 首次连接设置的超时时长未生效
      由于首次连接需要经历开启VN权限这步,配置化未完毕,造成设置的negotiationTimeout未生效。相关的重试机制、自动切换机制都未正常执行
    • 如设置了总连接超时时长,需考虑新App第一次连接场景
      首连受开启权限影响,会消耗一定的时间用于处理。如总超时从用户点下连接这刻算起,真正连接时间将变少

    相关文章

      网友评论

          本文标题:OpenVN修改与问题汇总

          本文链接:https://www.haomeiwen.com/subject/divlfdtx.html