Browse Source

Allow to customize listen addresses, move defaults

Ettore Di Giacinto 4 years ago
parent
commit
0b6073b63e
3 changed files with 33 additions and 13 deletions
  1. 1 1
      pkg/edgevpn/config.go
  2. 22 9
      pkg/edgevpn/connection.go
  3. 10 3
      pkg/edgevpn/options.go

+ 1 - 1
pkg/edgevpn/config.go

@@ -19,7 +19,7 @@ type Config struct {
 	RoomName string
 
 	// ListenAddresses is the discovery peer initial bootstrap addresses
-	ListenAddresses discovery.AddrList
+	ListenAddresses []discovery.AddrList
 
 	// Insecure disables secure p2p e2e encrypted communication
 	Insecure bool

+ 22 - 9
pkg/edgevpn/connection.go

@@ -10,13 +10,24 @@ import (
 	"github.com/libp2p/go-libp2p"
 	"github.com/libp2p/go-libp2p-core/crypto"
 	"github.com/libp2p/go-libp2p-core/host"
+	quic "github.com/libp2p/go-libp2p-quic-transport"
 	conngater "github.com/libp2p/go-libp2p/p2p/net/conngater"
-
+	"github.com/libp2p/go-tcp-transport"
 	hub "github.com/mudler/edgevpn/pkg/hub"
 	multiaddr "github.com/multiformats/go-multiaddr"
 	"github.com/xlzd/gotp"
 )
 
+var defaultLibp2pOptions = []libp2p.Option{
+	libp2p.EnableAutoRelay(),
+	libp2p.EnableNATService(),
+	libp2p.NATPortMap(),
+	libp2p.DefaultSecurity,
+	libp2p.Transport(quic.NewTransport),
+	libp2p.Transport(tcp.NewTCPTransport),
+	libp2p.FallbackDefaults,
+}
+
 func (e *EdgeVPN) Host() host.Host {
 	return e.host
 }
@@ -49,19 +60,21 @@ func (e *EdgeVPN) genHost(ctx context.Context) (host.Host, error) {
 		return nil, err
 	}
 
-	opts := []libp2p.Option{
-		libp2p.ListenAddrs([]multiaddr.Multiaddr(e.config.ListenAddresses)...),
-		libp2p.Identity(prvKey),
-		libp2p.EnableAutoRelay(),
-		libp2p.EnableNATService(),
-		libp2p.NATPortMap(),
-		libp2p.ConnectionGater(cg),
-	}
+	opts := defaultLibp2pOptions
 
 	if len(e.config.Options) != 0 {
 		opts = e.config.Options
 	}
 
+	opts = append(opts, libp2p.ConnectionGater(cg))
+	opts = append(opts, libp2p.Identity(prvKey))
+
+	addrs := []multiaddr.Multiaddr{}
+	for _, l := range e.config.ListenAddresses {
+		addrs = append(addrs, []multiaddr.Multiaddr(l)...)
+	}
+	opts = append(opts, libp2p.ListenAddrs(addrs...))
+
 	for _, d := range e.config.ServiceDiscovery {
 		opts = append(opts, d.Option(ctx))
 	}

+ 10 - 3
pkg/edgevpn/options.go

@@ -100,9 +100,16 @@ func DiscoveryService(s ...ServiceDiscovery) func(cfg *Config) error {
 	}
 }
 
-func ListenAddresses(s string) func(cfg *Config) error {
-	return func(cfg *Config) error {
-		cfg.ListenAddresses.Set(s)
+func ListenAddresses(ss ...string) func(cfg *Config) error {
+	return func(cfg *Config) error {
+		for _, s := range ss {
+			a := &discovery.AddrList{}
+			err := a.Set(s)
+			if err != nil {
+				return err
+			}
+			cfg.ListenAddresses = append(cfg.ListenAddresses, *a)
+		}
 		return nil
 	}
 }