Crates.io | allium |
lib.rs | allium |
version | 0.1.3 |
source | src |
created_at | 2020-10-16 12:39:15.788277 |
updated_at | 2021-07-19 14:49:10.303426 |
description | Allium is a Rust library for onion routing. |
homepage | |
repository | https://github.com/tum-taskforce/allium |
max_upload_size | |
id | 300577 |
size | 183,761 |
Allium is a genus of monocotyledonous flowering plants that includes hundreds of species, including the cultivated onion, garlic, scallion, shallot, leek, and chives. — Wikipedia
Allium is an implementation of onion routing written in Rust. It enables anonymous communication over encrypted tunnels. In addition to being used as a Rust library, Allium can also be run as a stand-alone daemon, which can be controlled over a TCP socket.
The documentation contains a short section on how to get started with the Allium library.
The daemon can be installed with:
$ cargo install allium-daemon
After installation, the daemon can be run like this:
$ allium-daemon [config file path]
The Allium daemon requires a configuration file, which defaults to config.ini
in the current working directory.
A different path can be specified via an optional command line parameter.
The configuration file must be in *.ini
or *.toml
format.
Example ini
-configuration:
[onion]
; The address and port on which the daemon listening for API connections
api_address = 127.0.0.1:4200
; The port on which connections from other peers in the onion network are accepted
p2p_port = 4201
; The address on which connections from other peers in the onion network are accepted
p2p_hostname = 127.0.0.1
; The path to a PEM-encoded RSA keypair used for signing messages
hostkey = testkey.pem
; The number of hops (excluding the destination) in each tunnel (should be at least 2)
hops = 2
; Enable or disable cover traffic
cover_traffic = true
; Duration of each round in seconds.
round_duration = 120
[rps]
; The address and port the random-peer-sampling module is listening on
api_address = 127.0.0.1:4100
For testing purposes, a command-line interface is provided which can be run like this:
$ cargo run --example cli
Additionally, the logging level can be specified like this:
$ RUST_LOG=trace cargo run --example cli
Tests can be run with
cargo test