#pluggable-transport #tor #transport #censorship #pluggable

ptrs-gesher-core

Pluggable Transport traits and helpers (core of the ptrs-gesher framework)

1 unstable release

new 0.3.0 Jun 4, 2026
0.2.0 Jun 3, 2026
0.1.0 May 27, 2026

#30 in #tor


Used in 4 crates

MIT/Apache

110KB
2K SLoC

ptrs-gesher-core

License: MIT/Apache 2.0

Core traits and helpers for the ptrs-gesher pluggable transports framework.

This crate defines the transport-agnostic abstractions that every concrete transport (obfs4, webtunnel, etc.) implements:

  • ClientTransport / ServerTransport -- connection-oriented trait pair that transforms an AsyncRead + AsyncWrite stream into an obfuscated tunnel.
  • ClientBuilder / ServerBuilder -- configuration and construction of transport instances from key-value Args.
  • PluggableTransport -- top-level trait tying builders and transports together.
  • Args -- ordered multimap for PT parameters (cert=, iat-mode=, etc.).

Status

Version 0.3.0 -- not yet published to crates.io. Interface subject to change.

Example

use ptrs::{Args, ClientBuilder as _};
use obfs4;

let mut args = Args::new();
args.add("cert", "AAAA...");
args.add("iat-mode", "0");

let mut builder = obfs4::ClientBuilder::default();
builder.options(&args)?;
let client = builder.build();
// client.establish(...) or client.wrap(...) to create the tunnel.

Notes / Resources

License

Dual-licensed under either:

  • Apache License, Version 2.0
  • MIT license

at your option.

Dependencies

~9–14MB
~159K SLoC