Commit 19fbbf77 authored by Janoš Guljaš's avatar Janoš Guljaš Committed by GitHub

expose nat underlay address by p2p service (#820)

parent 6d8d74b2
......@@ -50,6 +50,7 @@ type Service struct {
ctx context.Context
host host.Host
natManager basichost.NATManager
natAddrResolver *staticAddressResolver
libp2pPeerstore peerstore.Peerstore
metrics metrics
networkID uint64
......@@ -179,15 +180,17 @@ func New(ctx context.Context, signer beecrypto.Signer, networkID uint64, overlay
}
var advertisableAddresser handshake.AdvertisableAddressResolver
var natAddrResolver *staticAddressResolver
if o.NATAddr == "" {
advertisableAddresser = &UpnpAddressResolver{
host: h,
}
} else {
advertisableAddresser, err = newStaticAddressResolver(o.NATAddr)
natAddrResolver, err = newStaticAddressResolver(o.NATAddr)
if err != nil {
return nil, fmt.Errorf("static nat: %w", err)
}
advertisableAddresser = natAddrResolver
}
handshakeService, err := handshake.New(signer, advertisableAddresser, overlay, networkID, o.LightNode, o.WelcomeMessage, logger)
......@@ -200,6 +203,7 @@ func New(ctx context.Context, signer beecrypto.Signer, networkID uint64, overlay
ctx: ctx,
host: h,
natManager: natManager,
natAddrResolver: natAddrResolver,
handshakeService: handshakeService,
libp2pPeerstore: libp2pPeerstore,
metrics: newMetrics(),
......@@ -390,6 +394,13 @@ func (s *Service) Addresses() (addreses []ma.Multiaddr, err error) {
addreses = append(addreses, a)
}
if s.natAddrResolver != nil && len(addreses) > 0 {
a, err := s.natAddrResolver.Resolve(addreses[0])
if err != nil {
return nil, err
}
addreses = append(addreses, a)
}
return addreses, nil
}
......
......@@ -10,7 +10,6 @@ import (
"net"
"strings"
"github.com/ethersphere/bee/pkg/p2p/libp2p/internal/handshake"
libp2ppeer "github.com/libp2p/go-libp2p-core/peer"
ma "github.com/multiformats/go-multiaddr"
)
......@@ -20,7 +19,7 @@ type staticAddressResolver struct {
port string
}
func newStaticAddressResolver(addr string) (handshake.AdvertisableAddressResolver, error) {
func newStaticAddressResolver(addr string) (*staticAddressResolver, error) {
host, port, err := net.SplitHostPort(addr)
if err != nil {
return nil, err
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment