#proxy-server #multiplexer #tcp #modifying #incoming-connection #tool #executable

bin+lib yprox

一个修改的、多路复用的 TCP 代理服务器工具和库

3 个不稳定版本

0.2.0 2023年11月13日
0.1.1 2023年11月12日
0.1.0 2023年9月11日

#3#incoming-connection

每月 25 次下载

MIT 许可证

38KB
363

yprox

一个修改的、多路复用的 TCP 代理服务器工具和库。

用法

作为可执行文件

要将 yprox 作为可执行文件使用,只需使用 Cargo 安装它

cargo install yprox

然后,你可以运行它

yprox <listen_addr> <target_addr1>...<target_addrN>

例如

yprox 127.0.0.1:8080 127.0.0.1:9000 127.0.0.1:9001

这将启动一个监听 127.0.0.1:8080 并将传入连接转发到 127.0.0.1:9000 和 127.0.0.1:9001 的代理服务器。

作为库

要将 yprox 作为库使用,将其添加到你的 Cargo.toml 文件中

[dependencies]
yprox = "0.1"

然后,你可以在你的代码中使用它

use yprox::proxy::Proxy;

#[tokio::main]
async fn main() {
    let listen_addr = "127.0.0.1:8080";
    let target_addrs = vec!["127.0.0.1:9000", "127.0.0.1:9001"];
    proxy(listen_addr, target_addrs).await.unwrap();
}

这将启动一个监听 127.0.0.1:8080 并将传入连接转发到 127.0.0.1:9000 和 127.0.0.1:9001 的代理服务器。

使用修改函数

你可以选择在转发到目标之前修改数据流。你可以使用 start_modifying 函数来做到这一点

use yprox::proxy::Proxy;

#[tokio::main]
async fn main() {
    let listen_addr = "127.0.0.1:8080";
    let target_addrs = vec!["127.0.0.1:9000", "127.0.0.1:9001"];
    let modify_fn = |data: Vec<u8>| -> Vec<u8> {
        // Modify data here
        data
    };
    proxy(listen_addr, target_addrs, Some(modify_fn)).await.unwrap();
}

依赖关系

~1.2–1.7MB
~33K SLoC