cssxsh/fix-protocol-version

使用系统代理的选项开启后无法关闭

Closed this issue · 7 comments

FixProtocolVersion.load 没有出现这样的问题,暂时使用的 FixProtocolVersion.load

cssxsh commented

val system = System.getProperty("java.net.useSystemProxies", "false")
val proxy = try {
System.setProperty("java.net.useSystemProxies", "true")
ProxySelector.getDefault()
.select(URI("https://www.google.com/"))
.firstOrNull() ?: Proxy.NO_PROXY
} finally {
System.setProperty("java.net.useSystemProxies", system)
}

cssxsh commented
  1. System.setProperty("java.net.useSystemProxies", system) 无效
  2. 你的系统代理有问题

加在一起炸掉了mirai 的上传请求

cssxsh commented

另外 FixProtocolVersion.sync 会直接同步从 https://github.com/RomiChan/protocol-versions 得到的最新版协议
而签名服务和协议版本要相互匹配,一旦协议变更,坐等 code=45

代理似乎没有问题,我测试了如下代码:

            String systemProxy = System.getProperty("java.net.useSystemProxies", "false");
            Proxy proxy;
            try {
                System.setProperty("java.net.useSystemProxies", "true");
                List<Proxy> proxyList = ProxySelector.getDefault().select(new URI("https://www.google.com/"));
                proxy = proxyList.size() > 0 ? proxyList.get(0) : Proxy.NO_PROXY;
            } catch (URISyntaxException e) {
                proxy = Proxy.NO_PROXY;
                e.printStackTrace();
            } finally {
                System.setProperty("java.net.useSystemProxies", systemProxy);
            }
            sj.add("proxy = " + proxy.toString());
            sj.add("systemProxies = " + systemProxy);

打印输出结果:

proxy = HTTP @ 127.0.0.1:10809
systemProxies = false

我的代理使用的是 v2rayN 的 自动配置系统代理 和 自定义路由规则

问个题外话:sync 可不可以改成 FixProtocolVersion 优先从 KFCFactory.json 配置了签名服务器的版本中 匹配 协议.json 文件?
如果 KFCFactory.json 如果启用了 KFCFactory.install() 并且没有找到对应的 协议.json 文件则抛出异常,从而避免 协议变更,坐等 code=45。如果匹配到的 协议.json 不是最新的则提示 从当前协议到最新支持的所有协议的版本