From 6afaa816bfcdcc15268c884154e209ceb46ab55c Mon Sep 17 00:00:00 2001 From: Matt Joiner Date: Tue, 4 Aug 2015 00:37:16 +1000 Subject: [PATCH] dht: Add PublicIP to config to secure node ID --- dht/dht.go | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/dht/dht.go b/dht/dht.go index 5db6adb4..e269350f 100644 --- a/dht/dht.go +++ b/dht/dht.go @@ -71,6 +71,8 @@ type ServerConfig struct { // 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 @@ func (s *Server) setDefaults() (err error) { 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) -- 2.48.1