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 main() { flag.Usage = usage flag.Parse() if debug { go debugServer(debugAddr) } // when the signer starts print the version for debugging and issue logs later logrus.Infof("Version: %s, Git commit: %s", version.NotaryVersion, version.GitCommit) // parse viper config if err := utils.ParseViper(mainViper, configFile); err != nil { logrus.Fatal(err.Error()) } // default is error level lvl, err := utils.ParseLogLevel(mainViper, logrus.ErrorLevel) if err != nil { logrus.Fatal(err.Error()) } logrus.SetLevel(lvl) // parse bugsnag config bugsnagConf, err := utils.ParseBugsnag(mainViper) if err != nil { logrus.Fatal(err.Error()) } utils.SetUpBugsnag(bugsnagConf) // parse server config httpAddr, grpcAddr, tlsConfig, err := getAddrAndTLSConfig(mainViper) if err != nil { logrus.Fatal(err.Error()) } // setup the cryptoservices cryptoServices, err := setUpCryptoservices(mainViper, []string{utils.MySQLBackend, utils.MemoryBackend}) if err != nil { logrus.Fatal(err.Error()) } grpcServer, lis, err := setupGRPCServer(grpcAddr, tlsConfig, cryptoServices) if err != nil { logrus.Fatal(err.Error()) } httpServer := setupHTTPServer(httpAddr, tlsConfig, cryptoServices) if debug { log.Println("RPC server listening on", grpcAddr) log.Println("HTTP server listening on", httpAddr) } go grpcServer.Serve(lis) err = httpServer.ListenAndServeTLS("", "") if err != nil { log.Fatal("HTTPS server failed to start:", err) } }
func main() { flag.Usage = usage flag.Parse() if debug { go debugServer(DebugAddress) } // when the server starts print the version for debugging and issue logs later logrus.Infof("Version: %s, Git commit: %s", version.NotaryVersion, version.GitCommit) ctx := context.Background() // parse viper config if err := utils.ParseViper(mainViper, configFile); err != nil { logrus.Fatal(err.Error()) } // default is error level lvl, err := utils.ParseLogLevel(mainViper, logrus.ErrorLevel) if err != nil { logrus.Fatal(err.Error()) } logrus.SetLevel(lvl) // parse bugsnag config bugsnagConf, err := utils.ParseBugsnag(mainViper) if err != nil { logrus.Fatal(err.Error()) } utils.SetUpBugsnag(bugsnagConf) trust, keyAlgo, err := getTrustService(mainViper, client.NewNotarySigner, health.RegisterPeriodicFunc) if err != nil { logrus.Fatal(err.Error()) } ctx = context.WithValue(ctx, "keyAlgorithm", keyAlgo) store, err := getStore(mainViper, []string{utils.MySQLBackend, utils.MemoryBackend}) if err != nil { logrus.Fatal(err.Error()) } ctx = context.WithValue(ctx, "metaStore", store) httpAddr, tlsConfig, err := getAddrAndTLSConfig(mainViper) if err != nil { logrus.Fatal(err.Error()) } logrus.Info("Starting Server") err = server.Run( ctx, httpAddr, tlsConfig, trust, mainViper.GetString("auth.type"), mainViper.Get("auth.options"), ) logrus.Error(err.Error()) return }
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 }