| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
| |
Rather than using `arti_client::config::path_resolver()`, third-party
code can get the path resolver using `TorClientConfig`s
`AsRef<CfgPathResolver>` impl instead.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This is a big change across multiple crates since there isn't a good way
to break it up.
This changes the signature of `CfgPath::path` to:
```
pub fn path(&self, path_resolver: &CfgPathResolver) -> Result<PathBuf, CfgPathError> {
```
Making this change means that our global `CfgPathResolver` needs to be
stored in the 'arti-client' library instead of `tor-config-path`, and
must be passed through to anything that calls `path` to expand the
variables.
|
| |\
| |
| |
| |
| | |
Disable a lot of dead code warnings and add a default-runtime feature in arti
See merge request tpo/core/arti!2551
|
| | |
| |
| |
| |
| |
| |
| | |
Now
cargo check --workspace --no-default-features --all-targets
cargo build -p arti --no-default-features --features=memquota,tokio,native-tls
are both clean.
|
| |/ |
|
| | |
|
| | |
|
| |
|
|
| |
This new feature is experimental.
|
| |
|
|
|
|
|
| |
This is needed because we'll soon add an `hss get-key` subcommand for
getting and/or generating a service identity key alongside `hss
onion-name` (`hss onion-name` will become a convenience around `hss
get-key --key-type=onion-name`).
|
| |
|
|
| |
The tests were added in !2275
|
| |
|
|
|
|
|
|
| |
No functional changes, this is just code motion.
This helps organize the code in `arti/src/lib.rs` a bit. It now only
contains the argument parsing and various other setup, and all the
subcommands are contained in separate modules.
|
| |
|
|
| |
No functional changes, this is just code motion.
|
| |
|
|
|
| |
(This is a bit trickier than I would like, but it ensures that we
never return a "not initialized yet" code.)
|
| |
|
|
|
|
|
| |
We'll need this for our rpc-library code to meaningfully open SOCKS
connections.
Closes #1523.
|
| |
|
|
|
|
|
| |
This type exists in the `arti` crate. It wraps and delegates to
`arti_rpcserver::RpcSession`. Subsequent commits will use it to
expose information from the `arti` crate to the RPC system; right
now it does nothing.
|
| |
|
|
| |
We can just used `build_for_arti()` here.
|
| | |
|
| | |
|
| |
|
|
|
|
|
|
|
|
|
| |
The `arti hsc` subcommand can't run without keymgr support.
Previously, it relied on `tor-keymgr/keymgr` being enabled indirectly by
its dependencies, via the `experimental` feature. We need to be able to
enable this feature in `arti` without relying on `experimental` (because
`arti hsc` will eventually be made non-experimental).
Part of #1487
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This adds an experimental `arti hsc` subcommand for managing client
state and keys. Currently, it only supports the
`prepare-service-discovery-keys` operation described in #1281 and
`doc/dev/notes/client-auth.md`.
A note on terminology: I am referring to services that encrypt the
second layer of their descriptor as running in "restricted discovery"
mode (because they can only be discovered, i.e. have their IPT points
found out, by a set of authorized clients). The corresponding client
"auth" keys, being the keys that enable the client to find out the list
of intro points, pow-params etc. of the service, are referred to as
service "discovery keys".
Alternative names I considered:
* extra descriptor encryption: accurate, but overly technical. IMO,
the CLI should be accessible to users who aren't familiar with the
nitty-gritty of the protocol
* shielded mode: good, but slightly misleading. Calling it "shielded
mode" makes it sound like a universally desirable "extra protection"
that should almost always be enabled (which is not the case). Seeing
`shielded_mode = off` in the config might be worry operators that
don't fully understand what "extra descriptor encryption" or
"shielded mode" means
* restricted mode: slightly inaccurate. It implies this mechanism is a
good substitute for conventional service-side authentication, which
it isn't (because client authorization isn't instantaneous)
Closes #1281
|
| | |
|
| |
|
|
|
| |
I propose we move each subcommand implementation to a `subcommand`
submodule.
|
| |
|
|
| |
This addresses a TODO.
|
| |
|
|
|
|
|
|
|
|
| |
Add the optional non default feature flag "relay" that will be used to
enable relay support of arti.
This commit also adds the "relay" subcommand to arti binary conditionnal
on the feature flag in order to have a place holder starting point.
Signed-off-by: David Goulet <[email protected]>
|
| |
|
|
| |
This commit is automatically generated.
|
| |
|
|
|
|
|
|
|
| |
The rustls upgrade will solve #1377 and CVE-2024-32650.
Note that we've had to patch our RustlsProvider impl a bit in order
to keep the tests passing. See comments.
Closes #1377.
|
| | |
|
| |
|
|
| |
That's not the default.
|
| |
|
|
|
|
|
|
|
| |
ab950a68 "arti: Add an hss subcommand." mistakenly moved the calls to
`subcommand_required` and `arg_required_else_help` into the
compile-time conditional. But they're related to the main command
parsing.
Fixes #1311
|
| |\
| |
| |
| |
| |
| |
| | |
deny clippy::unchecked_duration_subtraction
Closes #1304
See merge request tpo/core/arti!2008
|
| | | |
|
| | |
| |
| |
| | |
That seems often how we do things elsewhere.
|
| | | |
|
| |/
|
|
|
|
|
|
|
|
|
|
| |
I found this confusing in !2009, where the variable is unused on
Windows: I wondered if this meant our config-reloading only worked on
Unix, since "obviously it would need the TorClient".
But actually the TorClient was only used *in this argument* for its
runtime. The actual reconfiguration of the TorClient is doen by it
being in one of the ReconfigurableModule's.
Change the type of the argument for clarity.
|
| |
|
|
|
|
|
|
|
|
|
|
| |
Instead of using complicated match statements, use downcasting
to find error types that define specific hints. This also lets us
define a reasonable hint-extractor for anyhow::Error, and use it
when reporting errors in main.
I've left an implementation of hint() in `impl Error`, to
avoid breaking backward compatibility.
Closes #1165.
|
| | |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Previously, the `ProxySet` (and all the other `reconfigurable_modules`)
were kept alive by the `watch_for_config_changes` background thread,
which was preventing them from being dropped when `run()` exited. IOW,
onion services never received the shutdown signal.
Now `watch_for_config_changes` takes `Weak` references, and the only
strong references to the modules are kept in the
`reconfigurable_modules` local variable in `run()`, which is dropped
when `run()` exits (e.g. on SIGINT). This allows onion services to
execute their shutdown logic on CTRL-C.
Part of #1244
|
| | |
|
| | |
|
| |
|
|
|
|
|
|
|
|
|
| |
We do this by adding a stub config and config builder type, whose
only purpose is to generate an error if anything is deserialized
into it.
(If this turns out not to be the best pattern, we can change it
later, since this is all internal to the `arti` crate.)
Closes #1184.
|
| |
|
|
|
|
| |
This resolves a `TODO HSS` in arti-client.
Part of #1187
|
| |
|
|
| |
These are not "must fix before releasing onion services".
|
| | |
|
| |\
| |
| |
| |
| | |
Resolve Arti crate todos, redux
See merge request tpo/core/arti!1833
|
| | |
| |
| |
| |
| | |
(We can't use `visibility::make(pub)` or `visible` here.
Try it yourself if you don't believe me!)
|
| | | |
|
| | |
| |
| |
| | |
(This was solved with !1798)
|
| | | |
|
| |/
|
|
| |
Part of #1071
|
| |
|
|
| |
Closes #1089.
|