1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
|
[package]
name = "arti-relay"
version = "0.45.0"
authors = ["The Tor Project, Inc."]
edition = "2024"
rust-version = "1.91"
license = "MIT OR Apache-2.0"
homepage = "https://gitlab.torproject.org/tpo/core/arti/-/wikis/home"
description = "Library for running a relay of the Tor network"
keywords = ["tor", "arti", "privacy", "anonymity", "networking"]
categories = ["network-programming", "cryptography"]
repository = "https://gitlab.torproject.org/tpo/core/arti.git/"
[package.metadata.docs.rs]
all-features = true
[features]
full = [
"fs-mistrust/full",
"safelog/full",
"tor-async-utils/full",
"tor-chanmgr/full",
"tor-config/full",
"tor-error/full",
"tor-keymgr/full",
"tor-netdir/full",
"tor-netdoc/full",
"tor-proto/full",
"tor-relay-crypto/full",
"tor-rtcompat/full",
"tor-memquota/full",
"tor-config-path/full",
"tor-llcrypto/full",
"tor-persist/full",
"tor-general-addr/full",
"tor-circmgr/full",
"tor-dircommon/full",
"tor-dirclient/full",
"tor-dirmgr/full",
"tor-dirpublish/full",
"tor-guardmgr/full",
"tor-log-ratelim/full",
"tor-basic-utils/full",
"tor-cert/full",
"tor-key-forge/full",
"tor-units/full",
"web-time-compat/full",
"tor-cell/full",
"tor-dirserver/full",
]
# This feature flag enables experimental features that are not supported. Turning it on may
# void your API.
experimental = ["metrics", "opentelemetry"]
metrics = ["tor-chanmgr/metrics", "dep:metrics-exporter-prometheus", "__is_experimental"]
opentelemetry = [
"dep:tracing-opentelemetry",
"dep:opentelemetry",
"dep:otlp-file-exporter",
"dep:opentelemetry_sdk",
"dep:opentelemetry-otlp",
"dep:opentelemetry-appender-tracing",
"dep:opentelemetry-proto",
"__is_experimental",
]
__is_experimental = []
[dependencies]
anyhow = "1.0.23"
async-trait = "0.1.54"
base64ct = "1.8.0"
cfg-if = "1.0.0"
clap = { version = "4.3.24", features = ["string", "wrap_help", "derive"] }
derive-deftly = { version = "~1.11.4", features = ["full", "beta"] }
derive_more = { version = "2.0.1", features = ["full"] }
directories = "6"
fs-mistrust = { path = "../fs-mistrust", version = "0.15.0", features = ["serde"] }
futures = "0.3.14"
libc = "0.2"
metrics-exporter-prometheus = { version = "0.18.0", optional = true, default-features = false, features = [
"http-listener",
] }
opentelemetry = { version = "0.32.0", optional = true }
opentelemetry-appender-tracing = { version = "0.32.0", optional = true }
opentelemetry-otlp = { version = "0.32.0", optional = true }
opentelemetry-proto = { version = "0.32.0", optional = true }
# TODO: Figure out why this feature is needed, and how it interacts with non-tokio runtimes.
opentelemetry_sdk = { version = "0.32.1", features = ["rt-tokio"], optional = true }
otlp-file-exporter = { path = "../otlp-file-exporter", version = "0.1.0", optional = true }
rand = "0.10.1"
rustls = { version = "0.23.5", default-features = false, features = ["logging", "aws_lc_rs"] }
safelog = { path = "../safelog", version = "0.9.0" }
serde = { version = "1.0.103", features = ["derive"] }
smallvec = "1.10"
strum = { version = "0.28.0", features = ["derive"] }
thiserror = "2"
tokio = { version = "1.47.1", features = ["signal"] }
tor-async-utils = { path = "../tor-async-utils", version = "0.45.0" }
tor-basic-utils = { path = "../tor-basic-utils", version = "0.45.0" }
tor-cell = { path = "../tor-cell", version = "0.45.0", features = ["relay"] }
tor-cert = { path = "../tor-cert", version = "0.45.0" }
tor-chanmgr = { path = "../tor-chanmgr", version = "0.45.0", features = ["relay"] }
tor-circmgr = { version = "0.45.0", path = "../tor-circmgr", features = ["flowctl-cc"] }
tor-config = { path = "../tor-config", version = "0.45.0" }
tor-config-path = { path = "../tor-config-path", version = "0.45.0" }
tor-config-shared = { path = "../tor-config-shared", version = "0.45.0" }
tor-dirclient = { version = "0.45.0", path = "../tor-dirclient", features = ["relay"] }
tor-dircommon = { version = "0.45.0", path = "../tor-dircommon" }
tor-dirmgr = { path = "../tor-dirmgr", version = "0.45.0" }
tor-dirpublish = { path = "../tor-dirpublish", version = "0.45.0" }
tor-dirserver = { path = "../tor-dirserver", version = "0.45.0" }
tor-error = { path = "../tor-error", version = "0.45.0" }
tor-general-addr = { path = "../tor-general-addr", version = "0.45.0" }
tor-guardmgr = { version = "0.45.0", path = "../tor-guardmgr" }
tor-key-forge = { version = "0.45.0", path = "../tor-key-forge" }
tor-keymgr = { path = "../tor-keymgr", version = "0.45.0", features = ["keymgr", "experimental-api"] }
tor-llcrypto = { path = "../tor-llcrypto", version = "0.45.0" }
tor-log-ratelim = { path = "../tor-log-ratelim", version = "0.45.0" }
tor-memquota = { version = "0.45.0", path = "../tor-memquota" }
tor-netdir = { path = "../tor-netdir", version = "0.45.0" }
tor-netdoc = { path = "../tor-netdoc", version = "0.45.0" }
tor-persist = { path = "../tor-persist", version = "0.45.0", features = ["state-dir"] }
tor-proto = { path = "../tor-proto", version = "0.45.0", features = ["counter-galois-onion", "tokio", "flowctl-cc"] }
tor-relay-crypto = { path = "../tor-relay-crypto", version = "0.45.0" }
tor-rtcompat = { path = "../tor-rtcompat", version = "0.45.0", features = ["rustls", "tokio", "tls-server"] }
tor-units = { path = "../tor-units", version = "0.45.0" }
tracing = "0.1.36"
tracing-opentelemetry = { version = "0.33.0", optional = true }
tracing-subscriber = { version = "0.3.20", features = ["env-filter"] }
void = "1"
web-time-compat = { path = "../web-time-compat", version = "0.2.0" }
[dev-dependencies]
tor-keymgr = { path = "../tor-keymgr", version = "0.45.0", features = ["ephemeral-keystore", "testing"] }
tor-rtmock = { path = "../tor-rtmock", version = "0.45.0" }
|