aboutsummaryrefslogtreecommitdiff
path: root/server/config.go
diff options
context:
space:
mode:
Diffstat (limited to 'server/config.go')
-rw-r--r--server/config.go75
1 files changed, 75 insertions, 0 deletions
diff --git a/server/config.go b/server/config.go
new file mode 100644
index 000000000..79a9ba84d
--- /dev/null
+++ b/server/config.go
@@ -0,0 +1,75 @@
+package server
+
+import (
+ "net"
+
+ "github.com/miekg/coredns/middleware"
+)
+
+// Config configuration for a single server.
+type Config struct {
+ // The hostname or IP on which to serve
+ Host string
+
+ // The host address to bind on - defaults to (virtual) Host if empty
+ BindHost string
+
+ // The port to listen on
+ Port string
+
+ // The directory from which to parse db files
+ Root string
+
+ // HTTPS configuration
+ TLS TLSConfig
+
+ // Middleware stack
+ Middleware []middleware.Middleware
+
+ // Startup is a list of functions (or methods) to execute at
+ // server startup and restart; these are executed before any
+ // parts of the server are configured, and the functions are
+ // blocking. These are good for setting up middlewares and
+ // starting goroutines.
+ Startup []func() error
+
+ // FirstStartup is like Startup but these functions only execute
+ // during the initial startup, not on subsequent restarts.
+ //
+ // (Note: The server does not ever run these on its own; it is up
+ // to the calling application to do so, and do so only once, as the
+ // server itself has no notion whether it's a restart or not.)
+ FirstStartup []func() error
+
+ // Functions (or methods) to execute when the server quits;
+ // these are executed in response to SIGINT and are blocking
+ Shutdown []func() error
+
+ // The path to the configuration file from which this was loaded
+ ConfigFile string
+
+ // The name of the application
+ AppName string
+
+ // The application's version
+ AppVersion string
+}
+
+// Address returns the host:port of c as a string.
+func (c Config) Address() string {
+ return net.JoinHostPort(c.Host, c.Port)
+}
+
+// TLSConfig describes how TLS should be configured and used.
+type TLSConfig struct {
+ Enabled bool // will be set to true if TLS is enabled
+ LetsEncryptEmail string
+ Manual bool // will be set to true if user provides own certs and keys
+ Managed bool // will be set to true if config qualifies for implicit automatic/managed HTTPS
+ OnDemand bool // will be set to true if user enables on-demand TLS (obtain certs during handshakes)
+ Ciphers []uint16
+ ProtocolMinVersion uint16
+ ProtocolMaxVersion uint16
+ PreferServerCipherSuites bool
+ ClientCerts []string
+}