aboutsummaryrefslogtreecommitdiff
path: root/crates/arti-config/src/options.rs
Commit message (Collapse)AuthorAgeFilesLines
* Upgrade to newer version of config crate.Nick Mathewson2022-02-251-6/+16
|
* Document that `notify` behavior is strange with symlinksNick Mathewson2022-02-031-0/+5
| | | | | | | | | | (More specifically, `notify` behaves differently on different platforms. On some, it can watch specific directory objects on the filesystem, and so it only notices when _those_ directories change. If you change a symlink so that the canonical configuration file location is now in some other directory, `notify` won't notice. But on other platforms, notify just does "stat()" in a loop. On those, it _will_ notice if the configuration file changes.)
* Make configuration-watching configurable and off-by-default.Nick Mathewson2022-02-011-0/+49
| | | | | | | | I'm slightly concerned about whether this is behavior people would expect to have on-by-default, so let's make this off-by-default for now. Maybe the `application` and `system` sections should merge?
* Make max_file_limit configurableNeel Chauhan2022-01-281-1/+17
|
* Tracing configuration for logfiles, per-target filtersNick Mathewson2022-01-101-16/+100
| | | | | | | | | | | | | | | | | | | | | | | | | | | Previously we could only configure one global tracing filter that applied to stdout and journald. There was no support for log files, either. This patch fixes both issues, by substantially revising the configuration format: There are now separate filters for each log file, for journald, and for the console log. Because we want to allow multiple logfiles, they have to go into an array in the configuration. The configuration logic has grown a bit complicated in its types, since the tracing_subscriber crate would prefer to have the complete structure of tracing Layers known statically. That's fine when you know how many you have, and which kinds there will be, but for the runtime-configuration case we need to mess around with `Box<dyn Layer ...>`. I also had to switch from tracing_subscriber's EnvFilter to its Targets filter. It seems "EnvFilter" can only be applied as a Layer in itself, and won't work as a Filter on an individual Layer. Closes #166. Closes #170.
* Expose and rename stream timeout config.Nick Mathewson2022-01-101-6/+6
| | | | | | | | | | | Previously we kept this in an ambiguously named type, `ClientTimeoutConfig`. But everything we do right now is client related! So `StreamTimeoutConfig` is a better name. Also, we'd previously neglected to expose the builder for this type from `TorClientConfigBuilder`. Now we do. Closes #281.
* Rename timeout_rules to stream_timeouts.Nick Mathewson2021-12-071-11/+11
| | | | | | | (There are other timeout rules, after all.) Also, rename stream_timeout to connect_timeout, to make it more clear when it applies.
* Merge branch 'revised_preemptive_config' into 'main'eta2021-12-071-17/+19
|\ | | | | | | | | Usability: renaming and documentation in preemptive circuit config See merge request tpo/core/arti!176
| * Clarify names and docs for predictive circuits.Nick Mathewson2021-12-071-3/+5
| | | | | | | | | | Also, use humantime_serde, rather than a number of seconds, to indicate configuration time.
| * Rename circuits_preemptive to preemptive_circuitsNick Mathewson2021-12-071-14/+14
| | | | | | | | | | | | This obeys a few conventions: * adjective before noun * config objects end with "config"
* | Merge branch 'bug252' into 'main'eta2021-12-071-2/+21
|\ \ | |/ |/| | | | | | | | | Make DNS fields in arti-client/src/client.rs configurable Closes #252 See merge request tpo/core/arti!171
| * Rename ClientDNSConfig -> ClientTimeoutConfigNeel Chauhan2021-12-071-9/+12
| |
| * Make DNS fields in arti-client/src/client.rs configurableNeel Chauhan2021-12-031-2/+18
| |
* | Allow configurability on preemptive circuitsNeel Chauhan2021-12-071-0/+25
|/
* Change sane_defaults() and with_directories()Nick Mathewson2021-11-291-1/+1
| | | | | | | | The sane_defaults() call is now the same as you get from a default builder: by convention, we just call that method Default::default(). The with_directories() constructor makes more sense as a constructor for the TorClientConfigBuilder than for TorClientConfig.
* Document StorageConfig defaults better.Nick Mathewson2021-11-291-8/+11
| | | | (Also fix a couple of typos)
* Add basic tests for high-level buildersNick Mathewson2021-11-251-0/+57
| | | | | Make sure that we can change elements, and we can reconstruct builders that give us the same thing.
* Implement builder patterns for ArtiConfig.Nick Mathewson2021-11-251-5/+179
| | | | | | | | This commit implements the "metabuilder" pattern and the "builder reconstruction" pattern for the ArtiConfig type. I'm not 100% that this will be necessary, but it will certainly help with testing.
* Impl and test Default for high-level configsNick Mathewson2021-11-251-3/+22
|
* Implement meta-builder pattern for TorClientConfigNick Mathewson2021-11-221-10/+27
| | | | | This should be ergonomic than having to construct every section of the configuration separately.
* Make every Config type implement Eq.Nick Mathewson2021-11-211-3/+3
| | | | | Doing this is necessary for reconfiguration support, and will help a lot with testing, too.
* For every* config type, make defaults consistent.Nick Mathewson2021-11-211-0/+17
| | | | | | | | | | This patch makes sure that for every* config type we have, the defaults you get from a Builder match those you get from Serde, and that both match the value that you get from arti_defaults.toml. Later down the line I'll be adding some tests to keep these in sync. * StorageConfig still has no defaults of its own, since we aren't so sure we want other applications to use Arti's directories by default.
* Give every ConfigBuilder a From<Config> implementation.Nick Mathewson2021-11-211-0/+18
| | | | This will make it more convenient to reconfigure things.
* Ensure that every section-level config type has a builder() function.Nick Mathewson2021-11-211-2/+17
|
* Make arti-client config object match arti config better.Nick Mathewson2021-11-211-34/+8
| | | | | | | | Now every section that the two configuration objects share has the same type and name. This should help us in documenting our configuration in a way that doesn't confuse people. There is still lots of API work to go.
* Lower StorageConfig to arti-client crateNick Mathewson2021-11-211-36/+2
|
* Use named fields for the elements of ConfigBuildErrorNick Mathewson2021-11-181-2/+8
|
* Move the socks_port option into a new proxy section.Nick Mathewson2021-11-181-7/+22
| | | | Now there are no options that aren't in a toml section.
* Rename the "network" configuration section to "tor_network".Nick Mathewson2021-11-181-2/+2
| | | | | This is more accurate, since it describes the details of the tor network that we're connecting to.
* Rename addr_config to address_filter; clarify its usage.Nick Mathewson2021-11-181-3/+3
|
* Flatten enforce_distance into path_rules.Nick Mathewson2021-11-181-1/+1
| | | | Also use the path_rules name consistently throughout the code.
* Fold "circuit_timing" and "request_timing" into a single section.Nick Mathewson2021-11-181-5/+1
|
* Move top-level configuration downwards from `arti` to `arti-config`.Nick Mathewson2021-11-181-0/+181
To do this at all neatly, I had to split out `tor-config` from `arti-config` again, and putting the lower level stuff (paths, builder errors) into tor-config. I also changed our use of derive_builder to always use a common error type, to avoid error type proliferation.