1*cf78ab8cSAndroid Build Coastguard Worker // Copyright 2024 Google LLC 2*cf78ab8cSAndroid Build Coastguard Worker // 3*cf78ab8cSAndroid Build Coastguard Worker // Licensed under the Apache License, Version 2.0 (the "License"); 4*cf78ab8cSAndroid Build Coastguard Worker // you may not use this file except in compliance with the License. 5*cf78ab8cSAndroid Build Coastguard Worker // You may obtain a copy of the License at 6*cf78ab8cSAndroid Build Coastguard Worker // 7*cf78ab8cSAndroid Build Coastguard Worker // https://www.apache.org/licenses/LICENSE-2.0 8*cf78ab8cSAndroid Build Coastguard Worker // 9*cf78ab8cSAndroid Build Coastguard Worker // Unless required by applicable law or agreed to in writing, software 10*cf78ab8cSAndroid Build Coastguard Worker // distributed under the License is distributed on an "AS IS" BASIS, 11*cf78ab8cSAndroid Build Coastguard Worker // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12*cf78ab8cSAndroid Build Coastguard Worker // See the License for the specific language governing permissions and 13*cf78ab8cSAndroid Build Coastguard Worker // limitations under the License. 14*cf78ab8cSAndroid Build Coastguard Worker 15*cf78ab8cSAndroid Build Coastguard Worker //! # HTTP Proxy 16*cf78ab8cSAndroid Build Coastguard Worker //! 17*cf78ab8cSAndroid Build Coastguard Worker //! This crate provides a TCP proxy client that can be used to 18*cf78ab8cSAndroid Build Coastguard Worker //! establish connections to a target address through an HTTP proxy 19*cf78ab8cSAndroid Build Coastguard Worker //! server. 20*cf78ab8cSAndroid Build Coastguard Worker //! 21*cf78ab8cSAndroid Build Coastguard Worker //! The main component of this crate is the `Connector` struct, which 22*cf78ab8cSAndroid Build Coastguard Worker //! handles the CONNECT request handshake with the proxy, including 23*cf78ab8cSAndroid Build Coastguard Worker //! optional Basic authentication. 24*cf78ab8cSAndroid Build Coastguard Worker //! 25*cf78ab8cSAndroid Build Coastguard Worker //! The crate also includes a `Manager` struct that implements the 26*cf78ab8cSAndroid Build Coastguard Worker //! `ProxyManager` trait from `libslirp_rs`, allowing it to be used 27*cf78ab8cSAndroid Build Coastguard Worker //! with the `libslirp` library for managing TCP connections through 28*cf78ab8cSAndroid Build Coastguard Worker //! the proxy. 29*cf78ab8cSAndroid Build Coastguard Worker //! 30*cf78ab8cSAndroid Build Coastguard Worker //! ## Example 31*cf78ab8cSAndroid Build Coastguard Worker //! 32*cf78ab8cSAndroid Build Coastguard Worker //! ``` 33*cf78ab8cSAndroid Build Coastguard Worker //! use std::net::SocketAddr; 34*cf78ab8cSAndroid Build Coastguard Worker //! 35*cf78ab8cSAndroid Build Coastguard Worker //! #[tokio::main] 36*cf78ab8cSAndroid Build Coastguard Worker //! async fn main() { 37*cf78ab8cSAndroid Build Coastguard Worker //! let proxy_addr: SocketAddr = "127.0.0.1:8080".parse().unwrap(); 38*cf78ab8cSAndroid Build Coastguard Worker //! 39*cf78ab8cSAndroid Build Coastguard Worker //! let connector = http_proxy::Connector::new(proxy_addr, None, None); 40*cf78ab8cSAndroid Build Coastguard Worker //! } 41*cf78ab8cSAndroid Build Coastguard Worker //! ``` 42*cf78ab8cSAndroid Build Coastguard Worker //! 43*cf78ab8cSAndroid Build Coastguard Worker //! ## Features 44*cf78ab8cSAndroid Build Coastguard Worker //! 45*cf78ab8cSAndroid Build Coastguard Worker //! * **libslirp:** Enables integration with the `libslirp` library. 46*cf78ab8cSAndroid Build Coastguard Worker //! 47*cf78ab8cSAndroid Build Coastguard Worker //! ## Limitations 48*cf78ab8cSAndroid Build Coastguard Worker //! 49*cf78ab8cSAndroid Build Coastguard Worker //! * Currently only supports HTTP proxies. 50*cf78ab8cSAndroid Build Coastguard Worker //! * Usernames and passwords cannot contain `@` or `:`. 51*cf78ab8cSAndroid Build Coastguard Worker 52*cf78ab8cSAndroid Build Coastguard Worker mod connector; 53*cf78ab8cSAndroid Build Coastguard Worker mod dns; 54*cf78ab8cSAndroid Build Coastguard Worker mod dns_manager; 55*cf78ab8cSAndroid Build Coastguard Worker mod error; 56*cf78ab8cSAndroid Build Coastguard Worker mod manager; 57*cf78ab8cSAndroid Build Coastguard Worker mod pattern_vec; 58*cf78ab8cSAndroid Build Coastguard Worker mod rewriter; 59*cf78ab8cSAndroid Build Coastguard Worker mod util; 60*cf78ab8cSAndroid Build Coastguard Worker 61*cf78ab8cSAndroid Build Coastguard Worker pub use connector::*; 62*cf78ab8cSAndroid Build Coastguard Worker pub use dns_manager::*; 63*cf78ab8cSAndroid Build Coastguard Worker pub use error::Error; 64*cf78ab8cSAndroid Build Coastguard Worker pub use manager::*; 65