Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions p2p/communication.go
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,7 @@ func NewCommunication(
bootstrapPeers []maddr.Multiaddr,
port int,
externalIP string,
externalDNS string,
whitelistedPeers []peer.ID,
logger zerolog.Logger,
) (*Communication, error) {
Expand All @@ -74,6 +75,13 @@ func NewCommunication(
if err != nil {
return nil, errors.Wrapf(err, "external addr %q", myself)
}
} else if len(externalDNS) != 0 {
// externalDNS is used as a fallback when externalIP is not set
myself := fmt.Sprintf("/dns4/%s/tcp/%d", externalDNS, port)
externalAddr, err = maddr.NewMultiaddr(myself)
if err != nil {
return nil, errors.Wrapf(err, "external addr %q", myself)
}
}

return &Communication{
Expand Down
48 changes: 44 additions & 4 deletions p2p/communication_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ type CommunicationTestSuite struct{}
var _ = Suite(&CommunicationTestSuite{})

func (CommunicationTestSuite) TestBasicCommunication(c *C) {
comm, err := NewCommunication(nil, 6668, "", []peer.ID{}, logger("TestBasicCommunication"))
comm, err := NewCommunication(nil, 6668, "", "", []peer.ID{}, logger("TestBasicCommunication"))
c.Assert(err, IsNil)
c.Assert(comm, NotNil)
comm.SetSubscribe(messages.TSSKeyGenMsg, "hello", make(chan *Message))
Expand Down Expand Up @@ -63,13 +63,13 @@ func (CommunicationTestSuite) TestEstablishP2pCommunication(c *C) {
c.Assert(err, IsNil)
privKey, err := base64.StdEncoding.DecodeString(bootstrapPrivKey)
c.Assert(err, IsNil)
comm, err := NewCommunication(nil, 2220, fakeExternalIP, whitelistedPeers, log)
comm, err := NewCommunication(nil, 2220, fakeExternalIP, "", whitelistedPeers, log)
c.Assert(err, IsNil)
c.Assert(comm.Start(privKey), IsNil)

defer comm.Stop()
c.Assert(err, IsNil)
comm2, err := NewCommunication([]maddr.Multiaddr{validMultiAddr}, 2221, "", whitelistedPeers, log)
comm2, err := NewCommunication([]maddr.Multiaddr{validMultiAddr}, 2221, "", "", whitelistedPeers, log)
c.Assert(err, IsNil)
err = comm2.Start(sk1raw)
c.Assert(err, IsNil)
Expand All @@ -79,7 +79,7 @@ func (CommunicationTestSuite) TestEstablishP2pCommunication(c *C) {
invalidAddr := "/ip4/127.0.0.1/tcp/2220/p2p/" + id2.String()
invalidMultiAddr, err := maddr.NewMultiaddr(invalidAddr)
c.Assert(err, IsNil)
comm3, err := NewCommunication([]maddr.Multiaddr{invalidMultiAddr}, 2222, "", whitelistedPeers, log)
comm3, err := NewCommunication([]maddr.Multiaddr{invalidMultiAddr}, 2222, "", "", whitelistedPeers, log)
c.Assert(err, IsNil)
err = comm3.Start(sk1raw)
c.Assert(err, ErrorMatches, "fail to connect to bootstrap peer: fail to connect to any peer")
Expand All @@ -90,6 +90,7 @@ func (CommunicationTestSuite) TestEstablishP2pCommunication(c *C) {
[]maddr.Multiaddr{invalidMultiAddr, validMultiAddr},
2223,
"",
"",
whitelistedPeers,
log,
)
Expand All @@ -110,6 +111,7 @@ func (CommunicationTestSuite) TestEstablishP2pCommunication(c *C) {
[]maddr.Multiaddr{invalidMultiAddr, validMultiAddr},
2224,
"",
"",
[]peer.ID{},
log,
)
Expand All @@ -119,6 +121,44 @@ func (CommunicationTestSuite) TestEstablishP2pCommunication(c *C) {
defer comm5.Stop()
}

func (CommunicationTestSuite) TestEstablishP2pCommunication_ExternalDNS(c *C) {
log := logger("TestEstablishP2pCommunication_ExternalDNS")

bootstrapPeerID, err := peer.Decode("16Uiu2HAm4TmEzUqy3q3Dv7HvdoSboHk5sFj2FH3npiN5vDbJC6gh")
c.Assert(err, IsNil)
sk1, _, err := crypto.GenerateSecp256k1Key(rand.Reader)
c.Assert(err, IsNil)
sk1raw, _ := sk1.Raw()
id1, err := peer.IDFromPrivateKey(sk1)
c.Assert(err, IsNil)

bootstrapPeer := fmt.Sprintf("/ip4/127.0.0.1/tcp/2220/p2p/%s", bootstrapPeerID.String())
whitelistedPeers := []peer.ID{bootstrapPeerID, id1}
bootstrapPrivKey := "6LABmWB4iXqkqOJ9H0YFEA2CSSx6bA7XAKGyI/TDtas="
fakeExternalDNS := "p2ptest.com"
fakeExternalDNSMultiAddr := "/dns4/p2ptest.com/tcp/2220"
bootstrapMultiAddr, err := maddr.NewMultiaddr(bootstrapPeer)
c.Assert(err, IsNil)
privKey, err := base64.StdEncoding.DecodeString(bootstrapPrivKey)
c.Assert(err, IsNil)

comm, err := NewCommunication(nil, 2220, "", fakeExternalDNS, whitelistedPeers, log)
c.Assert(err, IsNil)
c.Assert(comm.Start(privKey), IsNil)
defer comm.Stop()

comm2, err := NewCommunication([]maddr.Multiaddr{bootstrapMultiAddr}, 2221, "", "", whitelistedPeers, log)
c.Assert(err, IsNil)
err = comm2.Start(sk1raw)
c.Assert(err, IsNil)
defer comm2.Stop()

// check for external dns advertising
c.Assert(checkExist(comm.host.Addrs(), fakeExternalDNSMultiAddr), Equals, true)
ps := comm2.host.Peerstore()
c.Assert(checkExist(ps.Addrs(comm.host.ID()), fakeExternalDNSMultiAddr), Equals, true)
}

func logger(name string) zerolog.Logger {
cw := zerolog.NewConsoleWriter()

Expand Down
2 changes: 2 additions & 0 deletions tss/tss.go
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,7 @@ type PeerInfo struct {
type NetworkConfig struct {
common.TssConfig
ExternalIP string
ExternalDNS string
Port int
BootstrapPeers []maddr.Multiaddr
WhitelistedPeers []peer.ID
Expand Down Expand Up @@ -105,6 +106,7 @@ func New(
bootstrapPeers,
net.Port,
net.ExternalIP,
net.ExternalDNS,
net.WhitelistedPeers,
logger,
)
Expand Down
1 change: 1 addition & 0 deletions tss/tss_4nodes_zeta_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -252,6 +252,7 @@ func (s *FourNodeScaleZetaSuite) getTssServer(c *C, index int, conf common.TssCo
networkConfig := NetworkConfig{
TssConfig: conf,
ExternalIP: "",
ExternalDNS: "",
Port: s.ports[index],
BootstrapPeers: s.bootstrapPeers,
WhitelistedPeers: whitelistedPeers,
Expand Down
Loading