SYMBOL INDEX (142 symbols across 6 files) FILE: src/configuration.rs type ClientConnectionConfig (line 21) | pub struct ClientConnectionConfig { type TargetConnectionConfig (line 28) | pub struct TargetConnectionConfig { type TunnelConfig (line 39) | pub struct TunnelConfig { type ProxyMode (line 45) | pub enum ProxyMode { type ProxyConfiguration (line 52) | pub struct ProxyConfiguration { method from_command_line (line 138) | pub fn from_command_line() -> io::Result { method tls_identity_from_file (line 189) | fn tls_identity_from_file(filename: &str, password: &str) -> io::Resul... method read_tunnel_config (line 208) | fn read_tunnel_config(filename: &str) -> io::Result { type Cli (line 61) | struct Cli { type Commands (line 73) | enum Commands { type HttpOptions (line 83) | struct HttpOptions {} type HttpsOptions (line 89) | struct HttpsOptions { type TcpOptions (line 102) | struct TcpOptions { method default (line 109) | fn default() -> Self { FILE: src/http_tunnel_codec.rs constant REQUEST_END_MARKER (line 22) | const REQUEST_END_MARKER: &[u8] = b"\r\n\r\n"; constant MAX_HTTP_REQUEST_SIZE (line 24) | const MAX_HTTP_REQUEST_SIZE: usize = 16384; type HttpConnectRequest (line 28) | struct HttpConnectRequest { method parse (line 164) | pub fn parse(http_request: &[u8]) -> Result, endpoint: &str) -... method parse_request_line (line 215) | fn parse_request_line( method precondition_well_formed (line 231) | fn precondition_well_formed( method check_version (line 243) | fn check_version(version: &str) -> Result<(), EstablishTunnelResult> { method check_method (line 253) | fn check_method(method: &str) -> Result { method check_method (line 263) | fn check_method(method: &str) -> Result { method precondition_legal_characters (line 267) | fn precondition_legal_characters(http_request: &[u8]) -> Result<(), Es... method precondition_size (line 281) | fn precondition_size(http_request: &[u8]) -> Result<(), EstablishTunne... type HttpTunnelTarget (line 37) | pub struct HttpTunnelTarget { method fmt (line 133) | fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { type HttpTunnelCodec (line 46) | pub struct HttpTunnelCodec { type Error (line 84) | type Error = std::io::Error; method encode (line 86) | fn encode( type Item (line 52) | type Item = HttpTunnelTarget; type Error (line 53) | type Error = EstablishTunnelResult; method decode (line 55) | fn decode(&mut self, src: &mut BytesMut) -> Result, S... type Addr (line 114) | type Addr = String; method target_addr (line 116) | fn target_addr(&self) -> Self::Addr { method has_nugget (line 120) | fn has_nugget(&self) -> bool { method nugget (line 124) | fn nugget(&self) -> &Nugget { function got_http_request (line 140) | fn got_http_request(buffer: &BytesMut) -> bool { function got_http_request (line 145) | fn got_http_request(buffer: &BytesMut) -> bool { method from (line 154) | fn from(e: Error) -> Self { function test_got_http_request_partial (line 312) | fn test_got_http_request_partial() { function test_got_http_request_full (line 326) | fn test_got_http_request_full() { function test_got_http_request_exceeding (line 346) | fn test_got_http_request_exceeding() { function test_parse_valid (line 358) | fn test_parse_valid() { function test_parse_valid_with_headers (line 368) | fn test_parse_valid_with_headers() { function test_parse_not_allowed_method (line 383) | fn test_parse_not_allowed_method() { function test_parse_plain_text_method (line 395) | fn test_parse_plain_text_method() { function test_parse_plain_text_default_https_port (line 413) | fn test_parse_plain_text_default_https_port() { function test_parse_plain_text_default_http_port (line 431) | fn test_parse_plain_text_default_http_port() { function test_parse_plain_text_nugget (line 449) | fn test_parse_plain_text_nugget() { function test_parse_plain_text_with_body (line 470) | fn test_parse_plain_text_with_body() { function test_parse_plain_text_method_forbidden_domain (line 492) | fn test_parse_plain_text_method_forbidden_domain() { function test_parse_bad_version (line 506) | fn test_parse_bad_version() { function test_parse_bad_requests (line 519) | fn test_parse_bad_requests() { function test_parse_request_exceeds_size (line 543) | fn test_parse_request_exceeds_size() { function test_http_tunnel_encoder (line 557) | fn test_http_tunnel_encoder() { function build_codec (line 582) | fn build_codec() -> HttpTunnelCodec { FILE: src/main.rs type DnsResolver (line 39) | type DnsResolver = SimpleCachingDnsResolver; function main (line 42) | async fn main() -> io::Result<()> { function start_listening_tcp (line 84) | async fn start_listening_tcp(config: &ProxyConfiguration) -> Result( function report_tunnel_metrics (line 292) | fn report_tunnel_metrics(ctx: TunnelCtx, stats: io::Result) { function init_logger (line 301) | fn init_logger() { FILE: src/proxy_target.rs type TargetConnector (line 26) | pub trait TargetConnector { method connect (line 30) | async fn connect(&mut self, target: &Self::Target) -> io::Result io::Result io::Result; method resolve (line 113) | async fn resolve(&mut self, target: &str) -> io::Result { type SimpleTcpConnector (line 39) | pub struct SimpleTcpConnector { type Nugget (line 48) | pub struct Nugget { method new (line 197) | pub fn new>>(v: T) -> Self { method data (line 203) | pub fn data(&self) -> Arc> { type CachedSocketAddrs (line 52) | type CachedSocketAddrs = (Vec, u128); type SimpleCachingDnsResolver (line 60) | pub struct SimpleCachingDnsResolver { method new (line 136) | pub fn new(ttl: Duration) -> Self { method pick (line 144) | fn pick(&self, addrs: &[SocketAddr]) -> SocketAddr { method try_find (line 148) | async fn try_find(&mut self, target: &str) -> Option { method resolve_and_cache (line 167) | async fn resolve_and_cache(&mut self, target: &str) -> io::Result io::Result> { function new (line 125) | pub fn new(dns_resolver: R, connect_timeout: Duration, tunnel_ctx: Tunne... FILE: src/relay.rs constant NO_TIMEOUT (line 18) | pub const NO_TIMEOUT: Duration = Duration::from_secs(300); constant NO_BANDWIDTH_LIMIT (line 19) | pub const NO_BANDWIDTH_LIMIT: u64 = 1_000_000_000_000_u64; constant BUFFER_SIZE (line 20) | const BUFFER_SIZE: usize = 16 * 1024; type RelayShutdownReasons (line 23) | pub enum RelayShutdownReasons { type Relay (line 39) | pub struct Relay { method relay_data (line 79) | pub async fn relay_data( type RelayStats (line 47) | pub struct RelayStats { method fmt (line 231) | fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { type RelayPolicy (line 58) | pub struct RelayPolicy { method check_transmission_rates (line 191) | pub fn check_transmission_rates( method timed_operation (line 215) | pub async fn timed_operation(&self, f: T) -> Result< Relay { FILE: src/tunnel.rs type EstablishTunnelResult (line 26) | pub enum EstablishTunnelResult { type ConnectionTunnel (line 61) | pub struct ConnectionTunnel { type TunnelTarget (line 70) | pub trait TunnelTarget { method target_addr (line 72) | fn target_addr(&self) -> Self::Addr; method has_nugget (line 73) | fn has_nugget(&self) -> bool; method nugget (line 74) | fn nugget(&self) -> &Nugget; type TunnelCtx (line 79) | pub struct TunnelCtx { method fmt (line 320) | fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { type TunnelStats (line 86) | pub struct TunnelStats { function new (line 100) | pub fn new( function start (line 126) | pub async fn start(mut self) -> io::Result { function establish_tunnel (line 153) | async fn establish_tunnel( function process_tunnel_request (line 195) | async fn process_tunnel_request( function connect_to_target (line 250) | async fn connect_to_target( function relay_connections (line 274) | pub async fn relay_connections< function test_tunnel_ok (line 348) | async fn test_tunnel_ok() { function test_tunnel_plain_text_ok (line 406) | async fn test_tunnel_plain_text_ok() { function test_tunnel_request_timeout (line 460) | async fn test_tunnel_request_timeout() { function test_tunnel_response_timeout (line 501) | async fn test_tunnel_response_timeout() { function test_tunnel_upstream_timeout (line 544) | async fn test_tunnel_upstream_timeout() { function test_tunnel_bad_target (line 588) | async fn test_tunnel_bad_target() { function test_tunnel_bad_gateway (line 632) | async fn test_tunnel_bad_gateway() { function test_tunnel_bad_request (line 676) | async fn test_tunnel_bad_request() { function test_tunnel_not_allowed (line 721) | async fn test_tunnel_not_allowed() { function build_config (line 764) | fn build_config(default_timeout: Duration) -> TunnelConfig { type MockTargetConnector (line 787) | struct MockTargetConnector { type Target (line 796) | type Target = HttpTunnelTarget; type Stream (line 797) | type Stream = Mock; method connect (line 799) | async fn connect(&mut self, target: &Self::Target) -> io::Result