You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I want to be able to use /dnsaddr with secure WebSocket.
Requirements
I want to be able to wrap libp2p::websocket::WsConfig with libp2p::dns::Transport which will resolve only /dnsaddr before it passing the multiaddr to WebSocket transport.
For example:
let inner_tcp_transport =
dns::tokio::Transport::system(tcp::tokio::Transport::new(tcp::Config::default())).unwrap();let wss_transport = websocket::WsConfig::new(inner_tcp_transport);letmut dns_opts = dns::ResolverOpts::default();
dns_opts.resolve_dnsaddr_only = true;let transport =
dns::tokio::Transport::custom(wss_transport, dns::ResolverConfig::default(), dns_opts);
In case of /dnsaddr the above transport should have the following flow:
User dials to /dnsaddr/da-bridge-1.celestia-arabica-11.com/p2p/12D3KooWGqwzdEqM54Dce6LXzfFr97Bnhvm6rN7KM7MFwdomfm4S
DNS transport resolves multiaddr to /dns/da-bridge-1.celestia-arabica-11.com/tcp/2122/tls/ws/p2p/12D3KooWGqwzdEqM54Dce6LXzfFr97Bnhvm6rN7KM7MFwdomfm4S
DNS transport passes the /dns multiaddr to WebSocket transport.
WebSocket transport initializes TLS based on /dns multiaddr and passes multiaddr to TCP transport.
TCP transport resolves /dns multiaddr to /ip4 multiaddr and establishes the connection.
In case of /dns the above transport should have the following flow:
User dials to /dns/da-bridge-1.celestia-arabica-11.com/tcp/2122/tls/ws/p2p/12D3KooWGqwzdEqM54Dce6LXzfFr97Bnhvm6rN7KM7MFwdomfm4S
DNS transport passes the /dns multiaddr to WebSocket transport.
WebSocket transport initializes TLS based on /dns multiaddr and passes multiaddr to TCP transport.
TCP transport resolves /dns multiaddr to /ip4 multiaddr and establishes the connection.
Open questions
It would be hard to implement this kind of transport combination in SwarmBuilder.
Are you planning to do it yourself in a pull request ?
Maybe
The text was updated successfully, but these errors were encountered:
## Description
Returns `Error::InvalidMultiaddr` when `parse_ws_dial_addr` is called
with `/dnsaddr`.
As per its specification, `/dnsaddr` domains are not meant to be
directly dialed, instead it should be appended with `_dnsaddr.` and used
for DNS lookups afterwards
Related: #5529Fixes: #5601
## Notes & open questions
* Is it okay to return an error, or should I perform a DNS lookup and
resolve that DNS afterwards if address has `/dnsaddr`?
* If so, how should I handle that case where DNS lookup returns multiple
multiaddrs?
## Change checklist
- [x] I have performed a self-review of my own code
- [ ] I have made corresponding changes to the documentation
- [x] I have added tests that prove my fix is effective or that my
feature works
- [x] A changelog entry has been made in the appropriate crates
---------
Co-authored-by: Darius Clark <[email protected]>
Description
Currently there is no way to properly pass
/dnsaddr
to WSS transport and work as expected:libp2p::websocket::WsConfig
withlibp2p::dns::Transport
then you break secure WebSocket because DNS transport will resolve/dns4
to/ip4
.libp2p::dns::Transport
withlibp2p::websocket::WsConfig
then you break/dnsaddr
because it will never fetch the multiaddresses from DNS.Currently 2 is the recommended way (link).
Motivation
I want to be able to use
/dnsaddr
with secure WebSocket.Requirements
I want to be able to wrap
libp2p::websocket::WsConfig
withlibp2p::dns::Transport
which will resolve only/dnsaddr
before it passing the multiaddr to WebSocket transport.For example:
In case of
/dnsaddr
the above transport should have the following flow:/dnsaddr/da-bridge-1.celestia-arabica-11.com/p2p/12D3KooWGqwzdEqM54Dce6LXzfFr97Bnhvm6rN7KM7MFwdomfm4S
/dns/da-bridge-1.celestia-arabica-11.com/tcp/2122/tls/ws/p2p/12D3KooWGqwzdEqM54Dce6LXzfFr97Bnhvm6rN7KM7MFwdomfm4S
/dns
multiaddr to WebSocket transport./dns
multiaddr and passes multiaddr to TCP transport./dns
multiaddr to/ip4
multiaddr and establishes the connection.In case of
/dns
the above transport should have the following flow:/dns/da-bridge-1.celestia-arabica-11.com/tcp/2122/tls/ws/p2p/12D3KooWGqwzdEqM54Dce6LXzfFr97Bnhvm6rN7KM7MFwdomfm4S
/dns
multiaddr to WebSocket transport./dns
multiaddr and passes multiaddr to TCP transport./dns
multiaddr to/ip4
multiaddr and establishes the connection.Open questions
It would be hard to implement this kind of transport combination in
SwarmBuilder
.Are you planning to do it yourself in a pull request ?
Maybe
The text was updated successfully, but these errors were encountered: