#tor #tokio #controller #onion

torut

torut is reasonable tor controller written in rust utilizing tokio for async communication

13 releases

0.2.1 Oct 31, 2021
0.1.10 Jul 2, 2021
0.1.8 Mar 31, 2021
0.1.7 Nov 24, 2020
0.1.1 Jan 4, 2020

#1912 in Network programming

Download history 220/week @ 2023-11-20 158/week @ 2023-11-27 245/week @ 2023-12-04 919/week @ 2023-12-11 786/week @ 2023-12-18 227/week @ 2023-12-25 219/week @ 2024-01-01 357/week @ 2024-01-08 187/week @ 2024-01-15 95/week @ 2024-01-22 282/week @ 2024-01-29 232/week @ 2024-02-05 438/week @ 2024-02-12 339/week @ 2024-02-19 381/week @ 2024-02-26 275/week @ 2024-03-04

1,466 downloads per month
Used in 22 crates (5 directly)

MIT license

155KB
3K SLoC

torut

Build Status

Torut is tor controller written in rust similar to stem or bine. It tries to reasonably implement specification of tor control port proto It works asynchronously with tokio and async/await.

It implements onion service key and address generation and serialization on its own without tor process.

Right now logic is quite tightly coupled with tokio so there is no way to remove tokio from dependencies and make all functions synchronous.

Status of onion service V2

Code handling V2 services has been removed in 0.2 release, since tor project removed(should have?) v2 handling code from their codebase as well. See This page

Testing

Tests in torut are split into two parts: these which do use tor and these which do not use tor. In order to enable tests which use tor use RUSTFLAGS="--cfg=testtor" and provide TORUT_TESTING_TOR_BINARY environment variable containing path to tor binary. Testing tor binary MUST be run with --test-threads=1 for instance like:

$ RUSTFLAGS="--cfg testtor" cargo test -- --test-threads=1

Dependencies

~1.2–3.5MB
~65K SLoC