aboutsummaryrefslogtreecommitdiff
path: root/crates/arti-client/src/client.rs
Commit message (Collapse)AuthorAgeFilesLines
* tor-ptmgr: add very basic support for unmanaged PTseta2023-09-191-0/+11
| | | | | | | | | | - `tor-ptmgr` has a new `add_unmanaged` function to insert an unmanaged PT into the `cmethods` table. - There are many ways to misuse this API and have it blow up in your face (for example, by overwriting an existing PT's cmethod, etc.) - It's unclear whether these are worth caring about. - The `TorClient` gains a new experimental `ptmgr()` function, and the `PtClientMethod` can now be constructed by user code.
* arti-client: add exit selection with GeoIP country codeseta2023-09-181-1/+40
| | | | | | | | | | | | | | | | | | | | This threads the country codes work through the rest of the codebase: - `tor-dirmgr` will now enable GeoIP with the embedded database when the `geoip` future is enabled - This can be extended later using the `DirMgrConfig` to allow specifying a custom database; this is not done here, though - `tor-circmgr`'s `SupportedCircUsage` and `TargetCircUsage` fields gain new `country_code` members to allow filtering circuits by country - These are `()` in builds where the `geoip` feature is not enabled -- doing it this way means we don't have to copy and paste huge swathes of code, since we can't use `#[cfg]` in patterns - `ExitPathBuilder` gains (hacked-in) support for choosing a relay with the correct country code - Due to the lack of conjuction, we just copy and paste a small bit, pending further refactoring - `StreamPrefs` now lets you specify a country code, letting embedders make use of the feature
* Run maint/add_warning to add lint block everywhereIan Jackson2023-08-231-0/+1
|
* Resolve a pair of warnings about redundant closures.Nick Mathewson2023-08-221-2/+2
|
* pass reconfigure_lock guard into TorClient::reconfigure_innersw1tch2023-07-251-3/+8
|
* cargo fmtsw1tch2023-07-241-1/+3
|
* fixes deadlock in TorClient::reconfiguresw1tch2023-07-241-1/+34
|
* Revert "keymgr: Require callers to be explicit about which keystore to get ↵Gabriela Moldovan2023-07-211-6/+4
| | | | | | | | | keys from." This reverts commit 38a6c74c7894dc96b16c9039cacc2a4023977b05. This also updates some tests to make them compile with the reverted version of the code.
* keymgr: Require callers to be explicit about which keystore to get keys from.Gabriela Moldovan2023-07-201-4/+6
|
* keymgr: Explicitly specify the default keystore for `KeyMgr`.Gabriela Moldovan2023-07-201-4/+5
|
* keymgr-config: Make fields private, add function for checking if keystore is ↵Gabriela Moldovan2023-07-201-5/+1
| | | | | | | | | enabled. Hiding the underlying value of `enabled` enables us to give it a different `auto` value depending on whether the `keymgr` feature is enabled or not (it defaults to `true` if `keymgr` is enabled, and `false` otherwise).
* arti-client: Use a default keystore config if `experimental-api` is disabled.Gabriela Moldovan2023-07-201-18/+15
| | | | | | | The `experimental-api` was only meant to apply to the use of the unstable `ArtiNativeKeystoreConfig` in the Arti config. `experimental-api` was _not_ supposed to be used for enabling/disabling the keystore (that's what the `enabled` flag is for).
* arti-client: Move variable closer to where it's used (fmt).Gabriela Moldovan2023-07-201-24/+21
|
* arti-client: Move variable closer to where it's used.Gabriela Moldovan2023-07-201-2/+1
|
* arti-client: Make the `KeyMgr` optional.Gabriela Moldovan2023-07-201-34/+43
| | | | | If the Arti keystore is disabled, we have nothing to initialize the `KeyMgr` with, so we might as well make it optional.
* arti-client: Add TODO about expanding the keystore_dir in build().Gabriela Moldovan2023-07-171-0/+2
|
* arti-client: Log whether a keystore is in use.Gabriela Moldovan2023-07-131-1/+4
|
* arti-client: Use the config struct from tor-keymgr.Gabriela Moldovan2023-07-131-7/+12
|
* arti-client: Log whether the client auth keys were retrieved.Gabriela Moldovan2023-07-121-0/+2
|
* arti-client: Remove outdated TODO.Gabriela Moldovan2023-07-111-3/+0
| | | | These errors aren't ignored anymore.
* Run maint/add_warning to actually apply new lint allowsIan Jackson2023-07-101-0/+1
|
* Remove some needless into_iter() calls.Nick Mathewson2023-07-101-2/+1
| | | | | | Clippy nightly now detects when you're calling into_iter() and passing the result into something that accepts an `impl IntoIterator`.
* Throughout: Use *_report!() macros for reporting Errors.Nick Mathewson2023-07-071-3/+3
| | | | | | | | | | | | | | | I identified the cases to replace by searching for the string `.report()`. There are a few that I didn't change: * A couple of cases that used anyhow::Error, * One case that reported two Errors. * Two cases in `tor_hsclient::err` that just did `error!("Bug: {}")`. I have also not audited the cases in `tor-hsclient` where we're using `tor_error::Report` manually. Nonetheless, closes #949.
* Finish a sentence in the documentation for TorClient::netdir()Nick Mathewson2023-07-031-1/+2
|
* keystore: Change the dummy HsClientSpecifier to "default".Gabriela Moldovan2023-06-301-1/+1
|
* keymgr: Rename KeyStore to Keystore globally.Gabriela Moldovan2023-06-291-5/+5
| | | | | We've been capitalizing the "s" in "KeyStore" inconsistently. This `s/KeyStore/Keystore/g` across the codebase.
* Merge branch 'validate-client-spec' into 'main'Ian Jackson2023-06-291-1/+2
|\ | | | | | | | | keymgr: Validate ArtiPaths, replace HsClientSpecifier with generic ArtiPathComponent See merge request tpo/core/arti!1262
| * Run rustfmtIan Jackson2023-06-291-3/+2
| |
| * keymgr: Define an error type for bad `ArtiPathComponents`.Gabriela Moldovan2023-06-291-12/+3
| |
| * arti-client, hsclient: Typealias HsClientSpecifier to ArtiPathComponent.Gabriela Moldovan2023-06-291-1/+12
| | | | | | | | `ArtiPathComponent` is a more generic version of `HsClientSpecifier`.
* | Merge branch 'keymgr-config' into 'main'gabi-2502023-06-291-9/+5
|\ \ | | | | | | | | | | | | arti-client: Add keystore_dir to StorageConfig. See merge request tpo/core/arti!1312
| * | arti-client: Fix clippy lints.Gabriela Moldovan2023-06-291-1/+1
| | | | | | | | | | | | Part of #891
| * | arti-client: Load keystore dir and permissions from config.Gabriela Moldovan2023-06-291-6/+2
| | | | | | | | | | | | Part of #891
| * | arti-client: Add keystore_dir to StorageConfig.Gabriela Moldovan2023-06-291-4/+4
| |/
* | arti-client: StreamPrefs: Add security noteIan Jackson2023-06-291-0/+7
| |
* | Turn off HS client connections by defaultIan Jackson2023-06-291-1/+1
|/ | | | As per IRC discussion, re lack of Vanguards.
* HS configuration: Plumb configuration through (fmt)Ian Jackson2023-06-281-1/+4
| | | | Apply deferred rustfmt churn.
* HS configuration: Plumb configuration through (clippy)Ian Jackson2023-06-281-4/+4
| | | | Apply deferred clippy churn.
* HS configuration: Plumb configuration throughIan Jackson2023-06-281-2/+2
| | | | | Invent a trait a la circmgr config for the hs client connector config. Plumb a suitable value all the way through to the code that will use it.
* HS configuration: Add and honour `allow_onion_addrs` in configurationIan Jackson2023-06-281-5/+10
| | | | | | | We put this in `[address_filter]`. The interaction with the corresponding stream preference is a bit complicated. We must turn the stream pref into a `BoolOrAuto`.
* tor-hsclient: Expire old data eventuallyIan Jackson2023-06-231-1/+12
| | | | Otherwise we'll fill up our RAM with junk.
* keymgr: Move dummy implementation to tor-keymgr.Gabriela Moldovan2023-06-221-1/+1
|
* Merge branch 'doc_link_fix' into 'main'Alexander Færøy2023-06-211-1/+1
|\ | | | | | | | | Fix a rustdoc link. See merge request tpo/core/arti!1274
| * Fix a rustdoc link.Nick Mathewson2023-06-211-1/+1
| |
* | Remove extra 'this' in some methodsSaksham Mittal2023-06-211-3/+3
| |
* | Create chanmgr() method in TorClientSaksham Mittal2023-06-211-0/+9
|/
* arti-client: Remove unnecessary #[cfgs(...)].Gabriela Moldovan2023-06-201-5/+0
| | | | | | | | The `keymgr` module selects one of the key manager implementations (dummy or "real") and exposes all the APIs we need, so we can remove all of the cfgs related to the `keymgr` feature from `client.rs`. Part of #897
* arti-client: Create module exposing one of the key manager APIs.Gabriela Moldovan2023-06-201-5/+1
| | | | | | | | This moves the key manager API selection (dummy vs "real" impl) into the `keymgr` module. The module exports the dummy API if the `keymgr` feature is disabled, and the impl from `tor-keymgr` otherwise. Part of #897
* arti-client, keymgr: Introduce Mistrust settings and enforce FS permissions.Gabriela Moldovan2023-06-201-3/+9
|
* arti-client: Temporarily ignore key store errors.Gabriela Moldovan2023-06-201-3/+10
| | | | | | | | | We currently initialize the `ArtiNativeKeyStore` with a dummy root dir, so when `ArtiNativeKeyStore` starts validating directories, this code will start to fail. Let's preemptively ignore any errors coming from `ArtiNativeKeyStore::new`. This is temporary and will be removed when we introduce the key store config (and a real default value for the keystore root dir).