v2rayN-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的使用说明 (下图)


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

设计

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


最终实现效果

修改前

修改后


具体修改

新增界面控件

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


新增配置项

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


配置项的保存与恢复

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

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

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

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

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


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

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


那我们也一样地弄,

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


修改更新订阅功能

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

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

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

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

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

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

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


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


评论

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

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

    回复删除

发表评论

The Hot3 in Last 30 Days

无服务器 自建短链服务 Url-Shorten-Worker 完整的部署教程

ClouDNS .asia免费域名 托管到CloudFlare开CDN白嫖Websocket WS通道翻墙 / desec.io