github.com/vincentwoo/docker@v0.7.3-0.20160116130405-82401a4b13c0/docker/daemon_unix.go (about)

     1  // +build daemon,!windows
     2  
     3  package main
     4  
     5  import (
     6  	"fmt"
     7  	"os"
     8  	"os/signal"
     9  	"syscall"
    10  
    11  	apiserver "github.com/docker/docker/api/server"
    12  	"github.com/docker/docker/daemon"
    13  	"github.com/docker/docker/pkg/mflag"
    14  	"github.com/docker/docker/pkg/system"
    15  
    16  	_ "github.com/docker/docker/daemon/execdriver/native"
    17  )
    18  
    19  const defaultDaemonConfigFile = "/etc/docker/daemon.json"
    20  
    21  func setPlatformServerConfig(serverConfig *apiserver.Config, daemonCfg *daemon.Config) *apiserver.Config {
    22  	serverConfig.SocketGroup = daemonCfg.SocketGroup
    23  	serverConfig.EnableCors = daemonCfg.EnableCors
    24  	serverConfig.CorsHeaders = daemonCfg.CorsHeaders
    25  
    26  	return serverConfig
    27  }
    28  
    29  // currentUserIsOwner checks whether the current user is the owner of the given
    30  // file.
    31  func currentUserIsOwner(f string) bool {
    32  	if fileInfo, err := system.Stat(f); err == nil && fileInfo != nil {
    33  		if int(fileInfo.UID()) == os.Getuid() {
    34  			return true
    35  		}
    36  	}
    37  	return false
    38  }
    39  
    40  // setDefaultUmask sets the umask to 0022 to avoid problems
    41  // caused by custom umask
    42  func setDefaultUmask() error {
    43  	desiredUmask := 0022
    44  	syscall.Umask(desiredUmask)
    45  	if umask := syscall.Umask(desiredUmask); umask != desiredUmask {
    46  		return fmt.Errorf("failed to set umask: expected %#o, got %#o", desiredUmask, umask)
    47  	}
    48  
    49  	return nil
    50  }
    51  
    52  func getDaemonConfDir() string {
    53  	return "/etc/docker"
    54  }
    55  
    56  // setupConfigReloadTrap configures the USR2 signal to reload the configuration.
    57  func setupConfigReloadTrap(configFile string, flags *mflag.FlagSet, reload func(*daemon.Config)) {
    58  	c := make(chan os.Signal, 1)
    59  	signal.Notify(c, syscall.SIGHUP)
    60  	go func() {
    61  		for range c {
    62  			daemon.ReloadConfiguration(configFile, flags, reload)
    63  		}
    64  	}()
    65  }