DHT default server ID generated using hostname and server address

This commit is contained in:
Matt Joiner 2014-06-24 23:18:30 +10:00
parent ef8e2fcf16
commit 1852e5805d
1 changed files with 14 additions and 3 deletions

View File

@ -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[:])
}