Nick Mathewson
7a3fec6fec
WIP: listen for sighups and reconfigure?
2022-08-26 15:44:04 -04:00
Alexander Færøy
7b5ee8423b
Disable fs-mistrust's simple_cases() unit test on non-Unix.
...
This patch disables the simple_cases() test on non-Unix platforms and
hides the LinkType type import on non-Unix where we won't be testing
symbolic link features.
See: tpo/core/arti#557.
2022-08-26 21:34:49 +02:00
Nick Mathewson
2c4a176e66
Add functionality to listen for SIGHUPs.
2022-08-26 15:33:56 -04:00
Alexander Færøy
c3928bfe6c
Fix compilation of tests for Windows.
...
This patch allows us to compile the fs-mistrust tests on Windows where
the `trust_no_group_id()` method is unavailable.
See: tpo/core/arti#557.
2022-08-26 21:33:40 +02:00
Alexander Færøy
fa1b77642f
Mark fs-mistrust's link_rel() and link_abs() as Unix-only.
...
Since we are not going to test symlink creation on Windows we remove
this code from the testing module.
See: tpo/core/arti#557.
2022-08-26 21:32:12 +02:00
Alexander Færøy
edec8f3ecd
Mark the repeats and looping tests in fs-mistrust as Unix-only.
...
See: tpo/core/art#557.
2022-08-26 21:30:20 +02:00
Nick Mathewson
c1f64144b3
fs-mistrust: Try to handle verbatim prefixes in test.
...
We have a test that tries to check that our outputs are the same as
those from `std::fs::canonicalize`. But on Windows, they aren't:
There, `canonicalize` also puts path prefixes into a "Verbatim"
form.
This patch tries to replicate that behavior for the test only. If
we find that it's unreliable, though, our best bet is probably to
revise or disable this check on Windows, rather than chasing
compatibility with `GetFinalPathNameByHandle`.
Should fix part of #557 .
2022-08-26 10:56:32 -04:00
Ian Jackson
3ea05c981d
Merge branch 'fs-mistrust-by-component' into 'main'
...
fs-mistrust: Handle windows prefixes specially.
See merge request tpo/core/arti!698
2022-08-26 14:50:51 +00:00
Ian Jackson
ca4ca75ede
fs-mistrust: Clarify comment on `stack`
2022-08-26 14:14:40 +00:00
Nick Mathewson
5e7a62dff2
fs-mistrust: Handle windows prefixes specially.
...
On Windows, paths can have a "prefix", like `C:` or
`\\server\share`. Attempts to get metadata for these prefixes
appear to fail with `ERROR_INVALID_FUNCTION`, since they are not
files.
This patch teaches fs-mistrust about prefixes on Windows, and tells
it that attempts to find their metadata are allowed to fail.
Doing this may solve part of #557 .
2022-08-26 09:43:08 -04:00
Ian Jackson
56fd5ac779
Merge branch 'safelog_more' into 'main'
...
Apply safelog to more of the things that we log
See merge request tpo/core/arti!693
2022-08-26 13:20:00 +00:00
Nick Mathewson
496a5be749
Merge branch 'clippy' into 'main'
...
tor-config: tests: Apply standard lint block in sources.rs
See merge request tpo/core/arti!694
2022-08-26 12:56:25 +00:00
Nick Mathewson
2e7028e8e2
Merge branch 'setuid-again' into 'main'
...
arti: running_as_setuid: fix MacOs build
See merge request tpo/core/arti!697
2022-08-26 11:26:39 +00:00
Ian Jackson
0045b70bc8
Merge branch 'establish-intro-followup' into 'main'
...
Clean up EstablishIntro cell
See merge request tpo/core/arti!648
2022-08-26 11:21:02 +00:00
Ian Jackson
72bc20c99b
arti: running_as_setuid: fix MacOs build
...
libc::getuid and geteuid are marked unsafe, even though I think they
could be safe. So the previous code didn't build.
2022-08-26 11:44:05 +01:00
Yuan Lyu
08e55bc9b1
Clean up EstablishIntro cell
2022-08-25 16:45:40 -04:00
Nick Mathewson
88fa24d029
Improve error from bad escapes in a toml config.
...
Whereas previously we would say:
```
target/debug/arti: error: invalid escape character in string: `Z` at line 9 column 14 in ../../.config/arti/arti.toml
```
we now say:
```
target/debug/arti: error: invalid escape character in string: `Z` at line 9 column 14 in ../../.config/arti/arti.toml (If you wanted to include a literal \ character, you need to escape it by writing two in a row: \\)
```
The implementation is a bit of a hack, I'm afraid, but I don't think
it's all that bad.
Closes #549 .
2022-08-25 15:04:52 -04:00
Ian Jackson
3faf4475cc
Bump toml dependency
...
We need
60b874308e6792a73cc00517a60bbef60a12e3cc
Mixed type arrays (#358 )
for a test case in tor-config.
While we're here, drop the dupe entry in tor-config.
(In principle we could make this increase only in tor-config's
dev-dependencies, but that seems unnecessarily fiddly.)
2022-08-25 18:41:28 +01:00
Ian Jackson
76066dac81
tor-config Listen: Rename localhost_port_legacy (from _deprecated)
...
As per
https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/602#note_2830847
2022-08-25 18:41:28 +01:00
Ian Jackson
a6d7e38f6d
tor-config Listen: Add a note about EADDRINUSE
...
Prompted by
https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/602#note_2830848
2022-08-25 18:41:28 +01:00
Ian Jackson
81bf8d5f4d
tor-config; Listen: Return addresses in groups for error behaviour
...
Prompted by
https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/602#note_2830766
2022-08-25 18:41:28 +01:00
Ian Jackson
370330cb57
arti cfg: Provide comprehensive tests for port listening
2022-08-25 18:41:28 +01:00
Ian Jackson
12476bf0d4
arti: cfg: Rename `*_port` to `*_listen` and change the type
...
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.
2022-08-25 18:41:28 +01:00
Ian Jackson
846fe3d520
tor-config: Provide resolve_alternative_specs
2022-08-25 18:41:28 +01:00
Ian Jackson
3af1f3e712
tor-config: Support tracking deprecated config keys
2022-08-25 18:41:28 +01:00
Ian Jackson
33358379f4
tor-config: Introduce ResolutionResults
...
This will allow us to handle new kinds of warnigns etc.
2022-08-25 18:41:03 +01:00
Ian Jackson
29a24a9dcb
tor-config: Rename UnrecognizedKey to DisfavouredKey
...
We're going to want the to use the same type for deprecated keys.
2022-08-25 18:40:14 +01:00
Ian Jackson
f588268128
tor-config: Provide misc::Listen
2022-08-25 18:40:14 +01:00
Ian Jackson
00c51bf63f
tor-config misc tests: Add standard lint suppression block
2022-08-25 18:40:14 +01:00
Nick Mathewson
4696174d68
Merge branch 'default_log_severity' into 'main'
...
arti: Raise the default console log severity to "info"
See merge request tpo/core/arti!692
2022-08-25 17:13:51 +00:00
Nick Mathewson
f9a9921bed
arti-client: Treat list of exit ports as sensitive.
2022-08-25 12:03:38 -04:00
Ian Jackson
a931ec08bd
tor-config: tests: Apply standard lint block in sources.rs
...
Fixes a spurious clippy warning on nightly, about a dbg!
2022-08-25 16:33:59 +01:00
Nick Mathewson
0452fa67f6
arti: Adjust severity on per-socks-request log.
...
Also, note why we aren't hiding the addrs that we're listening on
here.
2022-08-25 11:09:38 -04:00
Nick Mathewson
e8fcf2b038
arti-client: Downgrade "got a circuit for" message.
...
This is not interesting to the user, and violates some of our
safe-logging rules (like "Don't log at info for each user request"
and "don't log ports").
2022-08-25 11:05:42 -04:00
Nick Mathewson
0f133de6b9
Downgrade "guard set loaded" messages
...
These aren't interesting to the user.
2022-08-25 11:03:19 -04:00
Nick Mathewson
0510224820
circmgr: treat usage as sensitive.
2022-08-25 11:02:06 -04:00
Ian Jackson
ae5ca43779
tor-config: semver.md: Document change to ConfigurationSource enum
2022-08-25 15:58:29 +01:00
Ian Jackson
2662fd0d71
tor-config source: just ConfigurationSource, not FoundConfigFile
...
FoundConfigFile existed to hide something that ConfigurationSource now
exposes.
2022-08-25 15:58:29 +01:00
Ian Jackson
9c00ec7da4
tor-config: Replace dir detection with ConfigurationSource enum
...
As per
https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/682#note_2830860
And subsequent IRC discussion.
Having done the work as per review comments, I don't much like the
result. It's quite un-ergonomiuc. If we can't have fs autodetection,
I think syntactic autodetection within sources.rs would be nearly as
nice.
However, I seem to be outvoted. At least the externally visible
functionality (of an arti binary, say) is reasonably ergonomic.
2022-08-25 15:58:29 +01:00
Ian Jackson
e98bdf6004
tor-config: Provide is_syntactically_directory helper function
2022-08-25 15:58:29 +01:00
Ian Jackson
a3005d8c0a
tor-config: MustRead: Make public
...
I think this ought to be exhaustive.
2022-08-25 15:58:29 +01:00
Ian Jackson
7c0637ad44
config watch: Fix and reduce debounce interval
...
The parameter to FileWatcher::new is not a polling time fallback; it
is a "debounce time". Events are always delayed by at least this
much.
10s is much too long for this. 1s is more appropriate.
2022-08-25 15:58:29 +01:00
Ian Jackson
7d8b3e2f2f
config sources: Read arti.d as well as arti.toml
...
Fixes #474 aka #271
2022-08-25 15:58:29 +01:00
Ian Jackson
ba94c4a4fa
config sources tests: Test results of directory scan
2022-08-25 15:58:29 +01:00
Ian Jackson
b700816eef
config sources tests: Break out sources_nodefaults
2022-08-25 15:58:29 +01:00
Ian Jackson
e4fea3e1ea
config sources tests: Introduce test of reading directory
2022-08-25 15:58:29 +01:00
Ian Jackson
08767f59d8
config sources: Supporting reading directories
2022-08-25 15:58:29 +01:00
Ian Jackson
7d088cf8df
config sources: Introduce scan() and FoundConfigFiles
...
We're going to need to do config file reading in two phases.
Right now this isn't actually necessary, because the set of files
is fixed since we don't support dynamically scanning directories.
But the new API will be needed in a moment.
Code motion and API changes, but no overall functional change.
Review with `git show -b` may be helpful.
The new API also provides for dealing with directories, but right now
that doesn't happen.
2022-08-25 15:58:29 +01:00
Ian Jackson
2fa75be660
tor-basic-utils: Provide IoErrorExt is_not_a_directory()
...
We're going to want this functionality, which isn't in the stable
stdlib.
2022-08-25 15:58:29 +01:00
Ian Jackson
587fa5f418
config watch: Provide watch_dir
...
No call site just yet; that will come shortly.
This requires a bit of reorganisation first.
2022-08-25 15:58:29 +01:00
Ian Jackson
863c66159b
config watch: Re-establish watcher on each iteration
...
This is going to be needed in a moment.
2022-08-25 15:58:29 +01:00
Ian Jackson
a7bb3a73b4
config watch: Rescan once on startup
...
That way if the config changes after we read it initially, but before
we set up the watcher, we will still pick it up.
Fixes #544
2022-08-25 15:58:29 +01:00
Ian Jackson
0f9bf12a7f
config watch: Break out prepare_watcher
...
This is going to become more complicated, and gain another call site.
2022-08-25 15:58:29 +01:00
Ian Jackson
8e86599df4
config watch: Make the mpsc channel part of FileWatcher
...
The previous approach (inherited from the API of notify) was kind of
odd.
Soon we are going to want to be able to drop the watcher and replace
it. That really wants the same object to contain all the things that
ought to be dropped together. (notify's watchers stop generating
events and give EOF on the channel, when dropped.)
2022-08-25 15:58:29 +01:00
Ian Jackson
25b5a53953
config: Do process hardening on reconfigure even if not watching
...
These blocks were in the wrong order.
Previously, if you tried to turn on process hardening in the config
and then reloaded rather than restarting, it wouldn't take effect.
2022-08-25 15:58:29 +01:00
Ian Jackson
cd2432474c
tor-config sources: Remove some unneeded .to_string() from tests
2022-08-25 15:58:29 +01:00
Nick Mathewson
920f7a3f53
tor-chanmgr: don't log addresses so much.
...
We now log connection attempts at debug!, and mark relay target
addresses as sensitive.
2022-08-25 10:54:50 -04:00
Nick Mathewson
8fa1568b02
arti: Raise the default console log severity to "info"
...
Previously we logged at "debug", but that's not meant to
user-facing.
2022-08-25 09:10:42 -04:00
Ian Jackson
504bba2191
Fix setuid testing for MacOS
2022-08-25 12:21:33 +01:00
Nick Mathewson
679c1c9b6a
Merge branch 'no_setuid' into 'main'
...
arti_client: Refuse to build a client if we are setuid.
See merge request tpo/core/arti!689
2022-08-24 19:47:15 +00:00
Nick Mathewson
a8b3e147fe
arti_client: Refuse to build a client if we are setuid.
...
Arti is not designed to be a setuid-safe program.
Part of #523 .
2022-08-24 15:23:24 -04:00
trinity-1686a
075ec7557f
fix nightly lints
2022-08-24 19:10:12 +02:00
trinity-1686a
c7d2b5001c
fix test failing due to missing allow_running_as_root
2022-08-24 18:34:02 +02:00
trinity-1686a
ca99e9f635
add feature annotation to fields made visible through visible::StructFields
2022-08-24 18:22:41 +02:00
trinity-1686a
426a59b2ba
add feature annotation not added by doc_auto_cfg
2022-08-24 18:22:41 +02:00
trinity-1686a
7f939fa480
enable doc_auto_cfg feature on every crate when documenting for docs.rs
2022-08-24 18:22:41 +02:00
Nick Mathewson
187c6b48df
Merge branch 'no_root' into 'main'
...
arti: Do not allow running as root.
See merge request tpo/core/arti!688
2022-08-24 15:21:57 +00:00
Nick Mathewson
25c287636b
arti: Do not allow running as root.
...
This can be overridden with `application.allow_running_as_root`.
Part of #523 .
2022-08-24 10:57:03 -04:00
Nick Mathewson
51eb0e6ca2
Merge branch 'test-old-config' into 'main'
...
Test oldest example configuration file
See merge request tpo/core/arti!684
2022-08-23 14:43:30 +00:00
Ian Jackson
ee2580face
tor-config: resolve_option_general: Add semver note
2022-08-23 14:21:13 +01:00
Ian Jackson
0c747b8069
tor-config: resolve_option_general: Add TODO about example
2022-08-23 14:20:49 +01:00
Nick Mathewson
32c14d37bf
Fix syntax in doc comment.
2022-08-23 12:59:41 +00:00
Ian Jackson
298f6f508c
arti cfg: Write down future plans
...
Mostly cribbed from
https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/684#note_2829937
2022-08-23 13:55:48 +01:00
Ian Jackson
457c17adb0
tor-config: Provide resolve_option_general, for T: !Default etc.
...
At one point in this MR I thought I was going to want this for
arti::cfg::ListenConfig (which we don't want to be Default).
In fact ListenConfig is being handled specially, but having written
this function it seemed sensible to keep it. Since resolve_option
becomes a wrapper for it, the existing tests exercise it.
2022-08-22 16:26:38 +01:00
Ian Jackson
086cf3701a
arti cfg: Test parsing of the oldest config file we still support
2022-08-22 16:26:22 +01:00
Ian Jackson
a1cc2578b3
arti cfg: Fix docs about ARTI_EXAMPLE_CONFIG
...
The defaults are now
2022-08-22 16:26:22 +01:00
Ian Jackson
46d9dadd02
Merge branch 'channel' into 'main'
...
Channel padding
See merge request tpo/core/arti!657
2022-08-17 10:26:25 +00:00
Ian Jackson
d4ce701fa4
channel padding: Only do anything with link protocol 5
...
Or rather, if we *didn't* negotiate 4, which is too old.
As per
https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/657#note_2828354
2022-08-17 10:54:41 +01:00
Ian Jackson
08a7257fe9
channel padding: Properly advertise link protocol 5
...
We already actually send and negotiate the padding, since !657 ,
but we ought to negotiate a protocol version where that's not a
violation!
As per
https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/657#note_2828354
2022-08-17 10:54:41 +01:00
Ian Jackson
a0b0eca93e
tor-netdoc: if_ito: Add expansion of acronym
2022-08-17 10:54:41 +01:00
Ian Jackson
8339558ba8
channel padding: Move initial config of ChannelPaddingInstructions
...
Making ChannelPaddingInstructions::default() accurately reflect the
initial state of the reactor's padding timer simplifies the code
somewhat.
(When padding is wanted, parameters are computed and inserted
explicitly, so the only change is that if we start out dormant, we
defer setting the timer parameters until necessary.)
As per
https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/657#note_2827249
2022-08-17 10:54:41 +01:00
Ian Jackson
8a484a26e6
channel padding: Parameters: default_padding replaces Default impl
...
As per
https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/657#note_2827249
2022-08-17 10:54:41 +01:00
Ian Jackson
3aed28acd4
channel usage: Rename CU::UserTraffic from CU::Exit
...
As suggested in
https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/657#note_2827246
2022-08-17 10:54:41 +01:00
Ian Jackson
24e2c717f0
chanmgr padding: Correct docs for padding_parameters*
...
Prompted by
https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/657#note_2827242
These texts were out of date; one of them still mentioned
`all_zeroes`.
2022-08-17 10:54:41 +01:00
Nick Mathewson
cbd759163a
Improve comment for ChannelUsage::Exit
2022-08-17 10:54:41 +01:00
Nick Mathewson
d44c860355
Fix typo in comment
2022-08-17 10:54:41 +01:00
Ian Jackson
c97ea4fce0
tor-chanmgr tests: Fix a minimal-versions failure (actually)
2022-08-17 10:54:41 +01:00
Ian Jackson
a892a3ee62
tor-chanmgr tests: Fix a minimal-versions failure
2022-08-17 10:54:41 +01:00
Ian Jackson
074d08bee8
arti: Fix a minimal-versions failure
2022-08-17 10:54:41 +01:00
Ian Jackson
d9338293c8
Add semver notes
2022-08-17 10:54:41 +01:00
Ian Jackson
4111c63bd4
channel reactor: Add some commented-out debug for padding
2022-08-17 10:54:41 +01:00
Ian Jackson
46885ac14b
channel padding: Correctly always send the timer parameters
...
Fixes "chanmgr configuration: Avoid sending needless initial update(s)"
2022-08-17 10:54:41 +01:00
Ian Jackson
496563e7cf
channel padding: Abolish ARTI_EXPERIMENTAL_CHANNEL_PADDING env var
...
This was for testing and is no longer needed.
2022-08-17 10:54:41 +01:00
Ian Jackson
299f302f35
channel engage_padding_activities: swap docs to tor0proto
...
This allow us to make a working cross-reference.
2022-08-17 10:54:41 +01:00
Ian Jackson
88dc816770
channel fake_channel_details: Use precise cfg
...
As per
https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/657#note_2826169
2022-08-17 10:54:41 +01:00
Ian Jackson
97363ba250
tor-netdir: testnet: construct_custom_netdir_with_params: Fix doc
...
As per
https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/657#note_2826168
2022-08-17 10:54:41 +01:00
Ian Jackson
52848a41c6
ChannelPaddingInstructions: Update and expand docs
2022-08-17 10:54:41 +01:00
Ian Jackson
2a4fd97229
ChannelPaddingInstructions: Rename `params` field to `insns`
2022-08-17 10:54:41 +01:00
Ian Jackson
949e5395e0
Rename ChannelsParams types to ChannelPaddingInstructions (fmt)
...
Run rustfmt; no other changes.
2022-08-17 10:54:41 +01:00
Ian Jackson
94dd3361e2
Rename ChannelsParams types to ChannelPaddingInstructions
...
As per
https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/657#note_2826167
This makes some lines too long; I will run rustfmt in a separate
commit for clarity.
2022-08-17 10:54:41 +01:00