arti/crates/tor-ptmgr
eta 2f75702cec Replace TransportRegistry with AbstractPtMgr
It doesn't make much sense to have the pluggable transport manager be a
registry, so replace its interface with a more narrowly defined, less generic
version.

Other changes:
- instead of returning a &-reference, it returns an owned Arc, which
  should make the ptmgr easier to implement while allowing efficient
  reuse
- provision for error handling is added, but will probably be revised in
  a future commit pending discussion
- tor-ptmgr code that would generate warnings as a result of this change
  is temporarily removed

This is a split out version of arti!886, intended so work on arti#659
can proceed.
2022-11-22 18:09:06 +00:00
..
examples tor-ptmgr/ipc: First cut of pluggable transport spawning 2022-10-26 16:07:30 +01:00
fuzz set all crate edition to 2021 2022-11-01 00:17:33 +01:00
src Replace TransportRegistry with AbstractPtMgr 2022-11-22 18:09:06 +00:00
Cargo.toml tor-ptmgr: make configuration use builders, plumb into arti-client 2022-11-16 11:39:25 +00:00
README.md Add the skeleton of a tor-ptmgr crate 2022-09-23 14:08:24 -04:00

README.md

tor-ptmgr

tor-ptmgr: Manage a set of anti-censorship pluggable transports.

Overview

This crate is part of Arti, a project to implement Tor in Rust.

In Tor, a "transport" is a mechanism used to avoid censorship by disguising the Tor protocol as some other kind of traffic.

A "pluggable transport" is one that is not implemented by default as part of the Tor protocol, but which can instead be added later on by the packager or the user. Pluggable transports are typically provided as external binaries that implement a SOCKS proxy, along with certain other configuration protocols.

This crate provides a means to manage a set of configured pluggable transports

Limitations

TODO pt-client: Currently, the APIs for this crate make it quite tor-specific. Notably, it can only return Channels! It would be good instead to adapt it so that it was more generally useful by other projects that want to use pluggable transports in rust. For now, I have put the Tor-channel-specific stuff behind a tor-channel-factory feature, but there are no APIs for using PTs without that feature currently. That should change.

TODO pt-client: Nothing in this crate is actually implemented yet.

TODO pt-client: The first version of this crate will probably only conform to the old Tor pluggable transport protocol, and not to more recent variants as documented at pluggabletransports.info

License: MIT OR Apache-2.0