返回首页

一周热榜

1作者: gonc3 天前原帖
嗨,HN, 在处理现代网络时,我一直觉得传统的 nc 工具非常令人沮丧。它假设一方有可达的 IP 和监听端口,而在双方都处于 NAT、CGNAT 或防火墙后面时,这种情况很少出现。 我构建了一个基于 Go 的 netcat 风格工具,它仅使用共享的高熵密码短语来实现临时的 P2P 连接。无需入站端口、已知 IP,也不需要手动协调。双方只需运行相同的命令,例如:`nc -p2p <passphrase>`。 实际示例: 类似于 FRP 的替代方案,没有公共服务器进行反向代理,也没有暴露的端口。例如,如果你经常需要访问公司网络内的 10.0.0.1:22,可以在公司局域网内的任意主机上运行以下命令: `gonc -p2p <passphrase> -linkagent` 然后,从家里你可以使用相同的密码短语启动隧道: `gonc -p2p <passphrase> -link 3080;3080` 之后,双方可以使用本地的 SOCKS5 监听器代理到对方局域网中的任何 IP:端口。 其背后的“魔法”: 它并不依赖于中央中继或复杂的 VPN,而是使用三阶段握手: 1. 会合:密码短语确定性地派生出一个唯一的 MQTT 主题和一个自签名的 TLS 证书/密钥对。 2. 发现:双方连接到一个公共 MQTT 代理(充当“公告板”)以交换 STUN 发现的候选地址。代理永远不会看到密码短语或原始流量。 3. 连接:首先尝试直接 TCP 连接,然后回退到 UDP 穿孔。如果 NAT 特别“困难”,则使用“生日悖论”策略(喷洒 600+ 个端口)来强制发生冲突。 4. 安全性:一旦连接,MQTT 通道就会被关闭。所有数据通过 mTLS 实现 P2P 传输。由于 TLS 证书是从秘密中派生的,没有密码短语就无法进行冒充。 主要特点: - 无“客户端”或“服务器”:双方运行完全相同的命令。 - 零基础设施:使用公共 MQTT/STUN 服务器;无需托管自己的信令服务器。 - 熟悉的界面:支持 stdin/stdout 管道和 -e 执行程序(如 P2P 反向 shell 或服务门户)。 - 内置 SOCKS5:可以作为持久隧道/代理访问内部局域网(FRP/NGROK 的替代方案,无需中央代理)。 为什么不直接使用 Tailscale/Wireguard? Tailscale 非常适合永久性网状网络,但有时你只想快速将一个 500MB 的 tar 包或一个快速 shell 传输到朋友的笔记本电脑,而不需要管理节点、访问控制列表或登录提供者。这是一个“一次性”的安全管道。 期待你的想法!
1作者: rubenhellman大约 12 小时前原帖
我一直在开发一个小工具,旨在减少在氛围编码工作流程中的提示摩擦。 实际上,很多迭代源于不够明确的提示:缺少约束、不清晰的范围、隐含的假设或混合的意图。这个工具将您想要构建的内容的粗略自然语言描述,重写为更明确、结构化的提示,提供更清晰的要求和背景,然后再发送给模型。 重点在于: - 使意图、约束和假设变得明确 - 减少提示的变动和微迭代 - 提高首次输出的质量,尤其是针对非技术构建者 它主要围绕氛围编码的用例(快速原型制作、AI辅助构建)设计,最适合与Lovable/Claude风格的工作流程配合使用,尽管在概念上它是模型无关的。 非常希望能得到技术反馈: - 提示规范化/重构是您认为有价值的内容吗? - 您是通过系统提示、微调还是运行时提示转换来解决这个问题的? - 在更复杂或长上下文的任务中,这个工具的效果如何? 欢迎分享批评意见。
1作者: TiernanDeFranco6 天前原帖
大家好,我正在开发Perro引擎,这是一款独特的游戏引擎,使用Rust编写,允许你使用C#、TypeScript或引擎的领域特定语言(DSL)Pup来编写游戏脚本。引擎会将你的脚本转译为Rust模块,与引擎进行交互,而无需运行不同的运行时、解释器或虚拟机。 这样做的好处是,相比于传统的脚本层,你将获得更高的性能,因为不需要解码字节码,也没有运行时的额外开销。 此外,这种方式使得每种语言都能支持相同的特性,并访问引擎的内部API,因为你不需要担心这些功能是否真的在该语言中实现并与Rust核心进行交互,它实际上就是Rust,只是在调用API中的本地函数。 需要说明的是,这并不意味着真正的C#或TypeScript在运行,它只是提供了一种熟悉的语法,以便于那些不想用Rust编写游戏逻辑的人。如果出于性能原因(例如非常具体的内存分配、克隆、借用管理)需要使用Rust,你可以像编写其他游戏脚本一样,原生编写Rust脚本,只需遵循引擎所期望的结构和约定。 我非常欢迎任何反馈,并乐意回答任何问题。如果你能给这个仓库点个星,那就太好了!