summaryrefslogtreecommitdiff
path: root/crates
Commit message (Collapse)AuthorAgeFilesLines
...
* | | Merge branch 'cc_niche' into 'main'Nick Mathewson2023-07-201-5/+37
|\ \ \ | |/ / |/| | | | | | | | geoip: Enable the niche optimization for CountryCode. See merge request tpo/core/arti!1384
| * | geoip: Use from_raw_parts instead of transmute.gabi-2502023-07-131-1/+5
| | |
| * | geoip: Enable the niche optimization for CountryCode.Nick Mathewson2023-07-071-5/+33
| | | | | | | | | | | | | | | | | | | | | | | | Since we're going to be using `Option<CountryCode>` all over, let's save the extra byte. Sadly this required std::mem::transmute(), which is unsafe, so maybe we should think twice.
* | | Fix a pair of rustdoc links in chanmgr.Nick Mathewson2023-07-191-2/+2
| | |
* | | Merge branch 'issue961_01' into 'main'Nick Mathewson2023-07-191-6/+3
|\ \ \ | | | | | | | | | | | | | | | | | | | | | | | | geoip: Allow ASNs as zeros when creating NetDefn Closes #961 See merge request tpo/core/arti!1417
| * | | geoip: Add derive macros to GeoipDbjuga2023-07-181-0/+1
| | | | | | | | | | | | | | | | to be able to debug it, for instance.
| * | | geoip: Allow ASNs as zeros when creating NetDefnjuga2023-07-181-6/+2
| | |/ | |/| | | | | | | | | | | | | | | | so that GeoipDb can be created from files including ASNs generated with tor/scripts/maint/geoip/geoip-db-tool. Closes #961
* | | tor-hsclient: Document API break.Ian Jackson2023-07-191-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | This would be a break in higher-layer crates which incorproate this error but: 1. That's just arti-client which hides it behind the detailed errors cargo feature 2. I'm hoping cargo-semver-checks would spot it, anyway.
* | | retry-error: Attempts must be AsRef<dyn Error>; print their sourcesIan Jackson2023-07-194-10/+15
| | | | | | | | | | | | | | | | | | | | | | | | The effect is that everywhere a RetryError is used, the error sources for the contained errors will be Display'd. In tor-hsclient we no longer need to explicitly wrap things up in tor_error::Report.
* | | retry-error: Introduce a Wrapper type in a testIan Jackson2023-07-192-2/+15
| | | | | | | | | | | | | | | We're going to require that a RetryError contains things that are AsRef<dyn Error> and ParseIntError isn't so we need a newtype.
* | | retry-error: Provide fmt_error_with_sources in retry-errorIan Jackson2023-07-195-17/+67
| | | | | | | | | | | | | | | This code came from tor-error. So now tor-error depends on retry-error.
* | | tor-circmgr: impl AsRef<dyn std::error::Error> for some error typesIan Jackson2023-07-182-0/+4
|/ / | | | | | | We're about to want this.
* | Merge branch 'upgrades_20230717' into 'main'Alexander Færøy2023-07-173-3/+3
|\ \ | | | | | | | | | | | | Mid-month dependency upgrades See merge request tpo/core/arti!1412
| * | Upgrade to latest derive-adhoc.Nick Mathewson2023-07-171-1/+1
| | |
| * | Upgrade to latest rlimit.Nick Mathewson2023-07-171-1/+1
| | |
| * | keymgr: Upgrade to latest itertools.Nick Mathewson2023-07-171-1/+1
| | | | | | | | | | | | (Everything else is already on 0.11.0.)
* | | Merge branch 'pwd-grp' into 'main'gabi-2502023-07-176-120/+179
|\ \ \ | |/ / |/| | | | | | | | | | | | | | Replace use of unmaintained users crate with homegrown pwd-grp Closes #877 See merge request tpo/core/arti!1410
| * | fs-mistrust: Run rustfmt to apply deferred formatting churnIan Jackson2023-07-141-10/+10
| | |
| * | fs-mistrust: In a test, simplify env var handlingIan Jackson2023-07-141-17/+10
| | |
| * | fs-mistrust: users: Use OsStr and OsString a lot lessIan Jackson2023-07-141-13/+23
| | | | | | | | | | | | | | | | | | | | | | | | We don't use OsString now except where it appears in our public API, or where we get it from std::env. Moving the `use` statements into the use sites enabled me to see that I had found all the places I wanted to change.
| * | fs-mistrust: Remove a now-unneeded suppressionIan Jackson2023-07-141-1/+0
| | | | | | | | | | | | This function is actually (properly) fallible now.
| * | fs-mistrust: forbid unsafe codeIan Jackson2023-07-141-0/+8
| | |
| * | fs-mistrust: Replace a direct libc call in a testIan Jackson2023-07-141-1/+1
| | |
| * | fs-mistruct: Abolish some now-unneeded mutsIan Jackson2023-07-141-26/+25
| | | | | | | | | | | | | | | MockPwdGrpProvider has internal mutability and is Sync, so its add functions take &self.
| * | fs-mistrust: Use pwd-grp's getgroups functionIan Jackson2023-07-141-24/+1
| | | | | | | | | | | | | | | This gets rid of some unsafe code here, with doubtful error handling, in favour of the unit-tested version in pwd-grp.
| * | fs-mistruct: switch from users to pwd-grpIan Jackson2023-07-142-42/+84
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | users is unmaintained. pwd-grp is the crate I have just written to replace it. In this commit: Change the cargo dependency and imports. Replace the cacheing arrangements. users has a built-in cache; pwd-grp doesn't. Now, instead of cashing individual lookups, we cache the trusted user and trusted gid calculation results. This saves on some syscalls, and is also more convenient to write. (Mocking is still done via the dependency.) Many systematic consequential changes of details: * The entrypoint names to the library are different: pwd-grp uses the names of the corresponding Unix functions. * pwd-grp's returned structs are transparent, so we don't call accessors for .uid(), .name(), etc. * pwd-grp's methods are much more often fallible (returning io::Result<Option<...>) * We're using the non-UTF-8 pwd-grp API, which means we must use turbofish syntax in some places. * The mocking API is a bit different.
| * | fs-mistrust: Introduce tempoary PwdGrpProvider aliasIan Jackson2023-07-141-4/+8
| | | | | | | | | | | | | | | This allows us to change a number of trait bounds in advance, reducing noise in the next commit.
| * | fs-mistrust: impl Hash for TrustedUser and TrustedGroup (config)Ian Jackson2023-07-142-2/+3
| | |
| * | fs-mistrust: users: tests: Introduce mock_users etc.Ian Jackson2023-07-141-25/+36
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Add some wrapper functions for convenience. The pwd-grp crate has a richer and more faithful, but not so convenient, way of creating dummy user/group entries. Also the type names are all going to change. Doing this now reduces churn.
| * | fs-mistrust: users: Make several functions fallibleIan Jackson2023-07-142-26/+41
| | | | | | | | | | | | | | | | | | | | | | | | | | | The actual underlying operations here *are* fallible. The `users` crate hides those errors in several cases. (Failures are very rare (at least unless NIS is involved), so this is not of much practical import, but it's going to be necessary when we use the more careful pwd-grp crate.
* | | Merge branch 'keymgr-config-tweaks' into 'main'gabi-2502023-07-1711-176/+135
|\ \ \ | |/ / |/| | | | | | | | | | | | | | tor-keymgr config updates Closes #939 See merge request tpo/core/arti!1404
| * | 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
| | |
| * | tor-config: Remove unused ItemOrBool helper.Gabriela Moldovan2023-07-132-63/+1
| | | | | | | | | | | | | | | `ItemOrBool` is currently not used anywhere (it was previously used by the keymgr config).
| * | arti cfg tests: Add keystore to example config.Gabriela Moldovan2023-07-132-14/+22
| | | | | | | | | | | | Closes #939
| * | arti config: Remove extraneous whitespace.Gabriela Moldovan2023-07-131-5/+5
| | |
| * | arti-client: Use the config struct from tor-keymgr.Gabriela Moldovan2023-07-133-93/+24
| | |
| * | tor-keymgr: Add ArtiNativeKeystoreConfig.Gabriela Moldovan2023-07-135-1/+78
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Previously, the keystore config consisted of a single field in `StorageConfig`, which encoded 2 bits of information: whether the keystore is enabled, and its root directory: ``` [storage] # use this path, fail if compiled out # keystore = "/path/to/arti/keystore" # # use default path, fail if compiled out # keystore = true # # disable # keystore = false ``` This commit adds `ArtiNativeKeystoreConfig`, which will replace the multi-purpose `keystore` field. The new config will look like this: ``` #[storage.keystore] # Whether the keystore is enabled. # # If the `keymgr` feature is enabled and this option is: # * set to false, we will ignore the configured keystore path. # * set to "auto", the configured keystore, or the default keystore, if the # keystore path is not specified, will be used # * set to true, the configured keystore, or the default keystore, if the # keystore path is not specified, will be used # # If the `keymgr` feature is disabled and this option is: # * set to false, we will ignore the configured keystore path. # * set to "auto", we will ignore the configured keystore path. # # Setting this option to true when the `keymgr` feature is disabled is a # configuration error. #enabled = "auto" # The root directory of the arti keystore #path = "${ARTI_LOCAL_DATA}/keystore" ``` While `ArtiNativeKeystoreConfig` currently only has 2 fields, `enabled` and `path`, future versions of the keystore might require additional config options.
* | | Merge branch 'unused_import' into 'main'Alexander Færøy2023-07-141-1/+2
|\ \ \ | | | | | | | | | | | | | | | | Move an import to resolve a warning. See merge request tpo/core/arti!1407
| * | | Move an import to resolve a warning.Nick Mathewson2023-07-131-1/+2
| | | |
* | | | Merge branch 'bug638' into 'main'Alexander Færøy2023-07-142-4/+14
|\ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Stop unconditionally marking bridges as having dir info. Closes #638 See merge request tpo/core/arti!1408
| * | | | Better report for any recurrence of bug #638.Nick Mathewson2023-07-131-0/+14
| | | | |
| * | | | Stop unconditionally marking bridges as having dir info.Nick Mathewson2023-07-131-4/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When we implemented bridges, we added code in 08473872abccf389 to conditionally mark their directory info as present or not present. But the we didn't remove the old code to mark them present unconditionally! Fixes #638.
* | | | | Bridges: deduplicate addresses.Nick Mathewson2023-07-131-0/+2
|/ / / / | | | | | | | | | | | | | | | | Currently we list an address for a bridge twice if it is listed both in the bridge line and the bridge descriptor. That can't be right.
* / / / Add country codes to relays inside a NetDireta2023-07-134-4/+218
|/ / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - When the `geoip` feature flag of `tor-netdir` is enabled, perform GeoIP lookups for all relays added to the directory and add the resulting country code to the `Relay` struct. - The GeoIP database is provided in a new `PartialNetDir::new_with_geoip` constructor. - A new trait was also added to `tor-linkspec`, `HasCountryCode`, to enable getting this data out from other crates. Part of onionmasq#47.
* | | Explain better why you would use build_unmanaged_channelNick Mathewson2023-07-131-2/+7
| | |
* | | Resolve numerous typos in `ChanMgr::build_unmanaged_channel` codegabi-2502023-07-131-4/+4
| | |
* | | chanmgr: Remove now-unused (and never usable) builder() method.Nick Mathewson2023-07-131-12/+0
| | |
* | | chanmgr: Document makeup and timeout behavior of our factoriesNick Mathewson2023-07-131-0/+22
| | | | | | | | | | | | | | | Basically, it's all ChanBuilder at some point, and ChanBuilder has a timeout.
* | | chanmgr: Add an experimental build_unmanaged_channel() method.Nick Mathewson2023-07-131-0/+26
|/ / | | | | | | | | This method will let the user construct a channel that isn't stored or monitored by the ChanMgr.