v2rayN-3.29-VLESS 订阅设置 增加 Set TLS allowInsecure option to True

需求

因为有些机场经常会换节点的域名,所以其实他们的域名是没有CA证书的,那么在翻墙客户端的节点参数中,需要设置 Set TLS allowInsecure option to True

而在使用机场的订阅服务时,因为vmess分享链接的格式中没有allowInsecure这个配置项,所以每次更新订阅以后,都需要手动设置一下 Set TLS allowInsecure option to True

比如,Bandwagon官方机场Just My Socks的使用说明 (下图)

更改V2ray传输类型界面,TCP+TLS需把allowInsecure设为True

V2ray二维码旁提示需手动开启allowInsecure并更改传输类型

方便的功能设计,应该是在第一次添加订阅时设置这个订阅里的vmess和vless是否都要设置 Set TLS allowInsecure option to True, 以后每次更新订阅之后,就不应该还手动去一个一个节点的参数表里面设置。

设计

添加订阅时,增加一个checkbox "Set TLS allowInsecure option to True"

订阅设置窗口红字提示把TLS allowInsecure选项设为True

最终实现效果

修改前

修改后


具体修改

新增界面控件

1. 订阅的控件设计在 SubSettingControl.cs,增加一个checkbox "Set TLS allowInsecure option to True",此checkbox命名为chkAllowInsecureTrue

Visual Studio中SubSettingControl设计界面,输出窗口报WebException

新增配置项

2. Config.cs 中为 class SubItem 增加数据成员 bool allowInsecure

代码并排对比:SubItem的allowInsecure数据成员被移除

配置项的保存与恢复

3. 为了在订阅设置时,设置了allowInsecure要能被保存起来。

SubSettingControl.cs 修改 BindingSub函数和EndBindingSub函数,增加 chkAllowInsecureTrue 的部分,完成界面控件与class SubItem之间的转换.

代码对比:BindingSub与EndBindingSub里的allowInsecure赋值被删掉

那么这两个转换分别在什么时候执行呢?

从保存的数据转换成界面控件在SubSettingControl_Load, 这个界面开始显示的时候。

而从控件到保存的数据在txtRemarks_Leave, 就是 txtRemarks 这个控件失去焦点的时候。


唉?这就奇怪了,难道保存数据要先点一下"备注"栏再点到外面来才会保存

再搜索一下txtRemarks_Leave,发现其它控件失去焦点都是注册的这个函数

代码高亮chkEnabled、txtUrl等控件都把Leave事件绑到txtRemarks_Leave

那我们也一样地弄,

4. SubSettingControl.Designer.cs 参考其它控件的做法,为 chkAllowInsecureTrue.Leave 增加 txtRemarks_Leave 函数的调用

代码对比:为chkAllowInsecureTrue.Leave手动加上txtRemarks_Leave调用

修改更新订阅功能

到目前为止,界面控件已经添加了,相应的设置也可以得到保存和恢复了。

接下来要实现的是,当我们点击 更新订阅 时的效果。

经过阅读代码发现,当我们 更新订阅 时候,UpdateSubscriptionProcess函数会去网络上获取订阅信息,然后通过AddBatchServers函数添加为节点。

*顺便一提,AddBatchServers函数本身也正是从剪贴板批量导入时的用到的函数。

5. MainForm.cs 在UpdateSubscriptionProcess函数中,增加获取配置项SubItem的allowInsecure,然后在AddBatchServers的时候,增加一个参数,把这个allowInsecure带进去。

6. ConfigHandler.cs 修改AddBatchServers函数的声明,增加参数把 allowInsecure 带进来

同时,在AddBatchServers函数的逻辑中,当遇到添加Vmess或VLESS节点的时候,根据带进来的 allowInsecure 设置节点参数。

代码对比:AddBatchServers新增allowInsecure参数并写入vmessItem


GitHub : https://github.com/crazypeace/v2rayN-3.29-VLESS


评论
  1. 我写下来这个修改过程,希望非开发者们能了解,一个看起来“小小”的功能修改,也会要涉及到方方面面。要知道,在实施上面这个解决方案之前,分析和思考了多个方案,并在他们之间比较、取舍的过程,并没有写出来!

    不过,从另一方面,我也想对那些有想法在开源圈里作为开发者的朋友们说,开源就是如此的自由。你有觉得好的需求,就大胆地fork,并自己动手去实现它!

    回复删除
发表评论