v2rayN-HY2 导出分享链接至剪贴板 显示分享二维码

总功能列表在这篇分析里.

我们现在实现第 8 项 导出分享链接至剪贴板

打开主窗口 .cs 文件的设计器
解决方案资源管理器右键菜单高亮查看设计器

找到菜单项, 双击, 
打开菜单项 "导出分享URL至剪贴板" 的响应函数
v2rayN的Servers菜单高亮导出分享链接到剪贴板

走读代码, 一路 F12 跳进去, 直到 GetVmessQRCode 函数. 这里就是生成分享URL的地方.
很明显, 函数名称没有及时更新, 还叫 Vmess 

Hy2 分享链接的格式有官方定义.
示例:
hysteria2://密码@服务器IP域名:端口?insecure=跳过证书验证#备注
我们照着 VLESS 的逻辑抄一遍. 没有encryption参数, 所以去掉.
代码对比:VLESS与Hysteria2分支的encryption字段处理

继续跳进 GetStdTransport 函数. 这里面是处理 streamSettings 结构中的数据.
我们添加 hy2 的处理.
代码新增hysteria2分支,按allowInsecure写入insecure

跑起来测试一下.
能复制出分享URL了. 但是里面多了一些参数.
hysteria2://7c6c918f-6e80-3283-9cf0-a8d34e80f86e@104.168.128.251:2053?security=tls&type=hysteria2&insecure=1#HY2-104.168.128.251
security 和 type 参数在 hy2 的官方定义中是不应该出现的.

所以我们改一下, 不要调用 GetStdTransport 函数了, 直接在 GetVmessQRCode 函数中, 把 insecure 参数填充了就算了.
代码高亮Hysteria2配置allowInsecure为true时加insecure

测试一下, 分享的URL正常.
生成的二维码用 Shadowrocket 扫一下, 也能正常使用.
v2rayN分享界面显示Hysteria2服务器二维码与链接


========
开了一个分支, 本文的修改内容已提交.
如果你有兴趣, 可以看到整个的开发过程.

评论