#proxy #tokio #tcp #async-networking #networking #proxy-server #tcp-server

app tcpproxy

跨平台异步多客户端 TCP 代理;优秀的 tokio 示例

4 个版本 (2 个破坏性更新)

0.4.0 2023 年 9 月 6 日
0.3.1 2022 年 10 月 16 日
0.3.0 2022 年 10 月 16 日
0.1.0 2017 年 8 月 12 日

#9 in #tcp-server

每月下载量 26 次

MIT 许可证

13KB
168

tcpproxy

一个简单、跨平台的、多客户端 TCP 代理

tcpproxy 是一个用 Rust 编写的跨平台、多客户端 TCP 代理,专为那些“一次性”任务设计,在这些任务中,您通常花费的时间安装代理服务器和配置众多配置文件和选项,比实际使用的时间还多。

tcpproxy 完全异步,基于 tokio 异步运行时。它被编写为 Rust futures 和异步框架的双向异步网络代码的示例,故意保持易于理解。代码定期更新,以利用新的 tokio 功能和最佳实践(如果它们发生变化)。

用法

tcpproxy 是一个命令行应用程序。对于您希望代理数据到/从的每个远程端点,应该启动一个 tcpproxy 实例。所有配置都通过命令行参数完成,符合此项目的精神。

tcpproxy REMOTE_HOST:PORT [-b BIND_ADDR] [-l LOCAL_PORT]

Options:
    -b, --bind BIND_ADDR
                        The address on which to listen for incoming requests,
                        defaulting to localhost.
    -l, --local-port LOCAL_PORT
                        The local port to which tcpproxy should bind to
                        listening for requests, randomly chosen otherwise.
    -d, --debug         Enables debug mode w/ connection logging.

尽可能提供合理的默认参数值。

安装

tcpproxy 通过 cargo,Rust 包管理器提供。安装如下

cargo install tcpproxy

某些平台的预编译二进制文件可能可以从 tcpproxy 主页 https://neosmart.net/tcpproxy/ 获取

项目状态

根据您来自哪个语言生态系统,此项目可能看起来像是“未维护”。不要被一段时间内的一些更新所迷惑 - 此项目会定期根据需要更新以修复错误、提高代码质量、使用更现代的 Rust 编码模式和约定以及更新依赖项。然而,该项目不是为更新而更新,目前,根据作者的谦虚观点,功能相当完整。意图始终是提供一个简洁(但仍有用!)的 TCP 代理,可以快速从命令行启动并投入使用。它无意成为任何和所有外围功能的全面集合,并会尊重但坚决拒绝尝试捆绑“一切和厨房用具”。

贡献

欢迎拉取请求,但对于任何重大工作,请先打开一个问题,以确保我们都在同一页面上!

许可证和著作权

tcpproxy 由NeoSmart Technologies的Mahmoud Al-Qudsi开发和维护。 tcpproxy 是开源的,根据MIT公共许可证授权,向公众免费提供,不附带任何保证,希望它既能启发又有用。

依赖关系

~4–12MB
~125K SLoC