summaryrefslogtreecommitdiff
path: root/crates/arti/src/cfg.rs
Commit message (Collapse)AuthorAgeFilesLines
* arti: cfg: Remove another needless borrowIan Jackson2022-06-161-1/+1
|
* arti cfg tests: Remove a redundant line that shadows an earlier bindingIan Jackson2022-06-161-1/+0
| | | | | Prompted by review https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/589#note_2813596
* arti cfg tests: Test that example config works as-isIan Jackson2022-06-161-0/+2
| | | | It contains only sections, but we want to detect when that is a problem!
* arti: cfg tests: Refactor to prepare for new testIan Jackson2022-06-161-16/+23
| | | | We're going to call this new closure another time.
* arti config: Check that example config is exhaustiveIan Jackson2022-05-301-0/+114
| | | | This is the final piece of #457.
* arti: config: Canonicalise ports, and provide example dns_portIan Jackson2022-05-301-8/+2
| | | | | | | | | | | | | Now the validated configuration will never be `Some(0)`, even if that is what was written in the config file. The arti CLI parser can still produce this, so we don't touch the code that actually uses this. (Without the canonicalisation the default builder produces `None` for the `dns_port`, but the example would produce `Some(0)`, which is semantically identical but fails the test.) See https://gitlab.torproject.org/tpo/core/arti/-/issues/488 for some background.
* arti: Make ProxyConfig no longer DeserializeIan Jackson2022-05-301-4/+1
| | | | That this remained was an oversight.
* arti: cfg: Actually uncomment *all* the things in the exampleIan Jackson2022-05-301-1/+1
|
* add unit tests for ArtiConfig public functionsmichael mccune2022-05-281-0/+24
| | | | | this change adds some simple tests for the ArtiConfig public getter functions to help expand coverage in this crate.
* arti: Better doc for ArtiCombinedConfigIan Jackson2022-05-251-1/+3
|
* tor-config: Rename resolve_return_unrecognized, ..._ignore_...Ian Jackson2022-05-251-1/+1
| | | | | As per https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/529#note_2807077
* tor-config: Rename "ignored" to "unrecognized" throughoutIan Jackson2022-05-251-3/+3
| | | | | As per review comments https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/529#note_2807076
* tor-config: Tests for ignored config key handlingIan Jackson2022-05-241-8/+4
|
* Split TorClientConfig out of ArtiConfig, and Resolvable traitIan Jackson2022-05-241-35/+14
| | | | | | | | | | | | 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.
* arti tests: Introduce bld_tor variableIan Jackson2022-05-241-22/+19
| | | | | | We are going to reorganise ArtiConfig to not contain a TorClientConfig. This test case's calls to bld.tor() will all need to change. Do this in advance to make that future commit more readable.
* Apply fs-mistrust to logfile directories.Nick Mathewson2022-05-241-1/+1
|
* Merge branch 'builder-default-3' into 'main'Nick Mathewson2022-05-131-19/+0
|\ | | | | | | | | impl_standard_builder: Test the Deserialize impl and have it generate ::builder See merge request tpo/core/arti!507
| * impl_standard_builder: Have it generate FooConfig::builderIan Jackson2022-05-121-19/+0
| | | | | | | | | | This deletes many handcoded impls. It also generates lots of impls that we previously didn't have.
* | Merge branch 'template' into 'main'Nick Mathewson2022-05-121-6/+34
|\ \ | |/ |/| | | | | Make the example config file into a template and move it to arti See merge request tpo/core/arti!503
| * arti-example-config.toml: Re-un-comment the example settings in testIan Jackson2022-05-121-4/+23
| |
| * config defaults: Test that empty deser is the sameIan Jackson2022-05-121-0/+4
| |
| * ARTI_EXAMPLE_CONFIG: Rename from ARTI_DEFAULTSIan Jackson2022-05-121-3/+2
| | | | | | | | | | The defaults are built into the code. This is a doc-commented example file, not the primary specification of what the defaults are.
| * ARTI_DEFAULTS: Move to arti crateIan Jackson2022-05-121-0/+3
| |
| * config defaults: No longer apply ARTI_DEFAULTS in load()Ian Jackson2022-05-121-1/+0
| | | | | | | | | | | | | | | | This is redundant, because the defaults have to be supplied by the config builders (usually via builder default attributes). That this is actually done and correct is tested by the `default_config()` test case in arti/src/cfg.rs.
| * config defaults: Test that going via builder explicitly is the sameIan Jackson2022-05-121-0/+4
| | | | | | | | | | Add this test even though our construction of the Default and Builder ought to trivially ensure that it's true.
* | 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: Replace more handwritten impl DefaultIan Jackson2022-05-121-12/+2
| |
* | config: Move macro calls to next to the structIan Jackson2022-05-121-1/+0
|/ | | | | | | 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.
* No longer derive Default on three structs which derive BuilderIan Jackson2022-05-111-3/+6
|
* config derive attrs: Make builders serde, and validated structs notIan Jackson2022-05-051-11/+7
| | | | | | | | | | | | | | | * 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-7/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | 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).
* Merge branch 'download-schedule' into 'main'Nick Mathewson2022-04-261-3/+16
|\ | | | | | | | | DownloadSchedule: Introduce Builder See merge request tpo/core/arti!473
| * DownloadSchudule: Have NetworkConfig contain BuildersIan Jackson2022-04-261-17/+18
| | | | | | | | | | | | | | | | | | | | | | Use sub_builder. We must do something special for defaults. This involves moving the actual default values for retry_bootstrap and retry_microdescs into config.rs, since they need to access the fields of the un-built version of the structure. (An alternative would be to generate "weak setters" which do not override previous settings, but derive_builder does not offer to generate them and that seems overkill.)
| * DownloadSchedule: Abolish new() methodIan Jackson2022-04-261-4/+16
| | | | | | | | | | | | | | | | | | | | Instead, everyone should use DownloadScheduleBuilder. The new() method would in any case be useless in a moment, since we're going to embed DownloadScheduleBuilder in the NetworkConfig, not DownloadSchedule. The call sites in the tests are all about to change again.
* | Merge branch 'main' into 'msrv_1_56'Nick Mathewson2022-04-261-6/+8
|\| | | | | | | | | | | # Conflicts: # crates/tor-config/Cargo.toml # crates/tor-dirmgr/src/state.rs # doc/semver_status.md
| * Rename ThingListBuilder::replace (from set)Ian Jackson2022-04-251-3/+3
| | | | | | | | | | As per https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/471#note_2798024
| * Introduce PredictedPortsListBuilderIan Jackson2022-04-251-2/+5
| | | | | | | | | | | | This means that `NetworkConfig::initial_predicted_ports` is now like the other list-like things, returning `&mut list_builder` with the same `set()` and `append()` methods.
| * Introduce AuthorityListBuilder in NetworkConfigBuilderIan Jackson2022-04-251-3/+2
| | | | | | | | | | | | | | | | | | NetworkConfigBuilder needs to not contain any validated structs, so that its serde does not expose the validated details. AuthorityListBuilder is what ought to go here - and it contains Vec<AuthorityBuilder>, not Vec<Authority>. As a consequence, many places now deal with AuthorityBuilder, rather than Authority.
* | squash! Bump every crate's edition to 2021.Nick Mathewson2022-04-251-3/+0
|/ | | | | Remove all `use` statements for `TryFrom` and `TryInto`. These are now redundant in Rust 2021.
* arti: ArtiConfig: derive ArtiConfigBuilderIan Jackson2022-04-221-87/+13
| | | | Replace handwritten builder struct, accessors, and builder function.
* fallback list: Introduce and use FallbackListBuilderIan Jackson2022-04-221-3/+3
| | | | | | | | | Now the network fallbacks configuration wants to Deserialize a Vec<FallbackDirBuilder>, rather than validated Vec<FallbackDir>. Methods on FallbackListBuilder are as per https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/462#note_2797697 mutatis mutandi for the fact that this struct has only fallbacks in it.
* Move SystemConfig to arti::cfgIan Jackson2022-03-211-2/+35
| | | | Fixes #314, #418.
* ApplicationConfig: abolish accessorIan Jackson2022-03-211-8/+1
|
* Move ApplicationConfig to arti crateIan Jackson2022-03-211-1/+25
| | | | Code motion and import fixups.
* socks: abolish config accessorsIan Jackson2022-03-211-14/+2
| | | | | Making these fields pub(crate) is quite reasonable and does away with the need for accessors.
* Move ProxyConfig to arti crateIan Jackson2022-03-211-1/+50
| | | | | | | We put this in cfg.rs, rather than (say) socks.rs, because it has config relating to both socks.rs and dns.rs. Code motion and import fixups.
* Move logging configuration from arti_config::options to arti::loggingIan Jackson2022-03-211-4/+3
| | | | Code motion and import fixups.
* Move ArtiConfig to new arti::cfg moduleIan Jackson2022-03-211-0/+269
Code motion and import fixups.