aboutsummaryrefslogtreecommitdiff
path: root/crates/arti-client
Commit message (Collapse)AuthorAgeFilesLines
...
* | | Add "full" and "experimental" features to arti-client and below.Nick Mathewson2022-06-101-3/+13
|/ / | | | | | | | | | | | | | | | | The "full" feature is a catch-all for all features, _except_: * Those that select a particular implementation (like tor-llcrypto/with-openssl) or build flag (like "static") * Those that are experimental or unstable (like "experimental-api") * Those that are testing-only.
* | Merge branch 'sleep' into 'main'Ian Jackson2022-06-081-0/+1
|\ \ | | | | | | | | | | | | Plumb a SleepProvider (now Clone + ....) into Channel See merge request tpo/core/arti!569
| * | rt-compat: Make all the individual runtime traits Clone+Send etc.Ian Jackson2022-06-081-0/+1
| |/ | | | | | | | | | | | | | | This will make it much more convenient for code that only wants one of these traits (or a subset of them). This is a good thing to support because it will allow us to use a ZST in places that do not need an actual async runtime handle (typically, the runtime handle is needed only for spawn).
* | Move responsibility for GuardMgr NetDir updates to GuardMgr.Nick Mathewson2022-06-071-7/+0
| | | | | | | | | | | | | | | | | | | | | | Previously it was the job of a task in CircMgr to do this; but we're going to want to give GuardMgr full access to the latest NetDir for this, and for other code-simplification reasons. With this change I'm deprecating a couple of functions in tor-circmgr. It's no longer necessary for us to have an artificial external way for you to feed new NetDirs to a circmgr. (I could just remove them, but I want practice deprecating.)
* | Remove now-redundant Send+Sync constraints alongside NetDirProviderNick Mathewson2022-06-072-4/+4
|/
* lints: Add let_unit_value allow to all cratesIan Jackson2022-05-311-0/+1
| | | | | From running add_warning, with manual picking of the right hunks/lines.
* lints: Add lint block delimiters to every crateIan Jackson2022-05-311-0/+2
| | | | | | This was the result of: maint/add_warning crates/*/src/{lib,main}.rs and then manually curating the results.
* Lexically sort Cargo.toml dependenciesOrhun Parmaksız2022-05-281-17/+16
| | | | | | Utilize cargo-sort: https://github.com/DevinR528/cargo-sort Signed-off-by: Orhun Parmaksız <[email protected]>
* Regenerate version bump from previous commit.arti-v0.4.0Nick Mathewson2022-05-271-11/+11
| | | | | | | This commit was made by reverting the previous commit, then re-running the script I used to generate it. In theory there should be no semantic changes: only changes due to improved formatting from cargo edit.
* Semantic version changes for Arti 0.4.0 releaseNick Mathewson2022-05-271-14/+14
| | | | | | | | | | | | | | | | | | | | | | | | | | I followed the following procedure to make these changes: * I used maint/changed_crates to find out which crates had changed since 0.3.0. * I used grep and maint/list_crates to sort those crates in topological (dependency) order. * I looked through semver_status to find which crates were listed as having semver-relevant changes (new APIs and breaking changes). * I scanned through the git logs of the crates with no semver-relevant changes listed to confirm that, indeed, they had no changes. For those crates, I incremented their patch-level version _without_ changing the version that other crates depend on. * I scanned through the git logs of the crates with no semver-relevant changes listed to confirm that, indeed, they had no obvious breaking changes. * I treated all crates that depend on `arti` and/or `arti-client` as having breaking changes. * I identified crates that depend on crates that have changed, even if they have not changed themselves, and identified them as having a non-breaking change. * For all of the crates, I used `cargo set-version -p $CRATE --bump $STATUS` (where `STATUS` is `patch` or `minor`) to update the versions, and the depended-upon versions.
* Merge branch 'config-split' into 'main'Ian Jackson2022-05-261-0/+4
|\ | | | | | | | | | | | | Break TorClientConfig out of ArtiConfig and warn on unknown config keys Closes #459 and #417 See merge request tpo/core/arti!529
| * Split TorClientConfig out of ArtiConfig, and Resolvable traitIan Jackson2022-05-241-0/+4
| | | | | | | | | | | | | | | | | | | | | | | | This gets rid of `#[serde(flatten)]` which prevents serde_ignored (and other kinds of introspection) from working properly. The price is now that the toplevel has to deal with two configuration objects. The Resolvable trait is overkill right now, but is going to do More Things in a moment. In particular, we need the impl on tuples, so that the whole config can be processed in one go.
* | Merge branch 'isolation-example' into 'main'Nick Mathewson2022-05-241-0/+198
|\ \ | |/ |/| | | | | | | | | add example for Isolation Closes #414 See merge request tpo/core/arti!524
| * mention isolation is an advanced topic and most usage don't require ↵trinity-1686a2022-05-241-0/+3
| | | | | | | | implementing the trait
| * add example for Isolationtrinity-1686a2022-05-231-0/+195
| |
* | Apply fs-mistrust to logfile directories.Nick Mathewson2022-05-241-0/+20
| |
* | Make fs-mistrust configurable from the top level.Nick Mathewson2022-05-244-36/+88
| | | | | | | | | | | | This change requires a little refactoring of TorClientBuilder: now, instead of enabling or disabling mistrust, it enables or disables the decision to _override_ the mistrust in the config.
* | fs-mistrust: make Mistrust have a corresponding Builder type.Nick Mathewson2022-05-242-5/+4
| | | | | | | | | | This is an approximately minimal revision to get Builder in place; subsequent commits will clean up the API.
* | Resolve the new `derive_partial_eq_without_eq` lint.Nick Mathewson2022-05-231-1/+1
|/ | | | It's a little overzealous sometimes, but it's mostly to the good.
* add unit tests for arti_client::StreamPrefsmichael mccune2022-05-231-0/+77
| | | | | | this change adds unit tests for the public methods of StreamPrefs. although these are mostly "setter" style functions, the tests confirm the basic expectations and operation.
* Merge branch 'arti-config-2' into 'main'Nick Mathewson2022-05-131-0/+9
|\ | | | | | | | | Abolish arti-config, replacing with tombstone crate See merge request tpo/core/arti!508
| * arti-config: Move default config file test to arti-clientIan Jackson2022-05-131-0/+9
| | | | | | | | | | | | That's where this definitions is now. This test ought to have been moved in Move default_config_file() into arti-client
* | impl_standard_builder: Have it generate FooConfig::builderIan Jackson2022-05-121-24/+0
|/ | | | | This deletes many handcoded impls. It also generates lots of impls that we previously didn't have.
* Merge branch 'builder-default-bis' into 'main'eta2022-05-121-9/+5
|\ | | | | | | | | impl_standard_builder followup See merge request tpo/core/arti!505
| * Rename impl_standard_builder from impl_default_via_builderIan Jackson2022-05-121-5/+5
| | | | | | | | | | | | | | | | | | | | | | | | I have Plans for this macro. In particular: * I have a wip branch which tests that the Builder can be deserialised from an empty config (ie, that config reading of a config with a blank section for this item works). * I think we should autogenerate $Config::builder(), and promote that, rather than $ConfigBuilder::default(). This macro could do that.
| * config: Move macro calls to next to the structIan Jackson2022-05-121-8/+4
| | | | | | | | | | | | | | This macro is kind of derive-y. Also it has a test in it, and failing to call it could allow bugs to exist, as well as missing bits of API. Putting it next to the structs makes it easy to see that it's actually been called.
* | Merge branch 'ticket_412_467' into 'main'Nick Mathewson2022-05-121-3/+9
|\ \ | |/ |/| | | | | | | | | Teach DirMgr to use slightly untimely directories Closes #467 and #412 See merge request tpo/core/arti!500
| * Add DirSkewTolerance section to DirMgr configuration.Nick Mathewson2022-05-111-3/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This new section describes how much variance we accept when it comes to expired and not-yet-valid directory documents. (Currently, the only ones where this matters for are consensus documents and authority certificates.) A document that is invalid by no more than these tolerances is not _live_, but it can still be used. These tolerances serve two purposes: * First, they allow clients to run with a little more clock skew than they would tolerate otherwise. * Second, they allow clients to survive the situation where the authorities are unable to reach a consensus for a day or two. Compare with Tor's REASONABLY_LIVE_TIME and NETWORKSTATUS_ALLOW_SKEW constants; also compare with proposal 212. Closes #412.
* | Merge branch 'builder-default' into 'main'eta2022-05-121-27/+5
|\ \ | | | | | | | | | | | | Provide and use macro for impl Derive via Builder See merge request tpo/core/arti!499
| * | Define and use impl_default_via_builderIan Jackson2022-05-111-27/+5
| | |
* | | Add correct serde(default) attrs for humantime_serde::optionIan Jackson2022-05-121-3/+3
|/ / | | | | | | | | | | | | | | | | Discovered by a test case in my local tree. The test case was macro-generated by an extension of impl_standard_builder (which macro istself currently awaiting review, arti!499) Have also sent an MR to update the upstream docs https://github.com/jean-airoldie/humantime-serde/pull/8
* / Move default_config_file() into arti-clientIan Jackson2022-05-111-1/+6
|/ | | | This will let other embedders use it.
* Merge branch 'use-fs-mistrust'Nick Mathewson2022-05-094-8/+61
|\
| * Remove "Mistrust" from the public API of arti-client.Nick Mathewson2022-05-092-8/+4
| | | | | | | | | | | | | | | | | | | | I'm doing this per discussion, so that we can have it be part of the TorConfig later on, and not break stuff as we change the Mistrust API to have a builder. This change, unfortunately, results in a little more internal complexity and duplicated code in arti and arti-client. I've marked those points with TODOs.
| * arti: use fs-mistrust to validate configuration file locations.Nick Mathewson2022-05-092-12/+14
| |
| * arti-client: Configure and use fs-mistrust.Nick Mathewson2022-05-094-8/+63
| | | | | | | | | | | | This is derived from the environment, not the configuration file: We might not want to trust the configuration file until we've decided whether we like its permissions.
* | NetParams: Document its role as a validated config parameterIan Jackson2022-05-091-3/+0
| |
* | Bump the version of every* crate to 0.3.0Nick Mathewson2022-05-061-13/+13
| | | | | | | | * Except for safelog and fs-mistrust, which are new.
* | Change safelog version to 0.1.0.Nick Mathewson2022-05-061-1/+1
| | | | | | | | | | (This is okay because we haven't published it yet, or any crate that uses it.)
* | Update README.md files (automated).Nick Mathewson2022-05-061-1/+1
| |
* | Merge branch 'derive-builder-fork' into 'main'Nick Mathewson2022-05-061-1/+1
|\ \ | | | | | | | | | | | | | | | | | | Switch to derive_builder_arti_fork Closes #446 See merge request tpo/core/arti!490
| * | Switch to derive_builder_arti_forkIan Jackson2022-05-061-1/+1
| |/ | | | | | | | | | | | | | | | | For reference, the git source for this crate (and the others in its workspace) currently lives in my personal github account (ijackson). If this fork turns out to be long-lived and gains features and/or users, it would be good to move it to a gitlab somewhere. I have granted Nick crate ownership on the crates.io system.
* / Apply `sensitive` in some info-level log messages.Nick Mathewson2022-05-062-1/+3
|/ | | | | This specifically applies the `sensitive` wrapper in the places where we're logging target addresses at level "info" or higher.
* config derive attrs: Make builders serde, and validated structs notIan Jackson2022-05-051-17/+8
| | | | | | | | | | | | | | | * Builders additionally derive: Debug, Serialize, Deserialize. * Validated structs no longer derive: Serialize, Deserialize and all related attributes deleted. * As a consequence, all the `#[serde(deny_unknown_fields)]` are gone. That means that right now unknown fields are totally ignored. This is good for compatibility but poor for useability. Doing something better here is arti#417, in progress. * As a consequence, delete tor_dirmgr::retry::default_parallelism. (The default value was already duplicated into a builder attr.)
* FallbackDir: Use VecBuilder for orportsIan Jackson2022-05-041-3/+4
| | | | | | | And drop the ad-hoc orport() method. This brings FallbackDir's orports field in line with our list builder API. The general semver note in "configuation" seems to cover most of this.
* Change builder list APIIan Jackson2022-05-041-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | The new API is (roughly) as discussed in https://gitlab.torproject.org/tpo/core/arti/-/issues/451 This is quite a large commit and it is not convenient to split it up. It contains the following changes: * Redo the list builder and accessor macros implemnetation, including docs and tests. * Change uses of define_list_config_builder. In each case: - Move the docs about the default value to the containing field. - Remove the other docs (which were just recapitulations, and are now not needed since the ListBuilder is no longer public). - Rewmove or replace `pub` in the define_list_builder_helper call, so that the builder is no longer public. - Change the main macro call site to use define_list_builder_helper. - Add a call to define_list_builder_accessors. * Make the module `list_builder` pub so that we have somewhere to put the overview documentation. * Consequential changes: - Change `outer.inner().replace(X)` to `outer.set_inner(X)` - Consequential changes to imports (`use` statements).
* CfgPath: Overhaul APIIan Jackson2022-05-031-2/+2
| | | | | | | | | | | | | | | | | | | | | | Document that this can contain either a string for expansion, or a literal PathBuf not for expansion. Rename the `from_path` method to `new_literal`: a very important difference is whether it gets expanded - less important than the Rust type. Also, now it takes `Into<PathBuf>`, which avoids a needless clone. (We don't change the API in `arti-client` because `&tempfile::Tempdir()` doesn't implement `Into<PathBuf>`, so `arti-client` has to have some new `as_ref` calls.) Provide accessors `as_unexpanded_str` and `as_literal_path`. The deserialisation already makes this part of the stable API,l so not pvoding accessors seems just obstructive. They are useful for tests, too. Add tests for the new entrypoints, and for deserialisation of both variants from TOML (via config, or directly) and JSON.
* Merge branch 'derive-builder-git-fixup' into 'main'eta2022-04-271-1/+1
|\ | | | | | | | | derive_builder: Use git dep everywhere, rather than cargo patch See merge request tpo/core/arti!477
| * derive_builder: Use git dep everywhere, rather than cargo patchIan Jackson2022-04-271-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The `[patch]` approach causes the tree not to build when used as a dependency, unless the `[patch]` is replicated into the depending project. Instead, replace our `derive_builer =` dependencies with a reference to a specific git commit: perl -i~ -pe 'next unless m/^derive_builder/; s#"(0\.11\.2)"#{ version = "$1", git = "https://github.com/ijackson/rust-derive-builder", rev = "ba0c1a5311bd9f93ddf5f5b8ec2a5f6f03b22fbe" }#' crates/*/Cargo.toml Note that the commitid has changed. This is because derive_builder is in fact a workspace of 4 crates. 3 of them are of interest to arti itself (the 4th exists only for testing). So the same "add git revision" treatment had to be done to the `derive_builder` and `derive_builder_macro` crates. Each dependency edge involves a new commit in the derive_builder workspace, since we can't create a git commit containing its own commitid. (We want to use commits, rather than a branch, so that what we are depending on is actually properly defined, and not subject to the whims of my personal github namespace.) There are no actual code changes in derive_builder.
* | Fix spacingSamanta Navarro2022-04-271-1/+1
| |