parazyd 1 год назад
Родитель
Сommit
01ba2431a6
1 измененных файлов с 18 добавлено и 0 удалено
  1. 18 0
      src/net/transport/mod.rs

+ 18 - 0
src/net/transport/mod.rs

@@ -78,6 +78,9 @@ pub enum DialerVariant {
 
     /// SOCKS5 proxy
     Socks5(socks5::Socks5Dialer),
+
+    /// SOCKS5 proxy with TLS
+    Socks5Tls(socks5::Socks5Dialer),
 }
 
 /// Listener variants
@@ -200,6 +203,14 @@ impl Dialer {
                 Ok(Self { endpoint, variant })
             }
 
+            "socks5+tls" => {
+                // Build a SOCKS5 dialer with TLS encapsulation
+                enforce_hostport!(endpoint);
+                let variant = socks5::Socks5Dialer::new(&endpoint).await?;
+                let variant = DialerVariant::Socks5Tls(variant);
+                Ok(Self { endpoint, variant })
+            }
+
             x => {
                 error!("[P2P] Requested unsupported transport: {}", x);
                 Err(io::Error::from_raw_os_error(libc::ENETUNREACH))
@@ -271,6 +282,13 @@ impl Dialer {
                 let stream = dialer.do_dial().await?;
                 Ok(Box::new(stream))
             }
+
+            DialerVariant::Socks5Tls(dialer) => {
+                let stream = dialer.do_dial().await?;
+                let tlsupgrade = tls::TlsUpgrade::new().await;
+                let stream = tlsupgrade.upgrade_dialer_tls(stream).await?;
+                Ok(Box::new(stream))
+            }
         }
     }