diff options
Diffstat (limited to 'core/setup/startupshutdown.go')
-rw-r--r-- | core/setup/startupshutdown.go | 64 |
1 files changed, 0 insertions, 64 deletions
diff --git a/core/setup/startupshutdown.go b/core/setup/startupshutdown.go deleted file mode 100644 index 1cf2c62e0..000000000 --- a/core/setup/startupshutdown.go +++ /dev/null @@ -1,64 +0,0 @@ -package setup - -import ( - "os" - "os/exec" - "strings" - - "github.com/miekg/coredns/middleware" -) - -// Startup registers a startup callback to execute during server start. -func Startup(c *Controller) (middleware.Middleware, error) { - return nil, registerCallback(c, &c.FirstStartup) -} - -// Shutdown registers a shutdown callback to execute during process exit. -func Shutdown(c *Controller) (middleware.Middleware, error) { - return nil, registerCallback(c, &c.Shutdown) -} - -// registerCallback registers a callback function to execute by -// using c to parse the line. It appends the callback function -// to the list of callback functions passed in by reference. -func registerCallback(c *Controller, list *[]func() error) error { - var funcs []func() error - - for c.Next() { - args := c.RemainingArgs() - if len(args) == 0 { - return c.ArgErr() - } - - nonblock := false - if len(args) > 1 && args[len(args)-1] == "&" { - // Run command in background; non-blocking - nonblock = true - args = args[:len(args)-1] - } - - command, args, err := middleware.SplitCommandAndArgs(strings.Join(args, " ")) - if err != nil { - return c.Err(err.Error()) - } - - fn := func() error { - cmd := exec.Command(command, args...) - cmd.Stdin = os.Stdin - cmd.Stdout = os.Stdout - cmd.Stderr = os.Stderr - - if nonblock { - return cmd.Start() - } - return cmd.Run() - } - - funcs = append(funcs, fn) - } - - return c.OncePerServerBlock(func() error { - *list = append(*list, funcs...) - return nil - }) -} |