diff --git a/crates/lyrebird/src/main.rs b/crates/lyrebird/src/main.rs index 62480c4..b9a4b35 100644 --- a/crates/lyrebird/src/main.rs +++ b/crates/lyrebird/src/main.rs @@ -176,7 +176,7 @@ fn resolve_target_addr(addr: &TargetAddr) -> Result { TargetAddr::Ip(sa) => Ok(*sa), TargetAddr::Domain(_, _) => { // this will always fail because ptrs does not do dns lookups. - ptrs::resolve_addr(format!("{addr}")).context("domain resolution failed") + ptrs::tor::resolve_addr(format!("{addr}")).context("domain resolution failed") } } } @@ -189,7 +189,7 @@ async fn main() -> Result<()> { let args = Args::parse(); // Make state directory - let statedir = ptrs::make_state_dir()?; + let statedir = ptrs::tor::make_state_dir()?; // launch tracing subscriber with filter level init_logging_recvr( @@ -202,7 +202,7 @@ async fn main() -> Result<()> { let cancel_token = tokio_util::sync::CancellationToken::new(); // launch runners - let mut exit_rx = if ptrs::is_client()? { + let mut exit_rx = if ptrs::tor::is_client()? { // running as CLIENT client_setup(&statedir, cancel_token.clone()).await? } else { @@ -256,7 +256,7 @@ async fn client_setup( cancel_token: CancellationToken, ) -> Result> { let obfs4_name = Obfs4PT::name(); - let client_pt_info = ptrs::ClientInfo::new()?; + let client_pt_info = ptrs::tor::ClientInfo::new()?; let proxy_uri = client_pt_info.uri.ok_or(BridgeLineParseError)?; let (tx, rx) = oneshot::channel::(); @@ -514,7 +514,7 @@ async fn server_setup( ) -> Result> { let obfs4_name = Obfs4PT::name(); - let server_info = ptrs::ServerInfo::new()?; + let server_info = ptrs::tor::ServerInfo::new()?; let (tx, rx) = oneshot::channel::(); let mut listeners = Vec::new(); diff --git a/crates/ptrs/Cargo.toml b/crates/ptrs/Cargo.toml index aabef24..6d7bc62 100644 --- a/crates/ptrs/Cargo.toml +++ b/crates/ptrs/Cargo.toml @@ -12,8 +12,10 @@ repository = "https://github.com/jmwample/ptrs" [features] -default = [] +default = ["tor", "water"] debug = [] +tor = [] +water = [] [lib] name = "ptrs" diff --git a/crates/ptrs/src/lib.rs b/crates/ptrs/src/lib.rs index e80cee8..cb9bf3d 100644 --- a/crates/ptrs/src/lib.rs +++ b/crates/ptrs/src/lib.rs @@ -11,12 +11,14 @@ use tokio::io::{AsyncRead, AsyncWrite}; mod error; pub use error::Error; -#[macro_use] -pub mod args; -mod helpers; -pub use helpers::*; mod log; -pub mod orport; + +#[cfg(feature = "tor")] +pub mod tor; +pub use tor::args; + +#[cfg(feature = "water")] +pub mod water; pub trait PluggableTransport where diff --git a/crates/ptrs/src/tor.rs b/crates/ptrs/src/tor.rs new file mode 100644 index 0000000..1427a4b --- /dev/null +++ b/crates/ptrs/src/tor.rs @@ -0,0 +1,8 @@ +//! Tor Pluggable Transport integration tools + +#[macro_use] +pub mod args; +mod helpers; +pub use helpers::*; + +pub mod orport; diff --git a/crates/ptrs/src/args.rs b/crates/ptrs/src/tor/args.rs similarity index 100% rename from crates/ptrs/src/args.rs rename to crates/ptrs/src/tor/args.rs diff --git a/crates/ptrs/src/helpers.rs b/crates/ptrs/src/tor/helpers.rs similarity index 100% rename from crates/ptrs/src/helpers.rs rename to crates/ptrs/src/tor/helpers.rs diff --git a/crates/ptrs/src/orport.rs b/crates/ptrs/src/tor/orport.rs similarity index 100% rename from crates/ptrs/src/orport.rs rename to crates/ptrs/src/tor/orport.rs diff --git a/crates/ptrs/src/water.rs b/crates/ptrs/src/water.rs new file mode 100644 index 0000000..8f32344 --- /dev/null +++ b/crates/ptrs/src/water.rs @@ -0,0 +1,4 @@ +/// This trait allows for conversion to a format that can be compiled into a WATER binary. +pub trait Soluble {} + +// impl Soluble for Box> {}