From 6b148d35744c21db145769a966a3016ae1e1e087 Mon Sep 17 00:00:00 2001 From: Book Moons <35854232+bookmoons@users.noreply.github.com> Date: Thu, 29 Aug 2019 01:15:04 -0400 Subject: [PATCH 01/14] Define fuzz targets --- server/server_fuzz.go | 128 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 128 insertions(+) create mode 100644 server/server_fuzz.go diff --git a/server/server_fuzz.go b/server/server_fuzz.go new file mode 100644 index 0000000..b97ea88 --- /dev/null +++ b/server/server_fuzz.go @@ -0,0 +1,128 @@ +// +build gofuzz + +package server + +import ( + "crypto/tls" + "io/ioutil" + "net" + "strings" +) + +// FuzzProfile tests the profile server. +func FuzzProfile(fuzz []byte) int { + if len(fuzz) == 0 { + return -1 + } + server, err := New(EnableProfiler()) + if err != nil { + panic(err.Error()) + } + server.Run() + defer server.profileListener.Close() + defer server.httpListener.Close() + address := server.profileListener.Addr + connection, err := net.Dial("tcp", address) + if err != nil { + panic(err.Error()) + } + _, err = connection.Write(fuzz) + if err != nil { + return 0 + } + response, err := ioutil.ReadAll(connection) + if err != nil { + return 0 + } + err = connection.Close() + if err != nil { + return 0 + } + fields := strings.Fields(string(response)) + if len(fields) < 2 { + panic("invalid HTTP response") + } + code := fields[1] + if code == "500" { + panic("server panicked") + } + return 1 +} + +// FuzzHTTP tests the HTTP server. +func FuzzHTTP(fuzz []byte) int { + if len(fuzz) == 0 { + return -1 + } + server, err := New(Listener("localhost")) + if err != nil { + panic(err.Error()) + } + server.Run() + defer server.httpListener.Close() + address := server.httpListener.Addr + connection, err := net.Dial("tcp", address) + if err != nil { + panic(err.Error()) + } + _, err = connection.Write(fuzz) + if err != nil { + return 0 + } + response, err := ioutil.ReadAll(connection) + if err != nil { + return 0 + } + err = connection.Close() + if err != nil { + return 0 + } + fields := strings.Fields(string(response)) + if len(fields) < 2 { + panic("invalid HTTP response") + } + code := fields[1] + if code == "500" { + panic("server panicked") + } + return 1 +} + +// FuzzHTTPS tests the HTTPS server. +func FuzzHTTPS(fuzz []byte) int { + if len(fuzz) == 0 { + return -1 + } + server, err := New(TLSListener("localhost", true)) + if err != nil { + panic(err.Error()) + } + server.Run() + defer server.httpsListener.Close() + address := server.httpsListener.Addr + connection, err := tls.Dial("tcp", address, nil) + if err != nil { + panic(err.Error()) + } + _, err = connection.Write(fuzz) + if err != nil { + return 0 + } + response, err := ioutil.ReadAll(connection) + if err != nil { + return 0 + } + err = connection.Close() + if err != nil { + return 0 + } + fields := strings.Fields(string(response)) + if len(fields) < 2 { + panic("invalid HTTP response") + } + code := fields[1] + if code == "500" { + panic("server panicked") + } + return 1 +} From 76f00c5d043b44e949ead60de5a3174605d8101c Mon Sep 17 00:00:00 2001 From: Book Moons <35854232+bookmoons@users.noreply.github.com> Date: Thu, 29 Aug 2019 01:17:28 -0400 Subject: [PATCH 02/14] Configure Fuzzit --- .travis.yml | 15 +++++++++++++++ fuzzit.sh | 38 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 53 insertions(+) create mode 100755 fuzzit.sh diff --git a/.travis.yml b/.travis.yml index 1e9b611..025c019 100644 --- a/.travis.yml +++ b/.travis.yml @@ -4,6 +4,9 @@ sudo: false os: - linux +services: + - docker + go: - 1.10.x - 1.11.x @@ -19,6 +22,18 @@ script: - go vet ./... - go test ./... +jobs: + include: + - stage: Fuzz regression + go: 1.12.x + dist: bionic + script: ./fuzzit.sh local-regression + - stage: Fuzz + if: branch = master AND type IN (push) + go: 1.12.x + dist: bionic + script: ./fuzzit.sh fuzzing + before_deploy: - mkdir -p release - "GOOS=linux GOARCH=amd64 CGO_ENABLED=0 go build -ldflags -a -tags netgo -ldflags '-s -w -extldflags -static' -o release/transfersh-$TRAVIS_TAG-linux-amd64" diff --git a/fuzzit.sh b/fuzzit.sh new file mode 100755 index 0000000..1daa39c --- /dev/null +++ b/fuzzit.sh @@ -0,0 +1,38 @@ +#!/bin/bash +set -xe + +# Validate arguments +if [ "$#" -ne 1 ]; then + echo "Usage: $0 " + exit 1 +fi +if [ -z "$FUZZIT_API_KEY" ]; then + echo "Set FUZZIT_API_KEY to your Fuzzit API key" + exit 2 +fi + +# Configure +ROOT=./server +TYPE=$1 + +# Setup +export GO111MODULE="off" +go get -u github.com/dvyukov/go-fuzz/go-fuzz github.com/dvyukov/go-fuzz/go-fuzz-build +go get -d -v -u ./... +if [ ! -f fuzzit ]; then + wget -q -O fuzzit https://github.com/fuzzitdev/fuzzit/releases/download/v2.4.29/fuzzit_Linux_x86_64 + chmod a+x fuzzit +fi + +# Fuzz +function fuzz { + FUNC=Fuzz$1 + TARGET=$2 + DIR=${3:-$ROOT} + go-fuzz-build -libfuzzer -func $FUNC -o fuzzer.a $DIR + clang -fsanitize=fuzzer fuzzer.a -o fuzzer + ./fuzzit create job --type $TYPE $TARGET fuzzer +} +fuzz Profile profile +fuzz HTTP http +fuzz HTTPS https From 806006a0b8abfa695720332bdb86eaae297dd899 Mon Sep 17 00:00:00 2001 From: Book Moons <35854232+bookmoons@users.noreply.github.com> Date: Thu, 29 Aug 2019 01:35:08 -0400 Subject: [PATCH 03/14] Add Fuzzit badge --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 912cc85..96528e7 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# transfer.sh [![Gitter](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/dutchcoders/transfer.sh?utm_source=badge&utm_medium=badge&utm_campaign=&utm_campaign=pr-badge&utm_content=badge) [![Go Report Card](https://goreportcard.com/badge/github.com/dutchcoders/transfer.sh)](https://goreportcard.com/report/github.com/dutchcoders/transfer.sh) [![Docker pulls](https://img.shields.io/docker/pulls/dutchcoders/transfer.sh.svg)](https://hub.docker.com/r/dutchcoders/transfer.sh/) [![Build Status](https://travis-ci.org/dutchcoders/transfer.sh.svg?branch=master)](https://travis-ci.org/dutchcoders/transfer.sh) +# transfer.sh [![Gitter](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/dutchcoders/transfer.sh?utm_source=badge&utm_medium=badge&utm_campaign=&utm_campaign=pr-badge&utm_content=badge) [![Go Report Card](https://goreportcard.com/badge/github.com/dutchcoders/transfer.sh)](https://goreportcard.com/report/github.com/dutchcoders/transfer.sh) [![Docker pulls](https://img.shields.io/docker/pulls/dutchcoders/transfer.sh.svg)](https://hub.docker.com/r/dutchcoders/transfer.sh/) [![Build Status](https://travis-ci.org/dutchcoders/transfer.sh.svg?branch=master)](https://travis-ci.org/dutchcoders/transfer.sh) [![Fuzzit Status](https://app.fuzzit.dev/badge?org_id=transfer.sh)](https://app.fuzzit.dev/orgs/transfer.sh/dashboard) Easy and fast file sharing from the command-line. This code contains the server with everything you need to create your own instance. From 071ecb491c8b1a0b988b9caa4b4f275c43efe59e Mon Sep 17 00:00:00 2001 From: Book Moons <35854232+bookmoons@users.noreply.github.com> Date: Thu, 29 Aug 2019 03:23:12 -0400 Subject: [PATCH 04/14] fuzz: Remove API key requirement Prevents use of public corpus without API key. --- fuzzit.sh | 4 ---- 1 file changed, 4 deletions(-) diff --git a/fuzzit.sh b/fuzzit.sh index 1daa39c..90e823e 100755 --- a/fuzzit.sh +++ b/fuzzit.sh @@ -6,10 +6,6 @@ if [ "$#" -ne 1 ]; then echo "Usage: $0 " exit 1 fi -if [ -z "$FUZZIT_API_KEY" ]; then - echo "Set FUZZIT_API_KEY to your Fuzzit API key" - exit 2 -fi # Configure ROOT=./server From b40e9d1fb8643a0e180b9c3d6e338d3e21566f4d Mon Sep 17 00:00:00 2001 From: Book Moons <35854232+bookmoons@users.noreply.github.com> Date: Thu, 29 Aug 2019 03:37:00 -0400 Subject: [PATCH 05/14] fuzz: Qualify target ID Includes org name in target ID. --- fuzzit.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/fuzzit.sh b/fuzzit.sh index 90e823e..2f1b4f6 100755 --- a/fuzzit.sh +++ b/fuzzit.sh @@ -8,6 +8,7 @@ if [ "$#" -ne 1 ]; then fi # Configure +NAME=transfersh ROOT=./server TYPE=$1 @@ -27,7 +28,7 @@ function fuzz { DIR=${3:-$ROOT} go-fuzz-build -libfuzzer -func $FUNC -o fuzzer.a $DIR clang -fsanitize=fuzzer fuzzer.a -o fuzzer - ./fuzzit create job --type $TYPE $TARGET fuzzer + ./fuzzit create job --type $TYPE $NAME/$TARGET fuzzer } fuzz Profile profile fuzz HTTP http From 8c5ef8f2e15ef6adb32e02fb7500dfc10c3e754e Mon Sep 17 00:00:00 2001 From: Andrea Spacca Date: Sat, 31 Aug 2019 11:41:34 +0200 Subject: [PATCH 06/14] Fuzz local storage test --- .travis.yml | 4 +- fuzzit.sh | 4 +- server/server_fuzz.go | 156 ++++++++++++++++-------------------------- 3 files changed, 62 insertions(+), 102 deletions(-) diff --git a/.travis.yml b/.travis.yml index 025c019..6e1f47a 100644 --- a/.travis.yml +++ b/.travis.yml @@ -29,7 +29,7 @@ jobs: dist: bionic script: ./fuzzit.sh local-regression - stage: Fuzz - if: branch = master AND type IN (push) + if: branch = fuzz AND type IN (push) go: 1.12.x dist: bionic script: ./fuzzit.sh fuzzing @@ -53,5 +53,5 @@ deploy: skip_cleanup: true on: tags: true - go: tip + go: 1.12.x overwrite: true diff --git a/fuzzit.sh b/fuzzit.sh index 2f1b4f6..5e503e9 100755 --- a/fuzzit.sh +++ b/fuzzit.sh @@ -30,6 +30,4 @@ function fuzz { clang -fsanitize=fuzzer fuzzer.a -o fuzzer ./fuzzit create job --type $TYPE $NAME/$TARGET fuzzer } -fuzz Profile profile -fuzz HTTP http -fuzz HTTPS https +fuzz LocalStorage local-storage diff --git a/server/server_fuzz.go b/server/server_fuzz.go index b97ea88..7a01c8b 100644 --- a/server/server_fuzz.go +++ b/server/server_fuzz.go @@ -3,126 +3,88 @@ package server import ( - "crypto/tls" - "io/ioutil" - "net" - "strings" + "bytes" + "io" + "math/rand" + "reflect" ) -// FuzzProfile tests the profile server. -func FuzzProfile(fuzz []byte) int { - if len(fuzz) == 0 { +const applicationOctetStream = "application/octet-stream" + +// FuzzLocalStorage tests the Local Storage. +func FuzzLocalStorage(fuzz []byte) int { + var fuzzLength = uint64(len(fuzz)) + if fuzzLength == 0 { return -1 } - server, err := New(EnableProfiler()) - if err != nil { - panic(err.Error()) - } - server.Run() - defer server.profileListener.Close() - defer server.httpListener.Close() - address := server.profileListener.Addr - connection, err := net.Dial("tcp", address) - if err != nil { - panic(err.Error()) - } - _, err = connection.Write(fuzz) - if err != nil { - return 0 - } - response, err := ioutil.ReadAll(connection) - if err != nil { - return 0 - } - err = connection.Close() + + storage, err := NewLocalStorage("/tmp", nil) if err != nil { - return 0 + panic("unable to create local storage") } - fields := strings.Fields(string(response)) - if len(fields) < 2 { - panic("invalid HTTP response") - } - code := fields[1] - if code == "500" { - panic("server panicked") - } - return 1 -} -// FuzzHTTP tests the HTTP server. -func FuzzHTTP(fuzz []byte) int { - if len(fuzz) == 0 { - return -1 - } - server, err := New(Listener("localhost")) + token := Encode(10000000 + int64(rand.Intn(1000000000))) + filename := Encode(10000000 + int64(rand.Intn(1000000000))) + ".bin" + + input := bytes.NewReader(fuzz) + err = storage.Put(token, filename, input, applicationOctetStream, fuzzLength) if err != nil { - panic(err.Error()) + panic("unable to save file") } - server.Run() - defer server.httpListener.Close() - address := server.httpListener.Addr - connection, err := net.Dial("tcp", address) + + contentType, contentLength, err := storage.Head(token, filename) if err != nil { - panic(err.Error()) + panic("not visible through head") } - _, err = connection.Write(fuzz) - if err != nil { - return 0 + + if contentType != applicationOctetStream { + panic("incorrect content type") } - response, err := ioutil.ReadAll(connection) - if err != nil { - return 0 + + if contentLength != fuzzLength { + panic("incorrect content length") } - err = connection.Close() + + output, contentType, contentLength, err := storage.Get(token, filename) if err != nil { - return 0 - } - fields := strings.Fields(string(response)) - if len(fields) < 2 { - panic("invalid HTTP response") - } - code := fields[1] - if code == "500" { - panic("server panicked") + panic("not visible through get") } - return 1 -} -// FuzzHTTPS tests the HTTPS server. -func FuzzHTTPS(fuzz []byte) int { - if len(fuzz) == 0 { - return -1 + if contentType != applicationOctetStream { + panic("incorrect content type") } - server, err := New(TLSListener("localhost", true)) - if err != nil { - panic(err.Error()) + + if contentLength != fuzzLength { + panic("incorrect content length") } - server.Run() - defer server.httpsListener.Close() - address := server.httpsListener.Addr - connection, err := tls.Dial("tcp", address, nil) - if err != nil { - panic(err.Error()) + + var length uint64 + b := make([]byte, len(fuzz)) + for { + n, err := output.Read(b) + length += uint64(n) + if err == io.EOF { + break + } } - _, err = connection.Write(fuzz) - if err != nil { - return 0 + + if !reflect.DeepEqual(b, fuzz) { + panic("incorrect content body") } - response, err := ioutil.ReadAll(connection) - if err != nil { - return 0 + + if length != fuzzLength { + panic("incorrect content length") } - err = connection.Close() + + err = storage.Delete(token, filename) if err != nil { - return 0 - } - fields := strings.Fields(string(response)) - if len(fields) < 2 { - panic("invalid HTTP response") + panic("unable to delete file") } - code := fields[1] - if code == "500" { - panic("server panicked") + + _, _, err = storage.Head(token, filename) + if !storage.IsNotExist(err) { + panic("file not deleted") } + return 1 } From bef766f6054f8a79d7f9a20f8758390c01852b44 Mon Sep 17 00:00:00 2001 From: Andrea Spacca Date: Mon, 7 Oct 2019 21:30:53 +0200 Subject: [PATCH 07/14] FIX BUILD --- .travis.yml | 2 +- go.mod | 31 ++++++++------- go.sum | 94 ++++++++++++++++++++++++++++++++++++++++++++++ server/handlers.go | 2 +- 4 files changed, 114 insertions(+), 15 deletions(-) diff --git a/.travis.yml b/.travis.yml index 6e1f47a..892e010 100644 --- a/.travis.yml +++ b/.travis.yml @@ -11,6 +11,7 @@ go: - 1.10.x - 1.11.x - 1.12.x + - 1.13.x - tip install: @@ -29,7 +30,6 @@ jobs: dist: bionic script: ./fuzzit.sh local-regression - stage: Fuzz - if: branch = fuzz AND type IN (push) go: 1.12.x dist: bionic script: ./fuzzit.sh fuzzing diff --git a/go.mod b/go.mod index 63151ea..f2d35e8 100644 --- a/go.mod +++ b/go.mod @@ -3,34 +3,39 @@ module github.com/dutchcoders/transfer.sh go 1.12 require ( + cloud.google.com/go v0.46.3 // indirect github.com/PuerkitoBio/ghost v0.0.0-20160324114900-206e6e460e14 github.com/VojtechVitek/ratelimit v0.0.0-20160722140851-dc172bc0f6d2 - github.com/aws/aws-sdk-go v1.23.8 + github.com/aws/aws-sdk-go v1.25.7 + github.com/cpuguy83/go-md2man/v2 v2.0.0 // indirect github.com/dutchcoders/go-clamd v0.0.0-20170520113014-b970184f4d9e github.com/dutchcoders/go-virustotal v0.0.0-20140923143438-24cc8e6fa329 github.com/dutchcoders/transfer.sh-web v0.0.0-20190716184912-96e06a2276ba github.com/elazarl/go-bindata-assetfs v1.0.0 github.com/fatih/color v1.7.0 github.com/garyburd/redigo v1.6.0 // indirect - github.com/golang/gddo v0.0.0-20190815223733-287de01127ef + github.com/golang/gddo v0.0.0-20190904175337-72a348e765d2 + github.com/golang/groupcache v0.0.0-20191002201903-404acd9df4cc // indirect github.com/gorilla/mux v1.7.3 github.com/gorilla/securecookie v1.1.1 // indirect - github.com/kr/pretty v0.1.0 // indirect - github.com/mattn/go-colorable v0.1.2 // indirect + github.com/hashicorp/golang-lru v0.5.3 // indirect + github.com/mattn/go-colorable v0.1.4 // indirect github.com/mattn/go-isatty v0.0.9 // indirect github.com/microcosm-cc/bluemonday v1.0.2 github.com/nu7hatch/gouuid v0.0.0-20131221200532-179d4d0c4d8d // indirect - github.com/shurcooL/sanitized_anchor_name v1.0.0 // indirect + github.com/russross/blackfriday/v2 v2.0.1 github.com/skip2/go-qrcode v0.0.0-20190110000554-dc11ecdae0a9 github.com/stretchr/testify v1.4.0 // indirect github.com/tomasen/realip v0.0.0-20180522021738-f0c99a92ddce - github.com/urfave/cli v1.21.0 - golang.org/x/crypto v0.0.0-20190820162420-60c769a6c586 - golang.org/x/net v0.0.0-20190813141303-74dc4d7220e7 + github.com/urfave/cli v1.22.1 + go.opencensus.io v0.22.1 // indirect + golang.org/x/crypto v0.0.0-20191002192127-34f69633bfdc + golang.org/x/net v0.0.0-20191007182048-72f939374954 golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45 - google.golang.org/api v0.9.0 - gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 - gopkg.in/russross/blackfriday.v2 v2.0.1 + golang.org/x/sys v0.0.0-20191007154456-ef33b2fb2c41 // indirect + google.golang.org/api v0.10.0 + google.golang.org/appengine v1.6.4 // indirect + google.golang.org/genproto v0.0.0-20191007162740-aa923e3a3354 // indirect + google.golang.org/grpc v1.24.0 // indirect + gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 ) - -replace gopkg.in/russross/blackfriday.v2 v2.0.1 => github.com/russross/blackfriday/v2 v2.0.1 diff --git a/go.sum b/go.sum index 0338c25..ffa9750 100644 --- a/go.sum +++ b/go.sum @@ -2,14 +2,29 @@ cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMT cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= cloud.google.com/go v0.38.0 h1:ROfEUZz+Gh5pa62DJWXSaonyu3StP6EA6lPEXPI6mCo= 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 h1:AVXDdKsrtX33oR9fbCMu/+c1o8Ofjq6Ku/MInaLVg5Y= +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/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I= 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/PuerkitoBio/ghost v0.0.0-20160324114900-206e6e460e14 h1:3zOOc7WdrATDXof+h/rBgMsg0sAmZIEVHft1UbWHh94= github.com/PuerkitoBio/ghost v0.0.0-20160324114900-206e6e460e14/go.mod h1:+VFiaivV54Sa94ijzA/ZHQLoHuoUIS9hIqCK6f/76Zw= github.com/VojtechVitek/ratelimit v0.0.0-20160722140851-dc172bc0f6d2 h1:sIvihcW4qpN5qGSjmrsDDAbLpEq5tuHjJJfWY0Hud5Y= github.com/VojtechVitek/ratelimit v0.0.0-20160722140851-dc172bc0f6d2/go.mod h1:3YwJE8rEisS9eraee0hygGG4G3gqX8H8Nyu+nPTUnGU= github.com/aws/aws-sdk-go v1.23.8 h1:G/azJoBN0pnhB3B+0eeC4yyVFYIIad6bbzg6wwtImqk= github.com/aws/aws-sdk-go v1.23.8/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= +github.com/aws/aws-sdk-go v1.25.7 h1:MRnnec09yF/nL/lfpMsYqHHyXUUt4P9LofFZA2D93PE= +github.com/aws/aws-sdk-go v1.25.7/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= +github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d h1:U+s90UTSYgptZMwQh2aRr3LuazLJIa+Pg3Kc1ylSYVY= +github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= +github.com/cpuguy83/go-md2man/v2 v2.0.0 h1:EoUDS0afbrsXAZ9YQ9jdu/mZ2sXgT1/2yyNng4PGlyM= +github.com/cpuguy83/go-md2man/v2 v2.0.0/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= github.com/davecgh/go-spew v1.1.0 h1:ZDRjVQ15GmhC3fiQ8ni8+OwkZQO4DARzQgrnXU1Liz8= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/dutchcoders/go-clamd v0.0.0-20170520113014-b970184f4d9e h1:rcHHSQqzCgvlwP0I/fQ8rQMn/MpHE5gWSLdtpxtP6KQ= @@ -26,19 +41,31 @@ github.com/garyburd/redigo v1.6.0 h1:0VruCpn7yAIIu7pWVClQC8wxCJEcG3nyzpMSHKi1PQc github.com/garyburd/redigo v1.6.0/go.mod h1:NR3MbYisc3/PwhQ00EMzDiPmrwpPxAn5GI05/YaO1SY= github.com/golang/gddo v0.0.0-20190815223733-287de01127ef h1:4NNI5xhPnmBogD0yj/BV20wSHOg+7YcxX+JyX1tGVn8= github.com/golang/gddo v0.0.0-20190815223733-287de01127ef/go.mod h1:xEhNfoBDX1hzLm2Nf80qUvZ2sVwoMZ8d6IE2SrsQfh4= +github.com/golang/gddo v0.0.0-20190904175337-72a348e765d2 h1:xisWqjiKEff2B0KfFYGpCqc3M3zdTz+OHQHRc09FeYk= +github.com/golang/gddo v0.0.0-20190904175337-72a348e765d2/go.mod h1:xEhNfoBDX1hzLm2Nf80qUvZ2sVwoMZ8d6IE2SrsQfh4= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b h1:VKtxabqXZkF25pY9ekfRL6a582T4P37/31XEstQ5p58= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= +github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6 h1:ZgQEtGgCBiWRM39fZuwSd1LwSqqSW0hOdXCYYDX0R3I= +github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20191002201903-404acd9df4cc h1:55rEp52jU6bkyslZ1+C/7NGfpQsEc6pxGLAGDOctqbw= +github.com/golang/groupcache v0.0.0-20191002201903-404acd9df4cc/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 h1:YF8+flBXS5eO826T4nzqPrxfhQThhXl0YzfuUPu4SBg= github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.2 h1:6nsPYzhq5kReh6QImI3k5qWzO4PEbvbIW2cwSfR/6xs= +github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= 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/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/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= github.com/googleapis/gax-go/v2 v2.0.5 h1:sjZBwGj9Jlw33ImPtvFviGYvseOtDM7hkSKB7+Tv3SM= github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= @@ -49,9 +76,11 @@ github.com/gorilla/securecookie v1.1.1/go.mod h1:ra0sb63/xPlUeL+yeDciTfxMRAA+MP+ github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/golang-lru v0.5.1 h1:0hERBMJE1eitiLkihrMvRVBYAkpHzc/J3QdDN+dAcgU= github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= +github.com/hashicorp/golang-lru v0.5.3/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af h1:pmfjZENx5imkbgOkpRUYLnmbU7UEFbjtDA2hxJ1ichM= github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= +github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= 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= @@ -59,6 +88,8 @@ 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/mattn/go-colorable v0.1.2 h1:/bC9yWikZXAL9uJdulbSfyVNIR3n3trXl+v8+1sx8mU= github.com/mattn/go-colorable v0.1.2/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= +github.com/mattn/go-colorable v0.1.4 h1:snbPLB8fVfU9iwbbo30TPtbLRzwWu6aJS6Xh4eaaviA= +github.com/mattn/go-colorable v0.1.4/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= github.com/mattn/go-isatty v0.0.9 h1:d5US/mDsogSGW37IV293h//ZFaeajb69h+EHFsv2xGg= github.com/mattn/go-isatty v0.0.9/go.mod h1:YNRxwqDuOph6SZLI9vUUz6OYw3QyUt7WiY2yME+cCiQ= @@ -68,6 +99,7 @@ github.com/nu7hatch/gouuid v0.0.0-20131221200532-179d4d0c4d8d h1:VhgPp6v9qf9Agr/ github.com/nu7hatch/gouuid v0.0.0-20131221200532-179d4d0c4d8d/go.mod h1:YUTz3bUH2ZwIWBy3CJBeOBEugqcmXREj14T+iG/4k4U= 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/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/russross/blackfriday/v2 v2.0.1 h1:lPqVAte+HuHNfhJ/0LC98ESWRz8afy9tM/0RK8m9o+Q= github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/shurcooL/sanitized_anchor_name v1.0.0 h1:PdmoCO6wvbs+7yrJyMORt4/BmY5IYyJwS/kOiWx8mHo= @@ -81,17 +113,36 @@ github.com/tomasen/realip v0.0.0-20180522021738-f0c99a92ddce h1:fb190+cK2Xz/dvi9 github.com/tomasen/realip v0.0.0-20180522021738-f0c99a92ddce/go.mod h1:o8v6yHRoik09Xen7gje4m9ERNah1d1PPsVq1VEx9vE4= github.com/urfave/cli v1.21.0 h1:wYSSj06510qPIzGSua9ZqsncMmWE3Zr55KBERygyrxE= github.com/urfave/cli v1.21.0/go.mod h1:lxDj6qX9Q6lWQxIrbrT0nwecwUtRnhVZAJjJZrVUZZQ= +github.com/urfave/cli v1.22.1 h1:+mkCCcOFKPnCmVYVcURKps1Xe+3zP90gSYGNfRkjoIY= +github.com/urfave/cli v1.22.1/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= go.opencensus.io v0.21.0 h1:mU6zScU4U1YAFPHEHYk+3JC4SY7JxgkqS10ZOSyksNg= go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= +go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= +go.opencensus.io v0.22.1 h1:8dP3SGL7MPB94crU3bEPplMPe83FI4EouesJUeFHv50= +go.opencensus.io v0.22.1/go.mod h1:Ap50jQcDJrx6rB6VgeeFPtuPIf3wMRvRfrfYDO6+BmA= 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-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190820162420-60c769a6c586 h1:7KByu05hhLed2MO29w7p1XfZvZ13m8mub3shuVftRs0= golang.org/x/crypto v0.0.0-20190820162420-60c769a6c586/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20191002192127-34f69633bfdc h1:c0o/qxkaO2LF5t6fQrT4b5hzyggAkLLlCUjqfRxd8Q4= +golang.org/x/crypto v0.0.0-20191002192127-34f69633bfdc/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/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/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-20181220203305-927f97764cc3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -99,9 +150,14 @@ golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73r 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-20190813141303-74dc4d7220e7 h1:fHDIZ2oxGnUZRN6WgWFCbYBjH9uqVPRCUVUDhs0wnbA= golang.org/x/net v0.0.0-20190813141303-74dc4d7220e7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20191007182048-72f939374954 h1:JGZucVF/L/TotR719NbujzadOZ2AgnYlqphQGHDCKaU= +golang.org/x/net v0.0.0-20191007182048-72f939374954/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 h1:SVwTIAaPC2U/AvvLNZ2a7OVsmBpC8L5BlwK1whH3hm0= @@ -114,41 +170,79 @@ golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/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-20190222072716-a9d3bda3a223/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-20190412213103-97732733099d/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-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-20190813064441-fde4db37ae7a h1:aYOabOQFp6Vj6W1F80affTUvO9UxmJRx8K0gsfABByQ= golang.org/x/sys v0.0.0-20190813064441-fde4db37ae7a/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191007154456-ef33b2fb2c41 h1:OC2BiV9nQHWgVMNbxZ5/eZKWnnd3Z4H9W5zdNvC4EBc= +golang.org/x/sys v0.0.0-20191007154456-ef33b2fb2c41/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 h1:tW2bmiBqwgJj/UpqtC8EpXEZVYOwU0yG4iWbprSVAcs= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= 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-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-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-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +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/xerrors v0.0.0-20190717185122-a985d3407aa7/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 h1:jbyannxz0XFD3zdjgrSUsaJbgpH4eTrkdhRChkHPfO8= google.golang.org/api v0.9.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= +google.golang.org/api v0.10.0 h1:7tmAxx3oKE98VMZ+SBZzvYYWRQ9HODBxmC8mXUsraSQ= +google.golang.org/api v0.10.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= 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 h1:KxkO13IPW4Lslp2bz+KHP2E3gtFlrIGNThxkZQ3g+4c= 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/appengine v1.6.4 h1:WiKh4+/eMB2HaY7QhCfW/R7MuRAoA8QMCSJA6jP5/fo= +google.golang.org/appengine v1.6.4/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 h1:nfPFGzJkUDX6uBmpN/pSw7MbOAWegH5QDQuoXFHedLg= 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-20191007162740-aa923e3a3354 h1:KJxw2DvYTCIxlEY4yqWyLdvFGlci4EKTCbrZwfyxDME= +google.golang.org/genproto v0.0.0-20191007162740-aa923e3a3354/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.20.1 h1:Hz2g2wirWK7H0qIIhGIqRGTuMwTE8HEKFnDZZ7lm9NU= google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= +google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= +google.golang.org/grpc v1.24.0 h1:vb/1TCsVn3DcJlQ0Gs1yB1pKI6Do2/QNwxdKqmc/b0s= +google.golang.org/grpc v1.24.0/go.mod h1:XDChyiUovWa60DnaeDeZmSW86xtLtjtZbwvSiRnRtcA= 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-20190902080502-41f04d3bba15 h1:YR8cESwS4TdDjEe65xsg0ogRM/Nc3DYOhEAlW+xobZo= +gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= gopkg.in/yaml.v2 v2.2.2 h1:ZCJp+EgiOT7lHqUV2J862kp8Qj64Jo6az82+3Td9dZw= gopkg.in/yaml.v2 v2.2.2/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.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.0-20190523083050-ea95bdfd59fc/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/server/handlers.go b/server/handlers.go index 0237c80..81e45b0 100644 --- a/server/handlers.go +++ b/server/handlers.go @@ -35,7 +35,7 @@ import ( "encoding/json" "errors" "fmt" - blackfriday "gopkg.in/russross/blackfriday.v2" + blackfriday "github.com/russross/blackfriday/v2" "html" html_template "html/template" "io" From b8ca25fb9bdf26846b5a8fbc80bfb7a711b7945e Mon Sep 17 00:00:00 2001 From: Andrea Spacca Date: Mon, 7 Oct 2019 21:41:15 +0200 Subject: [PATCH 08/14] FIX BUILD --- .travis.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.travis.yml b/.travis.yml index 892e010..7a2c810 100644 --- a/.travis.yml +++ b/.travis.yml @@ -14,6 +14,10 @@ go: - 1.13.x - tip +env: + global: + - GO111MODULE=on + install: - echo "This is an override of the default install deps step in travis." From 9e27485bbbcd7e64b35a9e2513e3712c0fc232d5 Mon Sep 17 00:00:00 2001 From: Andrea Spacca Date: Mon, 7 Oct 2019 21:47:30 +0200 Subject: [PATCH 09/14] FIX BUILD --- .travis.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 7a2c810..7c2c883 100644 --- a/.travis.yml +++ b/.travis.yml @@ -8,7 +8,6 @@ services: - docker go: - - 1.10.x - 1.11.x - 1.12.x - 1.13.x From c0d5d99e5d7f8c3bb70ded0efc0a4b763a31eee1 Mon Sep 17 00:00:00 2001 From: Andrea Spacca Date: Mon, 7 Oct 2019 22:04:02 +0200 Subject: [PATCH 10/14] FIX BUILD --- fuzzit.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fuzzit.sh b/fuzzit.sh index 5e503e9..6f18daf 100755 --- a/fuzzit.sh +++ b/fuzzit.sh @@ -13,7 +13,7 @@ ROOT=./server TYPE=$1 # Setup -export GO111MODULE="off" +export GO111MODULE="on" go get -u github.com/dvyukov/go-fuzz/go-fuzz github.com/dvyukov/go-fuzz/go-fuzz-build go get -d -v -u ./... if [ ! -f fuzzit ]; then From 6b249d21c4dc2033b3eb3d4c7596b1552420d03f Mon Sep 17 00:00:00 2001 From: Andrea Spacca Date: Mon, 7 Oct 2019 22:18:36 +0200 Subject: [PATCH 11/14] FIX BUILD --- fuzzit.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/fuzzit.sh b/fuzzit.sh index 6f18daf..50c9529 100755 --- a/fuzzit.sh +++ b/fuzzit.sh @@ -13,11 +13,11 @@ ROOT=./server TYPE=$1 # Setup -export GO111MODULE="on" +export GOFUZZ111MODULE="on" go get -u github.com/dvyukov/go-fuzz/go-fuzz github.com/dvyukov/go-fuzz/go-fuzz-build go get -d -v -u ./... if [ ! -f fuzzit ]; then - wget -q -O fuzzit https://github.com/fuzzitdev/fuzzit/releases/download/v2.4.29/fuzzit_Linux_x86_64 + wget -q -O fuzzit https://github.com/fuzzitdev/fuzzit/releases/download/v2.4.72/fuzzit_Linux_x86_64 chmod a+x fuzzit fi From 356412c838a16f1f182e19f3b039607b2aabcdda Mon Sep 17 00:00:00 2001 From: Andrea Spacca Date: Mon, 7 Oct 2019 22:37:27 +0200 Subject: [PATCH 12/14] FIX BUILD --- .travis.yml | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/.travis.yml b/.travis.yml index 7c2c883..dbca573 100644 --- a/.travis.yml +++ b/.travis.yml @@ -21,9 +21,6 @@ install: - echo "This is an override of the default install deps step in travis." script: - - go get -t -u -v ./... - - go build -v . - - go vet ./... - go test ./... jobs: @@ -33,6 +30,7 @@ jobs: dist: bionic script: ./fuzzit.sh local-regression - stage: Fuzz + if: branch = master AND type IN (push) go: 1.12.x dist: bionic script: ./fuzzit.sh fuzzing From d09f4fdd813ebb1cacb1a0a42c0a0e1b94a3d82c Mon Sep 17 00:00:00 2001 From: Andrea Spacca Date: Mon, 7 Oct 2019 22:44:29 +0200 Subject: [PATCH 13/14] FIX BUILD --- .travis.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index dbca573..278a4c8 100644 --- a/.travis.yml +++ b/.travis.yml @@ -18,7 +18,9 @@ env: - GO111MODULE=on install: - - echo "This is an override of the default install deps step in travis." + - go get -t -u -v ./... + - go build -v . + - go vet ./... script: - go test ./... From 73e2bca9993b64bf0071d0b2ecd35a8a6df823ce Mon Sep 17 00:00:00 2001 From: Andrea Spacca Date: Mon, 7 Oct 2019 22:46:55 +0200 Subject: [PATCH 14/14] FIX BUILD --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 278a4c8..da354df 100644 --- a/.travis.yml +++ b/.travis.yml @@ -57,4 +57,4 @@ deploy: on: tags: true go: 1.12.x - overwrite: true + overwrite: true \ No newline at end of file