tor_hsservice/
internal_prelude.rs

1//! Imports used internally within this crate
2//!
3//! This file contains most of the imports we wish to use, throughout this crate.
4//!
5//! Every module does `use crate::internal_prelude::*;`
6//!
7//! Exceptions:
8//!
9//!  * Names that are private to a module and its submodules (eg, `publish`)
10//!    are imported to the sub-modules via `use super::*`.
11//!    (Thus, the sub-module inherits the prelude from its parent.)
12//!
13//!  * Broad names from specific contexts, that are unsuitable for wide imports.
14//!    For example, individual cell and message names from `tor-cell`,
15//!    and the types from `tor_proto::stream` other than the high-level `DataStream`.
16
17//---------- std ----------
18
19pub(crate) use {
20    std::any::Any,
21    std::borrow::Cow,
22    std::cmp::max,
23    std::cmp::Ordering,
24    std::collections::{BinaryHeap, HashMap, HashSet, VecDeque},
25    std::error::Error as StdError,
26    std::ffi::OsStr,
27    std::fmt::{self, Debug, Display},
28    std::fs,
29    std::fs::{File, OpenOptions},
30    std::future::Future,
31    std::hash::Hash,
32    std::io,
33    std::io::{BufReader, BufWriter, Read, Seek, SeekFrom, Write},
34    std::iter,
35    std::marker::PhantomData,
36    std::panic::AssertUnwindSafe,
37    std::path::{Path, PathBuf},
38    std::str::FromStr,
39    std::sync::{Arc, Mutex, MutexGuard},
40    std::time::{Duration, Instant, SystemTime},
41};
42
43//---------- upstreams ----------
44
45pub(crate) use {
46    async_trait::async_trait,
47    derive_builder::Builder,
48    derive_deftly::{define_derive_deftly, Deftly},
49    derive_more::{Constructor, Deref, DerefMut, From, Into},
50    educe::Educe,
51    futures::channel::mpsc,
52    futures::future::{self, Either},
53    futures::select_biased,
54    futures::stream::BoxStream,
55    futures::task::{SpawnError, SpawnExt as _},
56    futures::{AsyncRead, AsyncWrite, Stream},
57    futures::{FutureExt as _, SinkExt as _, StreamExt as _, TryStreamExt as _},
58    itertools::{chain, Itertools as _},
59    postage::{broadcast, watch},
60    rand::Rng,
61    rand_core::{CryptoRng, RngCore},
62    serde::{Deserialize, Deserializer, Serialize, Serializer},
63    thiserror::Error,
64    tracing::{debug, error, info, trace, warn},
65    void::{ResultVoidErrExt as _, Void},
66};
67
68//---------- tor-* crates ----------
69
70pub(crate) use {
71    oneshot_fused_workaround as oneshot,
72    retry_error::RetryError,
73    safelog::{sensitive, Redactable as _},
74    tor_async_utils::mpsc_channel_no_memquota,
75    tor_async_utils::{DropNotifyWatchSender, PostageWatchSenderExt as _},
76    tor_basic_utils::{impl_debug_hex, retry::RetryDelay, PathExt as _, RngExt as _},
77    tor_cell::relaycell::{msg::AnyRelayMsg, RelayMsg as _},
78    tor_circmgr::hspool::{HsCircKind, HsCircPool},
79    tor_config::{ConfigBuildError, Reconfigure, ReconfigureError},
80    tor_dirclient::request::HsDescUploadRequest,
81    tor_dirclient::{send_request, Error as DirClientError, RequestFailedError},
82    tor_error::define_asref_dyn_std_error,
83    tor_error::{bad_api_usage, internal, into_bad_api_usage, into_internal},
84    tor_error::{debug_report, error_report, info_report, warn_report},
85    tor_error::{Bug, ErrorKind, ErrorReport as _, HasKind},
86    tor_hscrypto::ope::AesOpeKey,
87    tor_hscrypto::pk::{
88        HsBlindId, HsBlindIdKey, HsBlindIdKeypair, HsClientDescEncKey, HsDescSigningKeypair,
89        HsIdKey, HsIdKeypair, HsIntroPtSessionIdKey, HsIntroPtSessionIdKeypair, HsSvcNtorKeypair,
90    },
91    tor_hscrypto::time::TimePeriod,
92    tor_hscrypto::RevisionCounter,
93    tor_keymgr::{
94        derive_deftly_template_KeySpecifier, KeyMgr, KeySpecifier,
95        KeySpecifierComponentViaDisplayFromStr, KeySpecifierPattern as _, KeystoreSelector,
96        {ArtiPathRange, KeySpecifierComponent},
97    },
98    tor_linkspec::{
99        CircTarget, HasRelayIds as _, OwnedChanTargetBuilder, OwnedCircTarget, RelayIds,
100    },
101    tor_llcrypto::pk::{curve25519, ed25519},
102    tor_log_ratelim::log_ratelim,
103    tor_netdir::{HsDirParams, NetDirProvider, Relay, Timeliness},
104    tor_netdoc::doc::hsdesc::{create_desc_sign_key_cert, HsDescBuilder},
105    tor_netdoc::NetdocBuilder,
106    tor_persist::slug::Slug,
107    tor_persist::state_dir::{
108        ContainsInstanceStateGuard as _, InstanceRawSubdir, LockFileGuard, StateDirectory,
109    },
110    tor_proto::circuit::{ClientCirc, MetaCellDisposition},
111    tor_proto::stream::DataStream,
112    tor_rtcompat::SleepProvider,
113    tor_rtcompat::{Runtime, SleepProviderExt as _},
114};
115
116//---------- names from this crate ----------
117
118pub(crate) use {
119    crate::err::IptStoreError,
120    crate::err::StateExpiryError,
121    crate::ipt_lid::{InvalidIptLocalId, IptLocalId},
122    crate::ipt_mgr::CreateIptError,
123    crate::ipt_mgr::IptManager,
124    crate::ipt_set::IptSet,
125    crate::ipt_set::IptsManagerView,
126    crate::ipt_set::IptsPublisherUploadView,
127    crate::ipt_set::IptsPublisherView,
128    crate::ipt_set::{self, PublishIptSet},
129    crate::keys::expire_publisher_keys,
130    crate::keys::{IptKeyRole, IptKeySpecifier, IptKeySpecifierPattern},
131    crate::publish::Publisher,
132    crate::replay::IptReplayLog,
133    crate::replay::ReplayError,
134    crate::status::PublisherStatusSender,
135    crate::status::State,
136    crate::status::{IptMgrStatusSender, State as IptMgrState},
137    crate::status::{OnionServiceStatus, OnionServiceStatusStream, StatusSender},
138    crate::time_store,
139    crate::timeout_track::{TrackingInstantOffsetNow, TrackingNow, Update as _},
140    crate::OnionServiceConfig,
141    crate::StartupError,
142    crate::StreamRequest,
143    crate::{ipt_establish, ShutdownStatus},
144    crate::{
145        keys::BlindIdKeypairSpecifierPattern,
146        rend_handshake::{self, RendCircConnector},
147        ClientError,
148    },
149    crate::{req::RendRequestContext, HsNickname, LinkSpecs, NtorPublicKey},
150    crate::{
151        BlindIdKeypairSpecifier, DescSigningKeypairSpecifier, HsIdKeypairSpecifier,
152        HsIdPublicKeySpecifier,
153    },
154    crate::{DescUploadError, IptError},
155    crate::{FatalError, RendRequest},
156    ipt_establish::{IptEstablisher, IptParameters, IptStatus, IptStatusStatus, IptWantsToRetire},
157};