@ -9,6 +9,8 @@ import "fmt"
import "os/signal"
import "syscall"
const version = "1.0"
type Server struct {
cfg ServerConfig
@ -33,9 +35,9 @@ type ServerConfig struct {
SelfName string ` default:"" usage:"Canonical name for this nameserver (default: autogenerated psuedo-hostname resolving to SelfIP; SelfIP is not used if this is set)" `
SelfIP string ` default:"127.127.127.127" usage:"The canonical IP address for this service" `
Daemonize bool ` default:"false" usage:"Daemonize (doesn't fork)" `
UID int ` default:"0" usage:"UID to drop privileges to if run as root" `
GID int ` default:"0" usage:"GID to drop privileges to if run as root" `
//Daemonize bool ` default:"false" usage:"Daemonize (doesn't fork)"`
//UID int ` default:"0" usage:"UID to drop privileges to if run as root"`
//GID int ` default:"0" usage:"GID to drop privileges to if run as root"`
}
func NewServer ( cfg * ServerConfig ) ( s * Server , err error ) {
@ -58,6 +60,7 @@ func NewServer(cfg *ServerConfig) (s *Server, err error) {
ecfg := & madns . EngineConfig {
Backend : b ,
VersionString : "ncdns/" + version ,
}
// key setup
@ -122,13 +125,18 @@ func (s *Server) loadKey(fn, privateFn string) (k *dns.DNSKEY, privatek dns.Priv
return
}
func ( s * Server ) Run( ) {
func ( s * Server ) Start( ) error {
s . mux = dns . NewServeMux ( )
s . mux . Handle ( "." , s . engine )
s . udpListener = s . runListener ( "udp" )
s . tcpListener = s . runListener ( "tcp" )
return nil
}
func ( s * Server ) Run ( ) {
s . Start ( )
log . Info ( "Ready." )
// wait