diff --git a/.gitignore b/.gitignore
index 63b2d1c3..9ce67d3d 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,18 +1,23 @@
-/up.conf
+# Change this line.
/unifi-poller
-/unifi-poller*.gz
-/unifi-poller*.txz
-/unifi-poller*.zip
-/unifi-poller*.1
-/unifi-poller*.deb
-/unifi-poller*.rpm
-/unifi-poller*.arm
-/unifi-poller*.exe
-/unifi-poller*.macos
-/unifi-poller*.freebsd
-/unifi-poller*.bsd
-/unifi-poller*.linux
-/unifi-poller.rb
+/init/macos/*.app/Contents/MacOS/*
+# The rest is probably fine.
+/rsrc*.syso
+/*.log
+/*.conf
+/*.gz
+/*.zip
+/*.upx
+/unpackerr*.1
+/*.deb
+/*.rpm
+/*.txz
+/*.*.arm
+/*.*.exe
+/*.*.macos
+/*.*.linux
+/*.*.freebsd
+/*.rb
*.sha256
/vendor
.DS_Store
@@ -23,11 +28,10 @@ MANUAL
MANUAL.html
README
README.html
-/unifi-poller_manual.html
-/homebrew_release_repo
-/.metadata.make
-bitly_token
-github_deploy_key
-gpg.signing.key
-.secret-files.tar
-*.so
+/*_manual.html
+/homebrew-mugs
+.secret*files.tar
+github_deploy_key*
+.metadata.make
+/after-install-rendered.sh
+/before-remove-rendered.sh
diff --git a/.travis.yml b/.travis.yml
index 9d927dbe..d122b054 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -15,13 +15,14 @@ addons:
- debsigs
- gnupg
- expect
-go:
-- 1.14.x
-services:
- - docker
+ - upx
+go: 1.16.x
+os: linux
+dist: bionic
+services: docker
install:
- - rvm install 2.3.0
- - rvm 2.3.0 do gem install --no-document fpm
+ - rvm install 2.6.0
+ - rvm 2.6.0 do gem install --no-document fpm
# download super-linter: golangci-lint
# - curl -sL https://install.goreleaser.com/github.com/golangci/golangci-lint.sh | sh -s -- -b $(go env GOPATH)/bin latest
before_script:
@@ -29,17 +30,17 @@ before_script:
# Create your own deploy key, tar it, and encrypt the file to make this work. Optionally add a bitly_token file to the archive.
- openssl aes-256-cbc -K $encrypted_9f3147001275_key -iv $encrypted_9f3147001275_iv -in .secret-files.tar.enc -out .secret-files.tar -d
- tar -xf .secret-files.tar
- - gpg --import gpg.signing.key
+ - gpg --batch --yes --import gpg.signing.key
- rm -f gpg.signing.key .secret-files.tar
- - source .metadata.sh
+ - source settings.sh
script:
# Test Go and Docker.
# - make test
- make docker
# Test built docker image.
- - docker run $BINARY -v 2>&1 | grep -Eq "^$BINARY v$VERSION"
+ - docker run $BINARY -v 2>&1 | grep -Eq "^$BINARY, version $VERSION"
# Build everything
- - rvm 2.3.0 do make release
+ - rvm 2.6.0 do make release
after_success:
# Display Release Folder
- ls -l release/
@@ -63,6 +64,7 @@ deploy:
secure: GsvW0m+EnRELQMk8DjH63VXinqbwse4FJ4vNUslOE6CZ8PBXPrH0ZgaI7ic/uxRtm7CYj0sir4CZq62W5l6uhoXCCQfjOnmJspqnQcrFZ1xRdWktsNXaRwM6hlzaUThsJ/1PD9Psc66uKXBYTg0IlUz0yjZAZk7tCUE4libuj41z40ZKxUcbfcNvH4Njc9IpNB4QSA3ss+a9/6ZwBz4tHVamsGIrzaE0Zf99ItNBYvaOwhM2rC/NWIsFmwt8w4rIA2NIrkZgMDV+Z2Niqh4JRLAWCQNx/RjC5U52lG2yhqivUC3TromZ+q4O4alUltsyIzF2nVanLWgJmbeFo8uXT5A+gd3ovSkFLU9medXd9i4kap7kN/o5m9p5QZvrdEYHEmIU4ml5rjT2EQQVy5CtSmpiRAbhpEJIvA1wDtRq8rdz8IVfJXkHNjg2XdouNmMMWqa3OkEPw21+uxsqv4LscW/6ZjsavzL5SSdnBRU9n79EfGJE/tJLKiNumah/vLuJ5buNhgqmCdtX/Tg+DhQS1BOyYg4l4L8s9IIKZgFRwrOPsZnA/KsrWg4ZsjJ87cqKCaT/qs2EJx5odZcZWJYLBngeO8Tc6cQtLgJdieY2oEKo51Agq4rgikZDt21m6TY9/R5lPN0piwdpy3ZGKfv1ijXx74raMT03qskputzMCvc=
overwrite: true
skip_cleanup: true
+ cleanup: false
file_glob: true
file: release/*
on:
@@ -74,6 +76,7 @@ deploy:
- provider: script
script: scripts/package-deploy.sh
skip_cleanup: true
+ cleanup: false
on:
all_branches: true
condition: $TRAVIS_BRANCH =~ ^(master|v[0-9.]+)$
diff --git a/Makefile b/Makefile
index 20e5122a..9dffdb46 100644
--- a/Makefile
+++ b/Makefile
@@ -1,12 +1,18 @@
# This Makefile is written as generic as possible.
-# Setting the variables in .metadata.sh and creating the paths in the repo makes this work.
+# Setting the variables in settings.sh and creating the paths in the repo makes this work.
# See more: https://github.com/golift/application-builder
# Suck in our application information.
-IGNORED:=$(shell bash -c "source .metadata.sh ; env | sed 's/=/:=/;s/^/export /' > .metadata.make")
+IGNORED:=$(shell bash -c "source settings.sh ; env | grep -v BASH_FUNC | sed 's/=/:=/;s/^/export /' > .metadata.make")
# md2roff turns markdown into man files and html files.
-MD2ROFF_BIN=github.com/github/hub/md2roff-bin
+MD2ROFF_BIN=github.com/davidnewhall/md2roff
+
+# rsrc adds an ico file to a Windows exe file.
+RSRC_BIN=github.com/akavel/rsrc
+
+# If upx is available, use it to compress the binaries.
+UPXPATH=$(shell which upx)
# Travis CI passes the version in. Local builds get it from the current git tag.
ifeq ($(VERSION),)
@@ -20,13 +26,15 @@ else
ITERATION:=$(_ITERATION)
endif
+
# rpm is wierd and changes - to _ in versions.
RPMVERSION:=$(shell echo $(VERSION) | tr -- - _)
+# used for freebsd packages.
BINARYU:=$(shell echo $(BINARY) | tr -- - _)
PACKAGE_SCRIPTS=
ifeq ($(FORMULA),service)
- PACKAGE_SCRIPTS=--after-install scripts/after-install.sh --before-remove scripts/before-remove.sh
+ PACKAGE_SCRIPTS=--after-install after-install-rendered.sh --before-remove before-remove-rendered.sh
endif
define PACKAGE_ARGS
@@ -36,118 +44,159 @@ $(PACKAGE_SCRIPTS) \
--rpm-os linux \
--iteration $(ITERATION) \
--license $(LICENSE) \
---url $(URL) \
+--url $(SOURCE_URL) \
--maintainer "$(MAINT)" \
--vendor "$(VENDOR)" \
--description "$(DESC)" \
--config-files "/etc/$(BINARY)/$(CONFIG_FILE)" \
---freebsd-origin "$(BINARY)/$(BINARY)"
+--freebsd-origin "$(SOURCE_URL)"
endef
PLUGINS:=$(patsubst plugins/%/main.go,%,$(wildcard plugins/*/main.go))
-VERSION_LDFLAGS:= \
- -X github.com/prometheus/common/version.Branch=$(BRANCH) \
- -X github.com/prometheus/common/version.BuildDate=$(DATE) \
- -X github.com/prometheus/common/version.Revision=$(COMMIT) \
- -X github.com/prometheus/common/version.Version=$(VERSION)-$(ITERATION)
+VERSION_LDFLAGS:= -X \"$(VERSION_PATH).Branch=$(BRANCH) ($(COMMIT))\" \
+ -X \"$(VERSION_PATH).BuildDate=$(DATE)\" \
+ -X \"$(VERSION_PATH).BuildUser=$(shell whoami)\" \
+ -X \"$(VERSION_PATH).Revision=$(ITERATION)\" \
+ -X \"$(VERSION_PATH).Version=$(VERSION)\"
# Makefile targets follow.
all: clean build
+####################
+##### Releases #####
+####################
+
# Prepare a release. Called in Travis CI.
-release: clean macos windows linux_packages freebsd_packages
+release: clean linux_packages freebsd_packages windows
# Prepareing a release!
mkdir -p $@
- mv $(BINARY).*.macos $(BINARY).*.linux $(BINARY).*.freebsd $@/
+ mv $(BINARY).*.linux $(BINARY).*.freebsd $@/
gzip -9r $@/
- for i in $(BINARY)*.exe; do zip -9qm $@/$$i.zip $$i;done
+ for i in $(BINARY)*.exe ; do zip -9qj $@/$$i.zip $$i examples/*.example *.html; rm -f $$i;done
mv *.rpm *.deb *.txz $@/
# Generating File Hashes
openssl dgst -r -sha256 $@/* | sed 's#release/##' | tee $@/checksums.sha256.txt
+dmg: clean macapp
+ mkdir -p release
+ hdiutil create release/$(MACAPP).dmg -srcfolder $(MACAPP).app -ov
+ openssl dgst -r -sha256 release/* | sed 's#release/##' | tee release/dmg_checksum.sha256.txt
# Delete all build assets.
clean:
- # Cleaning up.
- rm -f $(BINARY) $(BINARY).*.{macos,freebsd,linux,exe}{,.gz,.zip} $(BINARY).1{,.gz} $(BINARY).rb
+ rm -f $(BINARY) $(BINARY).*.{macos,freebsd,linux,exe,upx}{,.gz,.zip} $(BINARY).1{,.gz} $(BINARY).rb
rm -f $(BINARY){_,-}*.{deb,rpm,txz} v*.tar.gz.sha256 examples/MANUAL .metadata.make
- rm -f cmd/$(BINARY)/README{,.html} README{,.html} ./$(BINARY)_manual.html
- rm -rf package_build_* release
+ rm -f cmd/$(BINARY)/README{,.html} README{,.html} ./$(BINARY)_manual.html rsrc.syso $(MACAPP).app.zip
+ rm -rf package_build_* release after-install-rendered.sh before-remove-rendered.sh $(MACAPP).app
+
+####################
+##### Sidecars #####
+####################
# Build a man page from a markdown file using md2roff.
# This also turns the repo readme into an html file.
# md2roff is needed to build the man file and html pages from the READMEs.
man: $(BINARY).1.gz
-$(BINARY).1.gz:
+$(BINARY).1.gz: md2roff
# Building man page. Build dependency first: md2roff
- go run $(MD2ROFF_BIN) --manual $(BINARY) --version $(VERSION) --date "$(DATE)" examples/MANUAL.md
+ $(shell go env GOPATH)/bin/md2roff --manual $(BINARY) --version $(VERSION) --date "$(DATE)" examples/MANUAL.md
gzip -9nc examples/MANUAL > $@
mv examples/MANUAL.html $(BINARY)_manual.html
+md2roff: $(shell go env GOPATH)/bin/md2roff
+$(shell go env GOPATH)/bin/md2roff:
+ cd /tmp ; go get $(MD2ROFF_BIN) ; go install $(MD2ROFF_BIN)
+
# TODO: provide a template that adds the date to the built html file.
readme: README.html
-README.html:
+README.html: md2roff
# This turns README.md into README.html
- go run $(MD2ROFF_BIN) --manual $(BINARY) --version $(VERSION) --date "$(DATE)" README.md
+ $(shell go env GOPATH)/bin/md2roff --manual $(BINARY) --version $(VERSION) --date "$(DATE)" README.md
-# Binaries
+rsrc: rsrc.syso
+rsrc.syso: init/windows/application.ico init/windows/manifest.xml $(shell go env GOPATH)/bin/rsrc
+ $(shell go env GOPATH)/bin/rsrc -ico init/windows/application.ico -manifest init/windows/manifest.xml
+$(shell go env GOPATH)/bin/rsrc:
+ cd /tmp ; go get $(RSRC_BIN) ; go install $(RSRC_BIN)
+
+####################
+##### Binaries #####
+####################
build: $(BINARY)
$(BINARY): main.go
- go build -o $(BINARY) -ldflags "-w -s $(VERSION_LDFLAGS)"
+ go build -o $(BINARY) -ldflags "-w -s $(VERSION_LDFLAGS) $(EXTRA_LDFLAGS) "
+ [ -z "$(UPXPATH)" ] || $(UPXPATH) -q9 $@
linux: $(BINARY).amd64.linux
$(BINARY).amd64.linux: main.go
# Building linux 64-bit x86 binary.
- GOOS=linux GOARCH=amd64 go build -o $@ -ldflags "-w -s $(VERSION_LDFLAGS)"
+ GOOS=linux GOARCH=amd64 go build -o $@ -ldflags "-w -s $(VERSION_LDFLAGS) $(EXTRA_LDFLAGS) "
+ [ -z "$(UPXPATH)" ] || $(UPXPATH) -q9 $@
linux386: $(BINARY).i386.linux
$(BINARY).i386.linux: main.go
# Building linux 32-bit x86 binary.
- GOOS=linux GOARCH=386 go build -o $@ -ldflags "-w -s $(VERSION_LDFLAGS)"
+ GOOS=linux GOARCH=386 go build -o $@ -ldflags "-w -s $(VERSION_LDFLAGS) $(EXTRA_LDFLAGS) "
+ [ -z "$(UPXPATH)" ] || $(UPXPATH) -q9 $@
arm: arm64 armhf
arm64: $(BINARY).arm64.linux
$(BINARY).arm64.linux: main.go
# Building linux 64-bit ARM binary.
- GOOS=linux GOARCH=arm64 go build -o $@ -ldflags "-w -s $(VERSION_LDFLAGS)"
+ GOOS=linux GOARCH=arm64 go build -o $@ -ldflags "-w -s $(VERSION_LDFLAGS) $(EXTRA_LDFLAGS) "
+ [ -z "$(UPXPATH)" ] || $(UPXPATH) -q9 $@
armhf: $(BINARY).armhf.linux
$(BINARY).armhf.linux: main.go
# Building linux 32-bit ARM binary.
- GOOS=linux GOARCH=arm GOARM=6 go build -o $@ -ldflags "-w -s $(VERSION_LDFLAGS)"
+ GOOS=linux GOARCH=arm GOARM=6 go build -o $@ -ldflags "-w -s $(VERSION_LDFLAGS) $(EXTRA_LDFLAGS) "
+ [ -z "$(UPXPATH)" ] || $(UPXPATH) -q9 $@
macos: $(BINARY).amd64.macos
$(BINARY).amd64.macos: main.go
- GOOS=darwin GOARCH=amd64 go build -o $@ -ldflags "-w -s $(VERSION_LDFLAGS)"
+ # Building darwin 64-bit x86 binary.
+ GOOS=darwin GOARCH=amd64 go build -o $@ -ldflags "-w -s $(VERSION_LDFLAGS) $(EXTRA_LDFLAGS) "
+ [ -z "$(UPXPATH)" ] || $(UPXPATH) -q9 $@
freebsd: $(BINARY).amd64.freebsd
$(BINARY).amd64.freebsd: main.go
- GOOS=freebsd GOARCH=amd64 go build -o $@ -ldflags "-w -s $(VERSION_LDFLAGS)"
+ GOOS=freebsd GOARCH=amd64 go build -o $@ -ldflags "-w -s $(VERSION_LDFLAGS) $(EXTRA_LDFLAGS) "
freebsd386: $(BINARY).i386.freebsd
$(BINARY).i386.freebsd: main.go
- GOOS=freebsd GOARCH=386 go build -o $@ -ldflags "-w -s $(VERSION_LDFLAGS)"
+ GOOS=freebsd GOARCH=386 go build -o $@ -ldflags "-w -s $(VERSION_LDFLAGS) $(EXTRA_LDFLAGS) "
+ [ -z "$(UPXPATH)" ] || $(UPXPATH) -q9 $@ || true
freebsdarm: $(BINARY).armhf.freebsd
$(BINARY).armhf.freebsd: main.go
- GOOS=freebsd GOARCH=arm go build -o $@ -ldflags "-w -s $(VERSION_LDFLAGS)"
+ GOOS=freebsd GOARCH=arm go build -o $@ -ldflags "-w -s $(VERSION_LDFLAGS) $(EXTRA_LDFLAGS) "
exe: $(BINARY).amd64.exe
windows: $(BINARY).amd64.exe
-$(BINARY).amd64.exe: main.go
+$(BINARY).amd64.exe: rsrc.syso main.go
# Building windows 64-bit x86 binary.
- GOOS=windows GOARCH=amd64 go build -o $@ -ldflags "-w -s $(VERSION_LDFLAGS)"
+ GOOS=windows GOARCH=amd64 go build -o $@ -ldflags "-w -s $(VERSION_LDFLAGS) $(EXTRA_LDFLAGS) $(WINDOWS_LDFLAGS)"
+ [ -z "$(UPXPATH)" ] || $(UPXPATH) -q9 $@
-# Packages
+####################
+##### Packages #####
+####################
linux_packages: rpm deb rpm386 deb386 debarm rpmarm debarmhf rpmarmhf
freebsd_packages: freebsd_pkg freebsd386_pkg freebsdarm_pkg
+macapp: $(MACAPP).app
+$(MACAPP).app: macos
+ @[ "$(MACAPP)" != "" ] || (echo "Must set 'MACAPP' in settings.sh!" && exit 1)
+ mkdir -p init/macos/$(MACAPP).app/Contents/MacOS
+ cp $(BINARY).amd64.macos init/macos/$(MACAPP).app/Contents/MacOS/$(MACAPP)
+ cp -rp init/macos/$(MACAPP).app $(MACAPP).app
+
rpm: $(BINARY)-$(RPMVERSION)-$(ITERATION).x86_64.rpm
$(BINARY)-$(RPMVERSION)-$(ITERATION).x86_64.rpm: package_build_linux check_fpm
@echo "Building 'rpm' package for $(BINARY) version '$(RPMVERSION)-$(ITERATION)'."
@@ -212,13 +261,12 @@ $(BINARY)-$(VERSION)_$(ITERATION).armhf.txz: package_build_freebsd_arm check_fpm
fpm -s dir -t freebsd $(PACKAGE_ARGS) -a arm -v $(VERSION) -p $(BINARY)-$(VERSION)_$(ITERATION).armhf.txz -C $<
# Build an environment that can be packaged for linux.
-package_build_linux: readme man plugins_linux_amd64 linux
+package_build_linux: readme man plugins_linux_amd64 after-install-rendered.sh before-remove-rendered.sh linux
# Building package environment for linux.
- mkdir -p $@/usr/bin $@/etc/$(BINARY) $@/usr/share/man/man1 $@/usr/share/doc/$(BINARY) $@/usr/lib/$(BINARY)/web
+ mkdir -p $@/usr/bin $@/etc/$(BINARY) $@/usr/share/man/man1 $@/usr/share/doc/$(BINARY) $@/usr/lib/$(BINARY)
# Copying the binary, config file, unit file, and man page into the env.
cp $(BINARY).amd64.linux $@/usr/bin/$(BINARY)
cp *.1.gz $@/usr/share/man/man1
- cp -r init/webserver/* $@/usr/lib/$(BINARY)/web/
rm -f $@/usr/lib/$(BINARY)/*.so
[ ! -f *amd64.so ] || cp *amd64.so $@/usr/lib/$(BINARY)/
cp examples/$(CONFIG_FILE).example $@/etc/$(BINARY)/
@@ -229,6 +277,12 @@ package_build_linux: readme man plugins_linux_amd64 linux
sed -e "s/{{BINARY}}/$(BINARY)/g" -e "s/{{DESC}}/$(DESC)/g" \
init/systemd/template.unit.service > $@/lib/systemd/system/$(BINARY).service
+after-install-rendered.sh:
+ sed -e "s/{{BINARY}}/$(BINARY)/g" scripts/after-install.sh > after-install-rendered.sh
+
+before-remove-rendered.sh:
+ sed -e "s/{{BINARY}}/$(BINARY)/g" scripts/before-remove.sh > before-remove-rendered.sh
+
package_build_linux_386: package_build_linux linux386
mkdir -p $@
cp -r $* $@/
@@ -248,11 +302,10 @@ package_build_linux_armhf: package_build_linux armhf
cp $(BINARY).armhf.linux $@/usr/bin/$(BINARY)
# Build an environment that can be packaged for freebsd.
-package_build_freebsd: readme man freebsd
- mkdir -p $@/usr/local/bin $@/usr/local/etc/$(BINARY) $@/usr/local/share/man/man1 $@/usr/local/share/doc/$(BINARY) $@/usr/local/lib/$(BINARY)/web
+package_build_freebsd: readme man after-install-rendered.sh before-remove-rendered.sh freebsd
+ mkdir -p $@/usr/local/bin $@/usr/local/etc/$(BINARY) $@/usr/local/share/man/man1 $@/usr/local/share/doc/$(BINARY)
cp $(BINARY).amd64.freebsd $@/usr/local/bin/$(BINARY)
cp *.1.gz $@/usr/local/share/man/man1
- cp -r init/webserver/* $@/usr/local/lib/$(BINARY)/web/
cp examples/$(CONFIG_FILE).example $@/usr/local/etc/$(BINARY)/
cp examples/$(CONFIG_FILE).example $@/usr/local/etc/$(BINARY)/$(CONFIG_FILE)
cp LICENSE *.html examples/*?.?* $@/usr/local/share/doc/$(BINARY)/
@@ -275,41 +328,9 @@ package_build_freebsd_arm: package_build_freebsd freebsdarm
check_fpm:
@fpm --version > /dev/null || (echo "FPM missing. Install FPM: https://fpm.readthedocs.io/en/latest/installing.html" && false)
-docker:
- docker build -f init/docker/Dockerfile \
- --build-arg "BUILD_DATE=$(DATE)" \
- --build-arg "COMMIT=$(COMMIT)" \
- --build-arg "VERSION=$(VERSION)-$(ITERATION)" \
- --build-arg "LICENSE=$(LICENSE)" \
- --build-arg "DESC=$(DESC)" \
- --build-arg "URL=$(URL)" \
- --build-arg "VENDOR=$(VENDOR)" \
- --build-arg "AUTHOR=$(MAINT)" \
- --build-arg "BINARY=$(BINARY)" \
- --build-arg "SOURCE_URL=$(SOURCE_URL)" \
- --build-arg "CONFIG_FILE=$(CONFIG_FILE)" \
- --tag $(BINARY) .
-
-# This builds a Homebrew formula file that can be used to install this app from source.
-# The source used comes from the released version on GitHub. This will not work with local source.
-# This target is used by Travis CI to update the released Forumla when a new tag is created.
-formula: $(BINARY).rb
-v$(VERSION).tar.gz.sha256:
- # Calculate the SHA from the Github source file.
- curl -sL $(URL)/archive/v$(VERSION).tar.gz | openssl dgst -r -sha256 | tee $@
-$(BINARY).rb: v$(VERSION).tar.gz.sha256 init/homebrew/$(FORMULA).rb.tmpl
- # Creating formula from template using sed.
- sed -e "s/{{Version}}/$(VERSION)/g" \
- -e "s/{{Iter}}/$(ITERATION)/g" \
- -e "s/{{SHA256}}/$(shell head -c64 $<)/g" \
- -e "s/{{Desc}}/$(DESC)/g" \
- -e "s%{{URL}}%$(URL)%g" \
- -e "s%{{SOURCE_PATH}}%$(SOURCE_PATH)%g" \
- -e "s%{{SOURCE_URL}}%$(SOURCE_URL)%g" \
- -e "s%{{CONFIG_FILE}}%$(CONFIG_FILE)%g" \
- -e "s%{{Class}}%$(shell echo $(BINARY) | perl -pe 's/(?:\b|-)(\p{Ll})/\u$$1/g')%g" \
- init/homebrew/$(FORMULA).rb.tmpl | tee $(BINARY).rb
- # That perl line turns hello-world into HelloWorld, etc.
+##################
+##### Extras #####
+##################
plugins: $(patsubst %,%.so,$(PLUGINS))
$(patsubst %,%.so,$(PLUGINS)):
@@ -324,44 +345,89 @@ plugins_darwin: $(patsubst %,%.darwin.so,$(PLUGINS))
$(patsubst %,%.darwin.so,$(PLUGINS)):
GOOS=darwin go build -o $@ -ldflags "$(VERSION_LDFLAGS)" -buildmode=plugin ./plugins/$(patsubst %.darwin.so,%,$@)
-# Extras
-
# Run code tests and lint.
-test:
+test: lint
# Testing.
go test -race -covermode=atomic ./...
+lint:
# Checking lint.
- golangci-lint run $(GOLANGCI_LINT_ARGS)
+ GOOS=linux $(shell go env GOPATH)/bin/golangci-lint run $(GOLANGCI_LINT_ARGS)
+ GOOS=freebsd $(shell go env GOPATH)/bin/golangci-lint run $(GOLANGCI_LINT_ARGS)
+ GOOS=windows $(shell go env GOPATH)/bin/golangci-lint run $(GOLANGCI_LINT_ARGS)
+# Mockgen and bindata are examples.
+# Your `go generate` may require other tools; add them!
-# Don't run this unless you're ready to debug untested vendored dependencies.
-deps:
- go get -u github.com/unifi-poller/unifi
- go get -u github.com/unifi-poller/influxunifi
- go get -u github.com/unifi-poller/promunifi
- go get -u github.com/unifi-poller/lokiunifi
- go get -u github.com/unifi-poller/webserver
- go get -u github.com/unifi-poller/inputunifi
- go get -u github.com/unifi-poller/poller
+mockgen: $(shell go env GOPATH)/bin/mockgen
+$(shell go env GOPATH)/bin/mockgen:
+ cd /tmp ; go get github.com/golang/mock/mockgen ; go install github.com/golang/mock/mockgen
+bindata: $(shell go env GOPATH)/bin/go-bindata
+$(shell go env GOPATH)/bin/go-bindata:
+ cd /tmp ; go get -u github.com/go-bindata/go-bindata/... ; go install github.com/go-bindata/go-bindata
-# Homebrew stuff. macOS only.
+generate: mockgen bindata
+ go generate ./...
+
+##################
+##### Docker #####
+##################
+
+docker:
+ docker build -f init/docker/Dockerfile \
+ --build-arg "BUILD_DATE=$(DATE)" \
+ --build-arg "COMMIT=$(COMMIT)" \
+ --build-arg "VERSION=$(VERSION)-$(ITERATION)" \
+ --build-arg "LICENSE=$(LICENSE)" \
+ --build-arg "DESC=$(DESC)" \
+ --build-arg "VENDOR=$(VENDOR)" \
+ --build-arg "AUTHOR=$(MAINT)" \
+ --build-arg "BINARY=$(BINARY)" \
+ --build-arg "SOURCE_URL=$(SOURCE_URL)" \
+ --build-arg "CONFIG_FILE=$(CONFIG_FILE)" \
+ --tag $(BINARY) .
+
+####################
+##### Homebrew #####
+####################
+
+# This builds a Homebrew formula file that can be used to install this app from source.
+# The source used comes from the released version on GitHub. This will not work with local source.
+# This target is used by Travis CI to update the released Forumla when a new tag is created.
+formula: $(BINARY).rb
+v$(VERSION).tar.gz.sha256:
+ # Calculate the SHA from the Github source file.
+ curl -sL $(SOURCE_URL)/archive/v$(VERSION).tar.gz | openssl dgst -r -sha256 | tee $@
+$(BINARY).rb: v$(VERSION).tar.gz.sha256 init/homebrew/$(FORMULA).rb.tmpl
+ # Creating formula from template using sed.
+ sed -e "s/{{Version}}/$(VERSION)/g" \
+ -e "s/{{Iter}}/$(ITERATION)/g" \
+ -e "s/{{SHA256}}/$(shell head -c64 $<)/g" \
+ -e "s/{{Desc}}/$(DESC)/g" \
+ -e "s%{{SOURCE_URL}}%$(SOURCE_URL)%g" \
+ -e "s%{{SOURCE_PATH}}%$(SOURCE_PATH)%g" \
+ -e "s%{{CONFIG_FILE}}%$(CONFIG_FILE)%g" \
+ -e "s%{{Class}}%$(shell echo $(BINARY) | perl -pe 's/(?:\b|-)(\p{Ll})/\u$$1/g')%g" \
+ init/homebrew/$(FORMULA).rb.tmpl | tee $(BINARY).rb
+ # That perl line turns hello-world into HelloWorld, etc.
# Used for Homebrew only. Other distros can create packages.
install: man readme $(BINARY) plugins_darwin
- @echo - Done Building! -
+ @echo - Done Building -
@echo - Local installation with the Makefile is only supported on macOS.
- @echo If you wish to install the application manually on Linux, check out the wiki: https://$(SOURCE_URL)/wiki/Installation
@echo - Otherwise, build and install a package: make rpm -or- make deb
- @echo See the Package Install wiki for more info: https://$(SOURCE_URL)/wiki/Package-Install
@[ "$(shell uname)" = "Darwin" ] || (echo "Unable to continue, not a Mac." && false)
@[ "$(PREFIX)" != "" ] || (echo "Unable to continue, PREFIX not set. Use: make install PREFIX=/usr/local ETC=/usr/local/etc" && false)
@[ "$(ETC)" != "" ] || (echo "Unable to continue, ETC not set. Use: make install PREFIX=/usr/local ETC=/usr/local/etc" && false)
# Copying the binary, config file, unit file, and man page into the env.
- /usr/bin/install -m 0755 -d $(PREFIX)/bin $(PREFIX)/share/man/man1 $(ETC)/$(BINARY) $(PREFIX)/share/doc/$(BINARY) $(PREFIX)/lib/$(BINARY)/web
+ /usr/bin/install -m 0755 -d $(PREFIX)/bin $(PREFIX)/share/man/man1 $(ETC)/$(BINARY) $(PREFIX)/share/doc/$(BINARY) $(PREFIX)/lib/$(BINARY)
+ /usr/bin/install -m 0755 -d $(PREFIX)/lib/$(BINARY)/web/static/{css,js,images}
/usr/bin/install -m 0755 -cp $(BINARY) $(PREFIX)/bin/$(BINARY)
- /usr/bin/install -m 0644 -cp $(BINARY).1.gz $(PREFIX)/share/man/man1/
+ /usr/bin/install -m 0644 -cp $(BINARY).1.gz $(PREFIX)/share/man/man1
/usr/bin/install -m 0644 -cp examples/$(CONFIG_FILE).example $(ETC)/$(BINARY)/
- /usr/bin/install -m 0644 -cp init/webserver/* $(PREFIX)/lib/$(BINARY)/web/
+ /usr/bin/install -m 0644 -cp init/webserver/index.html $(PREFIX)/lib/$(BINARY)/web/index.html
+ /usr/bin/install -m 0644 -cp init/webserver/static/css/* $(PREFIX)/lib/$(BINARY)/web/static/css/
+ /usr/bin/install -m 0644 -cp init/webserver/static/js/* $(PREFIX)/lib/$(BINARY)/web/static/js/
+ /usr/bin/install -m 0644 -cp init/webserver/static/images/* $(PREFIX)/lib/$(BINARY)/web/static/images/
[ -f $(ETC)/$(BINARY)/$(CONFIG_FILE) ] || /usr/bin/install -m 0644 -cp examples/$(CONFIG_FILE).example $(ETC)/$(BINARY)/$(CONFIG_FILE)
/usr/bin/install -m 0644 -cp LICENSE *.html examples/* $(PREFIX)/share/doc/$(BINARY)/
diff --git a/README.md b/README.md
index cc8b9b35..9ea920eb 100644
--- a/README.md
+++ b/README.md
@@ -1,7 +1,6 @@
[](https://discord.gg/KnyKYt2)
-[](https://twitter.com/TwitchCaptain)
[](http://grafana.com/dashboards?search=unifi-poller)
[](https://hub.docker.com/r/golift/unifi-poller)
[](https://www.somsubhra.com/github-release-stats/?username=unifi-poller&repository=unifi-poller)
diff --git a/examples/up.conf.example b/examples/up.conf.example
index d7eab6d1..850d5da8 100644
--- a/examples/up.conf.example
+++ b/examples/up.conf.example
@@ -28,6 +28,8 @@
ssl_key_path = ""
# Errors are rare. Setting this to true will report them to Prometheus.
report_errors = false
+ ## Record data for disabled or down (unlinked) switch ports.
+ dead_ports = false
[influxdb]
disable = false
@@ -46,6 +48,8 @@
# Setting this to something lower may lead to "zeros" in your data.
# If you're getting zeros now, set this to "1m"
interval = "30s"
+ ## Record data for disabled or down (unlinked) switch ports.
+ dead_ports = false
# To enable output of UniFi Events to Loki, add a URL; it's disabled otherwise.
# User, pass and tenant_id are optional and most folks wont set them.
@@ -65,7 +69,7 @@
# wish to use SSL, provide SSL cert and key paths. This interface is currently
# read-only; it just displays information, like logs, devices and clients.
# Notice: Enabling the web server with many sites will increase memory usage.
-# This is a new feature. Feedback welcome!
+# This is a new feature and lacks a UI, enabling only recommended for testing.
[webserver]
enable = false
port = 37288
@@ -113,7 +117,7 @@
# Password for UniFi controller user (above).
# If the password provided here begins with file:// then the password is read in from
# the file path that follows the file:// prefix. ex: file:///etc/unifi/password.file
- # ex: file:///etc/unifi/passwd.file
+ # ex: file:///etc/unifi/passwd.file, windows: file://C:\\UserData\\Unifi\\Passwd.txt
pass = "unifipoller"
# If the controller has more than one site, specify which sites to poll here.
@@ -123,7 +127,7 @@
# Enable collection of site data. This data powers the Network Sites dashboard.
# It's not valuable to everyone and setting this to false will save resources.
- #save_sites = true
+ save_sites = true
# Hash, with md5, client names and MAC addresses. This attempts to protect
# personally identifiable information. Most users won't want to enable this.
@@ -163,11 +167,22 @@
# it's cool data. Please provide feedback on your experience with this feature.
save_dpi = false
+ ## Enabling save_rogue stores even more data in your time series databases.
+ ## This saves neighboring access point metrics in a dedicated table or namespace.
+ save_rogue = false
+
# If your UniFi controller has a valid SSL certificate (like lets encrypt),
# you can enable this option to validate it. Otherwise, any SSL certificate is
# valid. If you don't know if you have a valid SSL cert, then you don't have one.
verify_ssl = false
+ ## You may provide a list of SSL cert files (PEM format) that you expect your
+ ## controller to use. As long as one of the certs you provide here shows up in
+ ## the cert trust chain the controller presents it will be accepted and allowed.
+ ## These files may be re-read while poller is running.
+ ## Example: ssl_cert_paths = ["/path/to/cert.pem", "/another/cert.pem"]
+ ssl_cert_paths = []
+
# The following is optional and used for configurations with multiple UniFi controllers.
# You may repeat the following [[unifi.controller]] section as many times as needed to
@@ -186,4 +201,6 @@
# save_alarms = false
# save_anomalies = false
# save_dpi = false
+# save_rogue = false
# verify_ssl = false
+# ssl_cert_paths = []
diff --git a/go.mod b/go.mod
index bdc49969..5590abc4 100644
--- a/go.mod
+++ b/go.mod
@@ -1,27 +1,20 @@
module github.com/unifi-poller/unifi-poller
-go 1.14
+go 1.16
require (
- github.com/github/hub v2.11.2+incompatible // indirect
- github.com/golang/snappy v0.0.1 // indirect
- github.com/influxdata/influxdb1-client v0.0.0-20200515024757-02f0bf5dbca3 // indirect
- github.com/mattn/go-colorable v0.1.4 // indirect
- github.com/mattn/go-isatty v0.0.11 // indirect
- github.com/prometheus/client_golang v1.7.1 // indirect
- github.com/prometheus/common v0.10.0 // indirect
- github.com/prometheus/procfs v0.1.3 // indirect
- github.com/russross/blackfriday v2.0.0+incompatible // indirect
- github.com/shurcooL/sanitized_anchor_name v1.0.0 // indirect
- github.com/spf13/pflag v1.0.5 // indirect
- github.com/unifi-poller/influxunifi v0.0.10-0.20200720041222-5932808647e8
- github.com/unifi-poller/inputunifi v0.0.8-0.20200719194021-3d07f5886bf0
- github.com/unifi-poller/lokiunifi v0.0.0-20200720041215-6b4aaa3bd40f
- github.com/unifi-poller/poller v0.0.8-0.20200720041241-4068a5bfcdfd
- github.com/unifi-poller/promunifi v0.0.9-0.20200720041230-cd67f20aa182
- github.com/unifi-poller/unifi v0.0.6-0.20200628213309-a22ea217874f
- golang.org/x/net v0.0.0-20200625001655-4c5254603344 // indirect
- golang.org/x/sys v0.0.0-20200625212154-ddb9806d33ae // indirect
- golift.io/cnfg v0.0.5 // indirect
- google.golang.org/protobuf v1.25.0 // indirect
+ github.com/golang/protobuf v1.5.1 // indirect
+ github.com/influxdata/influxdb1-client v0.0.0-20200827194710-b269163b24ab // indirect
+ github.com/prometheus/client_golang v1.10.0 // indirect
+ github.com/prometheus/common v0.19.0 // indirect
+ github.com/unifi-poller/influxunifi v0.0.0-20210322065128-7bc73454c06e
+ github.com/unifi-poller/inputunifi v0.0.0-20210322032017-2bf529b57d4d
+ github.com/unifi-poller/lokiunifi v0.0.0-20210315080246-0270b8174e62
+ github.com/unifi-poller/poller v0.0.0-20210315075554-47d92433b172
+ github.com/unifi-poller/promunifi v0.0.0-20210322055855-07f7eb3765d6
+ golang.org/x/crypto v0.0.0-20210317152858-513c2a44f670 // indirect
+ golang.org/x/net v0.0.0-20210316092652-d523dce5a7f4 // indirect
+ golang.org/x/sys v0.0.0-20210320140829-1e4c9ba3b0c4 // indirect
+ golang.org/x/term v0.0.0-20210317153231-de623e64d2a6 // indirect
+ gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b // indirect
)
diff --git a/go.sum b/go.sum
index bfe78cd2..0fd9d689 100644
--- a/go.sum
+++ b/go.sum
@@ -1,30 +1,77 @@
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=
github.com/BurntSushi/toml v0.3.1 h1:WXkYYl6Yr3qBf1K79EBnL4mak0OimBfB0XUf9Vl28OQ=
github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
+github.com/Knetic/govaluate v3.0.1-0.20171022003610-9aa49832a739+incompatible/go.mod h1:r7JcOSlj0wfOMncg0iLm8Leh48TZaKVeNIfJntJ2wa0=
+github.com/Shopify/sarama v1.19.0/go.mod h1:FVkBWblsNy7DGZRfXLU0O9RCGt5g3g3yEuWXgklEdEo=
+github.com/Shopify/toxiproxy v2.1.4+incompatible/go.mod h1:OXgGpZ6Cli1/URJOF1DMxUHB2q5Ap20/P/eIdh4G0pI=
+github.com/VividCortex/gohistogram v1.0.0/go.mod h1:Pf5mBqqDxYaXu3hDrrU+w6nw50o/4+TcAqDqk/vUH7g=
+github.com/afex/hystrix-go v0.0.0-20180502004556-fa1af6a1f4f5/go.mod h1:SkGFH1ia65gfNATL8TAiHDNxPzPdmEL5uirI2Uyuz6c=
github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc=
github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc=
github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0=
github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0=
+github.com/alecthomas/units v0.0.0-20190924025748-f65c72e2690d/go.mod h1:rBZYJk541a8SKzHPHnH3zbiI+7dagKZ0cgpgrD7Fyho=
+github.com/apache/thrift v0.12.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ=
+github.com/apache/thrift v0.13.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ=
+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/aryann/difflib v0.0.0-20170710044230-e206f873d14a/go.mod h1:DAHtR1m6lCRdSC2Tm3DSWRPvIPr6xNKyeHdqDQSQT+A=
+github.com/aws/aws-lambda-go v1.13.3/go.mod h1:4UKl9IzQMoD+QF79YdCuzCwp8VbmG4VAQwij/eHl5CU=
+github.com/aws/aws-sdk-go v1.27.0/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo=
+github.com/aws/aws-sdk-go-v2 v0.18.0/go.mod h1:JWVYvqSMppoMJC0x5wdwiImzgXTI9FuZwxzkQq9wy+g=
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/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM=
github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw=
+github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs=
+github.com/casbin/casbin/v2 v2.1.2/go.mod h1:YcPU1XXisHhLzuxH9coDNf2FbKpjGlbCg3n9yuLkIJQ=
+github.com/cenkalti/backoff v2.2.1+incompatible/go.mod h1:90ReRw6GdpyfrHakVjL/QHaoyV4aDUVVkXQJJJ3NXXM=
github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU=
github.com/cespare/xxhash/v2 v2.1.1 h1:6MnRN8NT7+YBpUIWxHtefFZOKTAPgGjpQSxqLNn0+qY=
github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
+github.com/clbanning/x2j v0.0.0-20191024224557-825249438eec/go.mod h1:jMjuTZXRI4dUb/I5gc9Hdhagfvm9+RyrPryS/auMzxE=
github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw=
+github.com/cockroachdb/datadriven v0.0.0-20190809214429-80d97fb3cbaa/go.mod h1:zn76sxSg3SzpJ0PPJaLDCu+Bu0Lg3sKTORVIj19EIF8=
+github.com/codahale/hdrhistogram v0.0.0-20161010025455-3a0bb77429bd/go.mod h1:sE/e/2PUdi/liOCUjSTXgM1o87ZssimdTWN964YiIeI=
+github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk=
+github.com/coreos/go-systemd v0.0.0-20180511133405-39ca1b05acc7/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4=
+github.com/coreos/pkg v0.0.0-20160727233714-3ac0863d7acf/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA=
+github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU=
+github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7DoTY=
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/dustin/go-humanize v0.0.0-20171111073723-bb3d318650d4/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk=
+github.com/eapache/go-resiliency v1.1.0/go.mod h1:kFI+JgMyC7bLPUVY133qvEBtVayf5mFgVsvEsIPBvNs=
+github.com/eapache/go-xerial-snappy v0.0.0-20180814174437-776d5712da21/go.mod h1:+020luEh2TKB4/GOp8oxxtq0Daoen/Cii55CzbTV6DU=
+github.com/eapache/queue v1.1.0/go.mod h1:6eCeP0CKFpHLu8blIFXhExK/dRa7WDZfr6jVFPTqq+I=
+github.com/edsrzf/mmap-go v1.0.0/go.mod h1:YO35OhQPt3KJa3ryjFM5Bs14WD66h8eGKpfaBNrHW5M=
+github.com/envoyproxy/go-control-plane v0.6.9/go.mod h1:SBwIajubJHhxtWwsL9s8ss4safvEdbitLhGGK48rN6g=
github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c=
-github.com/github/hub v2.11.2+incompatible/go.mod h1:zQrzJEdze2hfWJDgktd/L6sROjAdCThFrzjbxw4keTs=
+github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4=
+github.com/franela/goblin v0.0.0-20200105215937-c9ffbefa60db/go.mod h1:7dvUGVsVBjqR7JHJk0brhHOZYGmfBYOrK0ZhYMEtBr4=
+github.com/franela/goreq v0.0.0-20171204163338-bcd34c9993f8/go.mod h1:ZhphrRTfi2rbfLwlschooIH4+wKKDR4Pdxhh+TRoA20=
+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-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as=
+github.com/go-kit/kit v0.10.0/go.mod h1:xUsJbQ/Fp4kEt7AFgCuvyX4a71u8h9jB8tj/ORgOZ7o=
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-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG1KdI/P7A=
+github.com/go-sql-driver/mysql v1.4.0/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w=
github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY=
+github.com/gogo/googleapis v1.1.0/go.mod h1:gf4bu3Q80BeJ6H1S1vYPm8/ELATdvryBaNFGgqEef3s=
github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ=
+github.com/gogo/protobuf v1.2.0/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-20160516000752-02826c3e7903/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
+github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/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=
@@ -35,268 +82,366 @@ github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrU
github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w=
github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0=
github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8=
-github.com/golang/protobuf v1.4.2 h1:+Z5KGCizgyZCbGh1KZqA0fcLLkwbsjIzS4aV2v7wJX0=
github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI=
-github.com/golang/snappy v0.0.1/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
+github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI=
+github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk=
+github.com/golang/protobuf v1.5.1 h1:jAbXjIeW2ZSW2AwFxlGTDoc2CjI2XujLkV3ArsZFCvc=
+github.com/golang/protobuf v1.5.1/go.mod h1:DopwsBzvsk0Fs44TXzsVbJyPhcCPeIwnvohx4u74HPM=
+github.com/golang/snappy v0.0.0-20180518054509-2e65f85255db/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/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
-github.com/google/go-cmp v0.5.0/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.5 h1:Khx7svrCpmxxtHBq5j2mp/xVjsi8hQMfNLvJFAlrGgU=
+github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
-github.com/gorilla/mux v1.7.4 h1:VuZ8uybHlWmqV03+zRzdwKL4tUnIp1MAQtp1mIFE1bc=
-github.com/gorilla/mux v1.7.4/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So=
-github.com/influxdata/influxdb1-client v0.0.0-20200515024757-02f0bf5dbca3 h1:k3/6a1Shi7GGCp9QpyYuXsMM6ncTOjCzOE9Fd6CDA+Q=
+github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI=
+github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
+github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY=
+github.com/gorilla/context v1.1.1/go.mod h1:kBGZzfjB9CEq2AlWe17Uuf7NDRt0dE0s8S51q0aT7Yg=
+github.com/gorilla/mux v1.6.2/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs=
+github.com/gorilla/mux v1.7.3/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs=
+github.com/gorilla/mux v1.8.0 h1:i40aqfkR1h2SlN9hojwV5ZA91wcXFOvkdNIeFDP5koI=
+github.com/gorilla/mux v1.8.0/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So=
+github.com/gorilla/websocket v0.0.0-20170926233335-4201258b820c/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ=
+github.com/grpc-ecosystem/go-grpc-middleware v1.0.1-0.20190118093823-f849b5445de4/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.5/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY=
+github.com/hashicorp/consul/api v1.3.0/go.mod h1:MmDNSzIMUjNpY/mQ398R4bk2FnqQLoPndWW5VkKPlCE=
+github.com/hashicorp/consul/sdk v0.3.0/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-version v1.2.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA=
+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/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/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU=
+github.com/hudl/fargo v1.3.0/go.mod h1:y3CKSmjA+wD2gak7sUSXTAoopbhU08POFhmITJgmKTg=
+github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8=
+github.com/influxdata/influxdb1-client v0.0.0-20191209144304-8bf82d3c094d/go.mod h1:qj24IKcXYK6Iy9ceXlo3Tc+vtHo9lIhSX5JddghvEPo=
github.com/influxdata/influxdb1-client v0.0.0-20200515024757-02f0bf5dbca3/go.mod h1:qj24IKcXYK6Iy9ceXlo3Tc+vtHo9lIhSX5JddghvEPo=
+github.com/influxdata/influxdb1-client v0.0.0-20200827194710-b269163b24ab h1:HqW4xhhynfjrtEiiSGcQUd6vrK23iMam1FO8rI7mwig=
+github.com/influxdata/influxdb1-client v0.0.0-20200827194710-b269163b24ab/go.mod h1:qj24IKcXYK6Iy9ceXlo3Tc+vtHo9lIhSX5JddghvEPo=
+github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k=
+github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo=
+github.com/jpillora/backoff v1.0.0/go.mod h1:J/6gKK9jxlEcS3zixgDgUAsiuZ7yrSoa/FX5e0EB2j4=
github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU=
+github.com/json-iterator/go v1.1.7/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4=
+github.com/json-iterator/go v1.1.8/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4=
github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4=
github.com/json-iterator/go v1.1.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4=
+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/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM=
+github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q=
+github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck=
github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
+github.com/konsorten/go-windows-terminal-sequences v1.0.3/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/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.11/go.mod h1:PhnuNfih5lzO57/f3n+odYbM4JtupLOxQOAqxQCu2WE=
+github.com/lightstep/lightstep-tracer-common/golang/gogo v0.0.0-20190605223551-bc2310a04743/go.mod h1:qklhhLq1aX+mtWk9cPHPzaBjWImj5ULL6C7HFJtXQMM=
+github.com/lightstep/lightstep-tracer-go v0.18.1/go.mod h1:jlF1pusYV4pidLvZ+XD0UBX0ZE6WURAspgAczcDHrL4=
+github.com/lyft/protoc-gen-validate v0.0.13/go.mod h1:XbGvPuh87YZc5TdIa2/I4pLk0QoUACkjt2znoq26NVQ=
+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-isatty v0.0.4/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4=
+github.com/mattn/go-runewidth v0.0.2/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU=
github.com/matttproud/golang_protobuf_extensions v1.0.1 h1:4hp9jkHxhMHkqkrB3Ix0jegS5sx/RkqARlsWZ6pIwiU=
github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0=
+github.com/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-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/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y=
github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/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/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U=
+github.com/nats-io/jwt v0.3.0/go.mod h1:fRYCDE99xlTsqUzISS1Bi75UBJ6ljOJQOAAu5VglpSg=
+github.com/nats-io/jwt v0.3.2/go.mod h1:/euKqTS1ZD+zzjYrY7pseZrTtWQSjujC7xjPc8wL6eU=
+github.com/nats-io/nats-server/v2 v2.1.2/go.mod h1:Afk+wRZqkMQs/p45uXdrVLuab3gwv3Z8C4HTBu8GD/k=
+github.com/nats-io/nats.go v1.9.1/go.mod h1:ZjDU1L/7fJ09jvUSRVBR2e7+RnLiiIQyqyzEE/Zbp4w=
+github.com/nats-io/nkeys v0.1.0/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxziKVo7w=
+github.com/nats-io/nkeys v0.1.3/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxziKVo7w=
+github.com/nats-io/nuid v1.0.1/go.mod h1:19wcPz3Ph3q0Jbyiqsd0kePYG7A95tJPxeL+1OSON2c=
+github.com/oklog/oklog v0.3.2/go.mod h1:FCV+B7mhrz4o+ueLpx+KqkyXRGMWOYEvfiXtdGtbWGs=
+github.com/oklog/run v1.0.0/go.mod h1:dlhp/R75TPv97u0XWUtDeV/lRKWPKSdTuV0TZvrmrQA=
+github.com/olekukonko/tablewriter v0.0.0-20170122224234-a0225b3f23b5/go.mod h1:vsDQFd/mU46D+Z4whnwzcISnGGzXWMclvtLoiIKAKIo=
+github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
+github.com/onsi/ginkgo v1.7.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
+github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY=
+github.com/op/go-logging v0.0.0-20160315200505-970db520ece7/go.mod h1:HzydrMdWErDVzsI23lYNej1Htcns9BCg93Dk0bBINWk=
+github.com/opentracing-contrib/go-observer v0.0.0-20170622124052-a52f23424492/go.mod h1:Ngi6UdF0k5OKD5t5wlmGhe/EDKPoUM3BXZSSfIuJbis=
+github.com/opentracing/basictracer-go v1.0.0/go.mod h1:QfBfYuafItcjQuMwinw9GhYKwFXS9KnPs5lxoYwgW74=
+github.com/opentracing/opentracing-go v1.0.2/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o=
+github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o=
+github.com/openzipkin-contrib/zipkin-go-opentracing v0.4.5/go.mod h1:/wsWhb9smxSfWAKL3wpBW7V8scJMt8N8gnaMCS9E/cA=
+github.com/openzipkin/zipkin-go v0.1.6/go.mod h1:QgAqvLzwWbR/WpD4A3cGpPtJrZXNIiJc5AZX7/PBEpw=
+github.com/openzipkin/zipkin-go v0.2.1/go.mod h1:NaW6tEwdmWMaCDZzg8sh+IBNOxHMPnhQw8ySjnjRyN4=
+github.com/openzipkin/zipkin-go v0.2.2/go.mod h1:NaW6tEwdmWMaCDZzg8sh+IBNOxHMPnhQw8ySjnjRyN4=
+github.com/pact-foundation/pact-go v1.0.4/go.mod h1:uExwJY4kCzNPcHRj+hCR/HBbOOIwwtUjcrb0b5/5kLM=
+github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc=
+github.com/pborman/uuid v1.2.0/go.mod h1:X/NO0urCmaxf9VXbdlT7C2Yzkj2IKimNn4k+gtPdI/k=
+github.com/performancecopilot/speed v3.0.0+incompatible/go.mod h1:/CLtqpZ5gBg1M9iaPbIdPPGyKcA8hKdoy6hAWba7Yac=
+github.com/pierrec/lz4 v1.0.2-0.20190131084431-473cd7ce01a1/go.mod h1:3/3N9NVKO0jef7pBehbT1qWhCMrIgbYNnFAZCqQ5LRc=
+github.com/pierrec/lz4 v2.0.5+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY=
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 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
+github.com/pkg/profile v1.2.1/go.mod h1:hJw3o1OdXxsrSjjVksARp5W95eeEaEfptyVZyv6JUPA=
+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-0.20190127221311-3c4408c8b829/go.mod h1:p2iRAGwDERtqlqzRXnrOVns+ignqQo//hLXqYxZYVNs=
github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo=
+github.com/prometheus/client_golang v1.3.0/go.mod h1:hJaj2vgQTGQmVCsAACORcieXFeDPbaTKGT+JTgUa3og=
github.com/prometheus/client_golang v1.6.0/go.mod h1:ZLOG9ck3JLRdB5MgO8f+lLTe83AXG6ro35rLTxvnIl4=
-github.com/prometheus/client_golang v1.7.0 h1:wCi7urQOGBsYcQROHqpUUX4ct84xp40t9R9JX0FuA/U=
-github.com/prometheus/client_golang v1.7.0/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M=
-github.com/prometheus/client_golang v1.7.1 h1:NTGy1Ja9pByO+xAeH/qiWnLrKtr3hJPNjaVUwnjpdpA=
github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M=
+github.com/prometheus/client_golang v1.9.0/go.mod h1:FqZLKOZnGdFAhOK4nqGHa7D66IdsO+O441Eve7ptJDU=
+github.com/prometheus/client_golang v1.10.0 h1:/o0BDeWzLWXNZ+4q5gXltUvaMpJqckTa+jTNoB+z4cg=
+github.com/prometheus/client_golang v1.10.0/go.mod h1:WJM3cc3yu7XKBKa/I8WeZm+V3eltZnBwfENSU7mdogU=
github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo=
+github.com/prometheus/client_model v0.0.0-20190115171406-56726106282f/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/client_model v0.1.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
github.com/prometheus/client_model v0.2.0 h1:uq5h0d+GuxiXLJLNABMgp2qUWDPiLvgCzz2dUR+/W/M=
github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
+github.com/prometheus/common v0.2.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4=
github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4=
+github.com/prometheus/common v0.7.0/go.mod h1:DjGbpBbp5NYNiECxcL/VnbXCCaQpKd3tt26CguLLsqA=
github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4=
-github.com/prometheus/common v0.10.0 h1:RyRA7RzGXQZiW+tGMr7sxa85G1z0yOpM1qq5c8lNawc=
github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo=
+github.com/prometheus/common v0.15.0/go.mod h1:U+gB1OBLb1lF3O42bTCL+FK18tX9Oar16Clt/msog/s=
+github.com/prometheus/common v0.18.0/go.mod h1:U+gB1OBLb1lF3O42bTCL+FK18tX9Oar16Clt/msog/s=
+github.com/prometheus/common v0.19.0 h1:Itb4+NjG9wRdkAWgVucbM/adyIXxEhbw0866e0uZE6A=
+github.com/prometheus/common v0.19.0/go.mod h1:U+gB1OBLb1lF3O42bTCL+FK18tX9Oar16Clt/msog/s=
github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk=
+github.com/prometheus/procfs v0.0.0-20190117184657-bf6a532e95b1/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk=
github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA=
+github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A=
github.com/prometheus/procfs v0.0.11/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU=
github.com/prometheus/procfs v0.1.1/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU=
-github.com/prometheus/procfs v0.1.2/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU=
-github.com/prometheus/procfs v0.1.3 h1:F0+tqvhOksq22sc6iCHF5WGlWjdwj92p0udFh1VFBS8=
github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU=
-github.com/russross/blackfriday v2.0.0+incompatible/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g=
+github.com/prometheus/procfs v0.2.0/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU=
+github.com/prometheus/procfs v0.6.0 h1:mxy4L2jP6qMonqmq+aTtOx1ifVWUgG/TAmntgbh3xv4=
+github.com/prometheus/procfs v0.6.0/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA=
+github.com/rcrowley/go-metrics v0.0.0-20181016184325-3113b8401b8a/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4=
+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/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/samuel/go-zookeeper v0.0.0-20190923202752-2cc03de413da/go.mod h1:gi+0XIa01GRL2eRQVjQkKGqKF3SF9vZR/HnPullcV2E=
+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.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE=
-github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA=
+github.com/sirupsen/logrus v1.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrfsX/uA88=
+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/sony/gobreaker v0.4.1/go.mod h1:ZKptC7FHNvhBz7dN2LGjPVBz2sZJmc0/PkyDJOjmxWY=
+github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ=
+github.com/spf13/pflag v1.0.1/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4=
github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
+github.com/spf13/pflag v1.0.6-0.20201009195203-85dd5c8bc61c h1:zqmyTlQyufRC65JnImJ6H1Sf7BDj8bG31EV919NVEQc=
+github.com/spf13/pflag v1.0.6-0.20201009195203-85dd5c8bc61c/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
+github.com/streadway/amqp v0.0.0-20190404075320-75d898a42a94/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw=
+github.com/streadway/amqp v0.0.0-20190827072141-edfb9018d271/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw=
+github.com/streadway/handy v0.0.0-20190108123426-d5acb3125c2a/go.mod h1:qNTQ5P5JnDBl6z3cMAg/SywNDC5ABu5ApDIw6lUbRmI=
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/unifi-poller/influxunifi v0.0.10-0.20200626040446-8fe783775415 h1:0rYv6/Ykayeyl9zzCERwrwrWa15ES2/ctDmmr0paQ9c=
-github.com/unifi-poller/influxunifi v0.0.10-0.20200626040446-8fe783775415/go.mod h1:HO6WuWoUwuz9Hj4m9hJ8Sh7U9O1Sd62FPV+loEdCDqY=
-github.com/unifi-poller/influxunifi v0.0.10-0.20200628124841-cb2762a27193 h1:GZsJAFb2ihLSluA6yVQCbfu0msFIepU8Aa4cuID0ymU=
-github.com/unifi-poller/influxunifi v0.0.10-0.20200628124841-cb2762a27193/go.mod h1:ZlpigLCYu5/l1Wu8nYEIFNWZnAqg+YV3mbSuZCmcsJE=
-github.com/unifi-poller/influxunifi v0.0.10-0.20200628212559-02c131d5ab9f h1:wY8dYe9PRRh99MmNP08AXXR+XBRjiPo163QIqUoE5qg=
-github.com/unifi-poller/influxunifi v0.0.10-0.20200628212559-02c131d5ab9f/go.mod h1:qbHllpoCWUfhk+WDvPluqn9k+czl4x16TefjdaCcmTc=
-github.com/unifi-poller/influxunifi v0.0.10-0.20200630101653-6c02bd48f4d4 h1:FGp+6E7B2nBmH44EnjEY1qb88C3a9osyU5WPgzCtqBQ=
-github.com/unifi-poller/influxunifi v0.0.10-0.20200630101653-6c02bd48f4d4/go.mod h1:qbHllpoCWUfhk+WDvPluqn9k+czl4x16TefjdaCcmTc=
-github.com/unifi-poller/influxunifi v0.0.10-0.20200630103608-fb25b5bc3fa7 h1:UZ18xCI8bCSBhmeUFYJb78vwAjf8htsxbSI05GZvQIA=
-github.com/unifi-poller/influxunifi v0.0.10-0.20200630103608-fb25b5bc3fa7/go.mod h1:qbHllpoCWUfhk+WDvPluqn9k+czl4x16TefjdaCcmTc=
-github.com/unifi-poller/influxunifi v0.0.10-0.20200703094640-5683cb4d44fb h1:lD5W/5JXoU+B6ZHueZMzSWSNlzeIwIYtEYG9LInUi/E=
-github.com/unifi-poller/influxunifi v0.0.10-0.20200703094640-5683cb4d44fb/go.mod h1:qbHllpoCWUfhk+WDvPluqn9k+czl4x16TefjdaCcmTc=
-github.com/unifi-poller/influxunifi v0.0.10-0.20200707102535-eac44b814550 h1:a8oJkKF/3EsIhgvhMvST0kPhW6PH7eqcpgjj2UQUyp8=
-github.com/unifi-poller/influxunifi v0.0.10-0.20200707102535-eac44b814550/go.mod h1:WqlfO21XwKf/axW2RclNpXYMOcYCtazhJMwnGKyZvMw=
-github.com/unifi-poller/influxunifi v0.0.10-0.20200719070803-1fb36a5a9829 h1:Rd8envlb8mzu5a/hC3pS0hyqcdkoyEGRiCQluEHDh3E=
-github.com/unifi-poller/influxunifi v0.0.10-0.20200719070803-1fb36a5a9829/go.mod h1:sYwt5HAR+ZQizq98BTeIXjujd5Ua6rbUhWui76xgF1A=
-github.com/unifi-poller/influxunifi v0.0.10-0.20200720041222-5932808647e8 h1:8qMoVDUTmxMqYEcggnmRZQnUfue7/Fh+Z77IhyJIFWU=
-github.com/unifi-poller/influxunifi v0.0.10-0.20200720041222-5932808647e8/go.mod h1:sYwt5HAR+ZQizq98BTeIXjujd5Ua6rbUhWui76xgF1A=
-github.com/unifi-poller/inputunifi v0.0.8-0.20200626052630-dabd0510075e h1:gJyoFh49X/9Q8DxsFe2H48DjfZ46/Aw/GBxl7izKDEo=
-github.com/unifi-poller/inputunifi v0.0.8-0.20200626052630-dabd0510075e/go.mod h1:nFr8uB4zJtCLiQvYPypGK3aWfQ9y4cC4iIeS9PyecrU=
-github.com/unifi-poller/inputunifi v0.0.8-0.20200628114724-8b60ff573a49 h1:ce5cXC4eWs5TfrjvlN8ZEemKcnv7KfbUbzXDr2fHnso=
-github.com/unifi-poller/inputunifi v0.0.8-0.20200628114724-8b60ff573a49/go.mod h1:Rb9C8xi/qgxOO/IbwyO4Uu77qVkIhGiQv4cA2jnmNMI=
-github.com/unifi-poller/inputunifi v0.0.8-0.20200628124735-b6af0039a275 h1:pbC+9LglWSAg6EE0AQPxk/Z2WowrVvEzH6cVVi/mcGo=
-github.com/unifi-poller/inputunifi v0.0.8-0.20200628124735-b6af0039a275/go.mod h1:Rb9C8xi/qgxOO/IbwyO4Uu77qVkIhGiQv4cA2jnmNMI=
-github.com/unifi-poller/inputunifi v0.0.8-0.20200629073944-889691ff1096 h1:0e66nCzeonQtrzX/zdNJdQHcoo6z2/rCmUaiAJU0tIM=
-github.com/unifi-poller/inputunifi v0.0.8-0.20200629073944-889691ff1096/go.mod h1:iJT8Y3KwSV/ceqOikamlhw2c0EMHTFv47TxKKFThx8I=
-github.com/unifi-poller/inputunifi v0.0.8-0.20200629074959-35d6603f1831 h1:fBPfSPtGCmpv5BMwk+oorS672fd7L8vFbX/DTOC+2C4=
-github.com/unifi-poller/inputunifi v0.0.8-0.20200629074959-35d6603f1831/go.mod h1:iJT8Y3KwSV/ceqOikamlhw2c0EMHTFv47TxKKFThx8I=
-github.com/unifi-poller/inputunifi v0.0.8-0.20200630101705-1f36fb078fcb h1:pMNmEeAaMpNvO1V96icOHqkVjbnwUJ1asCuoKIMdgac=
-github.com/unifi-poller/inputunifi v0.0.8-0.20200630101705-1f36fb078fcb/go.mod h1:iJT8Y3KwSV/ceqOikamlhw2c0EMHTFv47TxKKFThx8I=
-github.com/unifi-poller/inputunifi v0.0.8-0.20200630105934-93e63a1b6752 h1:CPPu1EyUmRRNZHTIfYu9MiKABOBdOf7JgqjL8KF62pg=
-github.com/unifi-poller/inputunifi v0.0.8-0.20200630105934-93e63a1b6752/go.mod h1:iJT8Y3KwSV/ceqOikamlhw2c0EMHTFv47TxKKFThx8I=
-github.com/unifi-poller/inputunifi v0.0.8-0.20200704070012-feea252994f2 h1:mhjgdc2uAm4941rOxuHGalXf4Gm7VlkfPUextl1+Vfo=
-github.com/unifi-poller/inputunifi v0.0.8-0.20200704070012-feea252994f2/go.mod h1:06CBPG9YAXgiGHhIk938uquEc3PQu5ysx8O2X1fFwSM=
-github.com/unifi-poller/inputunifi v0.0.8-0.20200705100128-2a4815b03dfe h1:nImldZZrNb6WEmglam2IzTppmEKpsDn8Dm4LDxkV0D8=
-github.com/unifi-poller/inputunifi v0.0.8-0.20200705100128-2a4815b03dfe/go.mod h1:06CBPG9YAXgiGHhIk938uquEc3PQu5ysx8O2X1fFwSM=
-github.com/unifi-poller/inputunifi v0.0.8-0.20200706074253-c9b60d7a4386 h1:NTC5ejGxV8zJQPiXC4JcIVwOlccWJFstKThmhvyolPU=
-github.com/unifi-poller/inputunifi v0.0.8-0.20200706074253-c9b60d7a4386/go.mod h1:06CBPG9YAXgiGHhIk938uquEc3PQu5ysx8O2X1fFwSM=
-github.com/unifi-poller/inputunifi v0.0.8-0.20200707102527-ecb82ee5d9f6 h1:MyjVlGVaO5UhXbKeOyPMGGrHZzTuNqxBKLpblzkYvIw=
-github.com/unifi-poller/inputunifi v0.0.8-0.20200707102527-ecb82ee5d9f6/go.mod h1:mag/wh3jcfGeYa1Xkc0RsnR/SzB9JqVOBfwb2+ouZc4=
-github.com/unifi-poller/inputunifi v0.0.8-0.20200719070501-75a24241ef36 h1:BOP5EGT+5EoM3gfvwpBNF97fKoX7oTHzprRRRe6rXeI=
-github.com/unifi-poller/inputunifi v0.0.8-0.20200719070501-75a24241ef36/go.mod h1:79iZjsCmupDPXq/ffNCauAyqBJxug/h2MGJLt0pTsmU=
-github.com/unifi-poller/inputunifi v0.0.8-0.20200719194021-3d07f5886bf0 h1:Jfz3i2jLZMGdvbDhf9ESOtXYoS+uIeGJu+w0sMrQib4=
-github.com/unifi-poller/inputunifi v0.0.8-0.20200719194021-3d07f5886bf0/go.mod h1:79iZjsCmupDPXq/ffNCauAyqBJxug/h2MGJLt0pTsmU=
-github.com/unifi-poller/lokiunifi v0.0.0-20200623055806-bef9501a2240 h1:5TkGeJiY4IvsQ29LvvoJ45zDpaaGIigKveyuodSWhcY=
-github.com/unifi-poller/lokiunifi v0.0.0-20200623055806-bef9501a2240/go.mod h1:F1xYSsn1D+sVgvVuL8FhjMj8GTFbbSTxxEi7Bg6DzG8=
-github.com/unifi-poller/lokiunifi v0.0.0-20200626040346-12af563d2a99/go.mod h1:7+uUJT6nnXVPad/Omsj+lPD80Cshg4L8TPUkV72JNM8=
-github.com/unifi-poller/lokiunifi v0.0.0-20200626052645-b0336442237e h1:MoyVcBNks+p1tYCu67UyQycyHpeCqzafWpjMir/Mjh8=
-github.com/unifi-poller/lokiunifi v0.0.0-20200626052645-b0336442237e/go.mod h1:7+uUJT6nnXVPad/Omsj+lPD80Cshg4L8TPUkV72JNM8=
-github.com/unifi-poller/lokiunifi v0.0.0-20200628124714-778a1a77f311 h1:WBuMSFL4YpkRtwynKZU6+OcKWtuxnjenJafJDv8516o=
-github.com/unifi-poller/lokiunifi v0.0.0-20200628124714-778a1a77f311/go.mod h1:vmXYivAPW6jBzKAwBYsBcNeuROxaar6gvlsoZ3RQZhs=
-github.com/unifi-poller/lokiunifi v0.0.0-20200628212531-964d320957e4 h1:FA4rcjM648oDMn/Q7dH8j4Sj7bdQV9LQS8K77YP3Ye8=
-github.com/unifi-poller/lokiunifi v0.0.0-20200628212531-964d320957e4/go.mod h1:dbV8ptSPzLrerEJxvPYhDk+HRn+GMYv1xaqgUOoretg=
-github.com/unifi-poller/lokiunifi v0.0.0-20200707102508-fa1084a386c8 h1:6eSiVjtO9E6hGE30B0QQ8TuIb3+35BnQXlm52xPYqFg=
-github.com/unifi-poller/lokiunifi v0.0.0-20200707102508-fa1084a386c8/go.mod h1:qaf/3nErsTc9XzOgp3vX6JmYxR0GbhRCBbpI9NcUnJA=
-github.com/unifi-poller/lokiunifi v0.0.0-20200719070442-d6d2338713d6 h1:NQBxe9MwR8k12L3+FGbv8WpKV9RzqcB6F8jJAwGjN2o=
-github.com/unifi-poller/lokiunifi v0.0.0-20200719070442-d6d2338713d6/go.mod h1:XxvXFCXKxeTG0UNpQPh6JQ5vmHuug6kAkXWxTsFBg04=
-github.com/unifi-poller/lokiunifi v0.0.0-20200720041215-6b4aaa3bd40f h1:piHd4wzOw/zpYFGT0HeA8JgmBq6Ublvi+gk383c7lAg=
-github.com/unifi-poller/lokiunifi v0.0.0-20200720041215-6b4aaa3bd40f/go.mod h1:XxvXFCXKxeTG0UNpQPh6JQ5vmHuug6kAkXWxTsFBg04=
-github.com/unifi-poller/poller v0.0.8-0.20200621214016-5d1ed3324a46/go.mod h1:pJ/MeYaakLOOpbyc7s4zeZ92UzNK/rir5jkA7t5jIjo=
-github.com/unifi-poller/poller v0.0.8-0.20200622041812-dd79a3e3073e h1:pSkgIalhDdb1N0/9uTAVh7emolfFxjCxo68IXIsZzII=
-github.com/unifi-poller/poller v0.0.8-0.20200622041812-dd79a3e3073e/go.mod h1:pJ/MeYaakLOOpbyc7s4zeZ92UzNK/rir5jkA7t5jIjo=
-github.com/unifi-poller/poller v0.0.8-0.20200626082958-a9a7092a5684 h1:r1B8GoI47czgGnQ7WY89qlSKqSE1d1pQmcLfdXVW/+Y=
-github.com/unifi-poller/poller v0.0.8-0.20200626082958-a9a7092a5684/go.mod h1:pJ/MeYaakLOOpbyc7s4zeZ92UzNK/rir5jkA7t5jIjo=
-github.com/unifi-poller/poller v0.0.8-0.20200627080311-6a024f8220dd h1:1o5CdAa7HxUHDXDV6N8SGAtKu3GeSkxFJOMkHHm6MVk=
-github.com/unifi-poller/poller v0.0.8-0.20200627080311-6a024f8220dd/go.mod h1:pJ/MeYaakLOOpbyc7s4zeZ92UzNK/rir5jkA7t5jIjo=
-github.com/unifi-poller/poller v0.0.8-0.20200627082257-8f95941300de h1:GQqHkp9+jdesjCra28BPk10H3pJJ/9uVNzT1JRUP2K4=
-github.com/unifi-poller/poller v0.0.8-0.20200627082257-8f95941300de/go.mod h1:pJ/MeYaakLOOpbyc7s4zeZ92UzNK/rir5jkA7t5jIjo=
-github.com/unifi-poller/poller v0.0.8-0.20200628114359-a40c51a9891d h1:wS7GngTfpX4Ngmm2+r1uJsECmiAglSOzEInwF/S4dW8=
-github.com/unifi-poller/poller v0.0.8-0.20200628114359-a40c51a9891d/go.mod h1:fObadG7weiVnSpFu8pFpGfo2bYYFc7hUMe770FovSc8=
-github.com/unifi-poller/poller v0.0.8-0.20200628130947-4a647d6555ef h1:iUI85Mx7ee5MIdk4Ge9eDLovge10rM/j50PHc24+N08=
-github.com/unifi-poller/poller v0.0.8-0.20200628130947-4a647d6555ef/go.mod h1:fObadG7weiVnSpFu8pFpGfo2bYYFc7hUMe770FovSc8=
-github.com/unifi-poller/poller v0.0.8-0.20200628131550-26430cac16c1 h1:SHKYtAu4yB5bVhMuRkoHr8Ss1Ffu5dKLJ13rGWufLFI=
-github.com/unifi-poller/poller v0.0.8-0.20200628131550-26430cac16c1/go.mod h1:fObadG7weiVnSpFu8pFpGfo2bYYFc7hUMe770FovSc8=
-github.com/unifi-poller/poller v0.0.8-0.20200707102001-a78974b290b0 h1:PRhR0XJ+ajhYOnzRhIdgbjvbASteLA+NRTrvQUubJi4=
-github.com/unifi-poller/poller v0.0.8-0.20200707102001-a78974b290b0/go.mod h1:MiuDGaMWDOAv2SqzqgV5P8t8KWzN00say/Cd5LbiFTI=
-github.com/unifi-poller/poller v0.0.8-0.20200719070110-8d67d8eb73d5 h1:16SKHzP5jNBiMhiVxZwGwewSvdP2f5lUToT474roNn0=
-github.com/unifi-poller/poller v0.0.8-0.20200719070110-8d67d8eb73d5/go.mod h1:MiuDGaMWDOAv2SqzqgV5P8t8KWzN00say/Cd5LbiFTI=
-github.com/unifi-poller/poller v0.0.8-0.20200719081209-e80aa9ed401d h1:sOaaR5ylJTjbv+RSO7fOXnKPzw5PDtyzz/Z1P8qyDZk=
-github.com/unifi-poller/poller v0.0.8-0.20200719081209-e80aa9ed401d/go.mod h1:MiuDGaMWDOAv2SqzqgV5P8t8KWzN00say/Cd5LbiFTI=
-github.com/unifi-poller/poller v0.0.8-0.20200720031633-f6348e2bc478 h1:d8lKimaUqRMFthCLmAE/DdYdzGV1KYF1b8V7T5F9Ixg=
-github.com/unifi-poller/poller v0.0.8-0.20200720031633-f6348e2bc478/go.mod h1:MiuDGaMWDOAv2SqzqgV5P8t8KWzN00say/Cd5LbiFTI=
-github.com/unifi-poller/poller v0.0.8-0.20200720041241-4068a5bfcdfd h1:BrKxti28eGeBIQJf1gtNE8kUf3wE92ToAWKDNRMMmIw=
-github.com/unifi-poller/poller v0.0.8-0.20200720041241-4068a5bfcdfd/go.mod h1:MiuDGaMWDOAv2SqzqgV5P8t8KWzN00say/Cd5LbiFTI=
-github.com/unifi-poller/promunifi v0.0.9-0.20200623073250-24621ebb306a h1:7CmCHHFUrxzaGVMRINmplAosW8BNXlWIPm05LxCPClU=
-github.com/unifi-poller/promunifi v0.0.9-0.20200623073250-24621ebb306a/go.mod h1:mlvfj4DRFVx12ewi6BcT4XOG2bxC7sFasl08RlYih8Y=
-github.com/unifi-poller/promunifi v0.0.9-0.20200628124811-17c74bc966ba h1:JkCbMKjUORMImfKJ0uZFomVsPJjR8fUI+tZzpnbeGds=
-github.com/unifi-poller/promunifi v0.0.9-0.20200628124811-17c74bc966ba/go.mod h1:ibeILb7ndzfT+vzucBRCTCLv19TaKOcds8sKGv2ZwGA=
-github.com/unifi-poller/promunifi v0.0.9-0.20200628212620-13ccb1ce3beb h1:G8j4APUkcuogff5ihjeemJqeI7Hcwk3s598xbF63n9w=
-github.com/unifi-poller/promunifi v0.0.9-0.20200628212620-13ccb1ce3beb/go.mod h1:hq4eItu10nOutQ0q/BRf1Mn/IvfRP+n0DlWsYPBlbm4=
-github.com/unifi-poller/promunifi v0.0.9-0.20200630103619-c2b0b27aa0c7 h1:0s8Z4xKUjGeT3qZ4/SyyzgK0KodYPxLx3zooe45+nGY=
-github.com/unifi-poller/promunifi v0.0.9-0.20200630103619-c2b0b27aa0c7/go.mod h1:hq4eItu10nOutQ0q/BRf1Mn/IvfRP+n0DlWsYPBlbm4=
-github.com/unifi-poller/promunifi v0.0.9-0.20200707102516-6a68904c123a h1:9GrgOUGk/cZOMr2v9AnolxT2yncsahxo8K7qNFw4g9s=
-github.com/unifi-poller/promunifi v0.0.9-0.20200707102516-6a68904c123a/go.mod h1:kEA9Ih8V4PsO7pg2WPlr06wHY7DC9HeUmQ/RDS1vjf0=
-github.com/unifi-poller/promunifi v0.0.9-0.20200719070533-e4b440d85f53 h1:WmRxd8grVH80h5fqtc8U1oQ0SqYh3oQO7lXj+qlr4Gg=
-github.com/unifi-poller/promunifi v0.0.9-0.20200719070533-e4b440d85f53/go.mod h1:c6WkMKQzC6XgNdJHldBUHsMGzqPN9kNXWIMwortw3N4=
-github.com/unifi-poller/promunifi v0.0.9-0.20200719071215-657f39d26691 h1:CivVAOaiLfFlaRhRb20YRtRitUHZncUI5Z7nyg7wL6E=
-github.com/unifi-poller/promunifi v0.0.9-0.20200719071215-657f39d26691/go.mod h1:c6WkMKQzC6XgNdJHldBUHsMGzqPN9kNXWIMwortw3N4=
-github.com/unifi-poller/promunifi v0.0.9-0.20200720041230-cd67f20aa182 h1:gLNy6aaQwgDESLxqXhqiPsEGg/fWkBFS43vIsNh34sA=
-github.com/unifi-poller/promunifi v0.0.9-0.20200720041230-cd67f20aa182/go.mod h1:c6WkMKQzC6XgNdJHldBUHsMGzqPN9kNXWIMwortw3N4=
-github.com/unifi-poller/unifi v0.0.5-0.20200620103801-b927287ea1cd/go.mod h1:L1kMRH2buZhB31vZnRC1im7Tk/4uD3ET4biwl2faYy8=
-github.com/unifi-poller/unifi v0.0.6-0.20200625090439-421046871a37 h1:T2y8JWkjZd1vz2ZKu4vmmAk9s6PUwupuTldwhfww5xY=
-github.com/unifi-poller/unifi v0.0.6-0.20200625090439-421046871a37/go.mod h1:L1kMRH2buZhB31vZnRC1im7Tk/4uD3ET4biwl2faYy8=
-github.com/unifi-poller/unifi v0.0.6-0.20200628213309-a22ea217874f h1:5aLy4Ac0vFhaEikq04oPAFqhygVv0lq77/ZJ4aBEnkc=
-github.com/unifi-poller/unifi v0.0.6-0.20200628213309-a22ea217874f/go.mod h1:uqBaNCon8FTw6nwGsAYHz/HwBgEYepS0XB5XW+OdBts=
-github.com/unifi-poller/webserver v0.0.0-20200626113232-24ae3f02067d h1:iTp4YWGqBmDRxsMjLnJymmDzhO9b+Jvjly7hqLJnPdY=
-github.com/unifi-poller/webserver v0.0.0-20200626113232-24ae3f02067d/go.mod h1:Ydcz7GN8uSpIoAI7h7+v89Q4peWaeq7jIAfsG0vfQKE=
-github.com/unifi-poller/webserver v0.0.0-20200627075529-02f6c576d7bc h1:O5qrJOu2E+WB5b5vSDDFrxW/Y7KBm+QdTRHc2Bad30Y=
-github.com/unifi-poller/webserver v0.0.0-20200627075529-02f6c576d7bc/go.mod h1:0kv/xON8tow9YE0ZmODW0Migxx2Q7vZZ+c5OVTW/kfU=
-github.com/unifi-poller/webserver v0.0.0-20200627075622-78851a262139 h1:JpKj/VMBxErObszX55iJnHRnbMHkEJ2hmzOXY6sDa9g=
-github.com/unifi-poller/webserver v0.0.0-20200627075622-78851a262139/go.mod h1:0kv/xON8tow9YE0ZmODW0Migxx2Q7vZZ+c5OVTW/kfU=
-github.com/unifi-poller/webserver v0.0.0-20200627080325-7ddac80e969e h1:whQsHnJJZvH0c6UyQwQcxA6dKXTrkLUAVxAjlVWq6Io=
-github.com/unifi-poller/webserver v0.0.0-20200627080325-7ddac80e969e/go.mod h1:0kv/xON8tow9YE0ZmODW0Migxx2Q7vZZ+c5OVTW/kfU=
-github.com/unifi-poller/webserver v0.0.0-20200628114213-2b89a50ff1c0 h1:hJ+DZonWxH7KybGDIs66U64/HZyY3obuxqyO1LUiWEE=
-github.com/unifi-poller/webserver v0.0.0-20200628114213-2b89a50ff1c0/go.mod h1:rlM8tRx7wCxqj4+6ZkuFVt2voFoAlHhS/XTrHd7T57s=
-github.com/unifi-poller/webserver v0.0.0-20200628115531-e071827d7598 h1:Nmo1arOOln7V7YhjcwrT2AEFN0dl43tl5NgoNF4SgiA=
-github.com/unifi-poller/webserver v0.0.0-20200628115531-e071827d7598/go.mod h1:rlM8tRx7wCxqj4+6ZkuFVt2voFoAlHhS/XTrHd7T57s=
-github.com/unifi-poller/webserver v0.0.0-20200628212441-340749c94743 h1:B0K4P+dCLW5qG8hRhdMlrNEU+Yy0kAm9C2lCUmfBhPI=
-github.com/unifi-poller/webserver v0.0.0-20200628212441-340749c94743/go.mod h1:ekoFVYoCWwn2CjQVTC9PNF6OaXYzr7HSnfc1BDQxxjA=
-github.com/unifi-poller/webserver v0.0.0-20200628214116-5bead091e113/go.mod h1:08IX30eb93+VbhiFqgMBXQD52+djPwivBcx5C8fH92M=
-github.com/unifi-poller/webserver v0.0.0-20200628220857-bb444cf7da24 h1:1X1DPZdpjPamherE0mfcs+O+hl/M+stilDk5+88U9ak=
-github.com/unifi-poller/webserver v0.0.0-20200628220857-bb444cf7da24/go.mod h1:08IX30eb93+VbhiFqgMBXQD52+djPwivBcx5C8fH92M=
-github.com/unifi-poller/webserver v0.0.0-20200629073701-8b95a5ac3e49 h1:8qVHNZg2Cf1dchBVCc8omU1ty56JQIQ9ZsyPg08EIs8=
-github.com/unifi-poller/webserver v0.0.0-20200629073701-8b95a5ac3e49/go.mod h1:08IX30eb93+VbhiFqgMBXQD52+djPwivBcx5C8fH92M=
-github.com/unifi-poller/webserver v0.0.0-20200630053536-1a5a6430daf4 h1:0II3Z/THLBBx8TCEYQkSlwn1KFLbGVe/OS/uNENvaS4=
-github.com/unifi-poller/webserver v0.0.0-20200630053536-1a5a6430daf4/go.mod h1:08IX30eb93+VbhiFqgMBXQD52+djPwivBcx5C8fH92M=
-github.com/unifi-poller/webserver v0.0.0-20200630103554-031c750c37a3 h1:LCmfjv9C8vnq59rxxBxqdqSCYkwN2USfntprQQ9BABg=
-github.com/unifi-poller/webserver v0.0.0-20200630103554-031c750c37a3/go.mod h1:08IX30eb93+VbhiFqgMBXQD52+djPwivBcx5C8fH92M=
-github.com/unifi-poller/webserver v0.0.0-20200704065911-79e4fe954ce1 h1:xjUOu//OP3dOc1X0K9d86WCoG4ezlrMWoeJOTHxECk0=
-github.com/unifi-poller/webserver v0.0.0-20200704065911-79e4fe954ce1/go.mod h1:08IX30eb93+VbhiFqgMBXQD52+djPwivBcx5C8fH92M=
-github.com/unifi-poller/webserver v0.0.0-20200706074454-a16e32b70121 h1:eK1wHVCUHcH9I8YzeWaiuS8kYgCqn1wXnyMmNH0g27A=
-github.com/unifi-poller/webserver v0.0.0-20200706074454-a16e32b70121/go.mod h1:08IX30eb93+VbhiFqgMBXQD52+djPwivBcx5C8fH92M=
-github.com/unifi-poller/webserver v0.0.0-20200707093910-adce7be3b1df h1:Opjv4SYuP595d0kb7tKzrX2aHH2EFrFER3Uu9cS7Frk=
-github.com/unifi-poller/webserver v0.0.0-20200707093910-adce7be3b1df/go.mod h1:08IX30eb93+VbhiFqgMBXQD52+djPwivBcx5C8fH92M=
+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/tmc/grpc-websocket-proxy v0.0.0-20170815181823-89b8d40f7ca8/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U=
+github.com/unifi-poller/influxunifi v0.0.0-20210322050609-e6104eba8e39 h1:PGzHec8s8fDBnVNROdNQ5uNcra1yD7oJbRPsE0pwfQ0=
+github.com/unifi-poller/influxunifi v0.0.0-20210322050609-e6104eba8e39/go.mod h1:DlASrS7caI8gZvzJ/GFyLkEK4sVxOP9vt2Osd+rZFQ8=
+github.com/unifi-poller/influxunifi v0.0.0-20210322065128-7bc73454c06e h1:fjBa0JxHgXFdcPemQNHODb1CB/p6uo2Txgdpkwpgxps=
+github.com/unifi-poller/influxunifi v0.0.0-20210322065128-7bc73454c06e/go.mod h1:DlASrS7caI8gZvzJ/GFyLkEK4sVxOP9vt2Osd+rZFQ8=
+github.com/unifi-poller/inputunifi v0.0.0-20210322032017-2bf529b57d4d h1:nN5a6UNer948VLgWN/ZeiuLTwW26dCfc6dyATwRuAbM=
+github.com/unifi-poller/inputunifi v0.0.0-20210322032017-2bf529b57d4d/go.mod h1:hbqRvuLzCva6t5E2f0pAdk9aNvo8tp2OTAVDLfSvsC8=
+github.com/unifi-poller/lokiunifi v0.0.0-20210315080246-0270b8174e62 h1:wNMBZQWx96BhYUsIThOhzXapV37NLXo29m+qYZ6tiP0=
+github.com/unifi-poller/lokiunifi v0.0.0-20210315080246-0270b8174e62/go.mod h1:RRYw79FXiiP/YIuZBrh9T9bVSP9yfULRavWRV2mtFOc=
+github.com/unifi-poller/poller v0.0.0-20210315011940-c43dc3c221b4/go.mod h1:fObadG7weiVnSpFu8pFpGfo2bYYFc7hUMe770FovSc8=
+github.com/unifi-poller/poller v0.0.0-20210315075554-47d92433b172 h1:90zdY4RZ5ocdZuoYG4EceiMOvHP5Rfg1qmi/5LurEe8=
+github.com/unifi-poller/poller v0.0.0-20210315075554-47d92433b172/go.mod h1:5DN7IF0zmDcN7LqyCMcFfn1dAWxPc1d0z5QDyWYOaqs=
+github.com/unifi-poller/promunifi v0.0.0-20210322055855-07f7eb3765d6 h1:27dVBbNpEkBCO7ssNhHCJeLXm45Id1vKETEiVHu9etw=
+github.com/unifi-poller/promunifi v0.0.0-20210322055855-07f7eb3765d6/go.mod h1:gga/6BhE8nyOFSGWxdX04oKfR6pDNkkeDDd+ol9W0C8=
+github.com/unifi-poller/unifi v0.0.7-0.20210315051727-4c317f9a2b95 h1:aEgu1a1N4/6BN9mcAtDNrGwFcHqlpjY9qsG42V9t2i4=
+github.com/unifi-poller/unifi v0.0.7-0.20210315051727-4c317f9a2b95/go.mod h1:t8xQeZGwqInlBkvC3IClOXL4TpqYF5eI++1D+dvjKeo=
+github.com/unifi-poller/webserver v0.0.0-20210315055414-fa42b37295b7 h1:WU/FaFcNl+f/yZ8AXuqhUXFlxpS/8T8lI1WYRZelf7c=
+github.com/unifi-poller/webserver v0.0.0-20210315055414-fa42b37295b7/go.mod h1:7iwUoYHCsJ93p2Qd7UGxLRuH+Ls5wbe3EVBUz+RyxUM=
+github.com/urfave/cli v1.20.0/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA=
+github.com/urfave/cli v1.22.1/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0=
+github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU=
+go.etcd.io/bbolt v1.3.3/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU=
+go.etcd.io/etcd v0.0.0-20191023171146-3cf2f69b5738/go.mod h1:dnLIgRNXwCJa5e+c6mIZCrds/GIG4ncV9HhK5PX7jPg=
+go.opencensus.io v0.20.1/go.mod h1:6WKK9ahsWS3RSO+PY9ZHZUfv2irvY6gN279GOPZjmmk=
+go.opencensus.io v0.20.2/go.mod h1:6WKK9ahsWS3RSO+PY9ZHZUfv2irvY6gN279GOPZjmmk=
+go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=
+go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE=
+go.uber.org/atomic v1.5.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ=
+go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0=
+go.uber.org/multierr v1.3.0/go.mod h1:VgVr7evmIr6uPjLBxg28wmKNXyqE9akIJ5XnfpiKl+4=
+go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee/go.mod h1:vJERXedbb3MVM5f9Ejo0C68/HhF8uaILCdgjnY+goOA=
+go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q=
+go.uber.org/zap v1.13.0/go.mod h1:zwrFLgMcdUuIBviXEYEH1YKNaOBnKXsx2IPda5bBwHM=
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-20200622213623-75b288015ac9 h1:psW17arqaxU48Z5kZ0CQnkZWQJsqcURM6tKiBApRjXI=
+golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
+golang.org/x/crypto v0.0.0-20190701094942-4def268fd1a4/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
+golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
+golang.org/x/crypto v0.0.0-20210220033148-5ea612d1eb83/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I=
+golang.org/x/crypto v0.0.0-20210314154223-e6e6c4f2bb5b/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4=
+golang.org/x/crypto v0.0.0-20210317152858-513c2a44f670 h1:gzMM0EjIYiRmJI3+jBdFuoynZlpxa2JQZsolKu09BXo=
+golang.org/x/crypto v0.0.0-20210317152858-513c2a44f670/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4=
golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
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-20190930215403-16217165b5de/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-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-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-20190125091013-d26f9f9a57f3/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-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks=
golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
-golang.org/x/net v0.0.0-20200602114024-627f9648deb9 h1:pNX+40auqi2JqRfOP1akLGtYcn15TUbkhwuCO3foqqM=
+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/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20200602114024-627f9648deb9/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
-golang.org/x/net v0.0.0-20200625001655-4c5254603344 h1:vGXIOMxbNfDTk/aXCmfdLgkrSV+Z2tcbze+pEc3v5W4=
golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA=
+golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
+golang.org/x/net v0.0.0-20210316092652-d523dce5a7f4 h1:b0LrWgu8+q7z4J+0Y3Umo5q1dL7NXBkKBWkaVkAq17E=
+golang.org/x/net v0.0.0-20210316092652-d523dce5a7f4/go.mod h1:RBQZq4jEuRlivfhVLdyRGr576XBO4/greRjx4P4O3yc=
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/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-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/sync v0.0.0-20201207232520-09787c993a3a/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-20180909124046-d0be0721c37e/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-20181122145206-62eef0e2fa9b/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
-golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20190412213103-97732733099d/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-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20190826190057-c7b8b68b1456/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20191220142924-d4481acd189f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200106162015-b016eb3dc98e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200420163511-1957bb5e6d1f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200610111108-226ff32320da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200615200032-f1bc736245b1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200620081246-981b61492c35 h1:wb/9mP8eUAmHfkM8RmpeLq6nUA7c2i5+bQOtcDftjaE=
-golang.org/x/sys v0.0.0-20200620081246-981b61492c35/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200625212154-ddb9806d33ae h1:Ih9Yo4hSPImZOpfGuA4bR/ORKTAbhZo2AbWNRCnevdo=
golang.org/x/sys v0.0.0-20200625212154-ddb9806d33ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20201214210602-f9fddec55a1e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20210309074719-68d13333faf2/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20210315160823-c6e025ad8005/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20210320140829-1e4c9ba3b0c4 h1:EZ2mChiOa8udjfp6rRmswTbtZN/QzUQp4ptM4rnjHvc=
+golang.org/x/sys v0.0.0-20210320140829-1e4c9ba3b0c4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw=
+golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
+golang.org/x/term v0.0.0-20210317153231-de623e64d2a6 h1:EC6+IGYTjPpRfv9a2b/6Puw0W+hLtAhkV1tPsXhutqs=
+golang.org/x/term v0.0.0-20210317153231-de623e64d2a6/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
golang.org/x/text v0.3.0/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/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
+golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/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-20180828015842-6cd1fcedba52/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-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-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=
+golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=
+golang.org/x/tools v0.0.0-20191029041327-9cc4af7d6b2c/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
+golang.org/x/tools v0.0.0-20191029190741-b9c20aec41a5/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
+golang.org/x/tools v0.0.0-20200103221440-774c71fcf114/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
+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=
+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=
-golift.io/cnfg v0.0.5 h1:HnMU8Z9C/igKvir1dqaHx5BPuNGZrp99FCtdJyP2Z4I=
golift.io/cnfg v0.0.5/go.mod h1:ScFDIJg/rJGHbRaed/i7g1lBhywEjB0JiP2uZr3xC3A=
+golift.io/cnfg v0.0.7 h1:qkNpP5Bq+5Gtoc6HcI8kapMD5zFOVan6qguxqBQF3OY=
+golift.io/cnfg v0.0.7/go.mod h1:AsB0DJe7nv0bizKaoy3e3MjjOF7upTpMOMvsfv4CNNk=
+golift.io/version v0.0.2 h1:i0gXRuSDHKs4O0sVDUg4+vNIuOxYoXhaxspftu2FRTE=
+golift.io/version v0.0.2/go.mod h1:76aHNz8/Pm7CbuxIsDi97jABL5Zui3f2uZxDm4vB6hU=
+google.golang.org/api v0.3.1/go.mod h1:6wY9I6uQWHQ8EM57III9mq/AjF+i8G65rmVagqKMtkk=
google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM=
+google.golang.org/appengine v1.2.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
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-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE=
+google.golang.org/genproto v0.0.0-20190530194941-fb225487d101/go.mod h1:z3L6/3dTEVtUr6QSP8miRzeRqwQOioJ9I66odjN4I7s=
google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc=
google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo=
+google.golang.org/grpc v1.17.0/go.mod h1:6QZJwpn2B+Zp71q/5VxRsJ6NXXVCE5NRUHRo+f3cWCs=
google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c=
+google.golang.org/grpc v1.20.0/go.mod h1:chYK+tFQF0nDUGJgXMSgLCQk3phJEuONr2DCgLDdAQM=
+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.22.1/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg=
google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg=
+google.golang.org/grpc v1.23.1/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg=
+google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=
google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=
google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8=
google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0=
@@ -306,19 +451,35 @@ google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzi
google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
-google.golang.org/protobuf v1.24.0 h1:UhZDfRO8JRQru4/+LlLE0BRKGF8L+PICnvYZmx/fEGA=
google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGjtUeSXeh4=
-google.golang.org/protobuf v1.25.0 h1:Ejskq+SyPohKW+1uil0JJMtmHCgJPJ/qWTxr8qp+R4c=
-google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c=
+google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw=
+google.golang.org/protobuf v1.26.0 h1:bxAC2xTBsZGibn2RTntX0oH50xLsqy1OxA9tTL3p/lk=
+google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
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/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/cheggaaa/pb.v1 v1.0.25/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw=
+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/gcfg.v1 v1.2.3/go.mod h1:yesOnuUOFQAhST5vPY4nbZsb/huCgGGXlipJsBn0b3o=
+gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo=
+gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw=
+gopkg.in/warnings.v0 v0.1.2/go.mod h1:jksf8JmL6Qr/oQM2OXTHunEvvTAsrWBLb6OOjuVWRNI=
+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.5 h1:ymVxjfMaHvXD8RqPRmzHHsB3VvucivSkIAvJFDI5O3c=
gopkg.in/yaml.v2 v2.2.5/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-20200615113413-eeeca48fe776/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
+gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b h1:h8qDotaEPuJATrMmW04NCwg7v22aHH28wwpauUhK9Oo=
+gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
+honnef.co/go/tools v0.0.0-20180728063816-88497007e858/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/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=
+sigs.k8s.io/yaml v1.1.0/go.mod h1:UJmg0vDUVViEyp3mgSv9WPwZCDxu4rQW1olrI1uml+o=
+sourcegraph.com/sourcegraph/appdash v0.0.0-20190731080439-ebfcffb1b5c0/go.mod h1:hI742Nqp5OhwiqlzhgfbWU4mW4yO10fP+LoT9WOswdU=
diff --git a/init/bsd/freebsd.rc.d b/init/bsd/freebsd.rc.d
index acfc6990..13eda4af 100755
--- a/init/bsd/freebsd.rc.d
+++ b/init/bsd/freebsd.rc.d
@@ -12,7 +12,7 @@ name="{{BINARYU}}"
real_name="{{BINARY}}"
rcvar="{{BINARYU}}_enable"
{{BINARYU}}_command="/usr/local/bin/${real_name}"
-{{BINARYU}}_user="nobody"
+{{BINARYU}}_user="{{BINARY}}"
{{BINARYU}}_config="/usr/local/etc/${real_name}/{{CONFIG_FILE}}"
pidfile="/var/run/${real_name}/pid"
diff --git a/init/buildinfo.sh b/init/buildinfo.sh
new file mode 100644
index 00000000..465618ec
--- /dev/null
+++ b/init/buildinfo.sh
@@ -0,0 +1,22 @@
+# This file is read in by settings.sh.
+# These values are not generally user configurable and this file is overwritten on upgrades.
+# Override values in here by setting them in settings.sh; do not change this file.
+##########
+
+VENDOR="Go Lift "
+
+# Dynamic. Recommend not changing.
+VVERSION=$(git describe --abbrev=0 --tags $(git rev-list --tags --max-count=1) 2>/dev/null)
+VERSION="$(echo $VVERSION | tr -d v | grep -E '^\S+$' || echo development)"
+# This produces a 0 in some envirnoments (like Homebrew), but it's only used for packages.
+ITERATION=$(git rev-list --count --all || echo 0)
+DATE="$(date -u +%Y-%m-%dT%H:%M:%SZ)"
+COMMIT="$(git rev-parse --short HEAD || echo 0)"
+
+GIT_BRANCH="$(git rev-parse --abbrev-ref HEAD || echo unknown)"
+BRANCH="${TRAVIS_BRANCH:-${GIT_BRANCH}}"
+
+# Defines docker manifest/build types.
+BUILDS="linux:armhf:arm linux:arm64:arm64 linux:amd64:amd64 linux:i386:386"
+
+export VENDOR VVERSION VERSION ITERATION DATE BRANCH COMMIT BUILDS
diff --git a/init/docker/Dockerfile b/init/docker/Dockerfile
index 48bd8749..999ebf08 100644
--- a/init/docker/Dockerfile
+++ b/init/docker/Dockerfile
@@ -10,7 +10,7 @@ ARG COMMIT=0
ARG VERSION=unknown
ARG BINARY=application-builder
-FROM golang:stretch as builder
+FROM golang:latest as builder
ARG ARCH
ARG OS
ARG BINARY
@@ -19,7 +19,9 @@ RUN mkdir -p $GOPATH/pkg/mod $GOPATH/bin $GOPATH/src /${BINARY}
COPY . /${BINARY}
WORKDIR /${BINARY}
-RUN CGO_ENABLED=0 make ${BINARY}.${ARCH}.${OS}
+RUN apt update && \
+ apt install -y upx && \
+ CGO_ENABLED=0 make ${BINARY}.${ARCH}.${OS}
FROM scratch
ARG ARCH
@@ -30,7 +32,6 @@ ARG VERSION
ARG LICENSE=MIT
ARG BINARY
ARG SOURCE_URL=http://github.com/golift/application-builder
-ARG URL=http://github.com/golift/application-builder
ARG DESC=application-builder
ARG VENDOR=golift
ARG AUTHOR=golift
@@ -41,7 +42,7 @@ LABEL org.opencontainers.image.created="${BUILD_DATE}" \
org.opencontainers.image.title="${BINARY}" \
org.opencontainers.image.documentation="${SOURCE_URL}/wiki/Docker" \
org.opencontainers.image.description="${DESC}" \
- org.opencontainers.image.url="${URL}" \
+ org.opencontainers.image.url="${SOURCE_URL}" \
org.opencontainers.image.revision="${COMMIT}" \
org.opencontainers.image.source="${SOURCE_URL}" \
org.opencontainers.image.vendor="${VENDOR}" \
diff --git a/init/docker/hooks/README.md b/init/docker/hooks/README.md
deleted file mode 100644
index f01d91f7..00000000
--- a/init/docker/hooks/README.md
+++ /dev/null
@@ -1,28 +0,0 @@
-# Application Builder
-
-[https://github.com/golift/application-builder](https://github.com/golift/application-builder)
-
-## Docker Build Hooks
-
-The files in this folder are used by Docker Cloud to automate image builds.
-Do not edit these files.
-
-If you want to build, maintain and push multi-architecture Docker images, you may
-follow the example provided here. All of the hooks are generic, and will work with
-any build. Two environment variables must be passed in from Docker Cloud config.
-
-1. `BUILDS` must be set to the builds you're trying to perform. This repo is currently set to:
- - `linux:armhf:arm linux:arm64:arm64 linux:amd64:amd64 linux:i386:386`
- - The format is `os:name:arch`.
- - `os` and `name` are passed into the Dockerfile.
- - `os`, `arch` are passed into `docker manifest annotate`.
- - This does not yet work with an OS other than `linux`.
-1. Set `DOCKER_CLI_EXPERIMENTAL` to `enabled`. Not optional.
-
-Keep the build simple; see screenshot. This only supports one build tag, but it creates many more.
-
-
-
-The fancy source tag is `/^v((\d+\.\d+)(?:\.\d+)?)$/` and it allows you to capture
-the minor version without patch-level in `{\2}`. I no longer use `{\2}` in my build.
-[See how it works here](https://regex101.com/r/fzt6ki/1).
diff --git a/init/docker/hooks/build b/init/docker/hooks/build
index 2fcdfc4d..85bc7125 100755
--- a/init/docker/hooks/build
+++ b/init/docker/hooks/build
@@ -9,7 +9,7 @@ set -e -o pipefail
# This always run local to the Dockerfile folder, so the path is ../..
pushd ../..
-source .metadata.sh
+source settings.sh
# Build each configured image from Docker Cloud.
for build in $BUILDS; do
@@ -24,7 +24,6 @@ for build in $BUILDS; do
--build-arg "VERSION=${VERSION}-${ITERATION}" \
--build-arg "LICENSE=${LICENSE}" \
--build-arg "DESC=${DESC}" \
- --build-arg "URL=${URL}" \
--build-arg "VENDOR=${VENDOR}" \
--build-arg "AUTHOR=${MAINT}" \
--build-arg "BINARY=${BINARY}" \
diff --git a/init/docker/hooks/push b/init/docker/hooks/push
index f3f695da..26f7c907 100755
--- a/init/docker/hooks/push
+++ b/init/docker/hooks/push
@@ -4,13 +4,11 @@
# This is part of Application Builder.
# https://github.com/golift/application-builder
-#set -e -o pipefail
-
pushd ../..
-source .metadata.sh
+source settings.sh
popd
-if [ "$TAGS" == "" ]; then
+if [ "$BUILDS" != "" ]; then
TAGS=$DOCKER_TAG
fi
@@ -26,14 +24,14 @@ for build in $BUILDS; do
done
echo "Annotating Images: ${IMAGES}"
-# Build all the Docker tags if the source branch is a release and not a branch.
+# Build all the Docker tags if the source branch is a release and not a branch or pre-release.
if [ "v$VERSION" = "$SOURCE_BRANCH" ]; then
- TAGS="$VERSION $(echo $VERSION | cut -d. -f1,2) $(echo $VERSION | cut -d. -f1)"
+ TAGS="$VERSION"
echo $SOURCE_BRANCH | grep -q -- -
if [ "$?" = "1" ]; then
# tag does not contain a dash, so assume it's a prod tag.
- TAGS="$TAGS latest stable"
+ TAGS="$TAGS latest stable $(echo $VERSION | cut -d. -f1,2) $(echo $VERSION | cut -d. -f1)"
fi
fi
@@ -43,7 +41,7 @@ echo "Version: $VERSION, Source: $SOURCE_BRANCH, Building tags: ${TAGS}"
for tag in $TAGS; do
docker manifest create --amend ${DOCKER_REPO}:${tag} $IMAGES
for build in $BUILDS; do
- # os:name:arch:variant, ie linux:amd64:amd64: (no variant is ok)
+ # os:name:arch, ie linux:amd64:amd64
os=$(echo $build | cut -d: -f1)
name=$(echo $build | cut -d: -f2)
arch=$(echo $build | cut -d: -f3)
diff --git a/init/homebrew/service.rb.tmpl b/init/homebrew/service.rb.tmpl
index 00921281..3e4c588e 100644
--- a/init/homebrew/service.rb.tmpl
+++ b/init/homebrew/service.rb.tmpl
@@ -1,6 +1,7 @@
-# macOS Homebrew Formula Template. Built by Makefile: `make fomula`
+# Homebrew Formula Template. Built by Makefile: `make fomula`
# This is part of Application Builder.
# https://github.com/golift/application-builder
+# This file is used when FORMULA is set to 'service'.
class {{Class}} < Formula
desc "{{Desc}}"
homepage "{{URL}}"
@@ -9,6 +10,7 @@ class {{Class}} < Formula
head "{{SOURCE_URL}}"
depends_on "go" => :build
+ depends_on "upx" => :build
def install
bin_path = buildpath/"#{name}"
diff --git a/init/launchd/README.md b/init/launchd/README.md
deleted file mode 100644
index d5a6e8ae..00000000
--- a/init/launchd/README.md
+++ /dev/null
@@ -1,2 +0,0 @@
-This file isn't used by the build or for any packages. The homebrew launchd is
-in the [homebrew](../homebrew) folder. This macOS launchd file is for reference only.
diff --git a/init/launchd/com.github.davidnewhall.unifi-poller.plist b/init/launchd/com.github.davidnewhall.unifi-poller.plist
deleted file mode 100644
index c5370da0..00000000
--- a/init/launchd/com.github.davidnewhall.unifi-poller.plist
+++ /dev/null
@@ -1,22 +0,0 @@
-
-
-
-
- Label
- com.github.unifi-poller.unifi-poller
- ProgramArguments
-
- /usr/local/bin/unifi-poller
- -c
- /usr/local/etc/unifi-poller/up.conf
-
- RunAtLoad
-
- KeepAlive
-
- StandardErrorPath
- /usr/local/var/log/unifi-poller.log
- StandardOutPath
- /usr/local/var/log/unifi-poller.log
-
-
diff --git a/init/systemd/template.unit.service b/init/systemd/template.unit.service
index 15ae80c8..0612b55f 100644
--- a/init/systemd/template.unit.service
+++ b/init/systemd/template.unit.service
@@ -1,6 +1,7 @@
-# Linux Systemd service unit for {{BINARY}}.
+# Systemd service unit for {{BINARY}}.
# This is part of Application Builder.
# https://github.com/golift/application-builder
+# This file is installed when FORMULA is set to 'service'.
[Unit]
Description={{BINARY}} - {{DESC}}
@@ -17,7 +18,12 @@ StandardOutput=syslog
StandardError=syslog
SyslogIdentifier={{BINARY}}
Type=simple
-User=nobody
+WorkingDirectory=/tmp
+
+# These should be set correctly for your environment.
+UMask=0002
+User={{BINARY}}
+Group={{BINARY}}
[Install]
WantedBy=multi-user.target
diff --git a/init/windows/application.ico b/init/windows/application.ico
new file mode 100644
index 00000000..a3e38bae
Binary files /dev/null and b/init/windows/application.ico differ
diff --git a/init/windows/manifest.xml b/init/windows/manifest.xml
new file mode 100644
index 00000000..9a97fd5f
--- /dev/null
+++ b/init/windows/manifest.xml
@@ -0,0 +1,29 @@
+
+
+
+
+
+
+
+
+
+
+ PerMonitorV2, PerMonitor
+ True
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/main.go b/main.go
index 7e34f9e0..fbe80c7a 100644
--- a/main.go
+++ b/main.go
@@ -1,15 +1,14 @@
package main
+//nolint:gci
import (
"log"
"os"
"time"
- "github.com/unifi-poller/poller/pkg/poller"
-
+ "github.com/unifi-poller/poller"
// Load input plugins!
_ "github.com/unifi-poller/inputunifi"
-
// Load output plugins!
_ "github.com/unifi-poller/influxunifi"
_ "github.com/unifi-poller/lokiunifi"
diff --git a/scripts/after-install.sh b/scripts/after-install.sh
index a465fdf4..d06888c9 100755
--- a/scripts/after-install.sh
+++ b/scripts/after-install.sh
@@ -1,14 +1,29 @@
#!/bin/sh
-# This file is used by txz, deb and rpm packages.
-# FPM adds this as the after-install script to all packages.
+# This file is used by deb, rpm and BSD packages.
+# FPM adds this as the after-install script.
+# Edit this file as needed for your application.
+# This file is only installed if FORMULA is set to service.
+
+OS="$(uname -s)"
+
+if [ "${OS}" = "Linux" ]; then
+ # Make a user and group for this app, but only if it does not already exist.
+ id {{BINARY}} >/dev/null 2>&1 || \
+ useradd --system --user-group --no-create-home --home-dir /tmp --shell /bin/false {{BINARY}}
+elif [ "${OS}" = "OpenBSD" ]; then
+ id {{BINARY}} >/dev/null 2>&1 || \
+ useradd -g =uid -d /tmp -s /bin/false {{BINARY}}
+elif [ "${OS}" = "FreeBSD" ]; then
+ id {{BINARY}} >/dev/null 2>&1 || \
+ pw useradd {{BINARY}} -d /tmp -w no -s /bin/false
+else
+ echo "Unknown OS: ${OS}, please add system user {{BINARY}} manually."
+fi
if [ -x "/bin/systemctl" ]; then
# Reload and restart - this starts the application as user nobody.
/bin/systemctl daemon-reload
- /bin/systemctl enable unifi-poller
- /bin/systemctl restart unifi-poller
-elif [ -x /usr/sbin/service ]; then
- # Do not start or restart on freebsd. That's "bad practice."
- /usr/sbin/service unifi-poller enabled || /usr/sbin/service unifi-poller enable
+ /bin/systemctl enable {{BINARY}}
+ /bin/systemctl restart {{BINARY}}
fi
diff --git a/scripts/before-remove.sh b/scripts/before-remove.sh
index a6f2fce3..209f70c7 100755
--- a/scripts/before-remove.sh
+++ b/scripts/before-remove.sh
@@ -1,15 +1,17 @@
-#!/bin/sh
+#!/bin/bash
-# This file is used by txz, rpm and deb packages. FPM use.
+# This file is used by rpm and deb packages. FPM use.
+# Edit this file as needed for your application.
+# This file is only installed if FORMULA is set to service.
if [ "$1" = "upgrade" ] || [ "$1" = "1" ] ; then
exit 0
fi
if [ -x "/bin/systemctl" ]; then
- /bin/systemctl stop unifi-poller
- /bin/systemctl disable unifi-poller
+ /bin/systemctl stop {{BINARY}}
+ /bin/systemctl disable {{BINARY}}
elif [ -x /usr/sbin/service ]; then
- /usr/sbin/service unifi-poller stop
- /usr/sbin/service unifi-poller disable
+ /usr/sbin/service {{BINARY}} stop
+ /usr/sbin/service {{BINARY}} disable
fi
diff --git a/scripts/formula-deploy.sh b/scripts/formula-deploy.sh
index b93d92e5..22b6f579 100755
--- a/scripts/formula-deploy.sh
+++ b/scripts/formula-deploy.sh
@@ -3,10 +3,9 @@
# Deploys a new homebrew formula file to a github homebrew formula repo: $HBREPO
# Requires SSH credentials in ssh-agent to work.
# Run by Travis-CI when a new release is created on GitHub.
-# Do not edit this file. It's part of application-builder.
-# https://github.com/golift/application-builder
+# Do not edit this file.
-source .metadata.sh
+source settings.sh
make ${BINARY}.rb
@@ -16,6 +15,23 @@ git config --global user.name "${BINARY}-auto-releaser"
rm -rf homebrew_release_repo
git clone git@github.com:${HBREPO}.git homebrew_release_repo
+# If a bitly token file exists, we'll use that to shorten the link (and allow download counting).
+if [ -f "bitly_token" ]; then
+ API=https://api-ssl.bitly.com/v4/bitlinks
+ # Request payload. In single quotes with double quotes escaped. :see_no_evil:
+ JSON='{\"domain\": \"bit.ly\",\"title\": \"${BINARY}.v${VERSION}-${ITERATION}.tgz\", \
+ \"tags\": [\"${BINARY}\"], \"long_url\": \"${SOURCE_PATH}\"}'
+ # Request with headers and data. Using bash -c to hide token from bash -x in travis logs.
+ OUT=$(bash -c "curl -s -X POST -H 'Content-type: application/json' ${API} -H \"\$( ${BINARY}.rb.new
+ if [ "$?" = "0" ] && [ "$LINK" != "null?v=v${VERSION}" ] && [ "$LINK" != "?v=v${VERSION}" ]; then
+ mv ${BINARY}.rb.new ${BINARY}.rb
+ fi
+fi
+
cp ${BINARY}.rb homebrew_release_repo/Formula
pushd homebrew_release_repo
git add Formula/${BINARY}.rb
diff --git a/scripts/install.sh b/scripts/install.sh
index 03a65226..e0cf0851 100755
--- a/scripts/install.sh
+++ b/scripts/install.sh
@@ -1,11 +1,11 @@
-#!/bin/sh
-
-# This is a quick and dirty script to install the latest Linux package.
+#!/bin/bash
+#
+# This is a quick and dirty script to install the latest package.
#
# Use it like this, pick curl or wget: (sudo is optional)
# ----
-# curl -s https://raw.githubusercontent.com/unifi-poller/unifi-poller/master/scripts/install.sh | sudo sh
-# wget -qO- https://raw.githubusercontent.com/unifi-poller/unifi-poller/master/scripts/install.sh | sudo sh
+# curl -sL https://raw.githubusercontent.com/unifi-poller/unifi-poller/master/scripts/install.sh | sudo bash
+# wget -qO- https://raw.githubusercontent.com/unifi-poller/unifi-poller/master/scripts/install.sh | sudo bash
# ----
#
# - If you're on RedHat/CentOS/Fedora, installs the latest rpm package.
@@ -15,15 +15,18 @@
# This is part of application-builder.
# https://github.com/golift/application-builder
+# Set the repo name correctly.
REPO=unifi-poller/unifi-poller
BREW=golift/mugs/unifi-poller
+
+# Nothing else needs to be changed. Unless you're fixing things!
+
LATEST=https://api.github.com/repos/${REPO}/releases/latest
ISSUES=https://github.com/${REPO}/issues/new
ARCH=$(uname -m)
OS=$(uname -s)
P=" ==>"
-# Nothing else needs to be changed. Unless you're fixing things!
echo "<-------------------------------------------------->"
if [ "$OS" = "Darwin" ]; then
@@ -108,7 +111,7 @@ INSTALLER="rpm -Uvh"
if [ "$FILE" = "deb" ]; then
INSTALLER="dpkg --force-confdef --force-confold --install"
elif [ "$FILE" = "txz" ]; then
- INSTALLER="pkg install"
+ INSTALLER="pkg install --yes"
fi
FILE=$(basename ${URL})
diff --git a/.metadata.sh b/settings.sh
similarity index 53%
rename from .metadata.sh
rename to settings.sh
index de3e34bc..1e8f264f 100755
--- a/.metadata.sh
+++ b/settings.sh
@@ -2,6 +2,9 @@
# This file is parsed and sourced by the Makefile, Docker and Homebrew builds.
# Powered by Application Builder: https://github.com/golift/application-builder
+# Bring in dynamic repo/pull/source info.
+source $(dirname "${BASH_SOURCE[0]}")/init/buildinfo.sh
+
# Must match the repo name.
BINARY="unifi-poller"
# Github repo containing homebrew formula repo.
@@ -17,32 +20,13 @@ LICENSE="MIT"
# This affects the homebrew formula (launchd) and linux packages (systemd).
FORMULA="service"
-# Defines docker manifest/build types.
-BUILDS="linux:armhf:arm linux:arm64:arm64 linux:amd64:amd64 linux:i386:386"
-
-export BINARY HBREPO MAINT VENDOR DESC GOLANGCI_LINT_ARGS CONFIG_FILE LICENSE FORMULA BUILDS
-
-# The rest is mostly automatic.
-# Fix the repo if it doesn't match the binary name.
-# Provide a better URL if one exists.
-
# Used for source links and wiki links.
SOURCE_URL="https://github.com/${BINARY}/${BINARY}"
-# Used for documentation links.
-URL="${SOURCE_URL}"
-# Dynamic. Recommend not changing.
-VVERSION=$(git describe --abbrev=0 --tags $(git rev-list --tags --max-count=1))
-VERSION="$(echo $VVERSION | tr -d v | grep -E '^\S+$' || echo development)"
-# This produces a 0 in some envirnoments (like Homebrew), but it's only used for packages.
-ITERATION=$(git rev-list --count --all || echo 0)
-DATE="$(date -u +%Y-%m-%dT%H:%M:%SZ)"
-COMMIT="$(git rev-parse --short HEAD || echo 0)"
-
-GIT_BRANCH="$(git rev-parse --abbrev-ref HEAD || echo unknown)"
-BRANCH="${TRAVIS_BRANCH:-${GIT_BRANCH}}"
+VERSION_PATH="golift.io/version"
# This is a custom download path for homebrew formula.
SOURCE_PATH=https://golift.io/${BINARY}/archive/v${VERSION}.tar.gz
-export SOURCE_URL URL VVERSION VERSION ITERATION DATE BRANCH COMMIT SOURCE_PATH
+export BINARY HBREPO MAINT VENDOR DESC GOLANGCI_LINT_ARGS CONFIG_FILE
+export LICENSE FORMULA SOURCE_URL VERSION_PATH SOURCE_PATH