Tor Client Library
- Rust 100%
| .github/workflows | Don't run integration tests in github | |
| src | Some incompatible upgrades | |
| tests | Make the Tor signing key a bit nicer | |
| .gitignore | Initial commit | |
| Cargo.toml | Bump version and rust edition | |
| LICENSE-APACHE | Getting things ready | |
| LICENSE-MIT | Getting things ready | |
| README.md | Add docs badge | |
Tor Client Library
This is a client library for Tor, which allows you to interact programmatically with a Tor server, using its API.
Crates.io Docs Badge License License GitHub Actions Workflow Status
Installation
To add it to your existing project:
cargo add tor_client_lib
Commands Supported
This library currently supports a small (but useful) subset of the full API, namely:
AUTHENTICATEAUTHCHALLENGEGETINFOPROTOCOLINFOADD_ONIONDEL_ONION
If you’d like to see more functions supported, please either submit an issue request or a PR.
Example Code
use tor_client_lib::{
control_connection::TorControlConnection,
error::TorError,
auth::TorAuthentication
};
// Connect to the Tor service running locally
let mut control_connection = TorControlConnection::connect("127.0.0.1:9051").await?;
// Authenticate to the Tor server
control_connection.authenticate(TorAuthentication::SafeCookie(None)).await?;
// Call the "GETINFO" command to get the Tor version number
let tor_version = control_connection.get_info("version").await?;
CLI
The repo includes a simple CLI for sending commands to Tor. To use it, run:
cargo run
For example:
% cargo run
Finished dev [unoptimized + debuginfo] target(s) in 0.07s
Running `target/debug/tor-cli`
Welcome to Tor CLI v0.1.0
Tor CLI> connect
Connected to localhost:9051
Tor CLI> authenticate cookie
Authenticated
Tor CLI> get_info version
["0.4.6.10"]