mirror of
https://github.com/coredns/coredns.git
synced 2025-10-27 00:04:15 -04:00
coredns: default Corefile (#265)
When no Corefile is given, default to loading the whoami middleware on the default port (2053). Also add back the -port flag that allows you to override the default port. Further cleanup the startup messages and use caddy's OnStartupComplete() to blurp out which zones and ports we have. These can be suppressed with the -quiet flag. Normal startup: miek.nl.:1053 miek.nl2.:1053 example.org.:1054 2016/09/17 20:41:19 [INFO] CoreDNS-001 starting CoreDNS-001 starting with the -quiet flag: 2016/09/17 20:41:34 [INFO] CoreDNS-001 starting
This commit is contained in:
@@ -23,6 +23,3 @@ import (
|
|||||||
_ "github.com/miekg/coredns/middleware/secondary"
|
_ "github.com/miekg/coredns/middleware/secondary"
|
||||||
_ "github.com/miekg/coredns/middleware/whoami"
|
_ "github.com/miekg/coredns/middleware/whoami"
|
||||||
)
|
)
|
||||||
|
|
||||||
// Quiet mode will not show any informative output on initialization.
|
|
||||||
var Quiet bool
|
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
package dnsserver
|
package dnsserver
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"flag"
|
||||||
"fmt"
|
"fmt"
|
||||||
"net"
|
"net"
|
||||||
"time"
|
"time"
|
||||||
@@ -12,19 +13,15 @@ import (
|
|||||||
const serverType = "dns"
|
const serverType = "dns"
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
|
flag.StringVar(&Port, "port", DefaultPort, "Default port")
|
||||||
|
flag.BoolVar(&Quiet, "quiet", false, "Quiet mode (no initialization output)")
|
||||||
|
|
||||||
caddy.RegisterServerType(serverType, caddy.ServerType{
|
caddy.RegisterServerType(serverType, caddy.ServerType{
|
||||||
Directives: func() []string { return directives },
|
Directives: func() []string { return directives },
|
||||||
DefaultInput: func() caddy.Input {
|
DefaultInput: func() caddy.Input {
|
||||||
if Port == DefaultPort && Zone != "" {
|
|
||||||
return caddy.CaddyfileInput{
|
|
||||||
Filepath: "Corefile",
|
|
||||||
Contents: nil,
|
|
||||||
ServerTypeName: serverType,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return caddy.CaddyfileInput{
|
return caddy.CaddyfileInput{
|
||||||
Filepath: "Corefile",
|
Filepath: "Corefile",
|
||||||
Contents: nil,
|
Contents: []byte(".:" + Port + " {\nwhoami\n}\n"),
|
||||||
ServerTypeName: serverType,
|
ServerTypeName: serverType,
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@@ -63,7 +60,6 @@ func (h *dnsContext) InspectServerBlocks(sourceFile string, serverBlocks []caddy
|
|||||||
s.Keys[i] = za.String()
|
s.Keys[i] = za.String()
|
||||||
if v, ok := dups[za.Zone]; ok {
|
if v, ok := dups[za.Zone]; ok {
|
||||||
return nil, fmt.Errorf("cannot serve %s - zone already defined for %v", za, v)
|
return nil, fmt.Errorf("cannot serve %s - zone already defined for %v", za, v)
|
||||||
|
|
||||||
}
|
}
|
||||||
dups[za.Zone] = za.String()
|
dups[za.Zone] = za.String()
|
||||||
|
|
||||||
@@ -71,7 +67,6 @@ func (h *dnsContext) InspectServerBlocks(sourceFile string, serverBlocks []caddy
|
|||||||
cfg := &Config{
|
cfg := &Config{
|
||||||
Zone: za.Zone,
|
Zone: za.Zone,
|
||||||
Port: za.Port,
|
Port: za.Port,
|
||||||
// TODO(miek): more?
|
|
||||||
}
|
}
|
||||||
h.saveConfig(za.String(), cfg)
|
h.saveConfig(za.String(), cfg)
|
||||||
}
|
}
|
||||||
@@ -129,8 +124,6 @@ func groupConfigsByListenAddr(configs []*Config) (map[string][]*Config, error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const (
|
const (
|
||||||
// DefaultZone is the default zone.
|
|
||||||
DefaultZone = "."
|
|
||||||
// DefaultPort is the default port.
|
// DefaultPort is the default port.
|
||||||
DefaultPort = "2053"
|
DefaultPort = "2053"
|
||||||
// DefaultRoot is the default root folder.
|
// DefaultRoot is the default root folder.
|
||||||
@@ -141,14 +134,15 @@ const (
|
|||||||
// command line flags, etc.
|
// command line flags, etc.
|
||||||
var (
|
var (
|
||||||
// Root is the site root
|
// Root is the site root
|
||||||
|
// TODO(miek): double check if this is used and if we want to use it.
|
||||||
Root = DefaultRoot
|
Root = DefaultRoot
|
||||||
|
|
||||||
// Host is the site host
|
|
||||||
Zone = DefaultZone
|
|
||||||
|
|
||||||
// Port is the site port
|
// Port is the site port
|
||||||
Port = DefaultPort
|
Port = DefaultPort
|
||||||
|
|
||||||
// GracefulTimeout is the maximum duration of a graceful shutdown.
|
// GracefulTimeout is the maximum duration of a graceful shutdown.
|
||||||
GracefulTimeout time.Duration
|
GracefulTimeout time.Duration
|
||||||
|
|
||||||
|
// Quiet mode will not show any informative output on initialization.
|
||||||
|
Quiet bool
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
package dnsserver
|
package dnsserver
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"fmt"
|
||||||
"log"
|
"log"
|
||||||
"net"
|
"net"
|
||||||
"runtime"
|
"runtime"
|
||||||
@@ -213,6 +214,18 @@ func (s *Server) ServeDNS(w dns.ResponseWriter, r *dns.Msg) {
|
|||||||
log.Printf("[INFO] \"%s %s %s\" - No such zone at %s (Remote: %s)", dns.Type(r.Question[0].Qtype), dns.Class(r.Question[0].Qclass), q, s.Addr, remoteHost)
|
log.Printf("[INFO] \"%s %s %s\" - No such zone at %s (Remote: %s)", dns.Type(r.Question[0].Qtype), dns.Class(r.Question[0].Qclass), q, s.Addr, remoteHost)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// OnStartupComplete lists the sites served by this server
|
||||||
|
// and any relevant information, assuming Quiet == false.
|
||||||
|
func (s *Server) OnStartupComplete() {
|
||||||
|
if Quiet {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
for zone, config := range s.zones {
|
||||||
|
fmt.Println(zone + ":" + config.Port)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// DefaultErrorFunc responds to an DNS request with an error.
|
// DefaultErrorFunc responds to an DNS request with an error.
|
||||||
func DefaultErrorFunc(w dns.ResponseWriter, r *dns.Msg, rcode int) {
|
func DefaultErrorFunc(w dns.ResponseWriter, r *dns.Msg, rcode int) {
|
||||||
state := request.Request{W: w, Req: r}
|
state := request.Request{W: w, Req: r}
|
||||||
|
|||||||
@@ -13,8 +13,9 @@ import (
|
|||||||
|
|
||||||
"github.com/mholt/caddy"
|
"github.com/mholt/caddy"
|
||||||
|
|
||||||
|
"github.com/miekg/coredns/core/dnsserver"
|
||||||
// Plug in CoreDNS
|
// Plug in CoreDNS
|
||||||
"github.com/miekg/coredns/core"
|
_ "github.com/miekg/coredns/core"
|
||||||
)
|
)
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
@@ -28,7 +29,6 @@ func init() {
|
|||||||
flag.BoolVar(&plugins, "plugins", false, "List installed plugins")
|
flag.BoolVar(&plugins, "plugins", false, "List installed plugins")
|
||||||
flag.StringVar(&logfile, "log", "", "Process log file")
|
flag.StringVar(&logfile, "log", "", "Process log file")
|
||||||
flag.StringVar(&caddy.PidFile, "pidfile", "", "Path to write pid file")
|
flag.StringVar(&caddy.PidFile, "pidfile", "", "Path to write pid file")
|
||||||
flag.BoolVar(&core.Quiet, "quiet", false, "Quiet mode (no initialization output)")
|
|
||||||
flag.BoolVar(&version, "version", false, "Show version")
|
flag.BoolVar(&version, "version", false, "Show version")
|
||||||
|
|
||||||
caddy.RegisterCaddyfileLoader("flag", caddy.LoaderFunc(confLoader))
|
caddy.RegisterCaddyfileLoader("flag", caddy.LoaderFunc(confLoader))
|
||||||
@@ -80,34 +80,12 @@ func Run() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
logVersion()
|
logVersion()
|
||||||
|
showVersion()
|
||||||
|
|
||||||
// Twiddle your thumbs
|
// Twiddle your thumbs
|
||||||
instance.Wait()
|
instance.Wait()
|
||||||
}
|
}
|
||||||
|
|
||||||
// startNotification will log CoreDNS' version to the log.
|
|
||||||
func startupNotification() {
|
|
||||||
if core.Quiet {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
logVersion()
|
|
||||||
}
|
|
||||||
|
|
||||||
func showVersion() {
|
|
||||||
fmt.Printf("%s-%s\n", caddy.AppName, caddy.AppVersion)
|
|
||||||
if devBuild && gitShortStat != "" {
|
|
||||||
fmt.Printf("%s\n%s\n", gitShortStat, gitFilesModified)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// logVersion logs the version that is starting.
|
|
||||||
func logVersion() {
|
|
||||||
log.Printf("[INFO] %s-%s starting\n", caddy.AppName, caddy.AppVersion)
|
|
||||||
if devBuild && gitShortStat != "" {
|
|
||||||
log.Printf("[INFO] %s\n%s\n", gitShortStat, gitFilesModified)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// mustLogFatal wraps log.Fatal() in a way that ensures the
|
// mustLogFatal wraps log.Fatal() in a way that ensures the
|
||||||
// output is always printed to stderr so the user can see it
|
// output is always printed to stderr so the user can see it
|
||||||
// if the user is still there, even if the process log was not
|
// if the user is still there, even if the process log was not
|
||||||
@@ -158,6 +136,25 @@ func defaultLoader(serverType string) (caddy.Input, error) {
|
|||||||
}, nil
|
}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// logVersion logs the version that is starting.
|
||||||
|
func logVersion() { log.Print("[INFO] " + versionString()) }
|
||||||
|
|
||||||
|
// showVersion prints the version that is starting.
|
||||||
|
func showVersion() {
|
||||||
|
if dnsserver.Quiet {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
fmt.Print(versionString())
|
||||||
|
if devBuild && gitShortStat != "" {
|
||||||
|
fmt.Printf("%s\n%s\n", gitShortStat, gitFilesModified)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// versionString returns the CoreDNS version as a string.
|
||||||
|
func versionString() string {
|
||||||
|
return fmt.Sprintf("%s-%s starting\n", caddy.AppName, caddy.AppVersion)
|
||||||
|
}
|
||||||
|
|
||||||
// setVersion figures out the version information
|
// setVersion figures out the version information
|
||||||
// based on variables set by -ldflags.
|
// based on variables set by -ldflags.
|
||||||
func setVersion() {
|
func setVersion() {
|
||||||
|
|||||||
Reference in New Issue
Block a user