From 30c26a0240af3bda7d914185aa830ba3f32231b5 Mon Sep 17 00:00:00 2001 From: aceberg <1502200+aceberg@users.noreply.github.com> Date: Thu, 25 Aug 2022 12:00:21 +0700 Subject: [PATCH] Notify with Shoutrrr --- .github/workflows/docker-publish.yml | 2 +- Makefile | 3 + assets/logo.png | Bin 0 -> 20627 bytes src/compare.go | 11 +- src/getconfig.go | 2 + src/go.mod | 4 + src/go.sum | 147 +++++++++++++++++++++++++++ src/main.go | 13 +-- src/shoutrrr.go | 15 +++ 9 files changed, 186 insertions(+), 11 deletions(-) create mode 100644 assets/logo.png create mode 100644 src/shoutrrr.go diff --git a/.github/workflows/docker-publish.yml b/.github/workflows/docker-publish.yml index 9ec6629..4dbcd3e 100644 --- a/.github/workflows/docker-publish.yml +++ b/.github/workflows/docker-publish.yml @@ -14,7 +14,7 @@ on: env: IMAGE_NAME: watchyourlan - TAGS: latest, v0.6 + TAGS: latest, v0.7 jobs: diff --git a/Makefile b/Makefile index 76aa374..37b7960 100644 --- a/Makefile +++ b/Makefile @@ -3,6 +3,7 @@ DNAME=watchyourlan IFACE=virbr-bw DBPATH=data/hosts.db +SHOUTRRR_URL=gotify://192.168.2.1:8083/AwQqpAae.rrl5Ob/?title=Unknown host detected&DisableTLS=yes mod: cd src && \ @@ -14,6 +15,7 @@ run: cd src && \ sudo \ env IFACE=$(IFACE) DBPATH=$(DBPATH) \ + SHOUTRRR_URL=$(SHOUTRRR_URL) \ go run . go-build: @@ -27,6 +29,7 @@ docker-run: docker rm wyl || true docker run --name wyl \ -e "IFACE=$(IFACE)" \ + -e "SHOUTRRR_URL=$(SHOUTRRR_URL)" \ -e "TZ=Asia/Novosibirsk" \ --network="host" \ -v ~/.dockerdata/wyl:/data \ diff --git a/assets/logo.png b/assets/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..2f2d5ca08d8a0e8e93ce1c65924a6f1f44b62522 GIT binary patch literal 20627 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 W{}1PkMllc&grKb*tX^4o-2NZdZ!UTO literal 0 HcmV?d00001 diff --git a/src/compare.go b/src/compare.go index 121f1de..cd8b3ec 100644 --- a/src/compare.go +++ b/src/compare.go @@ -1,8 +1,9 @@ package main -// import ( -// "fmt" -// ) +import ( + "fmt" + "log" +) func host_in_db(host Host, dbHosts []Host) bool { for _, oneHost := range dbHosts { @@ -22,8 +23,10 @@ func hosts_compare(foundHosts []Host, dbHosts []Host) { for _, oneHost := range foundHosts { if !(host_in_db(oneHost, dbHosts)) { - //fmt.Println("No such host!") oneHost.Now = 1 + msg := fmt.Sprintf("UNKNOWN HOST IP: '%s', MAC: '%s', Hw: '%s'", oneHost.Ip, oneHost.Mac, oneHost.Hw) + log.Println("WARN:", msg) + shoutr_notify(msg) db_insert(oneHost) } } diff --git a/src/getconfig.go b/src/getconfig.go index 8756206..bce77c7 100644 --- a/src/getconfig.go +++ b/src/getconfig.go @@ -10,6 +10,7 @@ func get_config(path string) (config Conf) { viper.SetDefault("GUIIP", "localhost") viper.SetDefault("GUIPORT", "8840") viper.SetDefault("TIMEOUT", "60") + viper.SetDefault("SHOUTRRR_URL", "") viper.SetConfigFile(path) viper.SetConfigType("env") @@ -22,6 +23,7 @@ func get_config(path string) (config Conf) { config.GuiIP = viper.Get("GUIIP").(string) config.GuiPort = viper.Get("GUIPORT").(string) config.Timeout = viper.GetInt("TIMEOUT") + config.ShoutUrl = viper.Get("SHOUTRRR_URL").(string) return config } \ No newline at end of file diff --git a/src/go.mod b/src/go.mod index 06ee5ab..9dfcd0f 100644 --- a/src/go.mod +++ b/src/go.mod @@ -3,14 +3,18 @@ module watchyourlan go 1.19 require ( + github.com/containrrr/shoutrrr v0.6.1 github.com/mattn/go-sqlite3 v1.14.15 github.com/spf13/viper v1.12.0 ) require ( + github.com/fatih/color v1.13.0 // indirect github.com/fsnotify/fsnotify v1.5.4 // indirect github.com/hashicorp/hcl v1.0.0 // indirect github.com/magiconair/properties v1.8.6 // indirect + github.com/mattn/go-colorable v0.1.12 // indirect + github.com/mattn/go-isatty v0.0.14 // indirect github.com/mitchellh/mapstructure v1.5.0 // indirect github.com/pelletier/go-toml v1.9.5 // indirect github.com/pelletier/go-toml/v2 v2.0.1 // indirect diff --git a/src/go.sum b/src/go.sum index e8ba20c..ff5c8c5 100644 --- a/src/go.sum +++ b/src/go.sum @@ -38,7 +38,14 @@ cloud.google.com/go/storage v1.14.0/go.mod h1:GrKmX003DSIwi9o29oFT7YDnHYwZoctc3f 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/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= +github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= +github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= +github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= @@ -46,22 +53,45 @@ github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDk github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= github.com/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= +github.com/containrrr/shoutrrr v0.6.1 h1:6ih7jA6mo3t6C97MZbd3SxL/kRizOE3bI9CpBQZ6wzg= +github.com/containrrr/shoutrrr v0.6.1/go.mod h1:ye9jGX5YzMnJ76waaNVWlJ4luhMEyt1EWU5unYTQSb0= +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.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/v2 v2.0.1/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= 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/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= github.com/envoyproxy/go-control-plane v0.9.7/go.mod h1:cwu0lG7PUMfa9snN8LXBig5ynNVH9qI8YYLbd1fK2po= github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= +github.com/fatih/color v1.10.0/go.mod h1:ELkj/draVOlAH/xkhN6mQ50Qd0MPOk5AAr3maGEBuJM= +github.com/fatih/color v1.13.0 h1:8LOYc1KYPPmyKMuN8QV2DNRWNbLo6LZ0iLs8+mlH53w= +github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk= github.com/frankban/quicktest v1.14.3 h1:FJKSZTDHjyhriyC81FLQ0LY93eSai0ZyR/ZIkd3ZUKE= +github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= +github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= github.com/fsnotify/fsnotify v1.5.4 h1:jRbGcIw6P2Meqdwuo0H1p6JVLbL5DHKAKlYndzMwVZI= github.com/fsnotify/fsnotify v1.5.4/go.mod h1:OVB6XrOHzAwXMpEM7uPOzcehqUV2UqJxmVXmkdnm1bU= +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-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= +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-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/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= @@ -86,6 +116,7 @@ github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvq github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8= github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= +github.com/golang/protobuf v1.5.2 h1:ROPKBNFfQgOUMifHyP+KYbvpjbdoFNs+aK7DXlji0Tw= 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= @@ -98,6 +129,7 @@ github.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/ github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.8 h1:e6P7q2lk1O+qJJb4BtCQXlK8vWEO8V1ZeuEdJNOqZyg= +github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= github.com/google/martian/v3 v3.1.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= @@ -116,67 +148,147 @@ github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+ 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/googleapis/google-cloud-go-testing v0.0.0-20200911160855-bcd43fbb19e8/go.mod h1:dvDLG8qkwmyD9a/MJJN3XJcT3xFxOKAvTZGvuZmac9g= +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/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 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= +github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= +github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= +github.com/jarcoal/httpmock v1.0.4 h1:jp+dy/+nonJE4g4xbVtl9QdrUNbn6/3hDT5R4nDIZnA= +github.com/jarcoal/httpmock v1.0.4/go.mod h1:ATjnClrvW/3tijVmpL/va5Z3aAyGvqU3gCT8nX0Txik= +github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo= +github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk= +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/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg= +github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= github.com/kr/pretty v0.3.0 h1:WgNl7dwNpEZ6jJ9k1snq4pZsg7DOEN8hP9Xw0Tsjwk0= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= 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/magiconair/properties v1.8.1/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= github.com/magiconair/properties v1.8.6 h1:5ibWZ6iY0NctNGWo87LalDlEZ6R41TqbbDamhfG/Qzo= github.com/magiconair/properties v1.8.6/go.mod h1:y3VJvCyxH9uVvJTWEGAELF3aiYNyPKd5NZ3oSwXrF60= +github.com/mattn/go-colorable v0.1.8/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= +github.com/mattn/go-colorable v0.1.9/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= +github.com/mattn/go-colorable v0.1.12 h1:jF+Du6AlPIjs2BiUiQlKOX0rt3SujHxPnksPKZbaA40= +github.com/mattn/go-colorable v0.1.12/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4= +github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= +github.com/mattn/go-isatty v0.0.14 h1:yVuAays6BHfxijgZPzw+3Zlu5yQgKGP2/hcQbHb7S9Y= +github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94= github.com/mattn/go-sqlite3 v1.14.15 h1:vfoHhTN1af61xCRSWzFIWzx2YskyMTwHLrExkBOjvxI= github.com/mattn/go-sqlite3 v1.14.15/go.mod h1:2eHXhiwb8IkHr+BDWZGa96P6+rkvnG63S2DGjv9HUNg= +github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= +github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= +github.com/mitchellh/mapstructure v1.2.2/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY= github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= +github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= +github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= +github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= +github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A= +github.com/nxadm/tail v1.4.6 h1:11TGpSHY7Esh/i/qnq02Jo5oVrI1Gue8Slbq0ujPZFQ= +github.com/nxadm/tail v1.4.6/go.mod h1:+ncqLTQzXmGhMZNUePPaPqPvBxHAIsmXswZKocGu+AU= +github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U= +github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk= +github.com/onsi/ginkgo v1.14.2 h1:8mVmC9kjFFmA8H4pKMUhcblgifdkOIXPvbhN1T36q1M= +github.com/onsi/ginkgo v1.14.2/go.mod h1:iSB4RoI2tjJc9BBv4NKIKWKya62Rps+oPG/Lv9klQyY= +github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= +github.com/onsi/gomega v1.10.1 h1:o0+MgICZLuZ7xjH7Vx6zS/zcu93/BEp1VwkIW1mEXCE= +github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= +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/pelletier/go-toml v1.9.5 h1:4yBQzkHv+7BHq2PQUZF3Mx0IYxG7LsP222s7Agd3ve8= github.com/pelletier/go-toml v1.9.5/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c= github.com/pelletier/go-toml/v2 v2.0.1 h1:8e3L2cCQzLFi2CR4g7vGFuFxX7Jl1kKX8gW+iV0GUKU= github.com/pelletier/go-toml/v2 v2.0.1/go.mod h1:r9LEWfGN8R5k0VXJ+0BkIe7MYkRdwZOjgMj2KwnJFUo= +github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/sftp v1.13.1/go.mod h1:3HaPG6Dq1ILlpPZRO0HVMrsydcdLt6HRDccSgb87qRg= 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/client_model v0.0.0-20190812154241-14fe0d1b01d4/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/rogpeppe/go-internal v1.6.1 h1:/FiVV8dS/e+YqF2JvO3yXRFbBLTIuSDkuC7aBOAvL+k= +github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= +github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= +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/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= +github.com/spf13/afero v1.2.2/go.mod h1:9ZxEEn6pIJ8Rxe320qSDBk6AsU0r9pR7Q4OcevTdifk= github.com/spf13/afero v1.8.2 h1:xehSyVa0YnHWsJ49JFljMpg1HX19V6NDZ1fkm1Xznbo= github.com/spf13/afero v1.8.2/go.mod h1:CtAatgMJh6bJEIs48Ay/FOnkljP3WeGUG0MC1RfAqwo= +github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= +github.com/spf13/cast v1.3.1/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= github.com/spf13/cast v1.5.0 h1:rj3WzYc11XZaIZMPKmwP96zkFEnnAmV8s6XbB2aY32w= github.com/spf13/cast v1.5.0/go.mod h1:SpXXQ5YoyJw6s3/6cMTQuxvgRl3PCJiyaX9p6b155UU= +github.com/spf13/cobra v1.4.0/go.mod h1:Wo4iy3BUC+X2Fybo0PDqwJIv3dNRiZLHQymsfxlB84g= +github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= github.com/spf13/jwalterweatherman v1.1.0 h1:ue6voC5bR5F8YxI5S67j9i582FU4Qvo2bmqnqMYADFk= github.com/spf13/jwalterweatherman v1.1.0/go.mod h1:aNWZUN0dPAAO/Ljvb5BEdw96iTZ0EXowPYD95IqWIGo= +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.6.3/go.mod h1:jUMtyi0/lB5yZH/FjyGAoH7IMNrIhlBf6pXZmbMDvzw= github.com/spf13/viper v1.12.0 h1:CZ7eSOd3kZoaYDLbXnmzgQI5RlciuXBMA+18HwHRfZQ= github.com/spf13/viper v1.12.0/go.mod h1:b6COn30jlNxbm/V2IqWiNWkJ+vZNiMNksliPCiuKtSI= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= +github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.1 h1:5TQK59W5E3v0r2duFAb7P95B6hEeOyEnHRa8MjYSMTY= github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw= github.com/subosito/gotenv v1.3.0 h1:mjC+YW8QpAdXibNi+vNWgzmgBH4+5l5dCXv8cNysBLI= github.com/subosito/gotenv v1.3.0/go.mod h1:YzJjq/33h7nrwdY+iHMhEOEEbW0ovIz0tB6t6PwAXzs= +github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= +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= github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= 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.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk= +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-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= @@ -219,12 +331,16 @@ golang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= 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-20180906233101-161cd47e91fd/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-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-20190522155817-f3200d17e092/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= 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-20190628185345-da137c7871d7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= @@ -239,6 +355,7 @@ golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/ golang.org/x/net v0.0.0-20200501053045-e0ff5e5a1de5/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200506145744-7e3656a0809f/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200513185701-a91f0712d120/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200520004742-59133d7f0dd7/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200520182314-0ba52f642ac2/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= @@ -248,6 +365,7 @@ golang.org/x/net v0.0.0-20201031054903-ff519b6c9102/go.mod h1:sp8m0HH+o8qH0wwXwY golang.org/x/net v0.0.0-20201209123823-ac852fbbde11/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20201224014010-6772e930b67b/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20220520000938-2e3eb7b945c2 h1:NWy5+hlRbC7HK+PmcXVUmW1IMyFce7to56IUvhUFm7Y= 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= @@ -268,6 +386,10 @@ golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/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-20180909124046-d0be0721c37e/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-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -276,10 +398,14 @@ golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7w 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-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200113162924-86b910548bc1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200202164722-d101bd2416d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200212091648-12a6c2dcc1e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -290,6 +416,7 @@ golang.org/x/sys v0.0.0-20200331124033-c3d80250170d/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20200501052902-10377860bb8e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200511232937-7e40ca221e25/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200515095857-1151b9dac4a9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200519105757-fe76b779f299/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200905004654-be1d3432aa8f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -297,10 +424,13 @@ golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201201145000-ef89a241ccb3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210104204734-6f8348627aad/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210113181707-4bcb84eeeb78/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210225134936-a50acf3fe073/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210423185535-09eb48e85fd7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220412211240-33da011f77ad/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a h1:dGzPydgVsqGcTRVwiLJ1jVbufYwmzD3LfVPLKsKg+0k= golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= @@ -316,12 +446,14 @@ golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= 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/time v0.0.0-20191024005414-555d28b269f0/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-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= @@ -367,6 +499,7 @@ golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8T golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20220517211312-f3a8303e98df h1:5Pf6pFKu98ODmgnpvkJ3kFUOQGGLIzLIkbzUHp47618= 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= @@ -431,6 +564,7 @@ google.golang.org/genproto v0.0.0-20210108203827-ffc7fda8c3d7/go.mod h1:FWY/as6D google.golang.org/genproto v0.0.0-20210226172003-ab064af71705/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= 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.0/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= @@ -455,13 +589,26 @@ google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2 google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGjtUeSXeh4= google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= +google.golang.org/protobuf v1.28.0 h1:w43yiav+6bVFTBQFZX0r7ipe9JQ1QsbMgHwbBziscLw= +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/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= +gopkg.in/ini.v1 v1.51.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= +gopkg.in/ini.v1 v1.55.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/ini.v1 v1.66.4 h1:SsAcf+mM7mRZo2nJNGt8mZCjG8ZRaNGMURJw7BsIST4= gopkg.in/ini.v1 v1.66.4/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= +gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo= +gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ= +gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= +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/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/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= diff --git a/src/main.go b/src/main.go index 7f762bd..3e0e5e2 100644 --- a/src/main.go +++ b/src/main.go @@ -16,11 +16,12 @@ type Host struct { } type Conf struct { - Iface string - DbPath string - GuiIP string - GuiPort string - Timeout int + Iface string + DbPath string + GuiIP string + GuiPort string + Timeout int + ShoutUrl string } var AppConfig Conf @@ -46,7 +47,7 @@ func main() { db_create() // Check if DB exists. Create if not - go scan_and_compare() + go scan_and_compare() webgui() // Start web GUI } \ No newline at end of file diff --git a/src/shoutrrr.go b/src/shoutrrr.go new file mode 100644 index 0000000..01920e7 --- /dev/null +++ b/src/shoutrrr.go @@ -0,0 +1,15 @@ +package main + +import ( + "log" + "github.com/containrrr/shoutrrr" +) + +func shoutr_notify(message string) { + if AppConfig.ShoutUrl != "" { + err := shoutrrr.Send(AppConfig.ShoutUrl, message) + if err != nil { + log.Println("ERROR: Notification failed (shoutrrr):", err) + } + } +} \ No newline at end of file