Skip to content

Commit 1bbb3ac

Browse files
committed
add support for external DNS
1 parent 892e710 commit 1bbb3ac

File tree

4 files changed

+55
-4
lines changed

4 files changed

+55
-4
lines changed

p2p/communication.go

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@ func NewCommunication(
5454
bootstrapPeers []maddr.Multiaddr,
5555
port int,
5656
externalIP string,
57+
externalDNS string,
5758
whitelistedPeers []peer.ID,
5859
logger zerolog.Logger,
5960
) (*Communication, error) {
@@ -74,6 +75,13 @@ func NewCommunication(
7475
if err != nil {
7576
return nil, errors.Wrapf(err, "external addr %q", myself)
7677
}
78+
} else if len(externalDNS) != 0 {
79+
// externalDNS is used as a fallback when externalIP is not set
80+
myself := fmt.Sprintf("/dns4/%s/tcp/%d", externalDNS, port)
81+
externalAddr, err = maddr.NewMultiaddr(myself)
82+
if err != nil {
83+
return nil, errors.Wrapf(err, "external addr %q", myself)
84+
}
7785
}
7886

7987
return &Communication{

p2p/communication_test.go

Lines changed: 44 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ type CommunicationTestSuite struct{}
1919
var _ = Suite(&CommunicationTestSuite{})
2020

2121
func (CommunicationTestSuite) TestBasicCommunication(c *C) {
22-
comm, err := NewCommunication(nil, 6668, "", []peer.ID{}, logger("TestBasicCommunication"))
22+
comm, err := NewCommunication(nil, 6668, "", "", []peer.ID{}, logger("TestBasicCommunication"))
2323
c.Assert(err, IsNil)
2424
c.Assert(comm, NotNil)
2525
comm.SetSubscribe(messages.TSSKeyGenMsg, "hello", make(chan *Message))
@@ -63,13 +63,13 @@ func (CommunicationTestSuite) TestEstablishP2pCommunication(c *C) {
6363
c.Assert(err, IsNil)
6464
privKey, err := base64.StdEncoding.DecodeString(bootstrapPrivKey)
6565
c.Assert(err, IsNil)
66-
comm, err := NewCommunication(nil, 2220, fakeExternalIP, whitelistedPeers, log)
66+
comm, err := NewCommunication(nil, 2220, fakeExternalIP, "", whitelistedPeers, log)
6767
c.Assert(err, IsNil)
6868
c.Assert(comm.Start(privKey), IsNil)
6969

7070
defer comm.Stop()
7171
c.Assert(err, IsNil)
72-
comm2, err := NewCommunication([]maddr.Multiaddr{validMultiAddr}, 2221, "", whitelistedPeers, log)
72+
comm2, err := NewCommunication([]maddr.Multiaddr{validMultiAddr}, 2221, "", "", whitelistedPeers, log)
7373
c.Assert(err, IsNil)
7474
err = comm2.Start(sk1raw)
7575
c.Assert(err, IsNil)
@@ -79,7 +79,7 @@ func (CommunicationTestSuite) TestEstablishP2pCommunication(c *C) {
7979
invalidAddr := "/ip4/127.0.0.1/tcp/2220/p2p/" + id2.String()
8080
invalidMultiAddr, err := maddr.NewMultiaddr(invalidAddr)
8181
c.Assert(err, IsNil)
82-
comm3, err := NewCommunication([]maddr.Multiaddr{invalidMultiAddr}, 2222, "", whitelistedPeers, log)
82+
comm3, err := NewCommunication([]maddr.Multiaddr{invalidMultiAddr}, 2222, "", "", whitelistedPeers, log)
8383
c.Assert(err, IsNil)
8484
err = comm3.Start(sk1raw)
8585
c.Assert(err, ErrorMatches, "fail to connect to bootstrap peer: fail to connect to any peer")
@@ -90,6 +90,7 @@ func (CommunicationTestSuite) TestEstablishP2pCommunication(c *C) {
9090
[]maddr.Multiaddr{invalidMultiAddr, validMultiAddr},
9191
2223,
9292
"",
93+
"",
9394
whitelistedPeers,
9495
log,
9596
)
@@ -110,6 +111,7 @@ func (CommunicationTestSuite) TestEstablishP2pCommunication(c *C) {
110111
[]maddr.Multiaddr{invalidMultiAddr, validMultiAddr},
111112
2224,
112113
"",
114+
"",
113115
[]peer.ID{},
114116
log,
115117
)
@@ -119,6 +121,44 @@ func (CommunicationTestSuite) TestEstablishP2pCommunication(c *C) {
119121
defer comm5.Stop()
120122
}
121123

124+
func (CommunicationTestSuite) TestEstablishP2pCommunication_ExternalDNS(c *C) {
125+
log := logger("TestEstablishP2pCommunication_ExternalDNS")
126+
127+
bootstrapPeerID, err := peer.Decode("16Uiu2HAm4TmEzUqy3q3Dv7HvdoSboHk5sFj2FH3npiN5vDbJC6gh")
128+
c.Assert(err, IsNil)
129+
sk1, _, err := crypto.GenerateSecp256k1Key(rand.Reader)
130+
c.Assert(err, IsNil)
131+
sk1raw, _ := sk1.Raw()
132+
id1, err := peer.IDFromPrivateKey(sk1)
133+
c.Assert(err, IsNil)
134+
135+
bootstrapPeer := fmt.Sprintf("/ip4/127.0.0.1/tcp/2220/p2p/%s", bootstrapPeerID.String())
136+
whitelistedPeers := []peer.ID{bootstrapPeerID, id1}
137+
bootstrapPrivKey := "6LABmWB4iXqkqOJ9H0YFEA2CSSx6bA7XAKGyI/TDtas="
138+
fakeExternalDNS := "p2ptest.com"
139+
fakeExternalDNSMultiAddr := "/dns4/p2ptest.com/tcp/2220"
140+
bootstrapMultiAddr, err := maddr.NewMultiaddr(bootstrapPeer)
141+
c.Assert(err, IsNil)
142+
privKey, err := base64.StdEncoding.DecodeString(bootstrapPrivKey)
143+
c.Assert(err, IsNil)
144+
145+
comm, err := NewCommunication(nil, 2220, "", fakeExternalDNS, whitelistedPeers, log)
146+
c.Assert(err, IsNil)
147+
c.Assert(comm.Start(privKey), IsNil)
148+
defer comm.Stop()
149+
150+
comm2, err := NewCommunication([]maddr.Multiaddr{bootstrapMultiAddr}, 2221, "", "", whitelistedPeers, log)
151+
c.Assert(err, IsNil)
152+
err = comm2.Start(sk1raw)
153+
c.Assert(err, IsNil)
154+
defer comm2.Stop()
155+
156+
// check for external dns advertising
157+
c.Assert(checkExist(comm.host.Addrs(), fakeExternalDNSMultiAddr), Equals, true)
158+
ps := comm2.host.Peerstore()
159+
c.Assert(checkExist(ps.Addrs(comm.host.ID()), fakeExternalDNSMultiAddr), Equals, true)
160+
}
161+
122162
func logger(name string) zerolog.Logger {
123163
cw := zerolog.NewConsoleWriter()
124164

tss/tss.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,7 @@ type PeerInfo struct {
6060
type NetworkConfig struct {
6161
common.TssConfig
6262
ExternalIP string
63+
ExternalDNS string
6364
Port int
6465
BootstrapPeers []maddr.Multiaddr
6566
WhitelistedPeers []peer.ID
@@ -105,6 +106,7 @@ func New(
105106
bootstrapPeers,
106107
net.Port,
107108
net.ExternalIP,
109+
net.ExternalDNS,
108110
net.WhitelistedPeers,
109111
logger,
110112
)

tss/tss_4nodes_zeta_test.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -252,6 +252,7 @@ func (s *FourNodeScaleZetaSuite) getTssServer(c *C, index int, conf common.TssCo
252252
networkConfig := NetworkConfig{
253253
TssConfig: conf,
254254
ExternalIP: "",
255+
ExternalDNS: "",
255256
Port: s.ports[index],
256257
BootstrapPeers: s.bootstrapPeers,
257258
WhitelistedPeers: whitelistedPeers,

0 commit comments

Comments
 (0)