From ffb4f534326508b77bd87839a3719c67d41b35aa Mon Sep 17 00:00:00 2001 From: smolveau Date: Thu, 28 Jan 2021 16:37:16 -0500 Subject: [PATCH] Refactoring (#51) * Refactoring * Adding logging on fullURL and deleting useless logging in HTTP * Adding threads option * semantic and tests * Adding testing for core functions * Adding unit tests : - Adding test for severity core - Testing plugins - Fix bug in scan worker * Adding tests for signatures * Testing on signatures * Adding unit testing in Github CI and build, new logo * Resizing new logo in Readme Installing go before go test * Refactor Readme testing part * Deleting useless file Co-authored-by: PulsZ --- .github/workflows/build.yml | 2 + .github/workflows/docker-publish.yml | 7 +- .gitignore | 132 ++++ README.md | 78 +- app/list.go | 55 -- app/scan.go | 289 ------- chopchop.yml | 102 +-- cmd/list.go | 73 +- cmd/root.go | 53 +- cmd/scan.go | 263 +++++-- cmd/signatures.go | 89 +++ core/config.go | 18 + core/output.go | 10 + core/scan.go | 149 ++++ core/scan_test.go | 52 ++ core/severity.go | 40 + core/severity_test.go | 61 ++ core/signatures.go | 253 ++++++ core/signatures_test.go | 285 +++++++ data/format_output.go | 68 -- docs/img/chopchop_logo.png | Bin 0 -> 233686 bytes {img => docs/img}/demo.gif | Bin go.mod | 34 +- go.sum | 623 ++++++++++----- img/chopchop_logo.png | Bin 10640 -> 0 bytes internal/export/export.go | 77 ++ internal/export/export_test.go | 54 ++ .../formatting/formatting.go | 36 +- internal/formatting/formatting_test.go | 19 + internal/http.go | 9 + internal/httpget/httpget.go | 76 ++ internal/httpget/httpget_test.go | 30 + mock/formatting.go | 1 + mock/httpget.go | 30 + mock/output.go | 65 ++ mock/scan.go | 42 + mock/signatures.go | 122 +++ pkg/format_csv.go | 30 - pkg/format_json.go | 80 -- pkg/http.go | 36 - pkg/resp_analysis.go | 101 --- tests/200.yml | 738 ++++++++++++++++++ tests/server.go | 16 + 43 files changed, 3196 insertions(+), 1102 deletions(-) create mode 100644 .gitignore delete mode 100644 app/list.go delete mode 100644 app/scan.go create mode 100644 cmd/signatures.go create mode 100644 core/config.go create mode 100644 core/output.go create mode 100644 core/scan.go create mode 100644 core/scan_test.go create mode 100644 core/severity.go create mode 100644 core/severity_test.go create mode 100644 core/signatures.go create mode 100644 core/signatures_test.go delete mode 100644 data/format_output.go create mode 100644 docs/img/chopchop_logo.png rename {img => docs/img}/demo.gif (100%) delete mode 100644 img/chopchop_logo.png create mode 100644 internal/export/export.go create mode 100644 internal/export/export_test.go rename pkg/format_output_table.go => internal/formatting/formatting.go (54%) create mode 100644 internal/formatting/formatting_test.go create mode 100644 internal/http.go create mode 100644 internal/httpget/httpget.go create mode 100644 internal/httpget/httpget_test.go create mode 100644 mock/formatting.go create mode 100644 mock/httpget.go create mode 100644 mock/output.go create mode 100644 mock/scan.go create mode 100644 mock/signatures.go delete mode 100644 pkg/format_csv.go delete mode 100644 pkg/format_json.go delete mode 100644 pkg/http.go delete mode 100644 pkg/resp_analysis.go create mode 100644 tests/200.yml create mode 100644 tests/server.go diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index f558704..502a6c9 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -10,6 +10,8 @@ jobs: go-version: 1.14.x - name: Checkout code uses: actions/checkout@v2 + - name: Unit Tests + uses: go test ./... - name: Install gox run: go get github.com/mitchellh/gox - name: Build using gox diff --git a/.github/workflows/docker-publish.yml b/.github/workflows/docker-publish.yml index 9777e04..aaccabe 100644 --- a/.github/workflows/docker-publish.yml +++ b/.github/workflows/docker-publish.yml @@ -44,8 +44,13 @@ jobs: if: github.event_name == 'push' steps: + - name: Install Go + uses: actions/setup-go@v2 + with: + go-version: 1.14.x - uses: actions/checkout@v2 - + - name: Unit Tests + uses: go test ./... - name: Build image run: docker build . --file Dockerfile --tag $IMAGE_NAME diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..da21c80 --- /dev/null +++ b/.gitignore @@ -0,0 +1,132 @@ + +# Created by https://www.toptal.com/developers/gitignore/api/go,jetbrains +# Edit at https://www.toptal.com/developers/gitignore?templates=go,jetbrains + +### Go ### +# Binaries for programs and plugins +*.exe +*.exe~ +*.dll +*.so +*.dylib + +# Test binary, built with `go test -c` +*.test +*.txt +*.json +*.csv + +# Output of the go coverage tool, specifically when used with LiteIDE +*.out + +# Dependency directories (remove the comment below to include it) +# vendor/ + +### Go Patch ### +/vendor/ +/Godeps/ + +### JetBrains ### +# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio, WebStorm and Rider +# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839 + +# User-specific stuff +.idea/**/workspace.xml +.idea/**/tasks.xml +.idea/**/usage.statistics.xml +.idea/**/dictionaries +.idea/**/shelf + +# Generated files +.idea/**/contentModel.xml + +# Sensitive or high-churn files +.idea/**/dataSources/ +.idea/**/dataSources.ids +.idea/**/dataSources.local.xml +.idea/**/sqlDataSources.xml +.idea/**/dynamic.xml +.idea/**/uiDesigner.xml +.idea/**/dbnavigator.xml + +# Gradle +.idea/**/gradle.xml +.idea/**/libraries + +# Gradle and Maven with auto-import +# When using Gradle or Maven with auto-import, you should exclude module files, +# since they will be recreated, and may cause churn. Uncomment if using +# auto-import. +# .idea/artifacts +# .idea/compiler.xml +# .idea/jarRepositories.xml +# .idea/modules.xml +# .idea/*.iml +# .idea/modules +# *.iml +# *.ipr + +# CMake +cmake-build-*/ + +# Mongo Explorer plugin +.idea/**/mongoSettings.xml + +# File-based project format +*.iws + +# IntelliJ +out/ + +# mpeltonen/sbt-idea plugin +.idea_modules/ + +# JIRA plugin +atlassian-ide-plugin.xml + +# Cursive Clojure plugin +.idea/replstate.xml + +# Crashlytics plugin (for Android Studio and IntelliJ) +com_crashlytics_export_strings.xml +crashlytics.properties +crashlytics-build.properties +fabric.properties + +# Editor-based Rest Client +.idea/httpRequests + +# Android studio 3.1+ serialized cache file +.idea/caches/build_file_checksums.ser + +### JetBrains Patch ### +# Comment Reason: https://github.com/joeblau/gitignore.io/issues/186#issuecomment-215987721 + +# *.iml +# modules.xml +# .idea/misc.xml +# *.ipr + +# Sonarlint plugin +# https://plugins.jetbrains.com/plugin/7973-sonarlint +.idea/**/sonarlint/ + +# SonarQube Plugin +# https://plugins.jetbrains.com/plugin/7238-sonarqube-community-plugin +.idea/**/sonarIssues.xml + +# Markdown Navigator plugin +# https://plugins.jetbrains.com/plugin/7896-markdown-navigator-enhanced +.idea/**/markdown-navigator.xml +.idea/**/markdown-navigator-enh.xml +.idea/**/markdown-navigator/ + +# Cache file creation bug +# See https://youtrack.jetbrains.com/issue/JBR-2257 +.idea/$CACHE_FILE$ + +# CodeStream plugin +# https://plugins.jetbrains.com/plugin/12206-codestream +.idea/codestream.xml + +# End of https://www.toptal.com/developers/gitignore/api/go,jetbrains diff --git a/README.md b/README.md index 32b20ec..b9e6650 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -

+

[![Build Status](https://github.com/michelin/ChopChop/workflows/Build%20ChopChop/badge.svg)](https://github.com/michelin/ChopChop/actions) [![License](https://img.shields.io/badge/license-Apache-green.svg)](https://opensource.org/licenses/Apache-2.0) @@ -11,7 +11,7 @@ Its goal is to scan several endpoints and identify exposition of services/files/folders through the webroot. Checks/Signatures are declared in a config file (by default: `chopchop.yml`), fully configurable, and especially by developers. -

+

> "Chop chop" is a phrase rooted in Cantonese. "Chop chop" means "hurry" and suggests that something should be done now and **without delay**. @@ -46,7 +46,7 @@ There should be a resulting `gochopchop` binary in the folder. Thanks to [Github Container Registry](https://github.blog/2020-09-01-introducing-github-container-registry/), we are able to provide you some freshly-build Docker images! ``` -docker run ghcr.io/michelin/gochopchop scan -u https://foobar.com --verbose +docker run ghcr.io/michelin/gochopchop scan https://foobar.com -v debug ``` But if you prefer, you can also build it locally, see below: @@ -62,29 +62,40 @@ docker build -t gochopchop . We are continuously trying to make `goChopChop` as easy as possible. Scanning a host with this utility is as simple as : ```bash -$ ./gochopchop scan --url https://foobar.com +$ ./gochopchop scan https://foobar.com ``` ### Using Docker ```bash -docker run gochopchop scan --url https://foobar.com +docker run gochopchop scan https://foobar.com ``` #### Custom configuration file ```bash -docker run -v ./:/app chopchop scan -c /app/chopchop.yml --url https://foobar.com +docker run -v ./:/app chopchop scan -c /app/chopchop.yml https://foobar.com ``` ## What's next The Golang rewrite took place a couple of months ago but there's so much to do, still. Here are some features we are planning to integrate : -* Threading for better performance -* Colors and better formatting -* Ability to filter checks/signatures to search for -* And much more! +[x] Threading for better performance +[x] Ability to specify the number of concurrent threads +[x] Colors and better formatting +[x] Ability to filter checks/signatures to search for +[x] Mock and unit tests +[x] Github CI +And much more! +## Testing + +To quickly end-to-end test chopchop, we provided a web-server in `tests/server.go`. +To try it, please run `go run tests/server.go` then run chopchop with the following command `./gochopchop scan http://localhost:8000 --verbosity Debug`. +ChopChop should print "no vulnerabilities found". + +There are also unit test that you can launch with `go test -v ./...`. +These tests are integrated in the github CI workflow. ## Available flags @@ -92,20 +103,18 @@ You can find the available flags available for the `scan` command : | Flag | Full flag | Description | |---|---|---| -| `-b` | `--block ` | Block pipeline if severity is over or equal specified flag| | `-h` | `--help` | Help wizard | -| `-u` | `--url ` | Set the target URL | -| `-i` | `--insecure` | Disable SSL Verification | -| `-c` | `--config-file ` | Set a custom configuration file | -| `-f` | `--url-file ` | Set a file containing a list of URLs | -| `-p` | `--prefix ` | Add prefix to urls when flag url-file is specified | -| `-s` | `--suffix ` | Add suffix to urls when flag url-file is specified | -| `-t` | `--timeout ` | Timeout for the HTTP requests (default: 10s) | -| `-v` | `--verbose` | Verbose mode | -| | `--csv` | Export results in CSV | -| | `--json` | Export results in JSON | -| | `--csv-file ` | Filename for the CSV export | -| | `--json-file ` | Filename for the JSON export | +| `-v` | `--verbosity` | Verbose level of logging | +| `-c` | `--signature` | Path of custom signature file | +| `-k` | `--insecure` | Disable SSL Verification | +| `-u` | `--url-file` | Path to a specified file containing urls to test | +| `-b` | `--max-severity` | Block the CI pipeline if severity is over or equal specified flag | +| `-e` | `--export` | Export type of the output (csv and/or json) | +|| `--export-filename` | Specify the filename for the export file(s) | +| `-t` | `--timeout` | Timeout for the HTTP requests | +|| `--severity-filter` | Filter Plugins by severity | +|| `--plugin-filter` | Filter Plugins by name of plugin | +|| `--threads` | Number of concurrent threads | ## Advanced usage @@ -115,13 +124,13 @@ Note: Redirectors like `>` for post processing can be used. - Ability to scan and disable SSL verification ```bash -$ ./gochopchop scan --url https://foobar.com --insecure +$ ./gochopchop scan https://foobar.com --insecure ``` - Ability to scan with a custom configuration file (including custom plugins) ```bash -$ ./gochopchop scan --url https://foobar.com --insecure --config-file test_config.yml +$ ./gochopchop scan https://foobar.com --insecure --signature test_config.yml ``` - Ability to list all the plugins or by severity : `plugins` or ` plugins --severity High` @@ -130,16 +139,22 @@ $ ./gochopchop scan --url https://foobar.com --insecure --config-file test_confi $ ./gochopchop plugins --severity High ``` -- Ability to block the CI pipeline by severity level (equal or over specified severity) : `--block Medium` +- Ability to specify number of concurrent threads : `--threads 4` for 4 workers + +```bash +$ ./gochopchop plugins --threads 4 +``` + +- Ability to block the CI pipeline by severity level (equal or over specified severity) : `--max-severity Medium` ```bash -$ ./gochopchop scan --url https://foobar.com --insecure --block Medium +$ ./gochopchop scan https://foobar.com --max-severity Medium ``` - Ability to specify specific signatures to be checked ```bash -./gochopchop scan -u https://foobar.com --timeout 1 --verbose --csv --csv-file boo.csv --signature-name "Git,Zimbra,Jenkins" +./gochopchop scan https://foobar.com --timeout 1 --verbosity --export=csv,json --export-filename boo --plugin-filters=Git,Zimbra,Jenkins ``` - Ability to list all the plugins @@ -163,7 +178,7 @@ $ ./gochopchop scan --url-file url_file.txt - Export GoChopChop results in CSV and JSON format ```bash -$ ./gochopchop scan --url https://foobar.com --json --csv --csv-file results.csv --json-file results.json +$ ./gochopchop scan https://foobar.com --export=csv,json --export-filename results ``` ## Creating a new check @@ -171,7 +186,7 @@ $ ./gochopchop scan --url https://foobar.com --json --csv --csv-file results.cs Writing a new check is as simple as : ```yaml - - uri: "/.git/config" + - endpoint: "/.git/config" checks: - name: Git exposed match: @@ -181,7 +196,7 @@ Writing a new check is as simple as : severity: "High" ``` -An URI (eg. ```/.git/config```) is mapped to multiple checks which avoids sending X requests for X checks. Multiple checks can be done through a single HTTP request. +An endpoint (eg. ```/.git/config```) is mapped to multiple checks which avoids sending X requests for X checks. Multiple checks can be done through a single HTTP request. Each check needs those fields: | Attribute | Type | Description | Optional ? | Example | @@ -192,6 +207,7 @@ Each check needs those fields: | severity | Enum("High", "Medium", "Low", "Informational") | Rate the criticity if it triggers in your environment| No | High | | status_code | integer | The HTTP status code that should be returned | Yes | 200 | | headers | List of string | List of headers there should be in the HTTP response | Yes | N/A | +| no_headers | List of string | List of headers there should NOT be in the HTTP response | Yes | N/A | | match | List of string| List the strings there should be in the HTTP response | Yes | "[branch" | | no_match | List of string | List the strings there should NOT be in the HTTP response | Yes | N/A | | query_string | GET parameters that have to be passed to the endpoint | String | Yes | `query_string: "id=FOO-chopchoptest"` | diff --git a/app/list.go b/app/list.go deleted file mode 100644 index a5e7238..0000000 --- a/app/list.go +++ /dev/null @@ -1,55 +0,0 @@ -package app - -import ( - "gochopchop/data" - "io/ioutil" - "log" - "os" - - "github.com/jedib0t/go-pretty/table" - "github.com/spf13/cobra" - "gopkg.in/yaml.v2" -) - -// List checks of config file -func List(cmd *cobra.Command, args []string) { - - configFile, _ := cmd.Flags().GetString("config-file") - severity, _ := cmd.Flags().GetString("severity") - - file, err := os.Open(configFile) - if err != nil { - log.Fatal(err) - } - - defer file.Close() - fileData, err := ioutil.ReadAll(file) - y := data.Config{} - - err = yaml.Unmarshal([]byte(fileData), &y) - if err != nil { - log.Fatalf("error: %v", err) - } - cpt := 0 - t := table.NewWriter() - t.SetOutputMirror(os.Stdout) - t.AppendHeader(table.Row{"URL", "Plugin Name", "Severity", "Description"}) - for index, plugin := range y.Plugins { - _ = index - for index, check := range plugin.Checks { - _ = index - // If the user wants a specific severity, collect only specified severity checks - if severity != "" { - if severity == string(*check.Severity) { - t.AppendRow([]interface{}{plugin.URI, check.PluginName, *check.Severity, *check.Description}) - cpt++ - } - } else { - t.AppendRow([]interface{}{plugin.URI, check.PluginName, *check.Severity, *check.Description}) - cpt++ - } - } - } - t.AppendFooter(table.Row{"", "", "Total Checks", cpt}) - t.Render() -} diff --git a/app/scan.go b/app/scan.go deleted file mode 100644 index 68dc39a..0000000 --- a/app/scan.go +++ /dev/null @@ -1,289 +0,0 @@ -package app - -import ( - "bufio" - "fmt" - "gochopchop/data" - "gochopchop/pkg" - "io/ioutil" - "log" - "os" - "strings" - "sync" - "time" - - "github.com/spf13/cobra" - "gopkg.in/yaml.v2" -) - -// Verbose Verbose function -func Verbose(message string, verbose bool) { - if verbose { - fmt.Println("[verbose] " + message) - } -} - -// Scan of domain via url -func Scan(cmd *cobra.Command, args []string) { - start := time.Now() - - url, _ := cmd.Flags().GetString("url") - insecure, _ := cmd.Flags().GetBool("insecure") - csv, _ := cmd.Flags().GetBool("csv") - json, _ := cmd.Flags().GetBool("json") - csvFile, _ := cmd.Flags().GetString("csv-file") - jsonFile, _ := cmd.Flags().GetString("json-file") - signatureName, _ := cmd.Flags().GetString("signature-name") - severity, _ := cmd.Flags().GetString("severity") - urlFile, _ := cmd.Flags().GetString("url-file") - configFile, _ := cmd.Flags().GetString("config-file") - suffix, _ := cmd.Flags().GetString("suffix") - prefix, _ := cmd.Flags().GetString("prefix") - httpRequestTimeout, _ := cmd.Flags().GetInt("timeout") - blockedFlag, _ := cmd.Flags().GetString("block") - verbose, _ := cmd.Flags().GetBool("verbose") - - var tmpURL string - var urlList []string - - if url == "" && urlFile == "" { - log.Fatal("`url` or either `url-file` have been specified! Use `scan -help` for usage") - } - - cfg, err := os.Open(configFile) - if err != nil { - log.Fatal(err) - } - - defer cfg.Close() - dataCfg, err := ioutil.ReadAll(cfg) - - if url != "" { - urlList = append(urlList, url) - } - - if urlFile != "" { - urlFileContent, err := os.Open(urlFile) - if err != nil { - log.Fatal(err) - } - defer urlFileContent.Close() - - scanner := bufio.NewScanner(urlFileContent) - for scanner.Scan() { - urlList = append(urlList, scanner.Text()) - } - if err := scanner.Err(); err != nil { - log.Fatal(err) - } - } - - y := data.Config{} - if err = yaml.Unmarshal([]byte(dataCfg), &y); err != nil { - log.Fatal(err) - } - // If flag insecure isn't specified, check yaml file if it's specified in it - if insecure { - Verbose("Launching scan without validating the SSL certificate", verbose) - } else { - insecure = y.Insecure - } - - CheckStructFields(y) - hit := false - block := false - out := []data.Output{} - - var wg sync.WaitGroup - wg.Add(len(urlList)) - - tags := strings.Split(signatureName, ",") - - for i := 0; i < len(urlList); i++ { - go func(domain string) { - defer wg.Done() - Verbose("Testing domain : "+prefix+domain+suffix, verbose) - for _, plugin := range y.Plugins { - - var uris []string - // check the present of `uri` and `uris` which has to be forbidden - if len(plugin.ListOfURI) > 0 && plugin.URI != "" { - log.Fatal("You can't both have `uri` and `uris` specified for URI: " + plugin.URI) - } - - if plugin.URI != "" { - uris = make([]string, 1) - uris[0] = plugin.URI - } else { - uris = plugin.ListOfURI - } - - for j := 0; j < len(uris); j++ { - canExecutePluginByName := isPluginAuthorized(plugin, tags) - if !canExecutePluginByName { - Verbose("Skipping signature rule with URI: "+uris[j], verbose) - } - - canExecutePluginBySeverity := isPluginAuthorizedBySeverity(plugin, severity) - if !canExecutePluginBySeverity { - Verbose("Skipping signature rule with URI: "+uris[j], verbose) - } - - if canExecutePluginByName && canExecutePluginBySeverity { - tmpURL = prefix + domain + suffix + fmt.Sprint(uris[j]) - if plugin.QueryString != "" { - tmpURL += "?" + plugin.QueryString - } - - // By default we follow HTTP redirects - followRedirects := true - // But for each plugin we can override and don't follow HTTP redirects - if plugin.FollowRedirects != nil && *plugin.FollowRedirects == false { - followRedirects = false - } - - Verbose("Testing URL: "+tmpURL, verbose) - httpResponse, err := pkg.HTTPGet(insecure, tmpURL, followRedirects, httpRequestTimeout) - if err != nil { - fmt.Println(err) - } - - if httpResponse != nil { - for _, check := range plugin.Checks { - if severity != "" && check.Severity.String() != severity { - continue // break if the severity is defined and different from the one we specified - } - answer := pkg.ResponseAnalysis(httpResponse, check) - if answer { - Verbose("[!] Hit found!\n\tURL: "+tmpURL+"\n\tPlugin: "+check.PluginName+"\n\tSeverity: "+string(*check.Severity), verbose) - hit = true - if BlockCI(blockedFlag, *check.Severity) { - block = true - } - out = append(out, data.Output{ - Domain: domain, - PluginName: check.PluginName, - TestedURL: uris[j], - Severity: string(*check.Severity), - Remediation: *check.Remediation, - }) - } - } - _ = httpResponse.Body.Close() - } - } - } - } - }(urlList[i]) - } - - wg.Wait() - - if hit { - pkg.FormatOutputTable(out) - if json { - outputJSON := pkg.AddVulnToOutputJSON(out) - pkg.WriteJSONOutput(jsonFile, outputJSON) - } - if csv { - pkg.WriteCSVOutput(csvFile, out) - } - } - - elapsed := time.Since(start) - Verbose(fmt.Sprintf("Scan execution time: %s", elapsed), verbose) - - // return EXIT_SUCCESS if - // 1. no hit - // 2. no vulns >= the cricity we're looking for - if hit { - if blockedFlag != "" && !block { - os.Exit(0) - } else { - os.Exit(1) - } - } else { - fmt.Println("No vulnerabilities found.") - } -} - -// isPluginAuthorizedBySeverity returns `true` if there's at least one check with the same severity -func isPluginAuthorizedBySeverity(signature data.Signature, severity string) bool { - // if the flag is not properly set by the user, return true and execute them all - if severity == "" { - return true - } - for _, check := range signature.Checks { - if check.Severity.String() == severity { - return true - } - } - return false -} - -// isPluginAuthorized returns `true` if there's at least one tag in a check name -func isPluginAuthorized(signature data.Signature, tags []string) bool { - // if the flag is not properly set by the user, return true and execute them all - if tags[0] == "" { - return true - } - for j := 0; j < len(tags); j++ { - for _, check := range signature.Checks { - // fmt.Println(check.PluginName) - // fmt.Println(tags[j]) - - // if there's one tag in one of the `checks`, we do the request - // otherwise, we don't - if strings.Contains(check.PluginName, tags[j]) { - return true - } - } - } - return false -} - -// BlockCI function will allow the user to return a different status code depending on the highest severity that has triggered -func BlockCI(severity string, severityType data.SeverityType) bool { - switch severity { - case "High": - if severityType == data.High { - return true - } - case "Medium": - if severityType == data.High || severityType == data.Medium { - return true - } - case "Low": - if severityType == data.High || severityType == data.Medium || severityType == data.Low { - return true - } - case "Informational": - if severityType == data.High || severityType == data.Medium || severityType == data.Low || severityType == data.Informational { - return true - } - } - return false -} - -// CheckStructFields will parse the YAML configuration file -func CheckStructFields(conf data.Config) { - for index, plugin := range conf.Plugins { - _ = index - for index, check := range plugin.Checks { - _ = index - if check.Description == nil { - log.Fatal("Missing description field in " + check.PluginName + " plugin checks. Stopping execution.") - } - if check.Remediation == nil { - log.Fatal("Missing remediation field in " + check.PluginName + " plugin checks. Stopping execution.") - } - if check.Severity == nil { - log.Fatal("Missing severity field in " + check.PluginName + " plugin checks. Stopping execution.") - } else { - if err := data.SeverityType.IsValid(*check.Severity); err != nil { - log.Fatal(" ------ Unknown severity type : " + string(*check.Severity) + " . Only Informational / Low / Medium / High are valid severity types.") - } - } - } - } -} diff --git a/chopchop.yml b/chopchop.yml index f77addf..51cdbf9 100644 --- a/chopchop.yml +++ b/chopchop.yml @@ -1,7 +1,7 @@ --- insecure: false plugins: - - uri: "/status.shtml" + - endpoint: "/status.shtml" checks: - name: GENEREX UPS match: @@ -10,7 +10,7 @@ plugins: description: GENEREX UPS is accessible | don't move this rule to avoid client timeout severity: "Medium" tested: true - - uri: "/" + - endpoint: "/" checks: - name: HP Printer headers: @@ -245,7 +245,7 @@ plugins: description: Detects the presence of php errors via the fopen call severity: "Low" tested: true - - uri: "/.git/config" + - endpoint: "/.git/config" checks: - name: Git exposed status_code: 200 @@ -258,7 +258,7 @@ plugins: description: Checks that the GIT repository is accessible from the site severity: "High" tested: true - - uri: "/crossdomain.xml" + - endpoint: "/crossdomain.xml" checks: - name: wildcard match: @@ -267,7 +267,7 @@ plugins: description: Checks for the presence of a crossdomain.xml file with a wildcard for the domain severity: "High" tested: true - - uri: "/manager/html" + - endpoint: "/manager/html" checks: - name: tomcat manager status_code: 401 @@ -275,7 +275,7 @@ plugins: description: Checks that under /manager/html the Tomcat administration interface is not accessible severity: "Medium" tested: true - - uri: "/.htpasswd" + - endpoint: "/.htpasswd" checks: - name: .htpasswd not interpreted match: @@ -288,7 +288,7 @@ plugins: no_match: - " 0 { + + formatting.PrintTable(result, os.Stdout) + + if contains(config.ExportFormats, "json") { + export.ExportJSON(config.ExportFilename, result) + } + if contains(config.ExportFormats, "csv") { + export.ExportCSV(config.ExportFilename, result) + } + + if config.MaxSeverity != "" { + for _, output := range result { + if core.SeverityReached(config.MaxSeverity, output.Severity) { + return fmt.Errorf("Max severity level reached, exiting with error code") + } + } + } + } else { + log.Info("No vulnerabilities found. Exiting...") + } + return nil +} + +func parseConfig(cmd *cobra.Command, args []string) (*core.Config, error) { + urlFile, err := cmd.Flags().GetString("url-file") if err != nil { - return fmt.Errorf("invalid value for urlFile: %v", err) + return nil, fmt.Errorf("invalid value for url-file: %v", err) } - suffix, err := cmd.Flags().GetString("suffix") - if err != nil { - return fmt.Errorf("invalid value for suffix: %v", err) + + if urlFile != "" && len(args) >= 1 { + // both urlFile and url are set, abort + return nil, fmt.Errorf("Can't specify url with url list flag") } - prefix, err := cmd.Flags().GetString("prefix") - if err != nil { - return fmt.Errorf("invalid value for prefix: %v", err) + if urlFile == "" && len(args) == 0 { + // no urlFile and no argument, abort + return nil, fmt.Errorf("No url provided, please set the input-file flag or provide an url as an argument") } - block, err := cmd.Flags().GetString("block") - if err != nil { - return fmt.Errorf("invalid value for block: %v", err) - } - // if url != "" { - // if !strings.HasPrefix(url, "http") { - // // If http or https not specified, return fatal log - // return fmt.Errorf("URL needs a specified prefix : http:// or https://") - // } - // } - if suffix != "" || prefix != "" { - if urlFile == "" { - return fmt.Errorf("suffix or prefix flags can't be assigned if flag url-file is not specified") + + var urls []string + if urlFile != "" { + content, err := os.Open(urlFile) + if err != nil { + return nil, err + } + defer content.Close() + scanner := bufio.NewScanner(content) + for scanner.Scan() { + url := scanner.Text() + if !isURL(url) { + log.Warn("url: ", url, " - is not valid - skipping scan") + continue + } + urls = append(urls, url) } + if err := scanner.Err(); err != nil { + return nil, err + } + } + + if len(args) > 1 { + return nil, fmt.Errorf("Please provide only one URL") } - if block != "" { - if block == "High" || block == "Medium" || block == "Low" || block == "Informational" { - fmt.Println("Block pipeline if severity is over or equal : " + block) + + if len(args) == 1 { + url := args[0] + if isURL(url) { + urls = append(urls, url) } else { - log.Fatal(" ------ Unknown severity type : " + block + " . Only Informational / Low / Medium / High are valid severity types.") + return nil, fmt.Errorf("Please provide a valid URL") } } - if _, err := os.Stat(configFile); os.IsNotExist(err) { - return fmt.Errorf("filepath of config file is not valid") + + insecure, err := cmd.Flags().GetBool("insecure") + if err != nil { + return nil, fmt.Errorf("invalid value for insecure: %v", err) } - if !strings.HasSuffix(configFile, ".yml") { - return fmt.Errorf("config file needs to be a yaml file") + + severityFilter, err := cmd.Flags().GetString("severity-filter") + if err != nil { + return nil, fmt.Errorf("invalid value for severity-filter: %v", err) } - if urlFile != "" { - if _, err := os.Stat(urlFile); os.IsNotExist(err) { - return fmt.Errorf("filepath of url file is not valid") + if severityFilter != "" { + if !core.ValidSeverity(severityFilter) { + return nil, fmt.Errorf("Invalid severity level : %s. Please use : %s", severityFilter, core.SeveritiesAsString()) } } - if err := cmd.Flags().Set("config-file", configFile); err != nil { - return fmt.Errorf("error while setting filepath of config file") + + pluginFilters, err := cmd.Flags().GetStringSlice("plugin-filters") + if err != nil { + return nil, fmt.Errorf("invalid value for plugin-filters: %v", err) } - if err := cmd.Flags().Set("url-file", urlFile); err != nil { - return fmt.Errorf("error while setting filepath of url file") + + exportFormats, err := cmd.Flags().GetStringSlice("export") + if err != nil { + return nil, fmt.Errorf("invalid value for export formats: %v", err) } - if err := cmd.Flags().Set("url", url); err != nil { - return fmt.Errorf("error while setting url") + if len(exportFormats) > 0 { + for _, f := range exportFormats { + if f != "csv" && f != "json" { + return nil, fmt.Errorf("invalid value for export: %v , expected csv or json", f) + } + } + } + + maxSeverity, err := cmd.Flags().GetString("max-severity") + if err != nil { + return nil, fmt.Errorf("invalid value for max sevirity : %v", err) } - if err := cmd.Flags().Set("suffix", suffix); err != nil { - return fmt.Errorf("error while setting suffix") + if maxSeverity != "" && !core.ValidSeverity(maxSeverity) { + return nil, fmt.Errorf("Invalid max severity level : %s. Please use : %s", maxSeverity, core.SeveritiesAsString()) } - if err := cmd.Flags().Set("prefix", prefix); err != nil { - return fmt.Errorf("error while setting prefix") + + exportFilename, err := cmd.Flags().GetString("export-filename") + if err != nil { + return nil, fmt.Errorf("invalid value for exportFilename: %v", err) } - if err := cmd.Flags().Set("block", block); err != nil { - return fmt.Errorf("error while setting block flag") + if exportFilename == "" { + now := time.Now().Format("2006-01-02_15-04-05") + exportFilename = fmt.Sprintf("gochopchop_%s", now) } - return nil + + timeout, err := cmd.Flags().GetInt("timeout") + if err != nil { + return nil, fmt.Errorf("Invalid value for timeout: %v", err) + } + + threads, err := rootCmd.Flags().GetInt("threads") + if err != nil { + return nil, fmt.Errorf("invalid value for threads: %w", err) + } + + if threads <= 0 { + return nil, fmt.Errorf("The number of threads must be positive") + } + + config := &core.Config{ + HTTP: core.HTTPConfig{ + Insecure: insecure, + Timeout: timeout, + }, + MaxSeverity: maxSeverity, + ExportFormats: exportFormats, + Urls: urls, + ExportFilename: exportFilename, + SeverityFilter: severityFilter, + PluginFilter: pluginFilters, + Threads: threads, + } + + return config, nil +} + +func isURL(str string) bool { + u, err := url.Parse(str) + return err == nil && u.Scheme != "" && u.Host != "" +} + +func contains(s []string, e string) bool { + for _, a := range s { + if a == e { + return true + } + } + return false } diff --git a/cmd/signatures.go b/cmd/signatures.go new file mode 100644 index 0000000..a7cf29b --- /dev/null +++ b/cmd/signatures.go @@ -0,0 +1,89 @@ +package cmd + +import ( + "fmt" + "gochopchop/core" + "io/ioutil" + "os" + "strings" + + "github.com/spf13/cobra" + "gopkg.in/yaml.v2" +) + +var signatureFlagName = "signatures" +var signatureFlagShorthand = "c" +var signatureDefaultFilename = "chopchop.yml" + +func addSignaturesFlag(cmd *cobra.Command) error { + cmd.Flags().StringP(signatureFlagName, signatureFlagShorthand, signatureDefaultFilename, "path to signature file") // --signature ou -c + return nil +} + +func parseSignatures(cmd *cobra.Command) (*core.Signatures, error) { + + signatureFile, err := cmd.Flags().GetString(signatureFlagName) + if err != nil { + return nil, fmt.Errorf("Invalid value for signatureFile: %v", err) + } + if _, err := os.Stat(signatureFile); os.IsNotExist(err) { + return nil, fmt.Errorf("Path of signatures file is not valid") + } + + file, err := os.Open(signatureFile) + if err != nil { + return nil, err + } + defer file.Close() + + signatureData, err := ioutil.ReadAll(file) + if err != nil { + return nil, err + } + + signatures := core.NewSignatures() + + err = yaml.Unmarshal([]byte(signatureData), signatures) + if err != nil { + return nil, err + } + + severityFilter, _ := cmd.Flags().GetString("severity-filter") + if severityFilter != "" { + signatures.FilterBySeverity(severityFilter) + } + + pluginFilters, _ := cmd.Flags().GetStringSlice("plugin-filters") + if len(pluginFilters) > 0 { + signatures.FilterByNames(pluginFilters) + } + + for _, plugin := range signatures.Plugins { + if plugin.Endpoint == "" { + if len(plugin.Endpoints) > 0 { + return nil, fmt.Errorf("URI and URIs can't be set at the same time in plugin checks. Stopping execution") + } + } + for _, check := range plugin.Checks { + if check.Description == "" { + return nil, fmt.Errorf("Missing or empty description field in %s plugin checks. Stopping execution", check.Name) + } + if check.Remediation == "" { + return nil, fmt.Errorf("Missing or empty remediation field in %s plugin checks. Stopping execution", check.Name) + } + if check.Severity == "" { + return nil, fmt.Errorf("Missing severity field in %s plugin checks. Stopping execution", check.Name) + } + if !core.ValidSeverity(check.Severity) { + return nil, fmt.Errorf("Invalid severity : %s. Please use : %s", check.Severity, core.SeveritiesAsString()) + } + for _, header := range check.Headers { + if len(strings.Split(header, ":")) < 2 { + return nil, fmt.Errorf("Invalid header format : %s. Format should be KEY:VALUE", header) + } + } + } + } + + return signatures, nil +} diff --git a/core/config.go b/core/config.go new file mode 100644 index 0000000..a9bc0ac --- /dev/null +++ b/core/config.go @@ -0,0 +1,18 @@ +package core + +// Struct for config flags +type Config struct { + HTTP HTTPConfig + MaxSeverity string + ExportFormats []string + Urls []string + ExportFilename string + SeverityFilter string + PluginFilter []string + Threads int +} + +type HTTPConfig struct { + Insecure bool + Timeout int +} diff --git a/core/output.go b/core/output.go new file mode 100644 index 0000000..b516719 --- /dev/null +++ b/core/output.go @@ -0,0 +1,10 @@ +package core + +// Output structure for each findings +type Output struct { + URL string `json:"url"` + Endpoint string `json:"endpoint"` + Name string `json:"checkName"` + Severity string `json:"severity"` + Remediation string `json:"remediation"` +} diff --git a/core/scan.go b/core/scan.go new file mode 100644 index 0000000..9469d52 --- /dev/null +++ b/core/scan.go @@ -0,0 +1,149 @@ +package core + +import ( + "context" + "fmt" + "gochopchop/internal" + "sync" + + log "github.com/sirupsen/logrus" +) + +type SafeData struct { + mux sync.Mutex + out []Output +} + +func (s *SafeData) Add(d Output) { + s.mux.Lock() + defer s.mux.Unlock() + s.out = append(s.out, d) +} + +type IFetcher interface { + Fetch(url string) (*internal.HTTPResponse, error) +} + +type IScanner interface { + Scan(urls []string) ([]Output, error) +} + +type Scanner struct { + Signatures *Signatures + Fetcher IFetcher + NoRedirectFetcher IFetcher + // Two fetchers are needed because we can't use the same http client to follow redirects + safeData *SafeData + Threads int +} + +// NewScanner returns a pointer to a initialized Scanner +func NewScanner(fetcher IFetcher, noRedirectFetcher IFetcher, signatures *Signatures, threads int) *Scanner { + safeData := &SafeData{out: make([]Output, 0)} + return &Scanner{ + Signatures: signatures, + Fetcher: fetcher, + NoRedirectFetcher: noRedirectFetcher, + safeData: safeData, + Threads: threads, + } +} + +type workerJob struct { + url string + endpoint string + plugin *Plugin +} + +func (s Scanner) Scan(ctx context.Context, urls []string) ([]Output, error) { + wg := new(sync.WaitGroup) + jobs := make(chan workerJob) + + for i := 0; i < s.Threads; i++ { + wg.Add(1) + go func() { + defer wg.Done() + for { + select { + case <-ctx.Done(): + return + case job, ok := <-jobs: + if !ok { // no more jobs + return + } + resp, err := s.fetch(job.url, job.plugin.FollowRedirects) + if err != nil { + log.Error(err) + break + } + swg := new(sync.WaitGroup) + for _, check := range job.plugin.Checks { + swg.Add(1) + go func(check *Check) { + defer swg.Done() + select { + case <-ctx.Done(): + return + default: + if check.Match(resp) { + o := Output{ + URL: job.url, + Name: check.Name, + Endpoint: job.endpoint, + Severity: check.Severity, + Remediation: check.Remediation, + } + s.safeData.Add(o) + } + } + }(check) + } + swg.Wait() + } + } + }() + } + + for _, url := range urls { + for _, plugin := range s.Signatures.Plugins { + if plugin.Endpoint != "" { + plugin.Endpoints = []string{plugin.Endpoint} + } + for _, e := range plugin.Endpoints { + endpoint := e + if plugin.QueryString != "" { + endpoint = fmt.Sprintf("%s?%s", endpoint, plugin.QueryString) + } + fullURL := fmt.Sprintf("%s%s", url, endpoint) + log.Info("Testing url : ", fullURL) + + w := workerJob{url: fullURL, endpoint: endpoint, plugin: plugin} + select { + case <-ctx.Done(): + break + case jobs <- w: + } + } + } + } + + close(jobs) + wg.Wait() + + return s.safeData.out, nil +} + +func (s Scanner) fetch(url string, followRedirects bool) (*internal.HTTPResponse, error) { + var httpResponse *internal.HTTPResponse + var err error + + if !followRedirects { + httpResponse, err = s.NoRedirectFetcher.Fetch(url) + } else { + httpResponse, err = s.Fetcher.Fetch(url) + } + if err != nil { + return nil, err + } + return httpResponse, nil +} diff --git a/core/scan_test.go b/core/scan_test.go new file mode 100644 index 0000000..1e80e0b --- /dev/null +++ b/core/scan_test.go @@ -0,0 +1,52 @@ +package core_test + +import ( + "context" + "gochopchop/core" + "gochopchop/mock" + "testing" + "time" +) + +// TODO : Test fonctionnel +// TODO : integrer tests unitaires dans la CI (voir github workflows avec go test) + +func TestScan(t *testing.T) { + var tests = map[string]struct { + ctx context.Context + urls []string + output []core.Output + }{ + "no vulnerabilities found": {ctx: context.Background(), urls: []string{"http://noproblem"}, output: []core.Output{}}, + "all vulnerabilities found": {ctx: context.Background(), urls: []string{"http://problems"}, output: mock.FakeOutput}, + "context is done": {ctx: context.Background(), urls: []string{"http://noproblem"}, output: []core.Output{}}, + "fetcher problem": {ctx: context.Background(), urls: []string{"http://unknown"}, output: []core.Output{}}, + "no HTTP Response": {ctx: context.Background(), urls: []string{"http://nohttpresponse"}, output: []core.Output{}}, + } + + for name, tc := range tests { + t.Run(name, func(t *testing.T) { + + if name == "context is done" { + ctx, cancel := context.WithDeadline(tc.ctx, time.Now().Add(-7*time.Hour)) + tc.ctx = ctx + cancel() + } + + output, _ := mock.FakeScanner.Scan(tc.ctx, tc.urls) + + for _, haveOutput := range tc.output { + found := false + for _, wantOutput := range output { + if wantOutput.Name == haveOutput.Name { + found = true + break + } + } + if !found { + t.Errorf("expected: %v, got: %v", tc.output, output) + } + } + }) + } +} diff --git a/core/severity.go b/core/severity.go new file mode 100644 index 0000000..47be86c --- /dev/null +++ b/core/severity.go @@ -0,0 +1,40 @@ +package core + +import "strings" + +var severities = [4]string{"High", "Medium", "Low", "Informational"} + +func ValidSeverity(severity string) bool { + for _, sv := range severities { + if severity == sv { + return true + } + } + return false +} + +func SeveritiesAsString() string { + return strings.Join(severities[:], ", ") +} + +func SeverityReached(max string, severity string) bool { + switch max { + case "High": + if severity == "High" { + return true + } + case "Medium": + if severity == "High" || severity == "Medium" { + return true + } + case "Low": + if severity == "High" || severity == "Medium" || severity == "Low" { + return true + } + case "Informational": + if severity == "High" || severity == "Medium" || severity == "Low" || severity == "Informational" { + return true + } + } + return false +} diff --git a/core/severity_test.go b/core/severity_test.go new file mode 100644 index 0000000..fa3c60b --- /dev/null +++ b/core/severity_test.go @@ -0,0 +1,61 @@ +package core_test + +import ( + "testing" + "gochopchop/core" +) + +func TestValidSeverity(t *testing.T) { + var tests = map[string]struct { + severity string + want bool + }{ + "High": {severity: "High", want: true}, + "Medium": {severity: "Medium", want: true}, + "Low": {severity: "Low", want: true}, + "Informational": {severity: "Informational", want: true}, + "Bad severity": {severity: "Unknown", want: false}, + } + + for name, tc := range tests { + t.Run(name, func(t *testing.T) { + have := core.ValidSeverity(tc.severity) + if tc.want != have { + t.Errorf("expected: %v, got: %v", tc.want, have) + } + }) + } +} + +func TestSeveritiesAsString(t *testing.T) { + want := "High, Medium, Low, Informational" + have := core.SeveritiesAsString() + if have != want { + t.Errorf("expected: %v, got: %v", want, have) + } +} + +func TestSeverityReached(t *testing.T) { + var tests = map[string]struct { + max string + severity string + want bool + }{ + "HighNotReached": {max: "High", severity: "Informational", want: false}, + "HighReached": {max: "High", severity: "High", want: true}, + "MediumReached": {max: "Medium", severity: "High", want: true}, + "MediumNotReached": {max: "Medium", severity: "Low", want: false}, + "LowReached": {max: "Low", severity: "High", want: true}, + "LowNotReached": {max: "Low", severity: "Informational", want: false}, + "InformationalReached": {max: "Informational", severity: "Informational", want: true}, + } + + for name, tc := range tests { + t.Run(name, func(t *testing.T) { + have := core.SeverityReached(tc.max, tc.severity) + if tc.want != have { + t.Errorf("want: %v, have: %v", tc.want, have) + } + }) + } +} diff --git a/core/signatures.go b/core/signatures.go new file mode 100644 index 0000000..b8419d1 --- /dev/null +++ b/core/signatures.go @@ -0,0 +1,253 @@ +package core + +import ( + "gochopchop/internal" + "strings" +) + +// Signature struct to load the plugins/rules from the YAML file +type Signatures struct { + Plugins []*Plugin `yaml:"plugins"` +} + +type Plugin struct { + Endpoints []string `yaml:"endpoints"` + Endpoint string `yaml:"endpoint"` + QueryString string `yaml:"query_string"` + Checks []*Check `yaml:"checks"` + FollowRedirects bool `yaml:"follow_redirects"` +} + +// Check Signature +type Check struct { + MustMatchOne []string `yaml:"match"` + MustMatchAll []string `yaml:"all_match"` + MustNotMatch []string `yaml:"no_match"` + StatusCode *int32 `yaml:"status_code"` + Name string `yaml:"name"` + Remediation string `yaml:"remediation"` + Severity string `yaml:"severity"` + Description string `yaml:"description"` + Headers []string `yaml:"headers"` + NoHeaders []string `yaml:"no_headers"` +} + +// NewSignatures returns a new initialized Signatures +func NewSignatures() *Signatures { + return &Signatures{} +} + +func (s *Signatures) FilterBySeverity(severity string) { + filteredPlugins := s.Plugins[:0] + for _, plugin := range s.Plugins { + filteredChecks := plugin.Checks[:0] + for _, check := range plugin.Checks { + if check.Severity == severity { + filteredChecks = append(filteredChecks, check) + } + } + if len(filteredChecks) > 0 { + plugin.Checks = filteredChecks + filteredPlugins = append(filteredPlugins, plugin) + } + } + s.Plugins = filteredPlugins +} + +func (s *Signatures) FilterByNames(names []string) { + filteredPlugins := s.Plugins[:0] + for _, plugin := range s.Plugins { + filteredChecks := plugin.Checks[:0] + for _, check := range plugin.Checks { + for _, name := range names { + if strings.Contains(strings.ToLower(check.Name), strings.ToLower(name)) { + filteredChecks = append(filteredChecks, check) + break + } + } + } + if len(filteredChecks) > 0 { + plugin.Checks = filteredChecks + filteredPlugins = append(filteredPlugins, plugin) + } + } + s.Plugins = filteredPlugins +} + +//Match analyses the HTTP Request +// a match means that one of the criteria has been met +func (check *Check) Match(resp *internal.HTTPResponse) bool { + // status code must match + if check.StatusCode != nil { + if int32(resp.StatusCode) != *check.StatusCode { + return false + } + } + + // all element must be found + for _, match := range check.MustMatchAll { + if !strings.Contains(resp.Body, match) { + return false + } + } + + // one element must be found + if len(check.MustMatchOne) > 0 { + found := false + for _, match := range check.MustMatchOne { + if strings.Contains(resp.Body, match) { + found = true + } + } + if !found { + return false + } + } + + // no element should match + if len(check.MustNotMatch) > 0 { + for _, match := range check.MustNotMatch { + if strings.Contains(resp.Body, match) { + return false + } + } + } + + // must contain all these headers + for _, header := range check.Headers { + pHeaders := strings.Split(header, ":") + pHeadersKey := pHeaders[0] + pHeadersValue := pHeaders[1] + if respHeaderValues, kFound := resp.Header[pHeadersKey]; kFound { + vFound := false + for _, respHeaderValue := range respHeaderValues { + if strings.Contains(respHeaderValue, pHeadersValue) { + vFound = true + break + } + } + if !vFound { + return false + } + } else { + return false + } + } + + // must not contain these headers + for _, header := range check.NoHeaders { + pNoHeaders := strings.Split(header, ":") + pNoHeadersKey := pNoHeaders[0] + if respHeaderValues, kFound := resp.Header[pNoHeadersKey]; kFound { + if len(pNoHeaders) > 1 { + pHeadersValue := pNoHeaders[1] + vFound := false + for _, respHeaderValue := range respHeaderValues { + if strings.Contains(respHeaderValue, pHeadersValue) { + vFound = true + break + } + } + if vFound { + return false + } + } + } + } + return true +} + +func (self *Signatures) Equals(signatures *Signatures) bool { + if len(self.Plugins) != len(signatures.Plugins) { + return false + } + for _, plugin := range self.Plugins { + found := false + for _, oplugin := range signatures.Plugins { + if plugin.Equals(oplugin) { + found = true + break + } + } + if !found { + return false + } + } + return true +} + +func (self *Plugin) Equals(plugin *Plugin) bool { + if !SliceStringEqual(self.Endpoints, plugin.Endpoints) { + return false + } + if self.Endpoint != plugin.Endpoint { + return false + } + if self.QueryString != plugin.QueryString { + return false + } + if self.FollowRedirects != plugin.FollowRedirects { + return false + } + for _, check := range self.Checks { + found := false + for _, pcheck := range plugin.Checks { + if check.Equals(pcheck) { + found = true + break + } + } + if !found { + return false + } + } + return true +} + +func (self *Check) Equals(check *Check) bool { + if !SliceStringEqual(self.MustMatchOne, check.MustMatchOne) { + return false + } + if !SliceStringEqual(self.MustMatchAll, check.MustMatchAll) { + return false + } + if !SliceStringEqual(self.MustNotMatch, check.MustNotMatch) { + return false + } + if self.StatusCode != nil && check.StatusCode != nil { + if *self.StatusCode != *check.StatusCode { + return false + } + } + if self.Name != check.Name { + return false + } + if self.Remediation != check.Remediation { + return false + } + if self.Severity != check.Severity { + return false + } + if self.Description != check.Description { + return false + } + if !SliceStringEqual(self.Headers, check.Headers) { + return false + } + if !SliceStringEqual(self.NoHeaders, check.NoHeaders) { + return false + } + return true +} + +func SliceStringEqual(a, b []string) bool { + if len(a) != len(b) { + return false + } + for i, v := range a { + if v != b[i] { + return false + } + } + return true +} diff --git a/core/signatures_test.go b/core/signatures_test.go new file mode 100644 index 0000000..ea24113 --- /dev/null +++ b/core/signatures_test.go @@ -0,0 +1,285 @@ +package core_test + +import ( + "gochopchop/core" + "gochopchop/mock" + "testing" +) + +func TestFilterBySeverity(t *testing.T) { + var tests = map[string]struct { + have *core.Signatures + want *core.Signatures + severity string + }{ + "Filter nothing": { + have: &core.Signatures{Plugins: []*core.Plugin{mock.FakePlugin}}, + want: &core.Signatures{Plugins: []*core.Plugin{mock.FakePlugin}}, + severity: "Medium", + }, + } + + for name, tc := range tests { + t.Run(name, func(t *testing.T) { + tc.have.FilterBySeverity(tc.severity) + if !tc.want.Equals(tc.have) { + t.Errorf("expected: %v, got: %v", tc.want, tc.have) + } + }) + } +} + +func TestFilterByNames(t *testing.T) { + var tests = map[string]struct { + have *core.Signatures + want *core.Signatures + names []string + }{ + "Filter nothing": { + have: &core.Signatures{Plugins: []*core.Plugin{mock.FakeQueryPlugin}}, + want: &core.Signatures{Plugins: []*core.Plugin{mock.FakeQueryPlugin}}, + names: []string{mock.FakeCheckStatusCode200.Name}, + }, + "Filter one element": { + have: &core.Signatures{Plugins: []*core.Plugin{mock.FakeQueryPlugin}}, + want: &core.Signatures{}, + names: []string{"check's name that is not in the signatures"}, + }, + } + + for name, tc := range tests { + t.Run(name, func(t *testing.T) { + tc.have.FilterByNames(tc.names) + if !tc.have.Equals(tc.want) { + t.Errorf("expected: %v, got: %v", tc.want, tc.have) + } + }) + } +} + +func TestPluginEquals(t *testing.T) { + var tests = map[string]struct { + plugin1 *core.Plugin + plugin2 *core.Plugin + want bool + }{ + "Different Endpoints": { + plugin1: &core.Plugin{ + Endpoint: "/endpoint1", + }, + plugin2: &core.Plugin{ + Endpoint: "/endpoint2", + }, + want: false, + }, + "Different Query String": { + plugin1: &core.Plugin{ + Endpoint: "/endpoint1", + QueryString: "query=test1", + }, + plugin2: &core.Plugin{ + Endpoint: "/endpoint1", + QueryString: "query=test2", + }, + want: false, + }, + "Different Follow Redirects Bool": { + plugin1: &core.Plugin{ + Endpoint: "/endpoint1", + QueryString: "query=test1", + FollowRedirects: true, + }, + plugin2: &core.Plugin{ + Endpoint: "/endpoint1", + QueryString: "query=test1", + FollowRedirects: false, + }, + want: false, + }, + "Equals Checks": { + plugin1: &core.Plugin{ + Endpoint: "/endpoint1", + QueryString: "query=test1", + FollowRedirects: true, + Checks: []*core.Check{ + mock.FakeCheckStatusCode200, + }, + }, + plugin2: &core.Plugin{ + Endpoint: "/endpoint1", + QueryString: "query=test1", + FollowRedirects: true, + Checks: []*core.Check{ + mock.FakeCheckStatusCode200, + }, + }, + want: true, + }, + "Not Equals Checks": { + plugin1: &core.Plugin{ + Endpoint: "/endpoint1", + QueryString: "query=test1", + FollowRedirects: true, + Checks: []*core.Check{ + mock.FakeCheckStatusCode200, + mock.FakeCheckMatchAll, + }, + }, + plugin2: &core.Plugin{ + Endpoint: "/endpoint1", + QueryString: "query=test1", + FollowRedirects: true, + Checks: []*core.Check{ + mock.FakeCheckStatusCode500, + mock.FakeCheckMatchAll, + }, + }, + want: false, + }, + } + + for name, tc := range tests { + t.Run(name, func(t *testing.T) { + have := tc.plugin1.Equals(tc.plugin2) + if have != tc.want { + t.Errorf("expected: %v, got: %v", tc.want, have) + } + }) + } +} + +func TestSignaturesEquals(t *testing.T) { + var tests = map[string]struct { + signatures1 *core.Signatures + signatures2 *core.Signatures + want bool + }{ + "Different Length": { + signatures1: &core.Signatures{Plugins: []*core.Plugin{ + mock.FakePlugin, + mock.FakeQueryPlugin, + mock.FakeFollowRedirectPlugin, + }}, + signatures2: core.NewSignatures(), + want: false, + }, + + "Not the same plugin content": { + signatures1: &core.Signatures{Plugins: []*core.Plugin{ + mock.FakePlugin2, + mock.FakeQueryPlugin, + mock.FakeFollowRedirectPlugin, + }}, + signatures2: &core.Signatures{Plugins: []*core.Plugin{ + mock.FakePlugin, + mock.FakeQueryPlugin, + mock.FakeFollowRedirectPlugin, + }}, + want: false, + }, + } + + for name, tc := range tests { + t.Run(name, func(t *testing.T) { + have := tc.signatures1.Equals(tc.signatures2) + if have != tc.want { + t.Errorf("expected: %v, got: %v", tc.want, have) + } + }) + } +} +func TestCheckEquals(t *testing.T) { + var tests = map[string]struct { + check1 *core.Check + check2 *core.Check + want bool + }{ + "MustMatchOne not Equals": { + check1: &core.Check{MustMatchOne: []string{"MATCHONE", "MATCHTWO"}}, + check2: &core.Check{MustMatchOne: []string{"MATCHFOUR", "MATCHTHREE"}}, + want: false, + }, + "MustMatchAll not Equals": { + check1: &core.Check{MustMatchAll: []string{"MATCHONE", "MATCHTWO"}}, + check2: &core.Check{MustMatchAll: []string{"MATCHONE", "MATCHTHREE"}}, + want: false, + }, + "MustNotMatch Equals": { + check1: &core.Check{MustNotMatch: []string{"MATCHONE", "MATCHTWO"}}, + check2: &core.Check{MustNotMatch: []string{"MATCHONE", "MATCHTHREE"}}, + want: false, + }, + "Name not Equals": { + check1: &core.Check{Name: "Name1"}, + check2: &core.Check{Name: "Name2"}, + want: false, + }, + "Remediation not Equals": { + check1: &core.Check{Remediation: "ಠ_ಠ"}, + check2: &core.Check{Remediation: "(°_o)"}, + want: false, + }, + "Severity not Equals": { + check1: &core.Check{Severity: "High"}, + check2: &core.Check{Severity: "Medium"}, + want: false, + }, + "Description not Equals": { + check1: &core.Check{Description: "ಠ_ಠ"}, + check2: &core.Check{Description: "(°_o)"}, + want: false, + }, + "Headers not Equals": { + check1: &core.Check{Headers: []string{"Header:OK"}}, + check2: &core.Check{Headers: []string{"Header:notOK"}}, + want: false, + }, + "NoHeaders not Equals": { + check1: &core.Check{NoHeaders: []string{"NoHeader:OK"}}, + check2: &core.Check{NoHeaders: []string{"NoHeader:notOK"}}, + want: false, + }, + } + + for name, tc := range tests { + t.Run(name, func(t *testing.T) { + have := tc.check1.Equals(tc.check2) + if have != tc.want { + t.Errorf("expected: %v, got: %v", tc.want, have) + } + }) + } +} + +func TestSliceStringEqual(t *testing.T) { + var tests = map[string]struct { + slice1 []string + slice2 []string + want bool + }{ + "Same slices": { + slice1: []string{"a", "b"}, + slice2: []string{"a", "b"}, + want: true, + }, + "Different slices with same length": { + slice1: []string{"a", "b"}, + slice2: []string{"x", "b"}, + want: false, + }, + "Different slices with different length": { + slice1: []string{"a", "b"}, + slice2: []string{"a", "b", "c"}, + want: false, + }, + } + + for name, tc := range tests { + t.Run(name, func(t *testing.T) { + have := core.SliceStringEqual(tc.slice1, tc.slice2) + if have != tc.want { + t.Errorf("expected: %v, got: %v", tc.want, have) + } + }) + } +} diff --git a/data/format_output.go b/data/format_output.go deleted file mode 100644 index a62d01d..0000000 --- a/data/format_output.go +++ /dev/null @@ -1,68 +0,0 @@ -package data - -import "errors" - -// Output structure for each findings -type Output struct { - Domain string - TestedURL string - PluginName string - Severity string - Remediation string -} - -// SeverityType is basically an enum and values can be from Info, Low, Medium and High -type SeverityType string - -const ( - // Informational will be the default severityType - Informational SeverityType = "Informational" - // Low severity - Low = "Low" - // Medium severity - Medium = "Medium" - // High severity (highest rating) - High = "High" -) - -// Check Signature -type Check struct { - Match []*string `yaml:"match"` - AllMatch []*string `yaml:"all_match"` - StatusCode *int32 `yaml:"status_code"` - PluginName string `yaml:"name"` - Remediation *string `yaml:"remediation"` - Severity *SeverityType `yaml:"severity"` - Description *string `yaml:"description"` - NoMatch []*string `yaml:"no_match"` - Headers []*string `yaml:"headers"` - NoHeaders []*string `yaml:"no_headers"` -} - -// Config struct to load the configuration from the YAML file -type Config struct { - Insecure bool `yaml:"insecure"` - Plugins []Signature `yaml:"plugins"` -} - -// Signature struct to load it afterwards -type Signature struct { - URI string `yaml:"uri"` - ListOfURI []string `yaml:"uris"` - QueryString string `yaml:"query_string"` - Checks []Check `yaml:"checks"` - FollowRedirects *bool `yaml:"follow_redirects"` -} - -// IsValid will verify that the severityType is part of the enum previously declared -func (st SeverityType) IsValid() error { - switch st { - case Informational, Low, Medium, High: - return nil - } - return errors.New("Invalid Severity type. Please Check yaml config file") -} - -func (st SeverityType) String() string { - return string(st) -} diff --git a/docs/img/chopchop_logo.png b/docs/img/chopchop_logo.png new file mode 100644 index 0000000000000000000000000000000000000000..b8ee26af528c8c68e0f764e07b6c15e7c0e25b0f GIT binary patch literal 233686 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,*K2a$)v6Gr>B33QM)Nqpi)xX0G59#7Z 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%0A`2j&?IB*$@o+j`0HT&rPa9?4oyb`biF>kM1X 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 literal 0 HcmV?d00001 diff --git a/img/demo.gif b/docs/img/demo.gif similarity index 100% rename from img/demo.gif rename to docs/img/demo.gif diff --git a/go.mod b/go.mod index 06b97b4..ec9086e 100644 --- a/go.mod +++ b/go.mod @@ -1,16 +1,18 @@ -module gochopchop - -go 1.13 - -require ( - github.com/go-openapi/strfmt v0.19.4 // indirect - github.com/jedib0t/go-pretty v4.3.0+incompatible - github.com/mattn/go-runewidth v0.0.7 // indirect - github.com/mitchellh/go-homedir v1.1.0 - github.com/pkg/errors v0.8.1 - github.com/spf13/cobra v0.0.5 - github.com/spf13/viper v1.6.1 - golang.org/x/tools v0.0.0-20191216052735-49a3e744a425 // indirect - golang.org/x/tools/gopls v0.2.2 // indirect - gopkg.in/yaml.v2 v2.2.4 -) +module gochopchop + +go 1.15 + +require ( + github.com/asaskevich/govalidator v0.0.0-20200907205600-7a23bdc65eef // indirect + github.com/go-openapi/errors v0.19.8 // indirect + github.com/go-openapi/strfmt v0.19.8 // indirect + github.com/jedib0t/go-pretty v4.3.0+incompatible + github.com/mattn/go-runewidth v0.0.9 // indirect + github.com/mitchellh/mapstructure v1.3.3 // indirect + github.com/sirupsen/logrus v1.7.0 + github.com/spf13/afero v1.1.2 + github.com/spf13/cobra v1.1.1 + go.mongodb.org/mongo-driver v1.4.3 // indirect + golang.org/x/sys v0.0.0-20201110211018-35f3e6cf4a65 // indirect + gopkg.in/yaml.v2 v2.3.0 +) diff --git a/go.sum b/go.sum index 5af7421..9f59263 100644 --- a/go.sum +++ b/go.sum @@ -1,216 +1,407 @@ -cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= -github.com/BurntSushi/toml v0.3.1 h1:WXkYYl6Yr3qBf1K79EBnL4mak0OimBfB0XUf9Vl28OQ= -github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= -github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= -github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= -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/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a h1:idn718Q4B6AGu/h5Sxe66HYVdqdGu2l9Iebqhi/AEoA= -github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a/go.mod h1:lB+ZfQJz7igIIfQNfa7Ml4HSf2uFQQRzpGGRXenZAgY= -github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= -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/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= -github.com/coreos/go-etcd v2.0.0+incompatible/go.mod h1:Jez6KQU2B/sWsbdaef3ED8NzMklzPG4d5KIOhIy30Tk= -github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= -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 v1.0.10/go.mod h1:SmD6nW6nTyfqj6ABTjUi3V3JVMnlJmwcJI5acqYI6dE= -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/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/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-openapi/errors v0.19.2 h1:a2kIyV3w+OS3S97zxUndRVD46+FhGOUBDFY7nmu4CsY= -github.com/go-openapi/errors v0.19.2/go.mod h1:qX0BLWsyaKfvhluLejVpVNwNRdXZhEbTA4kxxpKBC94= -github.com/go-openapi/strfmt v0.19.4 h1:eRvaqAhpL0IL6Trh5fDsGnGhiXndzHFuA05w6sXH6/g= -github.com/go-openapi/strfmt v0.19.4/go.mod h1:eftuHTlB/dI8Uq8JJOyRlieZf+WkkxUuk0dgdHXr2Qk= -github.com/go-stack/stack v1.8.0 h1:5SgMzNM5HxrEjV0ww2lTmX6E2Izsfxas4+YHWRs3Lsk= -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= -github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= -github.com/golang/groupcache v0.0.0-20190129154638-5b532d6fd5ef/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -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/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= -github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= -github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= -github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= -github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1 h1:EGx4pi6eqNxGaHF6qqu48+N2wcFQ5qg5FXgOdqsJ5d8= -github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= -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/jedib0t/go-pretty v4.3.0+incompatible h1:CGs8AVhEKg/n9YbUenWmNStRW2PHJzaeDodcfvRAbIo= -github.com/jedib0t/go-pretty v4.3.0+incompatible/go.mod h1:XemHduiw8R651AF9Pt4FwCTKeG3oo7hrHJAoznj9nag= -github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo= -github.com/jtolds/gls v4.20.0+incompatible h1:xdiiI2gbIgH/gLH7ADydsJ1uDOEzR8yvV7C0MuV77Wo= -github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= -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/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/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= -github.com/magiconair/properties v1.8.1 h1:ZC2Vc7/ZFkGmsVC9KvOjumD+G5lXy2RtTKyzRKO2BQ4= -github.com/magiconair/properties v1.8.1/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= -github.com/mattn/go-runewidth v0.0.7 h1:Ei8KR0497xHyKJPAv59M1dkC+rOZCMBJ+t3fZ+twI54= -github.com/mattn/go-runewidth v0.0.7/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI= -github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= -github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y= -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/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/pkg/errors v0.8.1 h1:iURUrRGxPUNPdy5/HRSm+Yj6okJ6UtLINN0Q9M4+h3I= -github.com/pkg/errors v0.8.1/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/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/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/prometheus/common v0.0.0-20181113130724-41aa239b4cce/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= -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/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/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= -github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g= -github.com/sergi/go-diff v1.0.0 h1:Kpca3qRNrduNnOQeazBd0ysaKrUJiIuISHxogkT9RPQ= -github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo= -github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= -github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d h1:zE9ykElWQ6/NYmHa3jpm/yHnI4xSofP+UP6SpjHcSeM= -github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= -github.com/smartystreets/goconvey v1.6.4 h1:fv0U8FUIMPNf1L9lnHLvLhgicrIVChEkdzIKYqbNC9s= -github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= -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 v0.0.5 h1:f0B+LkLX6DtmRH1isoNA9VTtNUK9K8xYd28JNNfOv/s= -github.com/spf13/cobra v0.0.5/go.mod h1:3K3wKZymM7VvHMDS9+Akkh4K60UwM26emMESw8tLCHU= -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.3.2/go.mod h1:ZiWeW+zYFKm7srdB9IoDzzZXaJaI5eL9QjNiN/DMA2s= -github.com/spf13/viper v1.6.1 h1:VPZzIkznI1YhVMRi6vNFLHSwhnhReBfgTxIPccpfdZk= -github.com/spf13/viper v1.6.1/go.mod h1:t3iDnF5Jlj76alVNuyFBk5oUMCvsrkbvZK0WQdfDi5k= -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/objx v0.2.0/go.mod h1:qt09Ya8vawLte6SNmTgCsAVtYtaKzEcn8ATUoHMkEqE= -github.com/stretchr/testify v1.2.2 h1:bSDNvY7ZPG5RlJ8otE/7V6gMiyenm9RtJ7IUVIAoJ1w= -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/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= -github.com/subosito/gotenv v1.2.0 h1:Slr1R9HxAlEKefgq5jn9U+DnETlIUa6HfgEzj0g5d7s= -github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw= -github.com/tidwall/pretty v1.0.0/go.mod h1:XNkn88O1ChpSDQmQeStsy+sBenx6DDtFZJxhVysOjyk= -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/codec v0.0.0-20181204163529-d75b2dcb6bc8/go.mod h1:VFNgLljTbGfSG7qAOspJ7OScBnGdDN/yBr0sguwnwf0= -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= -go.mongodb.org/mongo-driver v1.0.3 h1:GKoji1ld3tw2aC+GX1wbr/J2fX13yNacEYoJ8Nhr0yU= -go.mongodb.org/mongo-driver v1.0.3/go.mod h1:u7ryQJ+DOzQmeO7zB6MHyr8jkEQvC8vH7qLUO4lqsUM= -go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= -go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= -go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= -golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= -golang.org/x/crypto v0.0.0-20181203042331-505ab145d0a9/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= -golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= -golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= -golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc= -golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= -golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181220203305-927f97764cc3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190522155817-f3200d17e092/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= -golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= -golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20190423024810-112230192c58 h1:8gQV6CLnAEikrhgkHFbMAEhagSSnXWGV915qUMm9mrU= -golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -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-20181205085412-a5c9d58dba9a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a h1:1BGLXjeY4akVXGgbC9HugT3Jv3hCI0z56oJR5vAMgBU= -golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190412213103-97732733099d h1:+R4KGOnez64A81RvjARKc4UT5/tI9ujCIVX+P5KiHuI= -golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/text v0.3.0 h1:g61tztE5qeGQ89tm6NTjjM9VPIm088od1l6aSorWRWg= -golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -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-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= -golang.org/x/tools v0.0.0-20191206201009-952e2c076240 h1:metzFnqcC0vUPmZX4El8bICiQU9hieZ3L9dXAitxVXQ= -golang.org/x/tools v0.0.0-20191206201009-952e2c076240/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191216052735-49a3e744a425 h1:VvQyQJN0tSuecqgcIxMWnnfG5kSmgy9KZR9sW3W5QeA= -golang.org/x/tools v0.0.0-20191216052735-49a3e744a425/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools/gopls v0.2.2 h1:ujGisyytgY1VGcmd66wIJ9+wVAfmodXj6daHM43HRXk= -golang.org/x/tools/gopls v0.2.2/go.mod h1:tYZWEkfQr3hZhE3LtugNk+eYusxvIG/0AGXcFaXh5Z4= -golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7 h1:9zdDQZ7Thm29KFXgAX/+yaf3eVbP7djjWp/dXAppNCc= -golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= -google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= -google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= -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/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= -gopkg.in/ini.v1 v1.51.0 h1:AQvPpx3LzTDM0AjnIRlVFwFFGC+npRopjZxLJj6gdno= -gopkg.in/ini.v1 v1.51.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= -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.4 h1:/eiJrUcujPVeJ3xlSWaiNi3uSVmDGBK1pDHUHAnao1I= -gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -honnef.co/go/tools v0.0.1-2019.2.3 h1:3JgtbtFHMiCmsznwGVTUWbgGov+pVqnlf1dEJTNAXeM= -honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= +cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= +cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= +cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU= +cloud.google.com/go v0.44.1/go.mod h1:iSa0KzasP4Uvy3f1mN/7PiObzGgflwredwwASm/v6AU= +cloud.google.com/go v0.44.2/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY= +cloud.google.com/go v0.45.1/go.mod h1:RpBamKRgapWJb87xiFSdk4g1CME7QZg3uwTez+TSTjc= +cloud.google.com/go v0.46.3/go.mod h1:a6bKKbmY7er1mI7TEI4lsAkts/mkhTSZK8w33B4RAg0= +cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= +cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= +cloud.google.com/go/firestore v1.1.0/go.mod h1:ulACoGHTpvq5r8rxGJ4ddJZBZqakUQqClKRT5SZwBmk= +cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I= +cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw= +dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= +github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= +github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= +github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= +github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= +github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= +github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o= +github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY= +github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= +github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a h1:idn718Q4B6AGu/h5Sxe66HYVdqdGu2l9Iebqhi/AEoA= +github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a/go.mod h1:lB+ZfQJz7igIIfQNfa7Ml4HSf2uFQQRzpGGRXenZAgY= +github.com/asaskevich/govalidator v0.0.0-20200907205600-7a23bdc65eef h1:46PFijGLmAjMPwCCCo7Jf0W6f9slllCkkv7vyc1yOSg= +github.com/asaskevich/govalidator v0.0.0-20200907205600-7a23bdc65eef/go.mod h1:WaHUgvxTVq04UNunO+XhnAqY/wQc+bxr74GqbsZ/Jqw= +github.com/aws/aws-sdk-go v1.34.28/go.mod h1:H7NKnBqNVzoTJpGfLrQkkD+ytBA93eiDYi/+8rV9s48= +github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= +github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= +github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= +github.com/bketelsen/crypt v0.0.3-0.20200106085610-5cbc8cc4026c/go.mod h1:MKsuJmJgSg28kpZDP6UIiPt0e0Oz0kqKNGyRaWEPv84= +github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= +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.13+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= +github.com/coreos/go-semver v0.3.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= +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/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= +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/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= +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/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= +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-openapi/errors v0.19.2 h1:a2kIyV3w+OS3S97zxUndRVD46+FhGOUBDFY7nmu4CsY= +github.com/go-openapi/errors v0.19.2/go.mod h1:qX0BLWsyaKfvhluLejVpVNwNRdXZhEbTA4kxxpKBC94= +github.com/go-openapi/errors v0.19.8 h1:doM+tQdZbUm9gydV9yR+iQNmztbjj7I3sW4sIcAwIzc= +github.com/go-openapi/errors v0.19.8/go.mod h1:cM//ZKUKyO06HSwqAelJ5NsEMMcpa6VpXe8DOa1Mi1M= +github.com/go-openapi/strfmt v0.19.8 h1:9wAdSoImc5UCnUj79GhcjkJXxuU/nEwlbe6SKe9ZdRs= +github.com/go-openapi/strfmt v0.19.8/go.mod h1:qBBipho+3EoIqn6YDI+4RnQEtj6jT/IdKm+PAlXxSUc= +github.com/go-sql-driver/mysql v1.5.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg= +github.com/go-stack/stack v1.8.0 h1:5SgMzNM5HxrEjV0ww2lTmX6E2Izsfxas4+YHWRs3Lsk= +github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= +github.com/gobuffalo/attrs v0.0.0-20190224210810-a9411de4debd/go.mod h1:4duuawTqi2wkkpB4ePgWMaai6/Kc6WEz83bhFwpHzj0= +github.com/gobuffalo/depgen v0.0.0-20190329151759-d478694a28d3/go.mod h1:3STtPUQYuzV0gBVOY3vy6CfMm/ljR4pABfrTeHNLHUY= +github.com/gobuffalo/depgen v0.1.0/go.mod h1:+ifsuy7fhi15RWncXQQKjWS9JPkdah5sZvtHc2RXGlg= +github.com/gobuffalo/envy v1.6.15/go.mod h1:n7DRkBerg/aorDM8kbduw5dN3oXGswK5liaSCx4T5NI= +github.com/gobuffalo/envy v1.7.0/go.mod h1:n7DRkBerg/aorDM8kbduw5dN3oXGswK5liaSCx4T5NI= +github.com/gobuffalo/flect v0.1.0/go.mod h1:d2ehjJqGOH/Kjqcoz+F7jHTBbmDb38yXA598Hb50EGs= +github.com/gobuffalo/flect v0.1.1/go.mod h1:8JCgGVbRjJhVgD6399mQr4fx5rRfGKVzFjbj6RE/9UI= +github.com/gobuffalo/flect v0.1.3/go.mod h1:8JCgGVbRjJhVgD6399mQr4fx5rRfGKVzFjbj6RE/9UI= +github.com/gobuffalo/genny v0.0.0-20190329151137-27723ad26ef9/go.mod h1:rWs4Z12d1Zbf19rlsn0nurr75KqhYp52EAGGxTbBhNk= +github.com/gobuffalo/genny v0.0.0-20190403191548-3ca520ef0d9e/go.mod h1:80lIj3kVJWwOrXWWMRzzdhW3DsrdjILVil/SFKBzF28= +github.com/gobuffalo/genny v0.1.0/go.mod h1:XidbUqzak3lHdS//TPu2OgiFB+51Ur5f7CSnXZ/JDvo= +github.com/gobuffalo/genny v0.1.1/go.mod h1:5TExbEyY48pfunL4QSXxlDOmdsD44RRq4mVZ0Ex28Xk= +github.com/gobuffalo/gitgen v0.0.0-20190315122116-cc086187d211/go.mod h1:vEHJk/E9DmhejeLeNt7UVvlSGv3ziL+djtTr3yyzcOw= +github.com/gobuffalo/gogen v0.0.0-20190315121717-8f38393713f5/go.mod h1:V9QVDIxsgKNZs6L2IYiGR8datgMhB577vzTDqypH360= +github.com/gobuffalo/gogen v0.1.0/go.mod h1:8NTelM5qd8RZ15VjQTFkAW6qOMx5wBbW4dSCS3BY8gg= +github.com/gobuffalo/gogen v0.1.1/go.mod h1:y8iBtmHmGc4qa3urIyo1shvOD8JftTtfcKi+71xfDNE= +github.com/gobuffalo/logger v0.0.0-20190315122211-86e12af44bc2/go.mod h1:QdxcLw541hSGtBnhUc4gaNIXRjiDppFGaDqzbrBd3v8= +github.com/gobuffalo/mapi v1.0.1/go.mod h1:4VAGh89y6rVOvm5A8fKFxYG+wIW6LO1FMTG9hnKStFc= +github.com/gobuffalo/mapi v1.0.2/go.mod h1:4VAGh89y6rVOvm5A8fKFxYG+wIW6LO1FMTG9hnKStFc= +github.com/gobuffalo/packd v0.0.0-20190315124812-a385830c7fc0/go.mod h1:M2Juc+hhDXf/PnmBANFCqx4DM3wRbgDvnVWeG2RIxq4= +github.com/gobuffalo/packd v0.1.0/go.mod h1:M2Juc+hhDXf/PnmBANFCqx4DM3wRbgDvnVWeG2RIxq4= +github.com/gobuffalo/packr/v2 v2.0.9/go.mod h1:emmyGweYTm6Kdper+iywB6YK5YzuKchGtJQZ0Odn4pQ= +github.com/gobuffalo/packr/v2 v2.2.0/go.mod h1:CaAwI0GPIAv+5wKLtv8Afwl+Cm78K/I/VCm/3ptBN+0= +github.com/gobuffalo/syncx v0.0.0-20190224160051-33c29581e754/go.mod h1:HhnNqWY95UYwwW3uSASeV7vtgYkT2t16hJgV3AEPUpw= +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= +github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= +github.com/golang/groupcache v0.0.0-20190129154638-5b532d6fd5ef/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= +github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= +github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y= +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.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/snappy v0.0.1/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= +github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= +github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= +github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= +github.com/google/go-cmp v0.3.0 h1:crn/baboCvb5fXaQ0IJ1SGTsTVrWpDsCWC8EGETZijY= +github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= +github.com/google/go-cmp v0.5.2 h1:X2ev0eStA3AbceY54o37/0PQ/UWqKEiiO2dKL5OPaFM= +github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= +github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= +github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= +github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= +github.com/google/uuid v1.1.1 h1:Gkbcsh/GbpXz7lPftLA3P6TYMwjCLYm83jiFQZF/3gY= +github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= +github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= +github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= +github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= +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/consul/api v1.1.0/go.mod h1:VmuI/Lkw1nC05EYQWNKwWGbkg+FbDBtguAZLlVdkD9Q= +github.com/hashicorp/consul/sdk v0.1.1/go.mod h1:VKf9jXwCTEY1QZP2MOLRhb5i/I/ssyNV1vwHyQBF0x8= +github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= +github.com/hashicorp/go-cleanhttp v0.5.1/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= +github.com/hashicorp/go-immutable-radix v1.0.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= +github.com/hashicorp/go-msgpack v0.5.3/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM= +github.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHhCYQXV3UM06sGGrk= +github.com/hashicorp/go-rootcerts v1.0.0/go.mod h1:K6zTfqpRlCUIjkwsN4Z+hiSfzSTQa6eBIzfwKfwNnHU= +github.com/hashicorp/go-sockaddr v1.0.0/go.mod h1:7Xibr9yA9JjQq1JpNB2Vw7kxv8xerXegt+ozgdvDeDU= +github.com/hashicorp/go-syslog v1.0.0/go.mod h1:qPfqrKkXGihmCqbJM2mZgkZGvKG1dFdvsLplgctolz4= +github.com/hashicorp/go-uuid v1.0.0/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= +github.com/hashicorp/go-uuid v1.0.1/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= +github.com/hashicorp/go.net v0.0.1/go.mod h1:hjKkEWcCURg++eb33jQU7oqQcI9XDCnUzHA0oac0k90= +github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= +github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= +github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= +github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64= +github.com/hashicorp/mdns v1.0.0/go.mod h1:tL+uN++7HEJ6SQLQ2/p+z2pH24WQKWjBPkE0mNTz8vQ= +github.com/hashicorp/memberlist v0.1.3/go.mod h1:ajVTdAv/9Im8oMAAj5G31PhhMCZJV2pPBoIllUwCN7I= +github.com/hashicorp/serf v0.8.2/go.mod h1:6hOLApaqBFA1NXqRQAsxw9QxuDEvNxSQRwA/JwenrHc= +github.com/inconshreveable/mousetrap v1.0.0 h1:Z8tu5sraLXCXIcARxBp/8cbvlwVa7Z1NHg9XEKhtSvM= +github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= +github.com/jedib0t/go-pretty v4.3.0+incompatible h1:CGs8AVhEKg/n9YbUenWmNStRW2PHJzaeDodcfvRAbIo= +github.com/jedib0t/go-pretty v4.3.0+incompatible/go.mod h1:XemHduiw8R651AF9Pt4FwCTKeG3oo7hrHJAoznj9nag= +github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo= +github.com/jmespath/go-jmespath/internal/testify v1.5.1/go.mod h1:L3OGu8Wl2/fWfCI6z80xFu9LTZmf1ZRjMHUOPmWr69U= +github.com/joho/godotenv v1.3.0/go.mod h1:7hK45KPybAkOC6peb+G5yklZfMxEjkZhHbwpqxOKXbg= +github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo= +github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= +github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= +github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= +github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= +github.com/karrick/godirwalk v1.8.0/go.mod h1:H5KPZjojv4lE+QYImBI8xVtrBRgYrIVsaRPx4tDPEn4= +github.com/karrick/godirwalk v1.10.3/go.mod h1:RoGL9dQei4vP9ilrpETWE8CLOZ1kiN0LhBygSwrAsHA= +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/klauspost/compress v1.9.5/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A= +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.2/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/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= +github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= +github.com/magiconair/properties v1.8.1/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= +github.com/markbates/oncer v0.0.0-20181203154359-bf2de49a0be2/go.mod h1:Ld9puTsIW75CHf65OeIOkyKbteujpZVXDpWK6YGZbxE= +github.com/markbates/safe v1.0.1/go.mod h1:nAqgmRi7cY2nqMc92/bSEeQA+R4OheNU2T1kNSCBdG0= +github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= +github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= +github.com/mattn/go-runewidth v0.0.9 h1:Lm995f3rfxdpd6TSmuVCHVb/QhupuXlYr8sCI/QdE+0= +github.com/mattn/go-runewidth v0.0.9/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI= +github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= +github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= +github.com/mitchellh/cli v1.0.0/go.mod h1:hNIlj7HEI86fIcpObd7a0FcrxTWetlwJDGcceTlRvqc= +github.com/mitchellh/go-homedir v1.0.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= +github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= +github.com/mitchellh/go-testing-interface v1.0.0/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI= +github.com/mitchellh/gox v0.4.0/go.mod h1:Sd9lOJ0+aimLBi73mGofS1ycjY8lL3uZM3JPS42BGNg= +github.com/mitchellh/iochan v1.0.0/go.mod h1:JwYml1nuB7xOzsp52dPpHFffvOCDupsG0QubkSMEySY= +github.com/mitchellh/mapstructure v0.0.0-20160808181253-ca63d7c062ee/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= +github.com/mitchellh/mapstructure v1.1.2 h1:fmNYVwqnSfB9mZU6OS2O6GsXM+wcskZDuKQzvN1EDeE= +github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= +github.com/mitchellh/mapstructure v1.3.3 h1:SzB1nHZ2Xi+17FP0zVQBHIZqvwRN9408fJO8h+eeNA8= +github.com/mitchellh/mapstructure v1.3.3/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= +github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= +github.com/montanaflynn/stats v0.0.0-20171201202039-1bf9dbcd8cbe/go.mod h1:wL8QJuTMNUDYhXwkmfOly8iTdp5TEcJFWZD2D7SIkUc= +github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= +github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e h1:fD57ERR4JtEqsWbfPhv4DMiApHyliiK5xCTNVSPiaAs= +github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= +github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U= +github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= +github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= +github.com/pelletier/go-toml v1.7.0/go.mod h1:vwGMzjaWMwyfHwgIBhI2YUM4fB6nL6lVAvS1LBMMhTE= +github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pkg/errors v0.9.1/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/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndrE9hABlRI= +github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= +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/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/prometheus/common v0.0.0-20181113130724-41aa239b4cce/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= +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/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/rogpeppe/go-internal v1.1.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= +github.com/rogpeppe/go-internal v1.2.2/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= +github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= +github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= +github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= +github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= +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.4.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= +github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMBDgk/93Q= +github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= +github.com/sirupsen/logrus v1.7.0 h1:ShrD1U9pZB12TX0cVy0DtePoCH97K8EtX+mg7ZARUtM= +github.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= +github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= +github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= +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/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= +github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= +github.com/spf13/cobra v1.1.1 h1:KfztREH0tPxJJ+geloSLaAkaPkr4ki2Er5quFV1TDo4= +github.com/spf13/cobra v1.1.1/go.mod h1:WnodtKOvamDL/PwE2M4iKs8aMDBZ5Q5klgD3qfVJQMI= +github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= +github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= +github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= +github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= +github.com/spf13/viper v1.7.0/go.mod h1:8WkrPz2fc9jxqZNCJI/76HCieCp4Q8HaLFoCha5qpdg= +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/objx v0.2.0 h1:Hbg2NidpLE8veEBkEZTL3CvlkUIVzuU9jDplZO54c48= +github.com/stretchr/objx v0.2.0/go.mod h1:qt09Ya8vawLte6SNmTgCsAVtYtaKzEcn8ATUoHMkEqE= +github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= +github.com/stretchr/testify v1.3.0 h1:TivCn/peBQ7UY8ooIcPgZFpTNSz0Q2U6UrFlUfqbe0Q= +github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= +github.com/stretchr/testify v1.6.1 h1:hDPOHmpOpP40lSULcqw7IrRb/u7w6RpDC9399XyoNd0= +github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw= +github.com/tidwall/pretty v1.0.0 h1:HsD+QiTn7sK6flMKIvNmpqz1qrpP3Ps6jOKIKMooyg4= +github.com/tidwall/pretty v1.0.0/go.mod h1:XNkn88O1ChpSDQmQeStsy+sBenx6DDtFZJxhVysOjyk= +github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= +github.com/xdg/scram v0.0.0-20180814205039-7eeb5667e42c/go.mod h1:lB8K/P019DLNhemzwFU4jHLhdvlE6uDZjXFejJXr49I= +github.com/xdg/stringprep v0.0.0-20180714160509-73f8eece6fdc/go.mod h1:Jhud4/sHMO4oL310DaZAKk9ZaJ08SJfe+sJh0HrGL1Y= +github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= +go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= +go.mongodb.org/mongo-driver v1.4.2/go.mod h1:WcMNYLx/IlOxLe6JRJiv2uXuCz6zBLndR4SoGjYphSc= +go.mongodb.org/mongo-driver v1.4.3 h1:moga+uhicpVshTyaqY9L23E6QqwcHRUv1sqyOsoyOO8= +go.mongodb.org/mongo-driver v1.4.3/go.mod h1:WcMNYLx/IlOxLe6JRJiv2uXuCz6zBLndR4SoGjYphSc= +go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= +go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= +go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= +go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= +go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= +golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20181029021203-45a5f77698d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20190422162423-af44ce270edf/go.mod h1:WFFai1msRO1wXaEeE5yQxYXgSfI8pQAWXbQop6sCtWE= +golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20190530122614-20be4c3c3ed5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= +golang.org/x/exp v0.0.0-20190829153037-c13cbed26979/go.mod h1:86+5VVa7VpoJ4kLfm080zCjGlMRFzhUhsZKEZO7MGek= +golang.org/x/exp v0.0.0-20191030013958-a1ab85dbe136/go.mod h1:JXzH8nQsPlswgeRAPE3MuO9GYsAcnJvJ4vnMwN/5qkY= +golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= +golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= +golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= +golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= +golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= +golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20190409202823-959b441ac422/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20190909230951-414d861bb4ac/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE= +golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o= +golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc= +golang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY= +golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181023162649-9b4f9f5ad519/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181201002055-351d144fa1fc/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181220203305-927f97764cc3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190501004415-9ce7a6920f09/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= +golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= +golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190412183630-56d357773e84/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181026203630-95b1ffbd15a5/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-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190403152447-81d4e9dc473e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190419153524-e8e3143a4f4a/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190531175056-4c3a928424d2/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191026070338-33540a1f6037 h1:YyJpGZS1sBuBCzLAR1VEpK193GlqGZbnPFnPV/5Rsb4= +golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201110211018-35f3e6cf4a65 h1:Qo9oJ566/Sq7N4hrGftVXs8GI2CXBCuOd4S2wHE/e0M= +golang.org/x/sys v0.0.0-20201110211018-35f3e6cf4a65/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= +golang.org/x/text v0.3.3 h1:cokOdA+Jmi5PJGXLlLllQSgYigAEfHXJAERHVMaCc2k= +golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +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-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= +golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190329151228-23e29df326fe/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190416151739-9c9e1878f421/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190420181800-aa740d480789/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/tools v0.0.0-20190531172133-b3315ee88b7d/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191112195655-aa38f8e97acc/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543 h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4= +golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE= +google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M= +google.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= +google.golang.org/api v0.9.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= +google.golang.org/api v0.13.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= +google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= +google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= +google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= +google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0= +google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= +google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190418145605-e7d98fc518a7/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190502173448-54afdca5d873/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= +google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= +google.golang.org/genproto v0.0.0-20190911173649-1774047e7e51/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8= +google.golang.org/genproto v0.0.0-20191108220845-16a3f7862a1a/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= +google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= +google.golang.org/grpc v1.21.1/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/check.v1 v1.0.0-20200227125254-8fa46927fb4f h1:BLraFXnmrev5lT+xlilqcH8XK9/i0At2xKjWk4p6zsU= +gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= +gopkg.in/ini.v1 v1.51.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= +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.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.3.0 h1:clyUAQHOM3G0M3f5vQj7LuJrETvjVot3Z5el9nffUtU= +gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.0-20200605160147-a5ece683394c h1:grhR+C34yXImVGp7EzNk+DTIk+323eIUWOmEevy6bDo= +gopkg.in/yaml.v3 v3.0.0-20200605160147-a5ece683394c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= +rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= diff --git a/img/chopchop_logo.png b/img/chopchop_logo.png deleted file mode 100644 index 63116d052fd651a4b1d619874fea5eaca29053a7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10640 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" + remediation: Make sure that access to Gitlab is properly monitored + description: Checks if a Gitlab instance exists + severity: "Low" + - name: Apache2 Ubuntu Default Page + match: + - "Apache2 Ubuntu Default Page" + remediation: Remove the symbolic link from the Apache default configuration + description: Detects the presence of a default Apache page + severity: "Informational" + - name: Drupal CMS + match: + - "drupal" + - '"sites/' + - '"core/' + remediation: Check that the version is the last one available on the vendor's website + description: Get the Drupal version of the site + severity: "Low" + - name: Status Code 500 + status_code: 500 + remediation: Check that the server has not completely fallen into error + description: Check return code 500 + severity: "Low" + - name: Iis + headers: + - "Server:Microsoft-IIS/6.0" + remediation: Patch the server as soon as possible + description: Verifies that the server is an IIS 6.0 + severity: "Informational" + - name: Indexof + match: + - "Index of" + remediation: Implementing rules at the application server level to prevent directory listing + description: Checks that the domain root does not return a file/folder list + severity: "Low" + - name: IndexOf2 + match: + - "<dir>" + remediation: Implementing rules at the application server level to prevent directory listing + description: Checks that the domain root does not return a file/folder list (simple encoding) + severity: "Low" + - name: MySQLError + match: + - 'You have an error in your SQL syntax' + remediation: Do not display MySQL errors on web pages + description: Checks that MySQL errors are not displayed + severity: "Medium" + - name: NginxDefaultPage + match: + - 'Welcome to nginx!' + remediation: Delete symbolic link from Nginx default configuration + description: Verifies that the default Nginx site is not accessible + severity: "Low" + - name: Osticket + match: + - 'Helpdesk software - powered by osTicket' + remediation: Check that the passwords used are robust + description: Verifies that the domain is not an OS Ticket instance + severity: "Informational" + - name: PHP open code + match: + - '' + remediation: Delete wildcards from xml files + description: Checks for the presence of a crossdomain.xml file with a wildcard for the domain + severity: "High" + - endpoint: "/manager/html" + checks: + - name: tomcat manager + status_code: 401 + remediation: Disable this interface in production + description: Verifies that under /manager/html the Tomcat administration interface is not accessible + severity: "Medium" + - endpoint: "/.htpasswd" + checks: + - name: .htpasswd not interpreted + match: + - ":" + remediation: Delete file and reset leaky passwords + description: Checks for the presence of an .htpasswd file at the root of the domain + severity: "Medium" + status_code: 200 + no_match: + - "' + remediation: Check that the administration interfaces are well protected + description: Detects the presence of a login page using the Apostrophe Framework (from Digital Factory) + severity: "Informational" + - name: Grafana + match: + - "isGrafanaAdmin" + remediation: Check that the passwords used are robust + description: Check access to Grafana administration + severity: "Informational" + - endpoint: "/user/login" + checks: + - name: eZ Publish Admin Panel + match: + - "Log in to the Administration Interface of eZ Publish" + remediation: Check that the passwords used are robust + description: Check access to the eZ Publish administration + severity: "Low" + - endpoint: "/fckeditor/editor/filemanager/browser/default/browser.html" + checks: + - name: FckEditor + match: + - "Resources Browser" + remediation: Put authentication on this form + description: Check access to a wysiwyg fckeditor + severity: "High" + - endpoint: "/.idea/workspace.xml" + checks: + - name: Idea WorkSpace + match: + - "phpMyAdmin' + remediation: Make sure that PHPMyAdmin access is monitored + description: Verifies that under /phpmyadmin a PHPMyAdmin instance is not accessible + status_code: 200 + severity: "Low" + - endpoint: "/server-status" + checks: + - name: Server Status + match: + - 'Waiting for Connection' + remediation: Disable this feature in Apache + description: Verifies that under /server-status of Apache information is accessible + severity: "Low" + - endpoint: "/examples/jsp/snp/snoop.jsp" + checks: + - name: Snoop + match: + - 'Request Information' + remediation: Delete basic files of a Tomcat installation + description: Detects the presence of snoop.jsp files (default files in a Tomcat install) + severity: "Informational" + - endpoint: "/actuator/health" + checks: + - name: SPringbootActuator + match: + - '{"status"' + headers: + - "Content-Type:application/json" + remediation: Disable this feature or protect access + description: Verifies that under /actuator/health information is not disclosed by Springboot + severity: "Low" + status_code: 200 + - endpoint: "/health" + checks: + - name: SpringbootActuator + match: + - '{"status"' + headers: + - "Content-Type:application/json" + remediation: Disable this feature or protect access + description: Verifies that under /health information is not disclosed by Springboot + severity: "Low" + status_code: 200 + - endpoint: "/.svn/wc.db" + checks: + - name: SVN db + headers: + - 'Content-Type:application/octet-stream' + remediation: Do not deploy .svn on production servers + description: Checks if an SVN database is publicly accessible + status_code : 200 + severity: "High" + - endpoint: "/.svn/entries" + checks: + - name: SVN db + headers: + - 'Content-Type:application/octet-stream' + remediation: Do not deploy .svn on production servers + description: Checks if an SVN database is publicly accessible + status_code: 200 + severity: "High" + - endpoint: "/web.config" + checks: + - name: Web Config + match: + - '' + remediation: Check that no sensitive information is present in the web.config + description: Verifies that the web.config configuration file of the ASP.net server is not accessible + severity: "Low" + - endpoint: "/wp-login.php" + checks: + - name: Wordpress Login Page + all_match: + - 'wp-login.php" method="post"' + - 'BIG-IP" + remediation: Make sure that F5 BIG-IP - TMUI access is monitored + description: Verifies that under /tmui a F5 BIG-IP TMUI is not accessible + severity: "Low" + - endpoint: "/images/imgpaper.png" + checks: + - name : Possible Trickbot Trojan Payload hosting imgpaper.png on Apache + headers: + - 'Content-Type:image/png' + remediation: Make sure your system isn't compromised + description: Possible Trickbot Trojan Payload hosting in /images/imgpaper.png + status_code: 200 + severity: "High" + - endpoint: "/images/imgpaper.png" + checks: + - name : Trickbot Trojan Payload hosting imgpaper.png on Nginx + headers: + - 'Content-Type:application/octet-stream' + remediation: Make sure your system isn't compromised + description: Possible Trickbot Trojan Payload hosting in /images/imgpaper.png + status_code: 200 + severity: "High" + - endpoint: "/images/cursor.png" + checks: + - name: Possible Trickbot Trojan Payload hosting cursor.png on Apache + headers: + - 'Content-Type:image/png' + remediation: Make sure your system isn't compromised + description: Possible Trickbot Trojan Payload hosting in /images/cursor.png + status_code: 200 + severity: "High" + - endpoint: "/images/cursor.png" + checks: + - name: Trickbot Trojan Payload hosting cursor.png on Nginx + headers: + - 'Content-Type:application/octet-stream' + remediation: Make sure your system isn't compromised + description: Possible Trickbot Trojan Payload hosting in /images/cursor.png + status_code: 200 + severity: "High" + - endpoint: "/images/redcar.png" + checks: + - name : Possible Trickbot Trojan Payload hosting redcar.png on Apache + headers: + - 'Content-Type:image/png' + remediation: Make sure your system isn't compromised + description: Possible Trickbot Trojan Payload hosting in /images/redcar.png + status_code: 200 + severity: "High" + - endpoint: "/images/redcar.png" + checks: + - name : Trickbot Trojan Payload hosting redcar.png on Nginx + headers: + - 'Content-Type:application/octet-stream' + remediation: Make sure your system isn't compromised + description: Possible Trickbot Trojan Payload hosting in /images/redcar.png + status_code: 200 + severity: "High" + - endpoint: "/ico/VidT6cErs" + checks: + - name : Possible Trickbot Trojan Payload hosting VidT6cErs + no_match: + - '' + - '' + headers: + - "Accept-Ranges:bytes" + remediation: Make sure your system isn't compromised + description: Possible Trickbot Trojan Payload hosting in /ico/VidT6cErs + status_code: 200 + severity: "High" + - endpoint: "/admin/libs/prettify-4-Mar-2013/prettify.css" + checks: + - name : Stormshield SNS Web Admin Console + headers: + - "Content-Type:text/css" + remediation: Make sure that Stormshield SNS Web Admin Console access is restricted & monitored + description: Stormshield SNS Web Admin Console is accessible + status_code: 200 + severity: "Low" + - endpoint: "/auth" + checks: + - name : Stormshield Web Portal + match: + - '/data/flag-fr.jpg' + - '/data/i_auth.png' + remediation: Make sure that Stormshield Web Portal access is restricted & monitored + description: Stormshield Web Portal is accessible + status_code: 200 + severity: "Informational" + - endpoint: "/restgui/start.html" + checks: + - name : Dell IDRAC + headers: + - "Content-Type:text/html" + remediation: Make sure that Dell IDRAC access is restricted & monitored + description: Dell IDRAC is accessible + status_code: 200 + severity: "Informational" + - endpoint: "/ui" + checks: + - name : VMware ESXi + match: + - 'ng-app="esxUiApp"' + remediation: Make sure that VMware ESXi access is restricted & monitored + description: VMware ESXi is accessible + status_code: 200 + severity: "Low" + - endpoint: "/vsphere-client" + checks: + - name : VMware vCenter + match: + - 'vSphere Web Client' + remediation: Make sure that VMware vCenter access is restricted & monitored + description: VMware vCenter is accessible + status_code: 200 + severity: "Low" + - endpoint: "/eai/index.html" + checks: + - name : Enovacom Suite V2 + match: + - 'href="/eai/Ressources/Images/v2.ico"' + remediation: Make sure that EAI Enovacom Suite V2 access is restricted & monitored + description: EAI Enovacom Suite V2 is accessible + status_code: 200 + severity: "Low" + - endpoint: "/mailscanner/login.php" + checks: + - name : MailWatch + match: + - 'MailWatch Login Page' + remediation: Make sure that MailWatch access is monitored + description: MailWatch is accessible + status_code: 200 + severity: "Low" + - endpoint: "/fog/management/index.php" + checks: + - name : FOG Project + match: + - 'Login' + - 'FOG Project' + remediation: Make sure that FOG Project access is monitored + description: FOG Project is accessible + status_code: 200 + severity: "Low" + - endpoint: "/.well-known/security.txt" + checks: + - name: Security.txt + match: + - "Contact" + remediation: Great ! A Security.txt file for contact is present + description: Detects the presence of Security.txt file + status_code: 200 + severity: "Informational" + - endpoint: "/" + checks: + - name : Microsoft-IIS/7.0 - Windows Server 2003/2008 + headers: + - "Server:Microsoft-IIS/7.0" + remediation: Upgrade to maintened version + description: Microsoft-IIS/7.0 - Windows Server 2003/2008 + severity: "Informational" + - name : Microsoft-IIS/7.5 - Windows Server 2003/2008 + headers: + - "Server:Microsoft-IIS/7.5" + remediation: Upgrade to maintened version + description: Microsoft-IIS/7.5 - Windows Server 2003/2008 + severity: "Informational" + - endpoint: "/" + checks: + - name : GE ViewPoint + match: + - 'ViewPoint System Status' + remediation: Make sure that GE ViewPoint System Status access is restricted & monitored + description: GE ViewPoint System Status is accessible / sensitive information leaking + status_code: 200 + severity: "Low" + - endpoint: "/" + checks: + - name : Ascom IP-DECT Base Station + match: + - '<select product="Ascom IP-DECT Base Station"' + remediation: Make sure that Ascom IP-DECT Base Station access is restricted & monitored + description: Ascom IP-DECT Base Station is accessible + status_code: 200 + severity: "Informational" + - endpoint: "/" + checks: + - name : EMC Unisphere + match: + - 'Unisphere<br>' + remediation: Make sure that EMC Unisphere access is restricted & monitored + description: EMC Unisphere is accessible + status_code: 200 + severity: "Low" + - endpoint: "/" + checks: + - name : F-Secure Policy Manager Server + match: + - '<title>F-Secure Policy Manager Server' + remediation: Make sure that F-Secure Policy Manager Server access is monitored + description: F-Secure Policy Manager Server is accessible + status_code: 200 + severity: "Informational" + - endpoint: "/" + checks: + - name: Apache2 Debian Default Page + match: + - 'Apache2 Debian Default Page: It works' + remediation: Remove the symbolic link from the Apache default configuration + description: Detects the presence of a default Apache page + severity: "Informational" + - endpoint: "/" + checks: + - name : Cisco IOS + headers: + - "Server:cisco-IOS" + remediation: Make sure that Cisco IOS access is restricted & monitored + description: Cisco IOS is accessible + severity: "Low" + - endpoint: "/XsEXPL" + checks: + - name: Xplore Web RIS + match: + - 'Xplore Exploitation' + remediation: Make sure that Xplore Web RIS access is restricted & monitored + description: Xplore Web RIS is accessible + severity: "Informational" + - endpoint: "/zimbraAdmin" + checks: + - name: Zimbra Administration + match: + - 'Zimbra Collaboration Suite Web Client' + remediation: Make sure that Zimbra Administration access is restricted & monitored + description: Zimbra Administration is accessible + severity: "Low" + - endpoint: "/" + checks: + - name: NETAVIS Observer + match: + - 'NETAVIS Observer' + remediation: Make sure that NETAVIS Observer access is restricted & monitored + description: NETAVIS Observer is accessible + severity: "Informational" + - endpoint: "/" + checks: + - name : Odin + match: + - '<h1 title="Operations Automation">' + remediation: Make sure that Odin service automation access is restricted & monitored + description: Odin service automation is accessible + severity: "Informational" + - endpoint: "/" + checks: + - name : Nordex Control + headers: + - "Server:Jetty/3.1.8 (Windows 2000 5.0 x86)" + remediation: Make sure that Nordex Control access is restricted & monitored + description: Nordex Control is accessible + severity: "Low" + - endpoint: "/" + checks: + - name : EIG GaugeTech Electricity Meter + headers: + - "Server:EIG Embedded Web Server" + remediation: Make sure that EIG GaugeTech Electricity Meter access is restricted & monitored + description: EIG GaugeTech Electricity Meter is accessible + severity: "Low" + - endpoint: "/" + checks: + - name : Weave Scope + match: + - '<title>Weave Scope' + remediation: Make sure that Weave Scope access is restricted & monitored + description: Weave Scope is accessible + severity: "Medium" + - endpoint: "/public/img/mongo-express-logo.png" + checks: + - name : Mongo Express + headers: + - 'Content-Type:image/png' + remediation: Make sure that Mongo Express access is restricted & monitored + description: Mongo Express is accessible + status_code: 200 + severity: "High" + - endpoint: "/login.html" + checks: + - name : Polycom + headers: + - 'Server:lighttpd' + match: + - 'Polycom Login' + remediation: Make sure that Polycom access is restricted & monitored + description: Polycom Video Conferencing is accessible + status_code: 200 + severity: "Informational" + - endpoint: "/securityRealm/user/admin/search/index?q=a" + checks: + - name : Jenkins CVE-2018-1000861 (RCE) + match: + - 'Jenkins' + - 'Search for' + no_match: + - 'HTTP ERROR 404 Not Found' + remediation: Patch the server as soon as possible + description: Jenkins server is vulnerable to RCE CVE-2018-1000861 + severity: "High" + - endpoint: "/?MAIN=TOPACCESS" + checks: + - name : TopAccess Toshiba MFP + match: + - '<!--<title class="clsTitle1">TopAccess-->' + remediation: Make sure that TopAccess access is restricted & monitored + description: TopAccess Toshiba MFP is accessible + status_code: 200 + severity: "Low" + - endpoint: "/" + checks: + - name : HP Printer + headers: + - "Server:Virata-EmWeb/R6_2_1" + remediation: Make sure that HP Printer access is restricted & monitored + description: HP Printer is accessible + status_code: 200 + severity: "Low" + - endpoint: "/ePrint/ePrintConfigDyn.xml" + checks: + - name : HP Printer + headers: + - 'Content-Type:text/xml' + remediation: Make sure that HP Printer access is restricted & monitored + description: HP Printer is accessible + status_code: 200 + severity: "Low" + - endpoint: "/" + checks: + - name : Printer (Lexmark, Dell, Toshiba, Sindoh) + headers: + - "Server:Lexmark_Web_Server" + remediation: Make sure that Printer access is restricted & monitored + description: Printer (Lexmark, Dell, Toshiba, Sindoh) is accessible + status_code: 200 + severity: "Low" + - endpoint: "/config.html" + checks: + - name : Zebra Label Printer + match: + - '

Zebra Technologies' + remediation: Make sure that Zebra Label Printer access is restricted & monitored + description: Zebra Label Printer is accessible + status_code: 200 + severity: "Low" diff --git a/tests/server.go b/tests/server.go new file mode 100644 index 0000000..5a777fb --- /dev/null +++ b/tests/server.go @@ -0,0 +1,16 @@ +package main + +import ( + "fmt" + "net/http" +) + +func main() { + http.HandleFunc("/", HelloServer) + http.ListenAndServe(":8000", nil) +} + +func HelloServer(w http.ResponseWriter, r *http.Request) { + fmt.Println("hit") + fmt.Fprintf(w, "Hello, man!") +}