From 493a7aca32a808326a2dae5069f35eca92f6690b Mon Sep 17 00:00:00 2001 From: Ahmed Date: Mon, 3 Aug 2020 23:57:16 +0200 Subject: [PATCH] Feature/skelton (#2) * Fix #1 --- assets/gopher3.png | Bin 109144 -> 0 bytes cmd/run.go | 172 +++++++++++++++++++++++++++++++- cmd/watch.go | 24 ----- config.dist.yml | 46 +++++++++ core/backend/graphite.go | 5 + core/backend/penguin.go | 5 + core/backend/prometheus.go | 5 + core/controller/daemon.go | 16 +++ core/controller/health_check.go | 26 +++++ core/controller/listener.go | 19 ++++ core/controller/metrics.go | 16 +++ core/controller/watcher.go | 17 ++++ core/middleware/auth.go | 35 +++++++ core/middleware/correlation.go | 25 +++++ core/middleware/log.go | 47 +++++++++ core/middleware/metric.go | 80 +++++++++++++++ core/model/.gitkeep | 0 core/model/configs.go | 58 ----------- core/util/helpers.go | 8 ++ go.mod | 7 +- go.sum | 84 +++++++++++++--- misc/config.toml | 4 - 22 files changed, 592 insertions(+), 107 deletions(-) delete mode 100644 assets/gopher3.png delete mode 100644 cmd/watch.go create mode 100644 config.dist.yml create mode 100644 core/backend/graphite.go create mode 100644 core/backend/penguin.go create mode 100644 core/backend/prometheus.go create mode 100644 core/controller/daemon.go create mode 100644 core/controller/health_check.go create mode 100644 core/controller/listener.go create mode 100644 core/controller/metrics.go create mode 100644 core/controller/watcher.go create mode 100644 core/middleware/auth.go create mode 100644 core/middleware/correlation.go create mode 100644 core/middleware/log.go create mode 100644 core/middleware/metric.go create mode 100644 core/model/.gitkeep delete mode 100644 core/model/configs.go delete mode 100644 misc/config.toml diff --git a/assets/gopher3.png b/assets/gopher3.png deleted file mode 100644 index 56289f4abed1f41db195c8c5f75bfa367742b3be..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 109144 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 LGJ@7rI)e$| diff --git a/cmd/run.go b/cmd/run.go index f6aa35d..61593ea 100644 --- a/cmd/run.go +++ b/cmd/run.go @@ -5,20 +5,186 @@ package cmd import ( + "bytes" + "fmt" + "io" + "io/ioutil" + "net/http" + "os" + "path/filepath" + "strconv" + "strings" + + "github.com/clivern/penguin/core/controller" + "github.com/clivern/penguin/core/middleware" + "github.com/clivern/penguin/core/util" + + "github.com/drone/envsubst" + "github.com/gin-gonic/gin" log "github.com/sirupsen/logrus" "github.com/spf13/cobra" + "github.com/spf13/viper" ) +var config string + var runCmd = &cobra.Command{ Use: "run", - Short: "Run statistics listener", + Short: "Run penguin server", Run: func(cmd *cobra.Command, args []string) { - if Verbose { - log.SetLevel(log.DebugLevel) + var runerr error + + configUnparsed, err := ioutil.ReadFile(config) + + if err != nil { + panic(fmt.Sprintf( + "Error while reading config file [%s]: %s", + config, + err.Error(), + )) + } + + configParsed, err := envsubst.EvalEnv(string(configUnparsed)) + + if err != nil { + panic(fmt.Sprintf( + "Error while parsing config file [%s]: %s", + config, + err.Error(), + )) + } + + viper.SetConfigType("yaml") + err = viper.ReadConfig(bytes.NewBuffer([]byte(configParsed))) + + if err != nil { + panic(fmt.Sprintf( + "Error while loading configs [%s]: %s", + config, + err.Error(), + )) + } + + if viper.GetString("log.output") != "stdout" { + dir, _ := filepath.Split(viper.GetString("log.output")) + + if !util.DirExists(dir) { + if _, err := util.EnsureDir(dir, 777); err != nil { + panic(fmt.Sprintf( + "Directory [%s] creation failed with error: %s", + dir, + err.Error(), + )) + } + } + + if !util.FileExists(viper.GetString("log.output")) { + f, err := os.Create(viper.GetString("log.output")) + if err != nil { + panic(fmt.Sprintf( + "Error while creating log file [%s]: %s", + viper.GetString("log.output"), + err.Error(), + )) + } + defer f.Close() + } + } + + if viper.GetString("log.output") == "stdout" { + gin.DefaultWriter = os.Stdout + log.SetOutput(os.Stdout) + } else { + f, _ := os.Create(viper.GetString("log.output")) + gin.DefaultWriter = io.MultiWriter(f) + log.SetOutput(f) + } + + lvl := strings.ToLower(viper.GetString("log.level")) + level, err := log.ParseLevel(lvl) + + if err != nil { + level = log.InfoLevel + } + + log.SetLevel(level) + + if viper.GetString("app.mode") == "prod" { + gin.SetMode(gin.ReleaseMode) + gin.DefaultWriter = ioutil.Discard + gin.DisableConsoleColor() + } + + if viper.GetString("log.format") == "json" { + log.SetFormatter(&log.JSONFormatter{}) + } else { + log.SetFormatter(&log.TextFormatter{}) + } + + messages := make(chan string, 5000) + + go controller.Daemon(messages) + + if !viper.GetBool("inputs.http.enabled") { + controller.Watcher(messages) + return + } else { + go controller.Watcher(messages) + } + + r := gin.Default() + + r.Use(middleware.Correlation()) + r.Use(middleware.Auth()) + r.Use(middleware.Logger()) + + if viper.GetBool("output.prometheus.enabled") { + r.Use(middleware.Metric()) + } + + r.GET("/favicon.ico", func(c *gin.Context) { + c.String(http.StatusNoContent, "") + }) + + r.GET("/_health", controller.HealthCheck) + + r.POST(viper.GetString("inputs.http.configs.path"), func(c *gin.Context) { + controller.Listener(c, messages) + }) + + if viper.GetBool("output.prometheus.enabled") { + r.GET( + viper.GetString("output.prometheus.endpoint"), + gin.WrapH(controller.Metrics()), + ) + } + + if viper.GetBool("inputs.http.configs.tls.status") { + runerr = r.RunTLS( + fmt.Sprintf(":%s", strconv.Itoa(viper.GetInt("inputs.http.configs.port"))), + viper.GetString("inputs.http.configs.tls.pemPath"), + viper.GetString("inputs.http.configs.tls.keyPath"), + ) + } else { + runerr = r.Run( + fmt.Sprintf(":%s", strconv.Itoa(viper.GetInt("inputs.http.configs.port"))), + ) + } + + if runerr != nil { + panic(runerr.Error()) } }, } func init() { + runCmd.Flags().StringVarP( + &config, + "config", + "c", + "config.prod.yml", + "Absolute path to config file (required)", + ) + runCmd.MarkFlagRequired("config") rootCmd.AddCommand(runCmd) } diff --git a/cmd/watch.go b/cmd/watch.go deleted file mode 100644 index b4df075..0000000 --- a/cmd/watch.go +++ /dev/null @@ -1,24 +0,0 @@ -// Copyright 2020 Clivern. All rights reserved. -// Use of this source code is governed by the MIT -// license that can be found in the LICENSE file. - -package cmd - -import ( - log "github.com/sirupsen/logrus" - "github.com/spf13/cobra" -) - -var watchCmd = &cobra.Command{ - Use: "watch", - Short: "Watch structured logs for metrics", - Run: func(cmd *cobra.Command, args []string) { - if Verbose { - log.SetLevel(log.DebugLevel) - } - }, -} - -func init() { - rootCmd.AddCommand(watchCmd) -} diff --git a/config.dist.yml b/config.dist.yml new file mode 100644 index 0000000..a9b9e5c --- /dev/null +++ b/config.dist.yml @@ -0,0 +1,46 @@ +# Metrics Input +inputs: + http: + enabled: on + configs: + mode: dev + port: 8080 + tls: + status: off + pemPath: cert/server.pem + keyPath: cert/server.key + path: / + api_key: "" + + log: + enabled: on + paths: + - /var/log/*.log + +# Metrics Cache Driver +cache: + type: memory + +# Metrics Output +output: + console: + enabled: on + + prometheus: + enabled: on + endpoint: /metrics + + graphite: + enabled: off + + penguin: + enabled: off + +# Log configs +log: + # Log level, it can be debug, info, warn, error, panic, fatal + level: info + # output can be stdout or abs path to log file /var/logs/beetle.log + output: stdout + # Format can be json + format: json diff --git a/core/backend/graphite.go b/core/backend/graphite.go new file mode 100644 index 0000000..dae7aac --- /dev/null +++ b/core/backend/graphite.go @@ -0,0 +1,5 @@ +// Copyright 2020 Clivern. All rights reserved. +// Use of this source code is governed by the MIT +// license that can be found in the LICENSE file. + +package backend diff --git a/core/backend/penguin.go b/core/backend/penguin.go new file mode 100644 index 0000000..dae7aac --- /dev/null +++ b/core/backend/penguin.go @@ -0,0 +1,5 @@ +// Copyright 2020 Clivern. All rights reserved. +// Use of this source code is governed by the MIT +// license that can be found in the LICENSE file. + +package backend diff --git a/core/backend/prometheus.go b/core/backend/prometheus.go new file mode 100644 index 0000000..dae7aac --- /dev/null +++ b/core/backend/prometheus.go @@ -0,0 +1,5 @@ +// Copyright 2020 Clivern. All rights reserved. +// Use of this source code is governed by the MIT +// license that can be found in the LICENSE file. + +package backend diff --git a/core/controller/daemon.go b/core/controller/daemon.go new file mode 100644 index 0000000..85002e1 --- /dev/null +++ b/core/controller/daemon.go @@ -0,0 +1,16 @@ +// Copyright 2020 Clivern. All rights reserved. +// Use of this source code is governed by the MIT +// license that can be found in the LICENSE file. + +package controller + +import ( + log "github.com/sirupsen/logrus" +) + +// Daemon function +func Daemon(messages <-chan string) { + for message := range messages { + log.Info(message) + } +} diff --git a/core/controller/health_check.go b/core/controller/health_check.go new file mode 100644 index 0000000..a3f2671 --- /dev/null +++ b/core/controller/health_check.go @@ -0,0 +1,26 @@ +// Copyright 2020 Clivern. All rights reserved. +// Use of this source code is governed by the MIT +// license that can be found in the LICENSE file. + +package controller + +import ( + "net/http" + + "github.com/gin-gonic/gin" + log "github.com/sirupsen/logrus" +) + +// HealthCheck controller +func HealthCheck(c *gin.Context) { + status := "ok" + + log.WithFields(log.Fields{ + "correlation_id": c.Request.Header.Get("X-Correlation-ID"), + "status": status, + }).Info(`Health check`) + + c.JSON(http.StatusOK, gin.H{ + "status": status, + }) +} diff --git a/core/controller/listener.go b/core/controller/listener.go new file mode 100644 index 0000000..4f32be7 --- /dev/null +++ b/core/controller/listener.go @@ -0,0 +1,19 @@ +// Copyright 2020 Clivern. All rights reserved. +// Use of this source code is governed by the MIT +// license that can be found in the LICENSE file. + +package controller + +import ( + "net/http" + + "github.com/gin-gonic/gin" +) + +// Listener controller +func Listener(c *gin.Context, messages chan<- string) { + messages <- "wip1" + + c.Status(http.StatusAccepted) + return +} diff --git a/core/controller/metrics.go b/core/controller/metrics.go new file mode 100644 index 0000000..bb50f38 --- /dev/null +++ b/core/controller/metrics.go @@ -0,0 +1,16 @@ +// Copyright 2020 Clivern. All rights reserved. +// Use of this source code is governed by the MIT +// license that can be found in the LICENSE file. + +package controller + +import ( + "net/http" + + "github.com/prometheus/client_golang/prometheus/promhttp" +) + +// Metrics controller +func Metrics() http.Handler { + return promhttp.Handler() +} diff --git a/core/controller/watcher.go b/core/controller/watcher.go new file mode 100644 index 0000000..fc867f5 --- /dev/null +++ b/core/controller/watcher.go @@ -0,0 +1,17 @@ +// Copyright 2020 Clivern. All rights reserved. +// Use of this source code is governed by the MIT +// license that can be found in the LICENSE file. + +package controller + +import ( + "time" +) + +// Watcher function +func Watcher(messages chan<- string) { + for { + messages <- "wip2" + time.Sleep(1 * time.Second) + } +} diff --git a/core/middleware/auth.go b/core/middleware/auth.go new file mode 100644 index 0000000..b123ba2 --- /dev/null +++ b/core/middleware/auth.go @@ -0,0 +1,35 @@ +// Copyright 2020 Clivern. All rights reserved. +// Use of this source code is governed by the MIT +// license that can be found in the LICENSE file. + +package middleware + +import ( + "net/http" + + "github.com/gin-gonic/gin" + log "github.com/sirupsen/logrus" + "github.com/spf13/viper" +) + +// Auth middleware +func Auth() gin.HandlerFunc { + return func(c *gin.Context) { + path := c.Request.URL.Path + method := c.Request.Method + + if path == viper.GetString("inputs.http.configs.path") { + apiKey := c.GetHeader("X-API-KEY") + if viper.GetString("inputs.http.configs.api_key") != "" && apiKey != viper.GetString("inputs.http.configs.api_key") { + log.WithFields(log.Fields{ + "correlation_id": c.Request.Header.Get("X-Correlation-ID"), + "http_method": method, + "http_path": path, + "api_key": apiKey, + }).Info(`Unauthorized access`) + + c.AbortWithStatus(http.StatusUnauthorized) + } + } + } +} diff --git a/core/middleware/correlation.go b/core/middleware/correlation.go new file mode 100644 index 0000000..64ea686 --- /dev/null +++ b/core/middleware/correlation.go @@ -0,0 +1,25 @@ +// Copyright 2020 Clivern. All rights reserved. +// Use of this source code is governed by the MIT +// license that can be found in the LICENSE file. + +package middleware + +import ( + "strings" + + "github.com/clivern/penguin/core/util" + + "github.com/gin-gonic/gin" +) + +// Correlation middleware +func Correlation() gin.HandlerFunc { + return func(c *gin.Context) { + corralationID := c.Request.Header.Get("X-Correlation-ID") + + if strings.TrimSpace(corralationID) == "" { + c.Request.Header.Add("X-Correlation-ID", util.GenerateUUID4()) + } + c.Next() + } +} diff --git a/core/middleware/log.go b/core/middleware/log.go new file mode 100644 index 0000000..d116b42 --- /dev/null +++ b/core/middleware/log.go @@ -0,0 +1,47 @@ +// Copyright 2020 Clivern. All rights reserved. +// Use of this source code is governed by the MIT +// license that can be found in the LICENSE file. + +package middleware + +import ( + "bytes" + "io/ioutil" + + "github.com/gin-gonic/gin" + log "github.com/sirupsen/logrus" +) + +// Logger middleware +func Logger() gin.HandlerFunc { + return func(c *gin.Context) { + // before request + var bodyBytes []byte + + // Workaround for issue https://github.com/gin-gonic/gin/issues/1651 + if c.Request.Body != nil { + bodyBytes, _ = ioutil.ReadAll(c.Request.Body) + } + + c.Request.Body = ioutil.NopCloser(bytes.NewBuffer(bodyBytes)) + + log.WithFields(log.Fields{ + "correlation_id": c.Request.Header.Get("X-Correlation-ID"), + "http_method": c.Request.Method, + "http_path": c.Request.URL.Path, + "request_body": string(bodyBytes), + }).Info("Request started") + + c.Next() + + // after request + status := c.Writer.Status() + size := c.Writer.Size() + + log.WithFields(log.Fields{ + "correlation_id": c.Request.Header.Get("X-Correlation-ID"), + "http_status": status, + "response_size": size, + }).Info(`Request finished`) + } +} diff --git a/core/middleware/metric.go b/core/middleware/metric.go new file mode 100644 index 0000000..39a9822 --- /dev/null +++ b/core/middleware/metric.go @@ -0,0 +1,80 @@ +// Copyright 2020 Clivern. All rights reserved. +// Use of this source code is governed by the MIT +// license that can be found in the LICENSE file. + +package middleware + +import ( + "strconv" + "time" + + "github.com/gin-gonic/gin" + "github.com/prometheus/client_golang/prometheus" + log "github.com/sirupsen/logrus" +) + +var ( + httpRequests = prometheus.NewCounterVec( + prometheus.CounterOpts{ + Namespace: "penguin", + Name: "total_http_requests", + Help: "How many HTTP requests processed, partitioned by status code and HTTP method.", + }, []string{"code", "method", "handler", "host", "url"}) + + requestDuration = prometheus.NewHistogramVec( + prometheus.HistogramOpts{ + Subsystem: "penguin", + Name: "request_duration_seconds", + Help: "The HTTP request latencies in seconds.", + }, + []string{"code", "method", "url"}, + ) + + responseSize = prometheus.NewSummary( + prometheus.SummaryOpts{ + Namespace: "penguin", + Name: "response_size_bytes", + Help: "The HTTP response sizes in bytes.", + }, + ) +) + +func init() { + prometheus.MustRegister(httpRequests) + prometheus.MustRegister(requestDuration) + prometheus.MustRegister(responseSize) +} + +// Metric middleware +func Metric() gin.HandlerFunc { + return func(c *gin.Context) { + // before request + start := time.Now() + + c.Next() + + // after request + elapsed := float64(time.Since(start)) / float64(time.Second) + + log.WithFields(log.Fields{ + "correlation_id": c.Request.Header.Get("X-Correlation-ID"), + }).Info(`Collecting metrics`) + + // Collect Metrics + httpRequests.WithLabelValues( + strconv.Itoa(c.Writer.Status()), + c.Request.Method, + c.HandlerName(), + c.Request.Host, + c.Request.URL.Path, + ).Inc() + + requestDuration.WithLabelValues( + strconv.Itoa(c.Writer.Status()), + c.Request.Method, + c.Request.URL.Path, + ).Observe(elapsed) + + responseSize.Observe(float64(c.Writer.Size())) + } +} diff --git a/core/model/.gitkeep b/core/model/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/core/model/configs.go b/core/model/configs.go deleted file mode 100644 index e7a4d4c..0000000 --- a/core/model/configs.go +++ /dev/null @@ -1,58 +0,0 @@ -// Copyright 2020 Clivern. All rights reserved. -// Use of this source code is governed by the MIT -// license that can be found in the LICENSE file. - -package model - -import ( - "os" - - "github.com/BurntSushi/toml" -) - -// Configs type -type Configs struct { - General General `toml:"General"` -} - -// General type -type General struct { - Key string `toml:"key"` -} - -// NewConfigs creates an instance of Configs -func NewConfigs() *Configs { - return &Configs{ - General: General{ - Key: "value", - }, - } -} - -// Decode decodes from file to struct -func (g *Configs) Decode(path string) error { - if _, err := toml.DecodeFile(path, &g); err != nil { - return err - } - - return nil -} - -// Encode encodes struct and store on file -func (g *Configs) Encode(path string) error { - f, err := os.Create(path) - - if err != nil { - return err - } - - defer f.Close() - - err = toml.NewEncoder(f).Encode(g) - - if err != nil { - return err - } - - return nil -} diff --git a/core/util/helpers.go b/core/util/helpers.go index d818912..0410821 100644 --- a/core/util/helpers.go +++ b/core/util/helpers.go @@ -12,6 +12,8 @@ import ( "path/filepath" "reflect" "strings" + + "github.com/satori/go.uuid" ) // InArray check if value is on array @@ -30,6 +32,12 @@ func InArray(val interface{}, array interface{}) bool { return false } +// GenerateUUID4 create a UUID +func GenerateUUID4() string { + u := uuid.Must(uuid.NewV4(), nil) + return u.String() +} + // ReadFile get the file content func ReadFile(path string) (string, error) { data, err := ioutil.ReadFile(path) diff --git a/go.mod b/go.mod index 0d99aa2..93fe143 100644 --- a/go.mod +++ b/go.mod @@ -3,8 +3,11 @@ module github.com/clivern/penguin go 1.14 require ( - github.com/BurntSushi/toml v0.3.1 - github.com/manifoldco/promptui v0.7.0 + github.com/drone/envsubst v1.0.2 + github.com/gin-gonic/gin v1.6.3 + github.com/prometheus/client_golang v0.9.3 + github.com/satori/go.uuid v1.2.0 github.com/sirupsen/logrus v1.6.0 github.com/spf13/cobra v1.0.0 + github.com/spf13/viper v1.4.0 ) diff --git a/go.sum b/go.sum index 8be2bef..2a0f183 100644 --- a/go.sum +++ b/go.sum @@ -6,12 +6,9 @@ github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuy github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= +github.com/beorn7/perks v1.0.0 h1:HWo1m869IqiPhD389kmkxeTalrjNbbJTC8LXupb+sl0= github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= -github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= -github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e h1:fY5BOSpyZCqRo5OhCuC+XN+r/bBCmeuuJtjz+bCNIf8= -github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= -github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= github.com/coreos/bbolt v1.3.2/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk= github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= @@ -19,14 +16,31 @@ github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3Ee github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= github.com/cpuguy83/go-md2man/v2 v2.0.0/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= +github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no= +github.com/drone/envsubst v1.0.2 h1:dpYLMAspQHW0a8dZpLRKe9jCNvIGZPhCPrycZzIHdqo= +github.com/drone/envsubst v1.0.2/go.mod h1:bkZbnc/2vh1M12Ecn7EYScpI4YGYU0etwLJICOWi8Z0= +github.com/fsnotify/fsnotify v1.4.7 h1:IXs+QLmnXW2CcXuY+8Mzv/fWEsPGWxqefPtCP5CnV9I= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= +github.com/gin-contrib/sse v0.1.0 h1:Y/yl/+YNO8GZSjAhjMsSuLt29uWRFHdHYUb5lYOV9qE= +github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI= +github.com/gin-gonic/gin v1.6.3 h1:ahKqKTFpO5KTPHxWZjEdPScmYaGtLo8Y4DMHoEsnp14= +github.com/gin-gonic/gin v1.6.3/go.mod h1:75u5sXoLsGZoRN5Sgbi1eraJ4GU3++wFwWzhwvtwp4M= github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= +github.com/go-playground/assert/v2 v2.0.1 h1:MsBgLAaY856+nPRTKrp3/OZK38U/wa0CcBYNjji3q3A= +github.com/go-playground/assert/v2 v2.0.1/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4= +github.com/go-playground/locales v0.13.0 h1:HyWk6mgj5qFqCT5fjGBuRArbVDfE4hi8+e8ceBS/t7Q= +github.com/go-playground/locales v0.13.0/go.mod h1:taPMhCMXrRLJO55olJkUXHZBHCxTMfnGwq/HNwmWNS8= +github.com/go-playground/universal-translator v0.17.0 h1:icxd5fm+REJzpZx7ZfpaD876Lmtgy7VtROAbHHXk8no= +github.com/go-playground/universal-translator v0.17.0/go.mod h1:UkSxE5sNxxRwHyU+Scu5vgOQjsIJAF8j9muTVoKLVtA= +github.com/go-playground/validator/v10 v10.2.0 h1:KgJ0snyC2R9VXYN2rneOtQcw5aHQB1Vv0sFl1UcHBOY= +github.com/go-playground/validator/v10 v10.2.0/go.mod h1:uOYAAleCW8F/7oMFd6aG0GOhaH6EGOAJShg8Id5JGkI= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4= @@ -35,72 +49,104 @@ github.com/golang/groupcache v0.0.0-20190129154638-5b532d6fd5ef/go.mod h1:cIg4er github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.3 h1:gyjaxf+svBWX08ZjK86iN9geUJF0H6gp2IRKX6Nf6/I= +github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= +github.com/google/go-cmp v0.2.0 h1:+dTQ8DZQJz0Mb/HjFlkptS1FeQ4cWSnN941F8aEG4SQ= github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= +github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/gorilla/websocket v1.4.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= github.com/grpc-ecosystem/go-grpc-middleware v1.0.0/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= github.com/grpc-ecosystem/grpc-gateway v1.9.0/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= +github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= +github.com/inconshreveable/mousetrap v1.0.0 h1:Z8tu5sraLXCXIcARxBp/8cbvlwVa7Z1NHg9XEKhtSvM= github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo= -github.com/juju/ansiterm v0.0.0-20180109212912-720a0952cc2a h1:FaWFmfWdAUKbSCtOU2QjDaorUexogfaMgbipgYATUMU= -github.com/juju/ansiterm v0.0.0-20180109212912-720a0952cc2a/go.mod h1:UJSiEoRfvx3hP73CvoARgeLjaIOjybY9vj8PUPPFGeU= +github.com/json-iterator/go v1.1.9 h1:9yzud/Ht36ygwatGx56VwCZtlI/2AD15T1X2sjSuGns= +github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= +github.com/konsorten/go-windows-terminal-sequences v1.0.3 h1:CE8S1cTafDpPvMhIxNJKvHsGVBgn1xWYf1NbHQhywc8= github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= +github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= +github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= -github.com/lunixbochs/vtclean v0.0.0-20180621232353-2d01aacdc34a h1:weJVJJRzAJBFRlAiJQROKQs8oC9vOxvm4rZmBBk0ONw= -github.com/lunixbochs/vtclean v0.0.0-20180621232353-2d01aacdc34a/go.mod h1:pHhQNgMf3btfWnGBVipUOjRYhoOsdGqdm/+2c2E2WMI= +github.com/leodido/go-urn v1.2.0 h1:hpXL4XnriNwQ/ABnpepYM/1vCLWNDfUNts8dX3xTG6Y= +github.com/leodido/go-urn v1.2.0/go.mod h1:+8+nEpDfqqsY+g338gtMEUOtuK+4dEMhiQEgxpxOKII= +github.com/magiconair/properties v1.8.0 h1:LLgXmsheXeRoUOBOjtwPQCWIYqM/LU1ayDtDePerRcY= github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= -github.com/manifoldco/promptui v0.7.0 h1:3l11YT8tm9MnwGFQ4kETwkzpAwY2Jt9lCrumCUW4+z4= -github.com/manifoldco/promptui v0.7.0/go.mod h1:n4zTdgP0vr0S3w7/O/g98U+e0gwLScEXGwov2nIKuGQ= -github.com/mattn/go-colorable v0.0.9 h1:UVL0vNpWh04HeJXV0KLcaT7r06gOH2l4OW6ddYRUIY4= -github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= -github.com/mattn/go-isatty v0.0.4 h1:bnP0vzxcAdeI1zdubAl5PjU6zsERjGZb7raWodagDYs= -github.com/mattn/go-isatty v0.0.4/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= +github.com/mattn/go-isatty v0.0.12 h1:wuysRhFDzyxgEmMf5xjvJ2M9dZoWAXNNr5LSBS7uHXY= +github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= +github.com/matttproud/golang_protobuf_extensions v1.0.1 h1:4hp9jkHxhMHkqkrB3Ix0jegS5sx/RkqARlsWZ6pIwiU= github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= +github.com/mitchellh/mapstructure v1.1.2 h1:fmNYVwqnSfB9mZU6OS2O6GsXM+wcskZDuKQzvN1EDeE= github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= +github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421 h1:ZqeYNhU3OHLH3mGKHDcjJRFFRrJa6eAM5H+CtDdOsPc= +github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742 h1:Esafd1046DLDQ0W1YjYsBW+p8U2u7vzgW2SQVmlNazg= +github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U= +github.com/pelletier/go-toml v1.2.0 h1:T5zMGML61Wp+FlcbWjRDT7yAxhJNAiPPLOFECq181zc= github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= +github.com/prometheus/client_golang v0.9.3 h1:9iH4JKXLzFbOAdtqv/a+j8aewx2Y8lAjAydhbaScPF8= github.com/prometheus/client_golang v0.9.3/go.mod h1:/TN21ttK/J9q6uSwhBd54HahCDft0ttaMvbicHlPoso= github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= +github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90 h1:S/YWwWx/RA8rT8tKFRuGUZhuA90OyIBpPCXkcbwU8DE= github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/common v0.0.0-20181113130724-41aa239b4cce/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= +github.com/prometheus/common v0.4.0 h1:7etb9YClo3a6HjLzfl6rIQaU+FDfi0VSX39io3aQ+DM= github.com/prometheus/common v0.4.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= +github.com/prometheus/procfs v0.0.0-20190507164030-5867b95ac084 h1:sofwID9zm4tzrgykg80hfFph1mryUeLRsUfoocVVmRY= github.com/prometheus/procfs v0.0.0-20190507164030-5867b95ac084/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU= github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg= github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= +github.com/satori/go.uuid v1.2.0 h1:0uYX9dsZ2yD7q2RtLRtPSdGDWzjeM3TbMJP9utgA0ww= +github.com/satori/go.uuid v1.2.0/go.mod h1:dA0hQrYB0VpLJoorglMZABFdXlWrHn1NEOzdhQKdks0= github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= github.com/sirupsen/logrus v1.6.0 h1:UBcNElsrwanuuMsnGSlYmtmgbb23qDR5dG+6X6Oo89I= github.com/sirupsen/logrus v1.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrfsX/uA88= github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM= github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= +github.com/spf13/afero v1.1.2 h1:m8/z1t7/fwjysjQRYbP0RD+bUIF/8tJwPdEZsI83ACI= github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= +github.com/spf13/cast v1.3.0 h1:oget//CVOEoFewqQxwr0Ej5yjygnqGkvggSE/gB35Q8= github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= github.com/spf13/cobra v1.0.0 h1:6m/oheQuQ13N9ks4hubMG6BnvwOeaJrqSPLahSnczz8= github.com/spf13/cobra v1.0.0/go.mod h1:/6GTrnGXV9HjY+aR4k0oJ5tcvakLuG6EuKReYlHNrgE= +github.com/spf13/jwalterweatherman v1.0.0 h1:XHEdyB+EcvlqZamSM4ZOMGlc93t6AcsBEu9Gc1vn7yk= github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= github.com/spf13/pflag v1.0.3 h1:zPAT6CGy6wXeQ7NtTnaTerfKOsV6V6F8agHXFiazDkg= github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= +github.com/spf13/viper v1.4.0 h1:yXHLWeravcrgGyFSyCgdYpXQ9dR9c/WED3pg1RhxqEU= github.com/spf13/viper v1.4.0/go.mod h1:PTJ7Z/lr49W6bUbkmS1V3by4uWynFiR9p7+dSq/yZzE= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= +github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= +github.com/stretchr/testify v1.4.0 h1:2E4SXV/wtOkTonXsotYi4li6zVWxYlZuYNCXe9XRJyk= +github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= github.com/ugorji/go v1.1.4/go.mod h1:uQMGLiO92mf5W77hV/PUCpI3pbzQx3CRekS0kk+RGrc= +github.com/ugorji/go v1.1.7 h1:/68gy2h+1mWMrwZFeD1kQialdSzAb432dtpeJ42ovdo= +github.com/ugorji/go v1.1.7/go.mod h1:kZn38zHttfInRq0xu/PH0az30d+z6vm202qpg1oXVMw= +github.com/ugorji/go/codec v1.1.7 h1:2SvQaVZ1ouYrrKKwoSk2pzd4A9evlKJb9oTL+OaLUSs= +github.com/ugorji/go/codec v1.1.7/go.mod h1:Ax+UKWsSmolVDwsd+7N3ZtXu+yMGCf907BLYF3GoBXY= github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q= go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= @@ -124,13 +170,16 @@ golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5h golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181107165924-66b7b1311ac8/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181122145206-62eef0e2fa9b/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190422165155-953cdadca894 h1:Cz4ceDQGXuKRnVBDTS23GTn/pU5OE2C0WrNTOYK1Uuc= golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200116001909-b77594299b42 h1:vEOn+mP2zCOVzKckCZy6YsCtDblrpj/w7B9nxGNELpg= +golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.2 h1:tW2bmiBqwgJj/UpqtC8EpXEZVYOwU0yG4iWbprSVAcs= +golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= @@ -139,9 +188,12 @@ google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZi google.golang.org/grpc v1.21.0/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 h1:qIbj1fsPNlZgppZ+VLlY7N33q108Sa+fhmuc+sWQYwY= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo= gopkg.in/yaml.v2 v2.0.0-20170812160011-eb3733d160e7/go.mod h1:JAlM8MvJe8wmxCU4Bli9HhUf9+ttbYbLASfIpnQbh74= gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.8 h1:obN1ZagJSUGI0Ek/LBmuj4SNLPfIny3KsKFopxRdj10= +gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= diff --git a/misc/config.toml b/misc/config.toml deleted file mode 100644 index ad61512..0000000 --- a/misc/config.toml +++ /dev/null @@ -1,4 +0,0 @@ -# Penguin Config - -[General] - key = "value"