#proxy #tokio #async #networking #web #proxy-server #depend

relayport-rs

快速便捷的代理TCP和UDP端口的抽象

7个版本 (4个重大更新)

0.5.0 2023年12月12日
0.4.0 2023年12月12日
0.3.0 2023年12月6日
0.2.0 2023年12月5日
0.1.2 2023年11月30日

#2286 in 网络编程

BSD-2-Clause

42KB
541

relayport-rs

快速便捷的代理TCP和UDP端口的抽象。

Rust codecov License crates.io docs.rs

这个库简化了从Rust应用程序创建异步TCP/UDP代理的过程。代理数量仅受运行库的系统上可用资源的限制。此库依赖于tokio进行其运行时。

使用

要在自己的包中使用此库,请将以下内容添加到您的Cargo.toml中

[dependencies]
relayport_rs = "0.5.0"

示例

一个简单的程序,可以将Web流量代理到服务器,可能看起来像这样

use std::error::Error;
use relayport_rs::command::RelayCommand;
use relayport_rs::RelayPortError;
use relayport_rs::RelayTcpSocket;
use tokio::sync::broadcast;

#[tokio::main]
pub async fn main() -> Result<(), RelayPortError> {
    // The relay expects a broadcast channel on which to listen for shutdown commands
    let (tx, rx) = broadcast::channel(16);

    // build a relay with a listener TCP socket
    let relay = RelaySocket::build()
        .set_so_reuseaddr(true)
        .set_tcp_nodelay(true)
        .bind("127.0.0.1:8080")?
        .listen()?;

    // this will never return unless it encounters an error
    relay
        .run("127.0.0.1:80", &rx)
        .await
}

此示例代理DNS端口,使用UDP

use std::error::Error;
use relayport_rs::command::RelayCommand;
use relayport_rs::RelayPortError;
use relayport_rs::RelayUdpSocket;
use tokio::sync::broadcast;

#[tokio::main]
pub async fn main() -> Result<(), RelayPortError> {
    // The relay expects a broadcast channel on which to listen for shutdown commands
    let (tx, rx) = broadcast::channel(16);

    // build a relay with a UDP socket
    let udp_relay = RelayUdpSocket::build()
        .set_so_reuseaddr(true)
        .bind("127.0.0.1:10080")
        .await?;

    // this will never return unless it encounters an error
    udp_relay
        .run("1.1.1.1:53", &rx)
        .await
        .expect("failed to start relay");
}

先决条件

  1. Git源代码版本控制系统

https://git-scm.cn/book/en/v2/Getting-Started-Installing-Git

  1. Rust编程语言 官方安装指南

curl --proto '=https' --tlsv1.2 -sSfhttps://sh.rustup.rs | sh

为了确保正确安装,请输入以下命令并确保您获得成功输出

rustc --version
cargo --version

依赖关系

~3–13MB
~126K SLoC