Skip to content

Commit a512e0a

Browse files
authored
Merge pull request #574 from vkost/vkost/announce-addr
Announce Address - allows running ThreadsDB behind a NAT
2 parents 3be6a41 + afc9f08 commit a512e0a

File tree

2 files changed

+34
-3
lines changed

2 files changed

+34
-3
lines changed

common/common.go

Lines changed: 20 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -73,15 +73,24 @@ func DefaultNetwork(opts ...NetOption) (NetBoostrapper, error) {
7373
return nil, fin.Cleanup(err)
7474
}
7575

76+
libp2pOptions := []libp2p.Option{
77+
libp2p.Peerstore(pstore),
78+
libp2p.ConnectionManager(config.ConnManager),
79+
libp2p.DisableRelay(),
80+
}
81+
if config.AnnounceAddr != nil {
82+
libp2pOptions = append(libp2pOptions, libp2p.AddrsFactory(func([]ma.Multiaddr) []ma.Multiaddr {
83+
return []ma.Multiaddr{config.AnnounceAddr}
84+
}))
85+
}
86+
7687
h, d, err := ipfslite.SetupLibp2p(
7788
ctx,
7889
hostKey,
7990
nil,
8091
[]ma.Multiaddr{config.HostAddr},
8192
litestore,
82-
libp2p.Peerstore(pstore),
83-
libp2p.ConnectionManager(config.ConnManager),
84-
libp2p.DisableRelay(),
93+
libp2pOptions...,
8594
)
8695
if err != nil {
8796
return nil, fin.Cleanup(err)
@@ -292,6 +301,7 @@ type NetConfig struct {
292301
MongoUri string
293302
MongoDB string
294303
HostAddr ma.Multiaddr
304+
AnnounceAddr ma.Multiaddr
295305
ConnManager cconnmgr.ConnManager
296306
GRPCServerOptions []grpc.ServerOption
297307
GRPCDialOptions []grpc.DialOption
@@ -388,6 +398,13 @@ func WithNetDebug(enabled bool) NetOption {
388398
}
389399
}
390400

401+
func WithAnnounceAddr(addr ma.Multiaddr) NetOption {
402+
return func(c *NetConfig) error {
403+
c.AnnounceAddr = addr
404+
return nil
405+
}
406+
}
407+
391408
type netBoostrapper struct {
392409
app.Net
393410
litepeer *ipfslite.Peer

threadsd/main.go

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ func main() {
3434

3535
repo := fs.String("repo", ".threads", "Repo location")
3636
hostAddrStr := fs.String("hostAddr", "/ip4/0.0.0.0/tcp/4006", "Libp2p host bind address")
37+
announceAddrStr := fs.String("announceAddr", "", "Libp2p announce address") // Should be supplied as multiaddr, /ip4/<your_public_ip>/tcp/4006
3738
apiAddrStr := fs.String("apiAddr", "/ip4/127.0.0.1/tcp/6006", "gRPC API bind address")
3839
apiProxyAddrStr := fs.String("apiProxyAddr", "/ip4/127.0.0.1/tcp/6007", "gRPC API web proxy bind address")
3940
connLowWater := fs.Uint("connLowWater", 100, "Low watermark of libp2p connections that'll be maintained")
@@ -60,6 +61,13 @@ func main() {
6061
if err != nil {
6162
log.Fatal(err)
6263
}
64+
var announceAddr ma.Multiaddr
65+
if *announceAddrStr != "" {
66+
announceAddr, err = ma.NewMultiaddr(*announceAddrStr)
67+
if err != nil {
68+
log.Fatal(err)
69+
}
70+
}
6371
apiAddr, err := ma.NewMultiaddr(*apiAddrStr)
6472
if err != nil {
6573
log.Fatal(err)
@@ -93,6 +101,9 @@ func main() {
93101

94102
log.Debugf("repo: %v", *repo)
95103
log.Debugf("hostAddr: %v", *hostAddrStr)
104+
if announceAddr != nil {
105+
log.Debugf("announceAddr: %v", *announceAddrStr)
106+
}
96107
log.Debugf("apiAddr: %v", *apiAddrStr)
97108
log.Debugf("apiProxyAddr: %v", *apiProxyAddrStr)
98109
log.Debugf("connLowWater: %v", *connLowWater)
@@ -128,6 +139,9 @@ func main() {
128139
} else {
129140
opts = append(opts, common.WithNetBadgerPersistence(*repo))
130141
}
142+
if announceAddr != nil {
143+
opts = append(opts, common.WithAnnounceAddr(announceAddr))
144+
}
131145
n, err := common.DefaultNetwork(opts...)
132146
if err != nil {
133147
log.Fatal(err)

0 commit comments

Comments
 (0)