给各位汇报一下组网软件的新进展

165 天前
 lanthora

一个多月前发了一篇帖子: WireGuard 跨国组网失败后,一个新工具的诞生,这段时间社区用户提供了很多有价值的反馈.因此发一个帖子汇报一下由社区用户驱动而实现的特性,并感谢各位社区用户.

曾经我认为用户使用的是相对较新的 Linux 发行版,并能够使用系统依赖构建出二进制,并使用发行版提供的方式打包,至少是能运行 Docker. 然而,还有用户在用着 centos7,甚至是一些我没有听说过的路由器系统.对于这些系统几乎没法用这个软件,而把这个软件跑在路由器上貌似也是一种常见的需求?

一位用户通过很复杂的脚本构建所有底层依赖,并最终制作出静态链接的可执行程序后,我觉得有必要支持这个特性.因此参考这个用户的脚本,调整 CMake 构建流程,允许下载依赖并 构建出单文件的可执行程序 ,这对 Go 和 Rust 来说不难,但对 C++ 来说还是稍微有一点点复杂.

在前面的基础上,又 通过交叉编译构建不同架构的可执行程序 ,最终制作出Github Workflow.

这是个自用软件,同时分享出来给 有相同需求的用户.后续目标是让软件保持足够的稳定,几乎不会为用户实现新需求,除非能直接提 PR.说到稳定,前段时间心血来潮测试过第一个发布的版本,还能和最新版本正常组网.

最后再放一下项目链接: https://github.com/lanthora/candy

2437 次点击
所在节点    宽带症候群
9 条回复
rebecca554owen
165 天前
项目不错,支持了。
fortitudeZDY
163 天前
c++编写,太厉害了,赞一个
lanthora
163 天前
@rebecca554owen 感谢
@fortitudeZDY 当初选 c++ 是因为 wintun 库是 c 的 api,并且用 c++ 写不用担心编译不出一些用户量少的架构,毕竟不管什么架构至少会出能用的 c 编译器.
fortitudeZDY
163 天前
@lanthora 我看 tailscale 也是用的 wintun 是,c++一直没胆量去学习,不过 go 在网络处理上可能还是没有 c++高效,加油楼主
lanthora
163 天前
@fortitudeZDY 在 windows 下几乎都是用的 wintun, 其他语言是给 c 套壳.一般家庭网络性能瓶颈是带宽的上传,不是开发语言.这波升级搞定后我要继续躺了.不做新功能,希望没 BUG.
allenby
162 天前
支持嘎
cnbatch
162 天前
我自己的网络工具也用 C++来写,依赖项全部由系统内置的包管理器提供,个别发行版不提供静态版本那就自己编译一个写特例。

最终效果就是,只需要复制粘贴命令就能顺利编译(个别发行版除外)。

不过我没法用 GitHub Workflow ,这货不支持 BSD 二进制,而我自己是 BSD 用户。
所以我都是在自己的虚拟机做编译的,在开发用的机器运行脚本,自动登录到各台虚拟机运行编译流程。

唯一的遗憾是,我的项目创始之时,各大编译器对 C++20 特性的支持差异太大,只能使用当时的“最大公约数”——C++17 ,没能用上新版本内置的协程。现在想改都没法改。
cnbatch
162 天前
@fortitudeZDY 没什么好怕的,崩了就改,一边写一边学
tediorelee
160 天前
厉害了,star 一下

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1048115

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX