Commit Graph

30 Commits

Author SHA1 Message Date
Nick Mathewson 0779923d64 Initial backend implementation for guard node manager.
There are some missing parts here (like persistence and tests)
and some incorrect parts (I am 90% sure that the "exploratory
circuit" flag is bogus).  Also it is not integrated with the circuit
manager code.
2021-10-07 10:45:42 -04:00
Nick Mathewson 557a0ff40b Move all crates into a `crates` subdirectory.
This will cause some pain for now, but now is really the best time
to do this kind of thing.
2021-08-27 09:53:09 -04:00
Nick Mathewson bb6d38cde0 Initial persistent-state-manager code.
This commit defines a crate (tor-persist) that describes an abstract
key-value store using serde, plus an on-disk implementation using
Toml and fslock.
2021-08-06 16:39:50 -04:00
Nick Mathewson 1d16bcf16b Toposort the workspace members list. 2021-06-24 11:44:54 -04:00
Nick Mathewson be86df631d Remove anyhow dependency from tor-retry, and rename it to retry-error
Now RetryError is parameterized on an underlying error type.
2021-06-17 16:09:43 -04:00
Nick Mathewson e8214d1df1 Use macros and types to improve handling of Netdir parameters.
(Squashed from typed-netdir-params)
2021-05-25 09:16:59 -04:00
Nick Mathewson 6937d6690d Switch to v2 feature resolver. 2021-05-05 09:19:25 -04:00
Nick Mathewson 615e2ed31a Split mocking parts of rtcompat into new rtmock crate.
Since these parts are testing-only, let's take steps to make sure we
don't ship them in production by accident.
2021-05-03 09:10:33 -04:00
Nick Mathewson 13d4ee888f Replace tor-decompress with async-compression crate.
This lets us simplify tor-dirclient a fair bit.  Closes #79.
2021-04-13 16:27:52 -04:00
Nick Mathewson c2db961424 Move our command-line interface into a new crate called "arti".
Closes #106
2021-03-17 15:14:32 -04:00
Nick Mathewson a444f6c3dc Add tor-decompress to top-level Cargo.toml 2021-03-04 13:31:48 -05:00
Nick Mathewson 6f28f7dea5 Rename client-demo to tor-client. 2021-02-02 09:27:38 -05:00
Nick Mathewson c3c6e6b660 Start a 'tor-config' crate
This crate is mainly intended to wrap the config.rs code if
necessary, and to give a way for interacting with it on the command
line.
2021-02-01 12:43:09 -05:00
Nick Mathewson f3e130c62a Initial work on client-side consensus diff code. 2020-12-16 15:47:00 -05:00
Nick Mathewson 863f459389 Add a "RetryError" to capture the idea of multiple failed attempts.
When we try to do something a few times and it fails each time, it
can be a good idea to remember why the individual failures
happened.
2020-12-12 12:54:00 -05:00
Nick Mathewson 9f4230fb1b Initial pass on directory-manager code.
This code can now bootstrap from the network, cache the results, and
reload from cache.

There's lots more work to do here, including a big pile of tidying
and refactoring and testing and documentation.
2020-11-19 19:11:10 -05:00
Nick Mathewson 33f070e7b5 Start a directory client implementation
It can send a GET request on a circuit, get an answer, and
decompress it with zlib.

It will need documentation and tests eventually, as well as serious
refactoring.
2020-11-16 16:39:16 -05:00
Nick Mathewson 59e4b5631a Isolate async_std usage in a new tor_rtcompat crate.
Like tor_llcrypto, this crate is meant to expose only the part of
other crates (in this case, a async runtime crate) that we use.
2020-11-11 13:46:39 -05:00
Nick Mathewson 2e1f510225 rename tor_socks -> tor_socksproto. 2020-11-04 15:01:25 -05:00
Nick Mathewson deb160ad54 Add a SOCKS protocol implementation. Needs tests and docs 2020-11-04 11:33:20 -05:00
Nick Mathewson d9dafa0a28 Add a new circuit-manager crate and move path selection there. 2020-11-02 10:44:31 -05:00
Nick Mathewson f399851bcf Implement a channel-manager type to get or launch channels on request. 2020-10-30 09:51:31 -04:00
Nick Mathewson b710e5c770 Split the cell-handling parts of tor-proto into a new crate. 2020-09-26 12:49:03 -04:00
Nick Mathewson 875e932898 New "linkspec" module to encapsulate info needed to connect/extend. 2020-09-08 20:43:15 -04:00
Nick Mathewson 60698cc6d5 Create a stub for a minimal demo client program.
For now, it's set up to just use a chutney network, so I don't
cause major drama with the real network.

I'll be working on this in parallel with proto and netdir
improvements, until it works.
2020-09-08 16:37:16 -04:00
Nick Mathewson 919a7c5970 Start on a 'netdir' crate to wrap netdoc.
For now, this assumes an existing Tor cache directory.
2020-09-07 16:53:06 -04:00
Nick Mathewson 481e5e5a63 New module with traits for time-bound and signed objects
Too often I've been writing code that defers timeliness checking to
an is_valid_at() method [which you'd better call or else whoops] and
which does signature checking while parsing [not great for
performance].

Instead, let's make return types where you can't get at the interior
object without first either checking the signatures/timeliness, or
declaring that (dangerously) you don't care.
2020-09-01 17:59:58 -04:00
Nick Mathewson 1bb564024c Add a new caret_int!() macro for use with integer-wrapping types
Unlike caret_enum!, these types are for use with things like cell
commands or certificate types, where the entire space of integer
values is possible, and only some are recognized.
2020-05-15 15:40:58 -04:00
Nick Mathewson c9bf912946 Add a comment to Cargo.toml 2020-05-08 22:26:53 -04:00
Nick Mathewson bbcbf47902 Fresh git repository for work on "arti"
Arti is a rust tor implementation.  It's project I've been working
on for a few months now, in weekends and in spare time.  It doesn't
speak the tor protocol yet, and it doesn't connect to the network at
all.

It needs much more documentation and testing, but I'm just about
ready to show it to others.  See the README.md for a description of
what is there and what isn't.
2020-05-07 19:58:14 -04:00