Draft: Bug 40458: Implement `.tor.onion` aliases
This MR reimplements the support of .tor.onion
URLs.
This patch is composed of these parts
- a C++ service, to share data between C++ and JavaScript;
- a modification to the SOCKS code, that detects
.tor.onion
domains, asks the aforementioned service if it is known, and in case it uses the real domain for the communication with tor; - a modification to the TLS code, that replaces the
.tor.onion
with its real address (I cannot help but seeing this as a big red flag, please let me know your thoughts); - a JS module that provides an API to create/edit/remove lists and automatically updates them (this is the actual replacement for HTTPS-Everywhere);
- the
about:rulesets
page, to call the API from a GUI.
The circuit display has been modified as well, to ask the C++ service the real domain, and display it instead the .tor.onion
domain (please, see torbutton!84 (merged)).
I did this choice because I think it makes sense to tell the user the real domain, somewhere. Maybe we should make even more visible the redirect.
The MR does not include the support for list icons, because the API that manages them seems not to work in Tor Browser (I had some errors about the profile directory not found).
A possible followup for this bug could be asking list maintainers to put an icon in the same directory we fetch the rulesets from.
Fixes #40458 (closed), #40760 (closed), and replaces #28005 (closed).