mirror of
				https://github.com/TeamPiped/piped-proxy.git
				synced 2024-08-14 23:50:45 +00:00 
			
		
		
		
	Add support for using proxies.
This commit is contained in:
		
							parent
							
								
									ab32f6a140
								
							
						
					
					
						commit
						63953d283e
					
				
					 3 changed files with 39 additions and 6 deletions
				
			
		
							
								
								
									
										17
									
								
								Cargo.lock
									
										
									
										generated
									
									
									
								
							
							
						
						
									
										17
									
								
								Cargo.lock
									
										
									
										generated
									
									
									
								
							| 
						 | 
					@ -946,9 +946,9 @@ checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[[package]]
 | 
					[[package]]
 | 
				
			||||||
name = "h2"
 | 
					name = "h2"
 | 
				
			||||||
version = "0.3.20"
 | 
					version = "0.3.21"
 | 
				
			||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
					source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
				
			||||||
checksum = "97ec8491ebaf99c8eaa73058b045fe58073cd6be7f596ac993ced0b0a0c01049"
 | 
					checksum = "91fc23aa11be92976ef4729127f1a74adf36d8436f7816b185d18df956790833"
 | 
				
			||||||
dependencies = [
 | 
					dependencies = [
 | 
				
			||||||
 "bytes",
 | 
					 "bytes",
 | 
				
			||||||
 "fnv",
 | 
					 "fnv",
 | 
				
			||||||
| 
						 | 
					@ -1914,6 +1914,7 @@ dependencies = [
 | 
				
			||||||
 "serde_urlencoded",
 | 
					 "serde_urlencoded",
 | 
				
			||||||
 "tokio",
 | 
					 "tokio",
 | 
				
			||||||
 "tokio-rustls",
 | 
					 "tokio-rustls",
 | 
				
			||||||
 | 
					 "tokio-socks",
 | 
				
			||||||
 "tokio-util",
 | 
					 "tokio-util",
 | 
				
			||||||
 "tower-service",
 | 
					 "tower-service",
 | 
				
			||||||
 "url",
 | 
					 "url",
 | 
				
			||||||
| 
						 | 
					@ -2402,6 +2403,18 @@ dependencies = [
 | 
				
			||||||
 "tokio",
 | 
					 "tokio",
 | 
				
			||||||
]
 | 
					]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[[package]]
 | 
				
			||||||
 | 
					name = "tokio-socks"
 | 
				
			||||||
 | 
					version = "0.5.1"
 | 
				
			||||||
 | 
					source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
				
			||||||
 | 
					checksum = "51165dfa029d2a65969413a6cc96f354b86b464498702f174a4efa13608fd8c0"
 | 
				
			||||||
 | 
					dependencies = [
 | 
				
			||||||
 | 
					 "either",
 | 
				
			||||||
 | 
					 "futures-util",
 | 
				
			||||||
 | 
					 "thiserror",
 | 
				
			||||||
 | 
					 "tokio",
 | 
				
			||||||
 | 
					]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[[package]]
 | 
					[[package]]
 | 
				
			||||||
name = "tokio-util"
 | 
					name = "tokio-util"
 | 
				
			||||||
version = "0.7.8"
 | 
					version = "0.7.8"
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -15,7 +15,7 @@ qstring = "0.7.2"
 | 
				
			||||||
ravif = { version = "0.11.2", optional = true }
 | 
					ravif = { version = "0.11.2", optional = true }
 | 
				
			||||||
rgb = { version = "0.8.36", optional = true }
 | 
					rgb = { version = "0.8.36", optional = true }
 | 
				
			||||||
regex = "1.9.3"
 | 
					regex = "1.9.3"
 | 
				
			||||||
reqwest = { version = "0.11.19", features = ["rustls-tls", "stream", "brotli", "gzip"], default-features = false }
 | 
					reqwest = { version = "0.11.19", features = ["rustls-tls", "stream", "brotli", "gzip", "socks"], default-features = false }
 | 
				
			||||||
tokio = { version = "1.32.0", features = ["full"] }
 | 
					tokio = { version = "1.32.0", features = ["full"] }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[features]
 | 
					[features]
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										22
									
								
								src/main.rs
									
										
									
									
									
								
							
							
						
						
									
										22
									
								
								src/main.rs
									
										
									
									
									
								
							| 
						 | 
					@ -1,8 +1,8 @@
 | 
				
			||||||
use std::env;
 | 
					use std::env;
 | 
				
			||||||
use std::error::Error;
 | 
					use std::error::Error;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
use actix_web::{App, HttpRequest, HttpResponse, HttpResponseBuilder, HttpServer, web};
 | 
					 | 
				
			||||||
use actix_web::http::Method;
 | 
					use actix_web::http::Method;
 | 
				
			||||||
 | 
					use actix_web::{web, App, HttpRequest, HttpResponse, HttpResponseBuilder, HttpServer};
 | 
				
			||||||
use mimalloc::MiMalloc;
 | 
					use mimalloc::MiMalloc;
 | 
				
			||||||
use once_cell::sync::Lazy;
 | 
					use once_cell::sync::Lazy;
 | 
				
			||||||
use qstring::QString;
 | 
					use qstring::QString;
 | 
				
			||||||
| 
						 | 
					@ -41,6 +41,26 @@ static CLIENT: Lazy<Client> = Lazy::new(|| {
 | 
				
			||||||
    let builder = Client::builder()
 | 
					    let builder = Client::builder()
 | 
				
			||||||
        .user_agent("Mozilla/5.0 (Windows NT 10.0; rv:102.0) Gecko/20100101 Firefox/102.0");
 | 
					        .user_agent("Mozilla/5.0 (Windows NT 10.0; rv:102.0) Gecko/20100101 Firefox/102.0");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    let proxy = if let Ok(proxy) = env::var("PROXY") {
 | 
				
			||||||
 | 
					        Some(reqwest::Proxy::all(proxy).unwrap())
 | 
				
			||||||
 | 
					    } else {
 | 
				
			||||||
 | 
					        None
 | 
				
			||||||
 | 
					    };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if proxy.is_some() {
 | 
				
			||||||
 | 
					        // proxy basic auth
 | 
				
			||||||
 | 
					        let builder = if let Ok(proxy_auth_user) = env::var("PROXY_USER") {
 | 
				
			||||||
 | 
					            let proxy_auth_pass = env::var("PROXY_PASS").unwrap_or_default();
 | 
				
			||||||
 | 
					            builder.proxy(
 | 
				
			||||||
 | 
					                proxy
 | 
				
			||||||
 | 
					                    .unwrap()
 | 
				
			||||||
 | 
					                    .basic_auth(&proxy_auth_user, &proxy_auth_pass),
 | 
				
			||||||
 | 
					            )
 | 
				
			||||||
 | 
					        } else {
 | 
				
			||||||
 | 
					            builder.proxy(proxy.unwrap())
 | 
				
			||||||
 | 
					        };
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if env::var("IPV4_ONLY").is_ok() {
 | 
					    if env::var("IPV4_ONLY").is_ok() {
 | 
				
			||||||
        builder
 | 
					        builder
 | 
				
			||||||
            .local_address(Some("0.0.0.0".parse().unwrap()))
 | 
					            .local_address(Some("0.0.0.0".parse().unwrap()))
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue