dht/dht.go | 11 ++++++++++- diff --git a/dht/dht.go b/dht/dht.go index 5db6adb4c236d3e44811d2d29b46b6ef29fecd0e..e269350f24ad662fe43a868c601aeb68a0bbdd00 100644 --- a/dht/dht.go +++ b/dht/dht.go @@ -71,6 +71,8 @@ NoSecurity bool // Initial IP blocklist to use. Applied before serving and bootstrapping // begins. IPBlocklist *iplist.IPList + // Used to secure the server's ID. Defaults to the Conn's LocalAddr(). + PublicIP net.IP } type ServerStats struct { @@ -564,7 +566,14 @@ } if len(id) != 20 { panic(len(id)) } - secureNodeId(id[:], util.AddrIP(s.socket.LocalAddr())) + publicIP := func() net.IP { + if s.config.PublicIP != nil { + return s.config.PublicIP + } else { + return missinggo.AddrIP(s.socket.LocalAddr()) + } + }() + secureNodeId(id[:], publicIP) s.id = string(id[:]) } s.nodes = make(map[string]*node, maxNodes)