Crate proxy_server

Source
Expand description

Low level proxy server. To implement request proxying, only standard TcpStream was used without additional libraries

§Examples

With default params:

use proxy_server::Builder;                                                                       
      
fn main() {
    Builder::new().bind(None).expect("Error in proxy");
}

With custom params:

use proxy_server::{log::LogLevel, Builder};

fn main() {
    Builder::new()
        .with_address("127.0.0.1:3000")
        .with_target("127.0.0.1:3001")
        .with_log_level(LogLevel::Warn)
        .with_threads(4)
        .bind(None)
        .expect("Error in proxy");
}

With check and change target if needed on every request


use proxy_server::{Builder, ChangeTarget};                  
fn get_actual_target(old: &str) -> &'static str {     
    let target1 = "127.0.0.1:3001";                   
    let target2 = "127.0.0.1:3003";
    let res = match old {                                 
        "127.0.0.1:3001" => target2,
        "127.0.0.1:3003" => target1,
        _ => target1,
        };
        res
}

fn main() {
    let cb: ChangeTarget = |old| get_actual_target(old);                                          
    Builder::new()                          
        .bind(Some(cb))
        .expect("Error in proxy");
}

Modules§

http
log
prelude

Structs§

Builder
Structure for proxy server configuration

Type Aliases§

ChangeTarget
Callback function for change target on fly. Use only fast method because this function if it provieded then run every request again.