tor-client-lib

Crates.iotor-client-lib
lib.rstor-client-lib
version0.2.1
sourcesrc
created_at2024-01-22 00:49:38.14232
updated_at2024-02-19 21:09:50.691888
descriptionA client library for the Tor API
homepage
repository
max_upload_size
id1108110
size132,481
Jack Lund (jacklund)

documentation

README

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:

  • AUTHENTICATE
  • AUTHCHALLENGE
  • GETINFO
  • PROTOCOLINFO
  • ADD_ONION
  • DEL_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"]
Commit count: 0

cargo fmt