| Commit message (Collapse) | Author | Age | Files | Lines |
| | |
|
| | |
|
| | |
|
| |
|
|
|
|
| |
We want to be able to create the CfgMgr early so that we can give it
to the RPC code, then add a bunch of reconfigurable modules to it,
and only then launch the file-watcher task.
|
| |
|
|
|
|
|
|
|
| |
Right now this just helps us keep the parts of the
configuration-reloading logic in one place, and clarifies what needs
to be owned by the watcher thread and what doesn't.
Moving forward, this will help make the configuration something
that RPC can inspect and change.
|
| | |
|
| | |
|
| |
|
|
|
|
| |
This option will primarily be used by integrators who want to modify
the configuration, either directly or via RPC, before launching Arti
completely.
|
| |\
| |
| |
| |
| |
| |
| | |
Set socket buffer sizes (`SO_SNDBUF` and `SO_RCVBUF`) for proxy sockets
Closes #2500
See merge request tpo/core/arti!3957
|
| | | |
|
| | | |
|
| |/
|
|
|
|
| |
This is part of rationalizing the structure of TorClient so we can
refactor startup logic, and so that RPC code can reason about object
identity. See #2469.
|
| |\
| |
| |
| |
| |
| |
| | |
arti: Add option and documentation for http connect, then mark it stable.
Closes #2409
See merge request tpo/core/arti!3811
|
| | |
| |
| |
| |
| |
| |
| |
| |
| | |
This option affects all socks listeners, because:
- We don't have a convenient way to associate an option with each
port.
- The main purpose of having this option is as a switch in case we
discover a major problem with this code.
|
| |/
|
|
|
| |
(With no-default-features there is no runtime, and that still causes
a compiler error.)
|
| |
|
|
|
| |
Instead of doing this when we construct the listeners, we can do it
in a separate method, to simplify the return type.
|
| |
|
|
| |
Part of #2301.
|
| |
|
|
| |
Part of #2301.
|
| |
|
|
|
|
|
|
|
|
|
| |
Uses the standard clap error messages, for example:
```text
$ cargo run -p arti -- proxy -p 123a
error: invalid value '123a' for '-p <PORT>': invalid digit found in string
For more information, try '--help'.
```
|
| | |
|
| | |
|
| | |
|
| |
|
|
| |
Use anyhow::Context to wrap error in useful message.
|
| |
|
|
|
|
| |
This was a little funny, since the other storage elements are
declared in tor-client. Fortunately, our stacked configuration
logic handles this fine.
|
| |
|
|
|
| |
This allows applications to find out where arti is listening when
arti has been configured to listen with the port "auto".
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
Previously, the proxy and dns modules only had "be a proxy"
functions that ran forever. Now they have functions that bind to
listeners and return a separate "be a proxy" future that runs
forever.
This lets us simplify some kludges in subcommands::proxy. More
importantly, it will let us return the bound-to ports so that
subcommands::proxy can write them to disk.
This is a break in experimental-apis, which does not require a
semver change.
|
| | |
|
| |
|
|
| |
Closes #2225
|
| |
|
|
| |
This is _all_ renaming and comment adjustments.
|
| |
|
|
| |
I'm about to add another proxy type.
|
| | |
|
| |
|
|
|
|
| |
It's unlikely these arguments will be particularly useful, and omitting
skip_all can have security implications, so it's better to avoid it to
reflect good practice.
|
| |
|
|
|
| |
I've added these in places that are useful for the debugging that I've
been doing.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
First, run
```
git grep -l "^edition =" |
xargs perl -i -pe 's/^edition *=.*/edition = "2024"/;'
```
Second, manually verify that all Cargo.toml files have changed,
and nothing else has changed.
Third, run cargo fmt again.
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
New cargo feature `metrics`, currently experimental.
New config option `metrics.prometheus.listen`. Uses standard `Listen`
syntax, but not every configuration is supported due to upstream
limitations.
If the config option is set, use metrics-exporter-prometheus to offer
an HTTP scrape endpoint. Or, if compiled out, fail.
Currently there are no actual metrics exported at all.
|
| |
|
|
|
|
|
|
| |
Introduce ToplevelRuntime as an alias, and use it in the top-level
programs.
Now none of the principal protocol implementation code has access to
the executor's toplevel entrypoint, and can't call it by mistake.
|
| |
|
|
|
|
| |
Formerly this was a conditional method argument, which is a huge
antipattern. Now it is unconditionally present, as `Option<T>` for
a type that is uninhabited when RPC isn't supported.
|
| | |
|
| |
|
|
|
|
| |
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.
|
| |
|
|
| |
If `socks_listen` is disabled, we're not actually running in SOCKS mode.
|
| |
|
|
| |
Closes #1569
|
| |
|
|
|
|
|
|
| |
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.
|
|
|
The implementation for `arti proxy` will soon be relocated to this new
module.
|