Expand description
A minimal command line program for connecting to the tor network
(If you want a more general Tor client library interface, use
arti_client.)
This crate is the primary command-line interface for Arti, a project to implement Tor in Rust. Many other crates in Arti depend on it.
Note that Arti is a work in progress; although we’ve tried to write all the critical security components, you probably shouldn’t use Arti in production until it’s a bit more mature.
More documentation will follow as this program improves. For now, just know that it can run as a simple SOCKS proxy over the Tor network. It will listen on port 9150 by default, but you can override this in the configuration.
Command-line interface
(This is not stable; future versions will break this.)
arti uses the clap crate for command-line
argument parsing; run arti help to get it to print its documentation.
The only currently implemented subcommand is arti proxy; try arti help proxy for a list of options you can pass to it.
Configuration
By default, arti looks for its configuration files in a platform-dependent
location.
| OS | Configuration File |
|---|---|
| Unix | ~/.config/arti/arti.toml |
| macOS | ~/Library/Application Support/arti/arti.toml |
| Windows | \Users\<USERNAME>\AppData\Roaming\arti\arti.toml |
The configuration file is TOML. (We do not guarantee its stability.) For an
example see arti_defaults.toml.
Compile-time features
Additive features
-
tokio(default): Use the tokio runtime library as our backend. -
async-std: Use the async-std runtime library as our backend. This feature has no effect unless building with--no-default-featuresto disable tokio. -
native-tls– Build with support for thenative_tlsTLS backend. (default) -
journald– Build with support for logging to thejournaldlogging backend (available as part of systemd.) -
full– Build with all features above, along with all stable additive features from other arti crates. (This does not include experimental features. It also does not include features that select a particular implementation to the exclusion of another, or those that set a build flag.) -
rustls– build with the rustls TLS backend. This is not included infull, since it uses theringcrate, which uses the old (3BSD/SSLEay) OpenSSL license, which may introduce licensing compatibility issues.
Build-flag related features
static– Link with static versions of your system dependencies, including sqlite and/or openssl. (⚠ Warning ⚠: this feature will include a dependency on native-tls, even if you weren’t planning to use native-tls. If you only want to build with a static sqlite library, enable thestatic-sqlitefeature. We’ll look for better solutions here in the future.)static-sqlite– Link with a static version of sqlite.static-native-tls– Link with a static version ofnative-tls. Enablesnative-tls.
Cryptographic acceleration features
Libraries should not enable these by default, since they replace one implementation with another.
accel-sha1-asm– Accelerate cryptography by using an assembly implementation of SHA1, if one is available.accel-openssl– Accelerate cryptography by using openssl as a backend.
Experimental features
Note that the APIs enabled by these features are NOT covered by semantic versioning guarantees: we might break them or remove them between patch versions.
experimental– Build with all experimental features above, along with all experimental features from other arti crates.
Limitations
There are many missing features. Among them: there’s no onion service support yet. There’s no anti-censorship support. You can’t be a relay. There isn’t any kind of proxy besides SOCKS.
See the README file for a more complete list of missing features.
Library for building command-line client
This library crate contains code useful for making a command line program
similar to arti. The API should not be considered stable.
Re-exports
pub use cfg::ApplicationConfig;pub use cfg::ApplicationConfigBuilder;pub use cfg::ArtiCombinedConfig;pub use cfg::ArtiConfig;pub use cfg::ArtiConfigBuilder;pub use cfg::ProxyConfig;pub use cfg::ProxyConfigBuilder;pub use cfg::SystemConfig;pub use cfg::SystemConfigBuilder;pub use cfg::ARTI_EXAMPLE_CONFIG;pub use logging::LoggingConfig;pub use logging::LoggingConfigBuilder;Modules
Configuration for the Arti command line application
Implement a simple DNS resolver that relay request over Tor.
Detect a “ctrl-c” notification or other reason to exit.
Configure tracing subscribers for Arti
Code to adjust process-related parameters.
Implement a simple SOCKS proxy that relays connections over Tor.
Code to watch configuration files for any changes.