pull/18/head
Hugo Landau 10 years ago
parent c72db4a579
commit e9bc74cd1e

@ -14,6 +14,7 @@ import "strings"
import "net"
import "time"
import "sort"
import "github.com/hlandau/degoutils/config"
//import "crypto/rsa"
//import "crypto/rand"
@ -49,6 +50,17 @@ type Server struct {
kskPrivate dns.PrivateKey
zsk dns.DNSKEY
zskPrivate dns.PrivateKey
cfg ServerConfig
}
type ServerConfig struct {
Bind string `default:":53" usage:"Address to bind to (e.g. 0.0.0.0:53)"`
PublicKey string `default:"ncdns.key" usage:"Path to the DNSKEY public key file"`
PrivateKey string `default:"ncdns.private" usage:"Path to the corresponding private key file"`
NamecoinRPCUsername string `default:"" usage:"Namecoin RPC username"`
NamecoinRPCPassword string `default:"" usage:"Namecoin RPC password"`
NamecoinRPCAddress string `default:"localhost:8336" usage:"Namecoin RPC server address"`
CacheMaxEntries int `default:"1000" usage:"Maximum name cache entries"`
}
func (s *Server) doRunListener(ds *dns.Server) {
@ -58,7 +70,8 @@ func (s *Server) doRunListener(ds *dns.Server) {
func (s *Server) runListener(net string) *dns.Server {
ds := &dns.Server {
Addr: "127.0.0.2:53",
Addr: s.cfg.Bind,
//"127.0.0.2:53",
//Addr: ":1153",
Net: net,
Handler: s.mux,
@ -805,10 +818,10 @@ func (s *Server) Run() {
s.mux.HandleFunc(".", s.handle)
// key setup
kskf, err := os.Open("Kbit.dt.qien.net.+008+60970.key")
kskf, err := os.Open(s.cfg.PublicKey)
log.Fatale(err)
kskRR, err := dns.ReadRR(kskf, "Kbit.dt.qien.net.+008+60970.key")
kskRR, err := dns.ReadRR(kskf, s.cfg.PublicKey)
log.Fatale(err)
ksk, ok := kskRR.(*dns.DNSKEY)
@ -819,10 +832,10 @@ func (s *Server) Run() {
s.ksk = ksk
kskPrivatef, err := os.Open("Kbit.dt.qien.net.+008+60970.private")
kskPrivatef, err := os.Open(s.cfg.PrivateKey)
log.Fatale(err)
s.kskPrivate, err = s.ksk.ReadPrivateKey(kskPrivatef, "Kbit.dt.qien.net.+008+60970.private")
s.kskPrivate, err = s.ksk.ReadPrivateKey(kskPrivatef, s.cfg.PrivateKey)
log.Fatale(err)
s.zsk.Hdr.Rrtype = dns.TypeDNSKEY
@ -838,10 +851,10 @@ func (s *Server) Run() {
// run
s.udpListener = s.runListener("udp")
s.tcpListener = s.runListener("tcp")
s.nc.Username = "user"
s.nc.Password = "password"
s.nc.Server = "127.0.0.1:8336"
s.cache.MaxEntries = 1000
s.nc.Username = s.cfg.NamecoinRPCUsername
s.nc.Password = s.cfg.NamecoinRPCPassword
s.nc.Server = s.cfg.NamecoinRPCAddress
s.cache.MaxEntries = s.cfg.CacheMaxEntries
log.Info("Ready.")
@ -855,8 +868,20 @@ func (s *Server) Run() {
}
}
func NewServer(cfg *ServerConfig) *Server {
s := &Server{}
s.cfg = *cfg
return s
}
func main() {
s := Server{}
cfg := ServerConfig {}
config := config.Configurator{
ProgramName: "ncdns",
ConfigFilePaths: []string { "etc/ncdns.conf", "/etc/ncdns/ncdns.conf", },
}
config.ParseFatal(&cfg)
s := NewServer(&cfg)
s.Run()
}

Loading…
Cancel
Save