v2rayN 的节点可以设置出口为 Socks 方便使用落地节点 套别的隧道 实现链式代理
需求
上一篇讲了怎么手动修改配置文件
为了方便使用, 我们修改
比如, 一个 vless + websocket + tls 节点, 设置出口为
方案
在 outbounds
在原本的 outbound
界面设计
参数设置 窗口 增加一页 "出口设置"
解决方案资源管理器里面找到 参数设置 窗口.
选择中间这个面积最大的 TabControl 控件.
在空白处右键菜单, 添加
绑写数据
给窗口 OptionSettingWindow 添加两个数据属性. socksOutboundIP, socksOutboundPort.
按窗口的 确认 按钮之后, 调用的函数是 OptionSettingViewModel.SaveSetting
进里面打个断点. 运行起来, 点击 确认 按钮, 监视 面板里面检查一下数据绑定没问题, 获取到了文本框的内容.
参数的保存和读取
参考一下现有代码写法, 要修改一些数据结构, 添加相关的属性.添加一个数据结构 class SocksOutbound
class Config 添加数据成员OptionSettingViewModel.SaveSetting 函数里面 把参数保存.
在 OptionSettingViewModel 参数设置 窗口的构造函数中, 添加加载数据的语句
生成 config.json 配置文件
阅读代码, 找到生成配置文件的逻辑.
找到 CoreConfigV2ray.outbound 函数. 根据代码的逻辑, 本来要在这个函数里新增一个
经过调试发现, 原来在这一步已经读入了一个默认配置文件, 里面就已经有了 direct 和 black
修改这个默认配置文件, 增加一个 outbound, 如下
outbound 中新增的 Socks5 tunnel 已经添加好了.
接下来是 streamSettings 里面 增加一个 sockopt, 里面设置一个属性 dialerProxy, 值为 tunnel
还是修改默认配置文件, 在现有的 outbound
到目前为止, 可以编译运行一下, 调试确认把我们新设置的默认配置文件都加载到内存的数据结构中去了.
有了这些以后, 我们不能老是跑写死的 127.0.0.1 : 10086 是吧? 所以还差一步, 把界面上输入的
在函数 CoreConfigV2ray.GenerateClientConfigContent 中, 增加一步处理 socksOut
把程序的总配置参数中的 socksOut
========
完
Github
评论
发表评论