又一个命令行文件传输,这次用边缘函数做 TCP 打洞

2023-01-16 08:17:23 +08:00
 Contextualist

简单来说,就是用 Deno deploy 这个跑 V8 的平台做建立点对点连接时打洞用的公共服务器。实现主要归功于 Deno deploy 的以下特性:

具体可以参见我边缘函数的实现

噱头归噱头,我也是真心想做一个比市面上已有的命令行文件传输更好用的工具。现有的工具设计时大部分是考虑传文件给他人的场景,但对于我来说,更多是在自己的不同服务器 /设备间传文件的场景。因此,大可不必每次传输都要求用户复制粘贴一段随机代号,身份验证信息可以提前存储到每台设备上。

acp 使用体验上尽量贴近 cp ,发送端指定文件,接收端不需要指定任何信息。并且启动无分先后,两边都就绪后即开始协商建立连接传输。

安装脚本详见 README(就下载个可执行文件然后初始化配置)

最后忍不住说一句,边缘函数干这个实在是太适合了,轻量低成本低延迟,还颇有拆手机锂电池用来生火的风味

项目在这: https://github.com/Contextualist/acp

3200 次点击
所在节点    分享创造
26 条回复
Contextualist
2023-01-17 11:32:05 +08:00
@gogf
我大概明白了,你是在用 HTTPS_PROXY 之类的环境变量吗?这个目前的实现会无视代理的环境变量。我修了这个问题后自己试了一下,发现用代理时建立不了 P2P 连接,你如果想试一下可以试试目前最新提交的 CI artifacts: https://github.com/Contextualist/acp/actions/runs/3935796582 这个页面最底下可以下载。我得花时间想想这个问题是不是能解决的。

如果一定需要代理,我自己试了一下目前那种基于 fake IP 的真全局代理(比如 ClashX Pro 的增强模式)是可以用的。
gogf
2023-01-17 14:01:09 +08:00
@Contextualist
我原本是没有设置代理的,我的意思是设置了 HTTPS_PROXY 才能访问 “ https://acp.deno.dev/get

另外,https://github.com/Contextualist/acp/actions/runs/3935796582 这里好像并不能下载最新版,不知道没有权限还是什么,没用过 GitHub Actions...
Contextualist
2023-01-17 14:32:22 +08:00
@gogf 嗯,我需要研究一下怎么样正确支持 HTTPS_PROXY ,等到时候有结果了跟你说。

看了一下,GitHub Actions 好像需要登录才能下载 artifacts ,任意账户都行。如果不行,你也可以用我下载下来的这个: https://t.wss.ink/f/aa11yspjrlv
Contextualist
2023-01-18 20:24:32 +08:00
@gogf 实在是抱歉!我折腾了半天,还是没能解决跟代理一起使用的兼容问题,下面是初步结论(但感觉解释不太清楚

对于使用代理的一方,只有代理服务器连接 acp.deno.dev 时使用的 IP 端口是对外可见的,但是这个 IP 端口实际上并不能被其他连接重用。
如果另一方没使用代理并且有公网,那或许可以连接上,但是实际测试发现,使用代理的一方不能设置端口重用(似乎是 Go 的 bug )。

对此,剩下的选择是你自己部署服务端(参见 https://github.com/Contextualist/acp/blob/main/docs/advanced.md#host-the-rendezvous-service-yourself ),在 Deno Deploy 上或者自己的服务器上都行,然后绑定一个自己的域名。
sbilly
2023-01-29 16:35:12 +08:00
@Contextualist Linux/Windows/macOS 都支持吗?
Contextualist
2023-01-29 18:34:43 +08:00
@sbilly 都支持的,并且有相应的持续集成测试

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

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

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

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

© 2021 V2EX