This ticket is about implementing a feature that solve a basic needs to allow Tor2web network to be networked, that is to have a directory of all tor2web nodes and their characteristics (this ticket does not still enter overall networking mechanism, but just how the Tor directory could be used by tor2web).
In order to do so we will use an existing directory that's related to the tor2web strict software dependency that it's Tor.
Tor2web nodes will announce themselves trough the Tor Directory Authority itself, by making any Tor2web nodes became also a Tor Relay.
The information metadata required for the tor2web nodes will be pushed trough standard existing entries such as:
- Name
- Used to identify that it's a tor2web node (ex: "Tor2web-MyOwnTor2webNode01")
- Contact
- Used to show the Tor Hidden Service hostname of the tor2web node. (ex: "blahblahblahblah.onion")
- Used to show fingerprint of it's SSL certificate and root CA certificate
The Tor2web nodes acting as a relay must not hurt and/or create issues to the Tor network.
This topic has to be discussed within Tor community, to understand the right configuration parameters of Tor Relay.
Each tor2web node expose extended information trough http interface on a dedicated Tor Hidden Service.
This ticket would result from software perspective as a set of API to:
- Get list of all Tor2web nodes and their metadata associated with it
This will be done trough proper parsing of consensus downloaded via onionoo as already available at #10
In order to identify all the tor2web nodes between all tor relays, in the consensus the "Name" will begin with "tor2web" string.
In order to download the tor2web metadata from all tor2web nodes:
- an http connection will be done to each Tor2web node's Tor Hidden Service (listed in in Tor Directory "Contact" field)
- Query the Web Service REST API to download json encoded extended node information
- Publish / Update an entry into Tor2web directory
This API will publish Tor2web to the Tor Directory, create the Tor Hidden Service, Configure Tor to act as a Relay, writing Name (tor2web-Tor2WebNodeNickName) and Contact (Tor Hidden Service) fields.
- Web Service (REST/Json) API serving Tor2web extended node information.
This API expose via web all the extended information about tor2web nodes.
This contain the most important and extended nodes information.
As a security check:
- each tor2web node will verify that the SSL fingerprint of certificate and root's CA, match the one defined in Tor Directory Contact field by connecting over SSL both to the internet host and to the TorHS host.
- each tor2web node will be tested on it's functionality by retrieving "our own tor hs url" trough it's tor2web url.
The implementation of Tor2web directory would enable further particular logic such as #24, by enabling automatic joining / leaving to a network.
TODO:
- Define the data-format for the information to be provided in Extended node information
---
Want to back this issue? **[Post a bounty on it!](https://www.bountysource.com/issues/14807253-tor2web-directory?utm_campaign=plugin&utm_content=tracker%2F318575&utm_medium=issues&utm_source=github)** We accept bounties via [Bountysource](https://www.bountysource.com/?utm_campaign=plugin&utm_content=tracker%2F318575&utm_medium=issues&utm_source=github).