func init() { utils.SetupViper(mainViper, envPrefix) // Setup flags flag.StringVar(&configFile, "config", "", "Path to configuration file") flag.BoolVar(&debug, "debug", false, "show the version and exit") flag.StringVar(&logFormat, "logf", "json", "Set the format of the logs. Only 'json' and 'logfmt' are supported at the moment.") // this needs to be in init so that _ALL_ logs are in the correct format if logFormat == jsonLogFormat { logrus.SetFormatter(new(logrus.JSONFormatter)) } }
func parseSignerConfig(configFilePath string) (signer.Config, error) { config := viper.New() utils.SetupViper(config, envPrefix) // parse viper config if err := utils.ParseViper(config, configFilePath); err != nil { return signer.Config{}, err } // default is error level lvl, err := utils.ParseLogLevel(config, logrus.ErrorLevel) if err != nil { return signer.Config{}, err } logrus.SetLevel(lvl) // parse bugsnag config bugsnagConf, err := utils.ParseBugsnag(config) if err != nil { return signer.Config{}, err } utils.SetUpBugsnag(bugsnagConf) // parse server config httpAddr, grpcAddr, tlsConfig, err := getAddrAndTLSConfig(config) if err != nil { return signer.Config{}, err } // setup the cryptoservices cryptoServices, err := setUpCryptoservices(config, []string{notary.MySQLBackend, notary.MemoryBackend, notary.RethinkDBBackend}) if err != nil { return signer.Config{}, err } return signer.Config{ HTTPAddr: httpAddr, GRPCAddr: grpcAddr, TLSConfig: tlsConfig, CryptoServices: cryptoServices, }, nil }
func parseSignerConfig(configFilePath string, doBootstrap bool) (signer.Config, error) { config := viper.New() utils.SetupViper(config, envPrefix) // parse viper config if err := utils.ParseViper(config, configFilePath); err != nil { return signer.Config{}, err } // default is error level lvl, err := utils.ParseLogLevel(config, logrus.ErrorLevel) if err != nil { return signer.Config{}, err } logrus.SetLevel(lvl) // parse bugsnag config bugsnagConf, err := utils.ParseBugsnag(config) if err != nil { return signer.Config{}, err } utils.SetUpBugsnag(bugsnagConf) // parse server config grpcAddr, tlsConfig, err := getAddrAndTLSConfig(config) if err != nil { return signer.Config{}, err } // setup the cryptoservices cryptoServices, err := setUpCryptoservices(config, notary.NotarySupportedBackends, doBootstrap) if err != nil { return signer.Config{}, err } return signer.Config{ GRPCAddr: grpcAddr, TLSConfig: tlsConfig, CryptoServices: cryptoServices, }, nil }
func TestSignalHandle(t *testing.T) { f, err := os.Create("/tmp/testSignalHandle.json") defer os.Remove(f.Name()) require.NoError(t, err) f.WriteString(`{"logging": {"level": "info"}}`) v := viper.New() utils.SetupViper(v, "envPrefix") err = utils.ParseViper(v, f.Name()) require.NoError(t, err) // Info + SIGUSR1 -> Debug signalHandle(syscall.SIGUSR1) require.Equal(t, logrus.GetLevel(), logrus.DebugLevel) // Debug + SIGUSR1 -> Debug signalHandle(syscall.SIGUSR1) require.Equal(t, logrus.GetLevel(), logrus.DebugLevel) // Debug + SIGUSR2-> Info signalHandle(syscall.SIGUSR2) require.Equal(t, logrus.GetLevel(), logrus.InfoLevel) }
func getEnv(env string) string { v := viper.New() utils.SetupViper(v, envPrefix) return v.GetString(strings.ToUpper(env)) }
func parseServerConfig(configFilePath string, hRegister healthRegister) (context.Context, server.Config, error) { config := viper.New() utils.SetupViper(config, envPrefix) // parse viper config if err := utils.ParseViper(config, configFilePath); err != nil { return nil, server.Config{}, err } ctx := context.Background() // default is error level lvl, err := utils.ParseLogLevel(config, logrus.ErrorLevel) if err != nil { return nil, server.Config{}, err } logrus.SetLevel(lvl) prefixes, err := getRequiredGunPrefixes(config) if err != nil { return nil, server.Config{}, err } // parse bugsnag config bugsnagConf, err := utils.ParseBugsnag(config) if err != nil { return ctx, server.Config{}, err } utils.SetUpBugsnag(bugsnagConf) trust, keyAlgo, err := getTrustService(config, client.NewNotarySigner, hRegister) if err != nil { return nil, server.Config{}, err } ctx = context.WithValue(ctx, "keyAlgorithm", keyAlgo) store, err := getStore(config, hRegister) if err != nil { return nil, server.Config{}, err } ctx = context.WithValue(ctx, "metaStore", store) currentCache, consistentCache, err := getCacheConfig(config) if err != nil { return nil, server.Config{}, err } httpAddr, tlsConfig, err := getAddrAndTLSConfig(config) if err != nil { return nil, server.Config{}, err } return ctx, server.Config{ Addr: httpAddr, TLSConfig: tlsConfig, Trust: trust, AuthMethod: config.GetString("auth.type"), AuthOpts: config.Get("auth.options"), RepoPrefixes: prefixes, CurrentCacheControlConfig: currentCache, ConsistentCacheControlConfig: consistentCache, }, nil }