| // +build daemon,!windows |
| |
| package main |
| |
| import ( |
| "fmt" |
| "os" |
| "os/signal" |
| "syscall" |
| |
| apiserver "github.com/docker/docker/api/server" |
| "github.com/docker/docker/daemon" |
| "github.com/docker/docker/pkg/mflag" |
| "github.com/docker/docker/pkg/system" |
| |
| _ "github.com/docker/docker/daemon/execdriver/native" |
| ) |
| |
| const defaultDaemonConfigFile = "/etc/docker/daemon.json" |
| |
| func setPlatformServerConfig(serverConfig *apiserver.Config, daemonCfg *daemon.Config) *apiserver.Config { |
| serverConfig.SocketGroup = daemonCfg.SocketGroup |
| serverConfig.EnableCors = daemonCfg.EnableCors |
| serverConfig.CorsHeaders = daemonCfg.CorsHeaders |
| |
| return serverConfig |
| } |
| |
| // currentUserIsOwner checks whether the current user is the owner of the given |
| // file. |
| func currentUserIsOwner(f string) bool { |
| if fileInfo, err := system.Stat(f); err == nil && fileInfo != nil { |
| if int(fileInfo.UID()) == os.Getuid() { |
| return true |
| } |
| } |
| return false |
| } |
| |
| // setDefaultUmask sets the umask to 0022 to avoid problems |
| // caused by custom umask |
| func setDefaultUmask() error { |
| desiredUmask := 0022 |
| syscall.Umask(desiredUmask) |
| if umask := syscall.Umask(desiredUmask); umask != desiredUmask { |
| return fmt.Errorf("failed to set umask: expected %#o, got %#o", desiredUmask, umask) |
| } |
| |
| return nil |
| } |
| |
| func getDaemonConfDir() string { |
| return "/etc/docker" |
| } |
| |
| // setupConfigReloadTrap configures the USR2 signal to reload the configuration. |
| func setupConfigReloadTrap(configFile string, flags *mflag.FlagSet, reload func(*daemon.Config)) { |
| c := make(chan os.Signal, 1) |
| signal.Notify(c, syscall.SIGHUP) |
| go func() { |
| for range c { |
| daemon.ReloadConfiguration(configFile, flags, reload) |
| } |
| }() |
| } |