#tcp-stream #http-request #reverse-proxy

flask

create http Request/Response objects from a raw TcpStream

10 stable releases

2.1.1 Jun 17, 2023
2.0.4 Apr 3, 2022
2.0.3 Nov 30, 2020
2.0.2 May 31, 2020
1.1.0 Mar 29, 2020

#1777 in Network programming

Download history

60 downloads per month
Used in fastforward

MIT license

35KB
752 lines

Build Status [minimum rustc 1.31

flask

Flask is a tool for storing the contents of the TcpStream and creating an http Request/Response

using flask to reverse proxy incoming HTTP requests from a TCPStream to address SocketAddr

use flask::httpx::read_http_request;

fn proxy_tcp_stream(stream: TcpStream, proxy_addr: SocketAddr) {
    let _proxy_add_str = format!("{}", proxy_addr);
    let proxy_addr_hdr = HeaderValue::from_str(&_proxy_add_str).unwrap();

    let mut req = read_http_request(stream.try_clone().unwrap()).unwrap();
    
    // In a real system you should implement remove_hop_by_hop_headers.  It's commented out here for simplicity.
    // *req.headers_mut() = remove_hop_by_hop_headers(req.headers());

    let req_headers = req.headers_mut();
    req_headers.remove(http::header::HOST);
    req_headers.insert(http::header::HOST, proxy_addr_hdr);
    handle_request(stream, req);
}

Dependencies

~1.5MB
~28K SLoC