Implement "manager" logic for service side onion services
When an onion service is configured to be run, we need a higher-level manger/reactor object that does the following:
- Keep a set of introduction point circuits established, and rotate them as needed.
- Keep an up-to-date descriptor (containing all the intro points) generated, signed, and uploaded to the relevant hsdirs.
- Wait for messages on the introduction point circuits
- In response to those messages, make connections to client rendezvous circuits and complete handshakes with them.
- Keep those rendezvous circuits open as needed, wait for BEGIN requests on them, and use them to establish connections to locally configured ports.
There is currently a sketch of all the above in !972 (merged) in a tor-hsservice
api.
This is a high-level ticket to handle the creating of the high-level marshaling logic here. We should make lower level tickets for the individual activities.
Edited by Nick Mathewson