From f3000f3904a11ddafc5e6933f63da38c1c28abce Mon Sep 17 00:00:00 2001 From: jmwample <8297368+jmwample@users.noreply.github.com> Date: Sun, 16 Jun 2024 08:34:14 -0600 Subject: [PATCH 1/4] layout for optional pt things --- crates/ptrs/Cargo.toml | 4 +++- crates/ptrs/src/lib.rs | 9 +++++++++ crates/ptrs/src/tor.rs | 0 crates/ptrs/src/water.rs | 7 +++++++ 4 files changed, 19 insertions(+), 1 deletion(-) create mode 100644 crates/ptrs/src/tor.rs create mode 100644 crates/ptrs/src/water.rs 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..bb7833e 100644 --- a/crates/ptrs/src/lib.rs +++ b/crates/ptrs/src/lib.rs @@ -18,6 +18,15 @@ pub use helpers::*; mod log; pub mod orport; +#[cfg(feature="tor")] +pub mod tor; + + +#[cfg(feature="water")] +pub mod water; + + + pub trait PluggableTransport where InRW: AsyncRead + AsyncWrite + Send + Sync + Unpin + 'static, diff --git a/crates/ptrs/src/tor.rs b/crates/ptrs/src/tor.rs new file mode 100644 index 0000000..e69de29 diff --git a/crates/ptrs/src/water.rs b/crates/ptrs/src/water.rs new file mode 100644 index 0000000..f1c8651 --- /dev/null +++ b/crates/ptrs/src/water.rs @@ -0,0 +1,7 @@ + + +/// This trait allows for conversion to a format that can be compiled into a WATER binary. +pub trait Soluble { +} + +// impl Soluble for Box> {} From af234837dd3551df4b3b1f83fc94bbdb756e80a0 Mon Sep 17 00:00:00 2001 From: jmwample <8297368+jmwample@users.noreply.github.com> Date: Fri, 28 Jun 2024 23:09:36 -0600 Subject: [PATCH 2/4] move some tor things to a tor mod --- crates/ptrs/Cargo.toml | 3 ++- crates/ptrs/src/lib.rs | 8 +++----- crates/ptrs/src/pt_spec_v3.rs | 3 +++ crates/ptrs/src/tor.rs | 8 ++++++++ crates/ptrs/src/{ => tor}/args.rs | 0 crates/ptrs/src/{ => tor}/helpers.rs | 0 crates/ptrs/src/{ => tor}/orport.rs | 0 7 files changed, 16 insertions(+), 6 deletions(-) create mode 100644 crates/ptrs/src/pt_spec_v3.rs rename crates/ptrs/src/{ => tor}/args.rs (100%) rename crates/ptrs/src/{ => tor}/helpers.rs (100%) rename crates/ptrs/src/{ => tor}/orport.rs (100%) diff --git a/crates/ptrs/Cargo.toml b/crates/ptrs/Cargo.toml index 6d7bc62..2d7f83e 100644 --- a/crates/ptrs/Cargo.toml +++ b/crates/ptrs/Cargo.toml @@ -12,10 +12,11 @@ repository = "https://github.com/jmwample/ptrs" [features] -default = ["tor", "water"] +default = ["tor", "water", "pt_spec_v3"] debug = [] tor = [] water = [] +pt_spec_v3 = [] [lib] name = "ptrs" diff --git a/crates/ptrs/src/lib.rs b/crates/ptrs/src/lib.rs index bb7833e..0f557ba 100644 --- a/crates/ptrs/src/lib.rs +++ b/crates/ptrs/src/lib.rs @@ -11,20 +11,18 @@ 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; +#[cfg(feature="pt_spec_v3")] +pub mod pt_spec_v3; pub trait PluggableTransport diff --git a/crates/ptrs/src/pt_spec_v3.rs b/crates/ptrs/src/pt_spec_v3.rs new file mode 100644 index 0000000..f58710e --- /dev/null +++ b/crates/ptrs/src/pt_spec_v3.rs @@ -0,0 +1,3 @@ +//! Pluggable Transport Specification 3.0 API +//! +//! TODO: this is in the ideation phase, not a guaranteed feature diff --git a/crates/ptrs/src/tor.rs b/crates/ptrs/src/tor.rs index e69de29..1427a4b 100644 --- a/crates/ptrs/src/tor.rs +++ 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 From e332390dee6906d3710b876105a9e23f10f75deb Mon Sep 17 00:00:00 2001 From: jmwample <8297368+jmwample@users.noreply.github.com> Date: Sat, 29 Jun 2024 13:29:35 -0600 Subject: [PATCH 3/4] pt spec v3 seems to be somewhat unmaintained - not commiting to adding it for now --- crates/ptrs/Cargo.toml | 3 +-- crates/ptrs/src/lib.rs | 3 --- crates/ptrs/src/pt_spec_v3.rs | 3 --- 3 files changed, 1 insertion(+), 8 deletions(-) delete mode 100644 crates/ptrs/src/pt_spec_v3.rs diff --git a/crates/ptrs/Cargo.toml b/crates/ptrs/Cargo.toml index 2d7f83e..6d7bc62 100644 --- a/crates/ptrs/Cargo.toml +++ b/crates/ptrs/Cargo.toml @@ -12,11 +12,10 @@ repository = "https://github.com/jmwample/ptrs" [features] -default = ["tor", "water", "pt_spec_v3"] +default = ["tor", "water"] debug = [] tor = [] water = [] -pt_spec_v3 = [] [lib] name = "ptrs" diff --git a/crates/ptrs/src/lib.rs b/crates/ptrs/src/lib.rs index 0f557ba..07932cb 100644 --- a/crates/ptrs/src/lib.rs +++ b/crates/ptrs/src/lib.rs @@ -21,9 +21,6 @@ pub use tor::args; #[cfg(feature="water")] pub mod water; -#[cfg(feature="pt_spec_v3")] -pub mod pt_spec_v3; - pub trait PluggableTransport where diff --git a/crates/ptrs/src/pt_spec_v3.rs b/crates/ptrs/src/pt_spec_v3.rs deleted file mode 100644 index f58710e..0000000 --- a/crates/ptrs/src/pt_spec_v3.rs +++ /dev/null @@ -1,3 +0,0 @@ -//! Pluggable Transport Specification 3.0 API -//! -//! TODO: this is in the ideation phase, not a guaranteed feature From b469750278bdb1e24e2c5381a63b1340f4aa6484 Mon Sep 17 00:00:00 2001 From: jmwample <8297368+jmwample@users.noreply.github.com> Date: Sun, 30 Jun 2024 22:24:13 -0600 Subject: [PATCH 4/4] missed moved refs --- crates/lyrebird/src/main.rs | 10 +++++----- crates/ptrs/src/lib.rs | 6 ++---- crates/ptrs/src/water.rs | 5 +---- 3 files changed, 8 insertions(+), 13 deletions(-) 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/src/lib.rs b/crates/ptrs/src/lib.rs index 07932cb..cb9bf3d 100644 --- a/crates/ptrs/src/lib.rs +++ b/crates/ptrs/src/lib.rs @@ -13,15 +13,13 @@ mod error; pub use error::Error; mod log; -#[cfg(feature="tor")] +#[cfg(feature = "tor")] pub mod tor; pub use tor::args; - -#[cfg(feature="water")] +#[cfg(feature = "water")] pub mod water; - pub trait PluggableTransport where InRW: AsyncRead + AsyncWrite + Send + Sync + Unpin + 'static, diff --git a/crates/ptrs/src/water.rs b/crates/ptrs/src/water.rs index f1c8651..8f32344 100644 --- a/crates/ptrs/src/water.rs +++ b/crates/ptrs/src/water.rs @@ -1,7 +1,4 @@ - - /// This trait allows for conversion to a format that can be compiled into a WATER binary. -pub trait Soluble { -} +pub trait Soluble {} // impl Soluble for Box> {}