From: Matt Joiner Date: Tue, 24 Jun 2014 13:18:30 +0000 (+1000) Subject: DHT default server ID generated using hostname and server address X-Git-Tag: v1.0.0~1715 X-Git-Url: http://www.git.stargrave.org/?a=commitdiff_plain;h=1852e5805da456aa81f7c7c7dd96eeed050956b0;p=btrtrc.git DHT default server ID generated using hostname and server address --- diff --git a/dht/dht.go b/dht/dht.go index d7e8e92a..c251cbcb 100644 --- a/dht/dht.go +++ b/dht/dht.go @@ -1,7 +1,8 @@ package dht import ( - "crypto/rand" + "crypto" + _ "crypto/sha1" "encoding/binary" "errors" "fmt" @@ -9,6 +10,7 @@ import ( "io" "log" "net" + "os" "sync" "time" ) @@ -57,9 +59,18 @@ type transaction struct { func (s *Server) setDefaults() { if s.ID == "" { var id [20]byte - _, err := rand.Read(id[:]) + h := crypto.SHA1.New() + ss, err := os.Hostname() if err != nil { - panic(err) + log.Print(err) + } + ss += s.Socket.LocalAddr().String() + h.Write([]byte(ss)) + if b := h.Sum(id[:0:20]); len(b) != 20 { + panic(len(b)) + } + if len(id) != 20 { + panic(len(id)) } s.ID = string(id[:]) }