summaryrefslogtreecommitdiff
path: root/crates/tor-hsservice
Commit message (Collapse)AuthorAgeFilesLines
...
* | | | Merge branch 'onionservice_part1' into 'main'Nick Mathewson2023-09-202-79/+92
|\ \ \ \ | |/ / / |/| | | | | | | | | | | Start to implement OnionService::new (part 1) See merge request tpo/core/arti!1604
| * | | hss: Use tor-persist to make a StorageHandle.Nick Mathewson2023-09-202-2/+13
| | | | | | | | | | | | | | | | We'll use this to implement intro point persistence.
| * | | tor-hsservice/Cargo.toml: wrap.Nick Mathewson2023-09-201-1/+15
| | | |
| * | | OnionService: start to flesh out the new() function.Nick Mathewson2023-09-201-5/+80
| | | | | | | | | | | | | | | | | | | | | | | | This has a lot of open questions, and won't work yet, but it starts to show us the current level of interface mismatch between our pieces.
| * | | hss remove duplicated data from OnionService structure.Nick Mathewson2023-09-191-74/+1
| | | | | | | | | | | | | | | | This data is all duplicated in other places, or will be.
* | | | tor-hsservice: Make the publisher compile again.Gabriela Moldovan2023-09-202-0/+12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | The compile error happened because there was a conflict between arti!1603 and arti!1599: * the patch from !1603 uses `OnionServiceConfig::encrypt_descriptor` * !1599 removes `encrypt_descriptor` altogether
* | | | Merge branch 'publish-on-state-change' into 'main'gabi-2502023-09-202-236/+383
|\ \ \ \ | |_|/ / |/| | | | | | | | | | | tor-hsservice: Descriptor publisher improvements See merge request tpo/core/arti!1603
| * | | tor-hsservice: Add TODO regarding DescriptorConfigView.Gabriela Moldovan2023-09-191-0/+4
| | | | | | | | | | | | | | | | See https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/1603#note_2944902
| * | | tor-hsservice: Do not discard the runtime.spawn() Result (fmt).Gabriela Moldovan2023-09-191-18/+21
| | | |
| * | | tor-hsservice: Do not discard the runtime.spawn() Result.Gabriela Moldovan2023-09-191-16/+28
| | | |
| * | | tor-hsservice: Add an explicit Idle state for the publisher reactor.Gabriela Moldovan2023-09-191-0/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The previous code was correct too: after uploading the descriptor, the `PublishStatus` is not updated, because the reactor is still in a state where it has enough information to publish descriptors. Note that simply "being" in the `UploadScheduled` state isn't enough to trigger another upload, because `publish_status_rx.next()` (from the `select_biased!` of the main-loop), blocks until something triggers another state transition (`AwaitingIpts` -> `UploadScheduled`, or even `UploadScheduled` -> `UploadScheduled`), so while a third state is not strictly necessary, it does help with readability.
| * | | tor-hsservice: Use Instant instead of Duration for rescheduling uploads.Gabriela Moldovan2023-09-191-6/+31
| | | | | | | | | | | | | | | | This also documents how updates are rescheduled.
| * | | tor-hsservice: Remove stray doc comment.Gabriela Moldovan2023-09-191-1/+0
| | | |
| * | | tor-hsservice: Make some publisher functions synchronous.Gabriela Moldovan2023-09-191-13/+13
| | | | | | | | | | | | | | | | | | | | Now that we've switched to `std::sync::Mutex` many publish functions no longer need to be async.
| * | | tor-hsservice: Use std::sync::Mutex instead of the one from futures (fmt).Gabriela Moldovan2023-09-191-1/+4
| | | |
| * | | tor-hsservice: Use std::sync::Mutex instead of the one from futures.Gabriela Moldovan2023-09-191-10/+9
| | | |
| * | | tor-hsservice: Run cargo fmt.Gabriela Moldovan2023-09-191-69/+74
| | | |
| * | | tor-hsservice: s/handle_new_intro_points/handle_ipt_changeGabriela Moldovan2023-09-191-2/+2
| | | | | | | | | | | | | | | | | | | | `handle_ipt_change` no longer handles the new intro points: it now handles the IPT _change_ by updating the publish state of the reactor.
| * | | tor-hsservice: Borrow the IPT set from the IPT manager.Gabriela Moldovan2023-09-191-3/+13
| | | |
| * | | tor-hsservice: Discard the task handle and propagate any errors.Gabriela Moldovan2023-09-191-3/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We don't really need to keep the handles around, so let's just discard them. This also updates `upload_all` to propagate any errors coming from `build_sign`.
| * | | tor-hsservice: Republish according to IPT manager instructions.Gabriela Moldovan2023-09-191-21/+28
| | | |
| * | | tor-hsservice: Implement handle_svc_config_change.Gabriela Moldovan2023-09-191-5/+33
| | | |
| * | | tor-hsservice: Add helper for marking all descriptors dirty.Gabriela Moldovan2023-09-191-0/+17
| | | |
| * | | tor-hsservice: Use PublishState to decide when to upload the descriptor.Gabriela Moldovan2023-09-191-5/+68
| | | |
| * | | tor-hsservice: Use postage::watch to watch for pending updates.Gabriela Moldovan2023-09-191-4/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | It doesn't make sense to use an mpsc channel for rescheduling the rate-limited uploads. If we use an mpsc channel and `upload_all` is called multiple times in a short timespan, we will end up scheduling more than 1 upload reattempt. So let's use postage::watch instead.
| * | | tor-hsservice: Update docs regarding desc upload rate-limiting.Gabriela Moldovan2023-09-191-9/+11
| | | | | | | | | | | | | | | | | | | | This updates the docs (and renames the channel for rescheduling rate-limited uploads) for clarity.
| * | | tor-hsservice: Fill out some todo!()s with info from the config.Gabriela Moldovan2023-09-191-2/+12
| | | |
| * | | tor-hsservice: Remove descriptor builder from publisher (fmt).Gabriela Moldovan2023-09-191-57/+57
| | | |
| * | | tor-hsservice: Remove descriptor builder from publisher.Gabriela Moldovan2023-09-192-71/+25
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We don't actually need an intermediate `Descriptor` struct (and keeping a builder around doesn't make much sense either): * the information from the onion service config can just be read from the `config` field of the `Inner` (mutable) reactor state * the IPT information is retrieved right before building the descriptor * any key information will (eventually) be read from the `KeyMgr`
| * | | tor-hsservice: Remove unnecessary allow annotations.Gabriela Moldovan2023-09-191-2/+0
| | | |
* | | | hss: Flatten limit and pow fields into main configNick Mathewson2023-09-191-46/+25
| | | | | | | | | | | | | | | | | | | | | | | | See thread at https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/1599#note_2944510 for information about why `flatten` doesn't work here.
* | | | hss: make config subbuilders get flattened.Nick Mathewson2023-09-191-0/+2
| | | | | | | | | | | | | | | | This matches our design.
* | | | hss: Make the config builders serde.Nick Mathewson2023-09-191-9/+17
| | | | | | | | | | | | | | | | | | | | Temporarily disable descriptor encryption configuration while we figure out how it should work (see #1028)
* | | | hss: Wrap Cargo.toml.Nick Mathewson2023-09-191-1/+16
| |/ / |/| |
* | | Merge branch 'partial-eqs' into 'main'Alexander Færøy2023-09-192-3/+3
|\| | | | | | | | | | | | | | tor-hsservice: Implement PartialEq for HsClientDescEncKey, Anonimity, DescEncryptionConfig See merge request tpo/core/arti!1601
| * | tor-hsservice: Derive PartialEq for Anonimity and DescEncryptionConfig.Gabriela Moldovan2023-09-182-3/+3
| |/ | | | | | | | | | | | | | | | | | | | | This will enable the descriptor publisher to tell whether it needs to update the descriptor. When the publisher is notified of an `OnionServiceConfig` change, it checks whether the `anonimity` or `encrypt_descriptor` fields have changed. If they have, it rebuilds and republishes the descriptor using the new values (note: the publisher changes will be implemented in a future commit).
* | Merge branch 'ipt-accepting' into 'main'Nick Mathewson2023-09-181-29/+58
|\ \ | |/ |/| | | | | tor-hsservice: ipt mgr: Notify Establisher to start accepting See merge request tpo/core/arti!1598
| * tor-hsservice: ipt mgr: Apply deferred rustfmt churnIan Jackson2023-09-181-3/+1
| |
| * tor-hsservice: ipt mgr: Remove some allowsIan Jackson2023-09-181-4/+0
| |
| * tor-hsservice: ipt mgr: Instruct Establisher to start acceptingIan Jackson2023-09-181-1/+12
| |
| * tor-hsservice: ipt mgr: Introduce ErasedIptEstablisher aliasIan Jackson2023-09-181-4/+7
| | | | | | | | We're going to want to talk about this in the Mockable trait.
| * tor-hsservice: ipt mgr: Break apart publish_setIan Jackson2023-09-181-10/+26
| | | | | | | | | | | | | | | | The call site is going to want to do something other with the selected IPTs than just publish them. (This seems better than putting the Establisher notification in a function called `publish_set`.)
| * tor-hsservice: ipt mgr: Move `expires` bindingIan Jackson2023-09-181-8/+8
| | | | | | | | | | | | We're going to split this function, and this will be in the 2nd half. Code motion only.
| * tor-hsservice: ipt mgr: Split out publish None handlingIan Jackson2023-09-181-4/+9
| | | | | | | | | | We want a separate block so we can do other things besides just making an IptPublishSet.
* | Merge branch 'mock-advance' into 'main'Ian Jackson2023-09-182-1/+3
|\ \ | |/ |/| | | | | tor-rtmock: task: Provide advance_* to replace advance See merge request tpo/core/arti!1594
| * tor-hsservice: publish backoff tests: Add an allowIan Jackson2023-09-181-0/+1
| |
| * tor-hsservice: timeout_track test: Use advance_byIan Jackson2023-09-181-1/+2
| |
* | Merge branch 'ipt-misc' into 'main'Nick Mathewson2023-09-184-53/+44
|\ \ | | | | | | | | | | | | tor-hsservice: Pass correct parameters to Establisher See merge request tpo/core/arti!1597
| * | tor-hsservice: Apply deferred rustfmt churnIan Jackson2023-09-181-5/+1
| | |
| * | tor-hsservice: ipt mgr: Drop Mockable::new_intro_pointsIan Jackson2023-09-181-5/+0
| | | | | | | | | | | | | | | | | | We don't need this because the manager takes an IptsManagerView which can be connected to something other than a real publisher (and is pretty good at passing on the info).