/ crates / tor-hsservice / src / internal_prelude.rs
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  
 19  pub(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  
 45  pub(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  
 70  pub(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::build::circparameters_from_netparameters,
 79      tor_circmgr::hspool::{HsCircKind, HsCircPool},
 80      tor_config::{ConfigBuildError, Reconfigure, ReconfigureError},
 81      tor_dirclient::request::HsDescUploadRequest,
 82      tor_dirclient::{send_request, Error as DirClientError, RequestFailedError},
 83      tor_error::define_asref_dyn_std_error,
 84      tor_error::{bad_api_usage, internal, into_bad_api_usage, into_internal},
 85      tor_error::{debug_report, error_report, info_report, warn_report},
 86      tor_error::{Bug, ErrorKind, ErrorReport as _, HasKind},
 87      tor_hscrypto::ope::AesOpeKey,
 88      tor_hscrypto::pk::{
 89          HsBlindId, HsBlindIdKey, HsBlindIdKeypair, HsClientDescEncKey, HsDescSigningKeypair,
 90          HsIdKey, HsIdKeypair, HsIntroPtSessionIdKey, HsIntroPtSessionIdKeypair, HsSvcNtorKeypair,
 91      },
 92      tor_hscrypto::time::TimePeriod,
 93      tor_hscrypto::RevisionCounter,
 94      tor_keymgr::{
 95          derive_deftly_template_KeySpecifier, KeyMgr, KeySpecifier,
 96          KeySpecifierComponentViaDisplayFromStr, KeySpecifierPattern as _, KeystoreSelector,
 97          {ArtiPathRange, KeySpecifierComponent},
 98      },
 99      tor_linkspec::{
100          CircTarget, HasRelayIds as _, OwnedChanTargetBuilder, OwnedCircTarget, RelayIds,
101      },
102      tor_llcrypto::pk::{curve25519, ed25519},
103      tor_log_ratelim::log_ratelim,
104      tor_netdir::{HsDirParams, NetDirProvider, Relay, Timeliness},
105      tor_netdoc::doc::hsdesc::{create_desc_sign_key_cert, HsDescBuilder},
106      tor_netdoc::NetdocBuilder,
107      tor_persist::slug::Slug,
108      tor_persist::state_dir::{
109          ContainsInstanceStateGuard as _, InstanceRawSubdir, LockFileGuard, StateDirectory,
110      },
111      tor_proto::circuit::{ClientCirc, ConversationInHandler, MetaCellDisposition},
112      tor_proto::stream::DataStream,
113      tor_rtcompat::SleepProvider,
114      tor_rtcompat::{Runtime, SleepProviderExt as _},
115  };
116  
117  //---------- names from this crate ----------
118  
119  pub(crate) use {
120      crate::err::IptStoreError,
121      crate::err::StateExpiryError,
122      crate::ipt_lid::{InvalidIptLocalId, IptLocalId},
123      crate::ipt_mgr::CreateIptError,
124      crate::ipt_mgr::IptManager,
125      crate::ipt_set::IptSet,
126      crate::ipt_set::IptsManagerView,
127      crate::ipt_set::IptsPublisherUploadView,
128      crate::ipt_set::IptsPublisherView,
129      crate::ipt_set::{self, PublishIptSet},
130      crate::keys::expire_publisher_keys,
131      crate::keys::{IptKeyRole, IptKeySpecifier, IptKeySpecifierPattern},
132      crate::publish::Publisher,
133      crate::replay::ReplayError,
134      crate::replay::ReplayLog,
135      crate::status::PublisherStatusSender,
136      crate::status::State,
137      crate::status::{IptMgrStatusSender, State as IptMgrState},
138      crate::status::{OnionServiceStatus, OnionServiceStatusStream, StatusSender},
139      crate::time_store,
140      crate::timeout_track::{TrackingInstantOffsetNow, TrackingNow, Update as _},
141      crate::OnionServiceConfig,
142      crate::StartupError,
143      crate::StreamRequest,
144      crate::{ipt_establish, ShutdownStatus},
145      crate::{
146          keys::BlindIdKeypairSpecifierPattern,
147          rend_handshake::{self, RendCircConnector},
148          ClientError,
149      },
150      crate::{req::RendRequestContext, HsNickname, LinkSpecs, NtorPublicKey},
151      crate::{
152          BlindIdKeypairSpecifier, DescSigningKeypairSpecifier, HsIdKeypairSpecifier,
153          HsIdPublicKeySpecifier,
154      },
155      crate::{DescUploadError, IptError},
156      crate::{FatalError, RendRequest},
157      ipt_establish::{IptEstablisher, IptParameters, IptStatus, IptStatusStatus, IptWantsToRetire},
158  };