Open TheCharlatan opened 2 years ago
Sorry for a late reply, had a number of conference talks in a row.
Thank you for proposing solution to this. I think the best way forward will be adding a new constructor to the BrontozaurSession
which will take an Onion address and will do all dirty work internally, finally instantiating the self with TcpStream
internally. What do you think?
I would like to connect a Brontide or Brontozaur session to a hidden service. This is typically done through a socks5 proxy. Currently I don't see a way to do that with the current state of this crate (though I may be mistaken).
The socks crate allows its user to create a Socks5Stream, which is similar to a
TcpStream
of the std library. ATcpStream
is also what runs the connection currently used for both Brontide and Brontozaur. Once aSocks5Stream
is established and connected, it can be consumed and transformed into aTcpStream
.Currently it is possible to re-create the low-level types to establish a
BrontozaurSession
. However the members of theBrontozaurSession
are private to theSession
module, so it can't be re-created from scratch with an injected Socks5Stream.In order to support connecting to a hidden service, I thus see three possibilities. Either make the members of the
Session
public, or pass in a user-defined existingTcpStream
, or create a Socks5Stream in the encrypted connection module if a Onion address is provided. The last option would also require an additional proxy address to be passed in.@dr-orlovsky I am keen to implement any of these options, do you have an opinion here?