Add NodeIdHex config option
This commit is contained in:
parent
4798907da4
commit
44ec4d9bdb
@ -40,6 +40,12 @@ type transactionKey struct {
|
||||
type ServerConfig struct {
|
||||
// Listen address. Used if Conn is nil.
|
||||
Addr string
|
||||
|
||||
// Set NodeId Manually. Caller must ensure that, if NodeId does not
|
||||
// conform to DHT Security Extensions, that NoSecurity is also set. This
|
||||
// should be given as a HEX string.
|
||||
NodeIdHex string
|
||||
|
||||
Conn net.PacketConn
|
||||
// Don't respond to queries from other nodes.
|
||||
Passive bool
|
||||
|
@ -184,6 +184,22 @@ func TestServerDefaultNodeIdSecure(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func TestServerCustomNodeId(t *testing.T) {
|
||||
customId := "5a3ce1c14e7a08645677bbd1cfe7d8f956d53256"
|
||||
id, err := hex.DecodeString(customId)
|
||||
assert.NoError(t, err)
|
||||
// How to test custom *secure* Id when tester computers will have
|
||||
// different Ids? Generate custom ids for local IPs and use
|
||||
// mini-Id?
|
||||
s, err := NewServer(&ServerConfig{
|
||||
NodeIdHex: customId,
|
||||
NoDefaultBootstrap: true,
|
||||
})
|
||||
require.NoError(t, err)
|
||||
defer s.Close()
|
||||
assert.Equal(t, string(id), s.ID())
|
||||
}
|
||||
|
||||
func TestAnnounceTimeout(t *testing.T) {
|
||||
s, err := NewServer(&ServerConfig{
|
||||
BootstrapNodes: []string{"1.2.3.4:5"},
|
||||
|
@ -3,6 +3,7 @@ package dht
|
||||
import (
|
||||
"crypto"
|
||||
"encoding/binary"
|
||||
"encoding/hex"
|
||||
"errors"
|
||||
"fmt"
|
||||
"io"
|
||||
@ -85,6 +86,14 @@ func NewServer(c *ServerConfig) (s *Server, err error) {
|
||||
}
|
||||
}
|
||||
s.bootstrapNodes = c.BootstrapNodes
|
||||
if c.NodeIdHex != "" {
|
||||
var rawID []byte
|
||||
rawID, err = hex.DecodeString(c.NodeIdHex)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
s.id = string(rawID)
|
||||
}
|
||||
err = s.init()
|
||||
if err != nil {
|
||||
return
|
||||
|
Loading…
x
Reference in New Issue
Block a user