| Commit message (Collapse) | Author | Age | Files | Lines |
| | |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This patch changes our `default_config()` test in `arti/src/cfg.rs` such
that we can define a number of known unrecognized options on different
platforms.
We mark the two keys "storage.permissions.trust_group" and
"storage.permissions.trust_user" as unknown on the Windows platform as
such features is not available using the ordinary Unix UID concept.
This patch also publicly exposes the `tor_config::load::DisfavouredKey`
and `tor_config::load::PathEntry` types and marks them as
non-exhaustive.
See: tpo/core/arti#450.
|
| | |
|
| |
|
|
|
|
|
| |
This commit largely follows the example for resolve_alternative_specs.
The difference is that there are two fields, so we use a macro to
avoid recapitulating the field names.
|
| | |
|
| |
|
|
| |
This will allow us to handle new kinds of warnigns etc.
|
| | |
|
| | |
|
| |\
| |
| |
| |
| | |
arti: Do not allow running as root.
See merge request tpo/core/arti!688
|
| | |
| |
| |
| |
| |
| | |
This can be overridden with `application.allow_running_as_root`.
Part of #523.
|
| | |
| |
| |
| |
| | |
Mostly cribbed from
https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/684#note_2829937
|
| | | |
|
| |/
|
|
| |
The defaults are now
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
This is a compile-time feature with an associated configuration
flag, both enabled by default.
When it's turned on, hardening prevents the arti process from
dumping core or being attached to by low-privileged processes.
(This is a defense-in-depth measure, not an absolute way to prevent
attacks. For more information, see
[`secmem_proc`](https://docs.rs/secmem-proc/0.1.1/secmem_proc/).)
Closes #364.
|
| | |
|
| |
|
|
|
| |
Prompted by review
https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/589#note_2813596
|
| |
|
|
| |
It contains only sections, but we want to detect when that is a problem!
|
| |
|
|
| |
We're going to call this new closure another time.
|
| |
|
|
| |
This is the final piece of #457.
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
| |
|
|
| |
That this remained was an oversight.
|
| | |
|
| |
|
|
|
| |
this change adds some simple tests for the ArtiConfig public getter
functions to help expand coverage in this crate.
|
| | |
|
| |
|
|
|
| |
As per
https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/529#note_2807077
|
| |
|
|
|
| |
As per review comments
https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/529#note_2807076
|
| | |
|
| |
|
|
|
|
|
|
|
|
|
|
| |
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.
|
| |
|
|
|
|
| |
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.
|
| | |
|
| |\
| |
| |
| |
| | |
impl_standard_builder: Test the Deserialize impl and have it generate ::builder
See merge request tpo/core/arti!507
|
| | |
| |
| |
| |
| | |
This deletes many handcoded impls. It also generates lots of impls
that we previously didn't have.
|
| |\ \
| |/
|/|
| |
| | |
Make the example config file into a template and move it to arti
See merge request tpo/core/arti!503
|
| | | |
|
| | | |
|
| | |
| |
| |
| |
| | |
The defaults are built into the code. This is a doc-commented example
file, not the primary specification of what the defaults are.
|
| | | |
|
| | |
| |
| |
| |
| |
| |
| |
| | |
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.
|
| | |
| |
| |
| |
| | |
Add this test even though our construction of the Default and Builder
ought to trivially ensure that it's true.
|
| | |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
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.
|
| | | |
|
| |/
|
|
|
|
|
| |
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.
|
| | |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* 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.)
|
| |
|
|
|
|
|
| |
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.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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).
|
| |\
| |
| |
| |
| | |
DownloadSchedule: Introduce Builder
See merge request tpo/core/arti!473
|
| | |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
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.)
|
| | |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
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.
|
| |\|
| |
| |
| |
| |
| | |
# Conflicts:
# crates/tor-config/Cargo.toml
# crates/tor-dirmgr/src/state.rs
# doc/semver_status.md
|