Crates.io | yprox |
lib.rs | yprox |
version | 0.2.0 |
source | src |
created_at | 2023-09-11 15:54:25.449371 |
updated_at | 2023-11-13 15:21:46.46493 |
description | A modifying, multiplexer tcp proxy server tool and library. |
homepage | |
repository | https://github.com/fcoury/yprox |
max_upload_size | |
id | 969742 |
size | 57,735 |
A modifying, multiplexer tcp proxy server tool and library.
To use yprox
as an executable, simply install it using Cargo:
cargo install yprox
Then, you can run it with:
yprox <listen_addr> <target_addr1>...<target_addrN>
For example:
yprox 127.0.0.1:8080 127.0.0.1:9000 127.0.0.1:9001
This will start a proxy server that listens on 127.0.0.1:8080 and forwards incoming connections to 127.0.0.1:9000 and 127.0.0.1:9001.
To use yprox as a library, add it to your Cargo.toml file:
[dependencies]
yprox = "0.1"
Then, you can use it in your code:
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();
}
This will start a proxy server that listens on 127.0.0.1:8080 and forwards incoming connections to 127.0.0.1:9000 and 127.0.0.1:9001.
Optionally you can modify the data stream before forwarding it to the target. You can do that using the start_modifying
function:
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();
}