From 034d40b328bdefe5a5d79d074f55c60fb45ac893 Mon Sep 17 00:00:00 2001 From: Hylke Visser Date: Thu, 16 May 2019 10:05:20 +0200 Subject: [PATCH 01/17] Initialize Go modules --- api/go.mod | 3 +++ core/types/go.mod | 3 +++ go.mod | 3 +++ mqtt/go.mod | 3 +++ utils/errors/go.mod | 3 +++ utils/random/go.mod | 3 +++ utils/security/go.mod | 3 +++ utils/testing/go.mod | 3 +++ 8 files changed, 24 insertions(+) create mode 100644 api/go.mod create mode 100644 core/types/go.mod create mode 100644 go.mod create mode 100644 mqtt/go.mod create mode 100644 utils/errors/go.mod create mode 100644 utils/random/go.mod create mode 100644 utils/security/go.mod create mode 100644 utils/testing/go.mod diff --git a/api/go.mod b/api/go.mod new file mode 100644 index 000000000..049d10adc --- /dev/null +++ b/api/go.mod @@ -0,0 +1,3 @@ +module github.com/TheThingsNetwork/ttn/api + +go 1.11 diff --git a/core/types/go.mod b/core/types/go.mod new file mode 100644 index 000000000..7ca339bf9 --- /dev/null +++ b/core/types/go.mod @@ -0,0 +1,3 @@ +module github.com/TheThingsNetwork/ttn/core/types + +go 1.11 diff --git a/go.mod b/go.mod new file mode 100644 index 000000000..0e0348fae --- /dev/null +++ b/go.mod @@ -0,0 +1,3 @@ +module github.com/TheThingsNetwork/ttn + +go 1.11 diff --git a/mqtt/go.mod b/mqtt/go.mod new file mode 100644 index 000000000..fae9a6f9b --- /dev/null +++ b/mqtt/go.mod @@ -0,0 +1,3 @@ +module github.com/TheThingsNetwork/ttn/mqtt + +go 1.11 diff --git a/utils/errors/go.mod b/utils/errors/go.mod new file mode 100644 index 000000000..78d5a19f7 --- /dev/null +++ b/utils/errors/go.mod @@ -0,0 +1,3 @@ +module github.com/TheThingsNetwork/ttn/utils/errors + +go 1.11 diff --git a/utils/random/go.mod b/utils/random/go.mod new file mode 100644 index 000000000..210f5ca95 --- /dev/null +++ b/utils/random/go.mod @@ -0,0 +1,3 @@ +module github.com/TheThingsNetwork/ttn/utils/random + +go 1.11 diff --git a/utils/security/go.mod b/utils/security/go.mod new file mode 100644 index 000000000..d5604c34b --- /dev/null +++ b/utils/security/go.mod @@ -0,0 +1,3 @@ +module github.com/TheThingsNetwork/ttn/utils/security + +go 1.11 diff --git a/utils/testing/go.mod b/utils/testing/go.mod new file mode 100644 index 000000000..8bd91180e --- /dev/null +++ b/utils/testing/go.mod @@ -0,0 +1,3 @@ +module github.com/TheThingsNetwork/ttn/utils/testing + +go 1.11 From 5240a9ba9e8a8be6cb6317acb36c4bca6e4f1b1f Mon Sep 17 00:00:00 2001 From: Hylke Visser Date: Thu, 16 May 2019 11:23:23 +0200 Subject: [PATCH 02/17] Get dependencies of utils/testing module --- utils/testing/go.mod | 12 +++++ utils/testing/go.sum | 109 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 121 insertions(+) create mode 100644 utils/testing/go.sum diff --git a/utils/testing/go.mod b/utils/testing/go.mod index 8bd91180e..60d0b2caf 100644 --- a/utils/testing/go.mod +++ b/utils/testing/go.mod @@ -1,3 +1,15 @@ module github.com/TheThingsNetwork/ttn/utils/testing go 1.11 + +require ( + github.com/TheThingsNetwork/go-utils v0.0.0-20190516083235-bdd4967fab4e + github.com/apex/log v1.1.0 + github.com/kr/pretty v0.1.0 // indirect + github.com/stretchr/testify v1.3.0 // indirect + golang.org/x/sys v0.0.0-20190516014833-cab07311ab81 // indirect + golang.org/x/text v0.3.2 // indirect + gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 // indirect + gopkg.in/redis.v5 v5.2.9 + gopkg.in/yaml.v2 v2.2.2 // indirect +) diff --git a/utils/testing/go.sum b/utils/testing/go.sum new file mode 100644 index 000000000..4acc95a8c --- /dev/null +++ b/utils/testing/go.sum @@ -0,0 +1,109 @@ +cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= +github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= +github.com/TheThingsNetwork/go-utils v0.0.0-20190516083235-bdd4967fab4e h1:JEt3G2ONKGfW1YDp2A8Q/+kZIuIB117nkit0+GDJN04= +github.com/TheThingsNetwork/go-utils v0.0.0-20190516083235-bdd4967fab4e/go.mod h1:9uzg7Jk8ywYqL+xUEhTNrJcs68Nafj4qTaz/zB+STwg= +github.com/apex/log v1.1.0 h1:J5rld6WVFi6NxA6m8GJ1LJqu3+GiTFIt3mYv27gdQWI= +github.com/apex/log v1.1.0/go.mod h1:yA770aXIDQrhVOIGurT/pVdfCpSq1GQV/auzMN5fzvY= +github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= +github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= +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/fatih/structs v1.1.0/go.mod h1:9NiDSp5zOcgEDl+j00MP/WkGVPOlPRLejGD8Ga6PJ7M= +github.com/fortytw2/leaktest v1.3.0/go.mod h1:jDsjWgpAGjm2CA7WthBh/CdZYEPF31XHquHwclZch5g= +github.com/fsnotify/fsnotify v1.4.7 h1:IXs+QLmnXW2CcXuY+8Mzv/fWEsPGWxqefPtCP5CnV9I= +github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= +github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= +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/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 h1:YF8+flBXS5eO826T4nzqPrxfhQThhXl0YzfuUPu4SBg= +github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= +github.com/gotnospirit/makeplural v0.0.0-20180622080156-a5f48d94d976/go.mod h1:ZGQeOwybjD8lkCjIyJfqR5LD2wMVHJ31d6GdPxoTsWY= +github.com/gotnospirit/messageformat v0.0.0-20180622080451-0eab1176a3fb/go.mod h1:NO9UUa4C4cSmRsYSfZMAKhI5ifCRzOjSGe/pi7TKRvs= +github.com/hpcloud/tail v1.0.0 h1:nfCOvKYfkgYP8hkirhJocXT2+zOD8yUNjXaWfTlyFKI= +github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= +github.com/influxdata/influxdb v1.7.6/go.mod h1:qZna6X/4elxqT3yI9iZYdZrWWdeFOOprn86kgg4+IzY= +github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= +github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q= +github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= +github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= +github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= +github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI= +github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= +github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= +github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE= +github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= +github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= +github.com/mwitkow/go-grpc-middleware v1.0.0/go.mod h1:wqm8af53+/cILryTaG+dCJS6CsDMVZDxlKh6lSkF19U= +github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/ginkgo v1.8.0 h1:VkHVNpR4iVnU8XQR6DBm8BqYjN7CRzw+xKUbVVbbW9w= +github.com/onsi/ginkgo v1.8.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/gomega v1.5.0 h1:izbySO9zDPmjJ8rDjLvkA2zJHIo+HkYXHnf7eN7SSyo= +github.com/onsi/gomega v1.5.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= +github.com/pkg/errors v0.8.1 h1:iURUrRGxPUNPdy5/HRSm+Yj6okJ6UtLINN0Q9M4+h3I= +github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/prometheus/client_golang v0.9.2/go.mod h1:OsXs2jCmiKlQ1lTBmv21f2mNfw4xf/QclQDMrYNZzcM= +github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= +github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/prometheus/common v0.0.0-20181126121408-4724e9255275/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= +github.com/prometheus/procfs v0.0.0-20181204211112-1dc9a6cbc91a/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= +github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMBDgk/93Q= +github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= +github.com/smartystreets/assertions v0.0.0-20190401211740-f487f9de1cd3/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= +github.com/smartystreets/go-aws-auth v0.0.0-20180515143844-0c1422d1fdb9/go.mod h1:SnhjPscd9TpLiy1LpzGSKh3bXCfxxXuqd9xmQJy3slM= +github.com/smartystreets/goconvey v0.0.0-20190330032615-68dc04aab96a/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= +github.com/smartystreets/gunit v0.0.0-20190426220047-d9c9211acd48/go.mod h1:oqKsUQaUkJ2EU1ZzLQFJt1WUp9DDuj1CnZbp4DwPwL4= +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 h1:bSDNvY7ZPG5RlJ8otE/7V6gMiyenm9RtJ7IUVIAoJ1w= +github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= +github.com/stretchr/testify v1.3.0 h1:TivCn/peBQ7UY8ooIcPgZFpTNSz0Q2U6UrFlUfqbe0Q= +github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= +github.com/tj/go-elastic v0.0.0-20171221160941-36157cbbebc2/go.mod h1:WjeM0Oo1eNAjXGDx2yma7uG2XoyRZTq1uv3M/o7imD0= +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/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-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190514140710-3ec191127204 h1:4yG6GqBtw9C+UrLp6s2wtSniayy/Vd/3F7ffLE427XI= +golang.org/x/net v0.0.0-20190514140710-3ec191127204/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= +golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/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-20190215142949-d0b11bdaac8a h1:1BGLXjeY4akVXGgbC9HugT3Jv3hCI0z56oJR5vAMgBU= +golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190516014833-cab07311ab81 h1:5Q88vZAfC0WB8T1GHRLttQaZdCNeQHM40n41gMUeFlI= +golang.org/x/sys v0.0.0-20190516014833-cab07311ab81/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/text v0.3.0 h1:g61tztE5qeGQ89tm6NTjjM9VPIm088od1l6aSorWRWg= +golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.2 h1:tW2bmiBqwgJj/UpqtC8EpXEZVYOwU0yG4iWbprSVAcs= +golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= +golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= +google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= +google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 h1:qIbj1fsPNlZgppZ+VLlY7N33q108Sa+fhmuc+sWQYwY= +gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/fsnotify.v1 v1.4.7 h1:xOHLXZwVvI9hhs+cLKq5+I5onOuwQLhQwiu63xxlHs4= +gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= +gopkg.in/redis.v5 v5.2.9 h1:MNZYOLPomQzZMfpN3ZtD1uyJ2IDonTTlxYiV/pEApiw= +gopkg.in/redis.v5 v5.2.9/go.mod h1:6gtv0/+A4iM08kdRfocWYB3bLX2tebpNtfKlFT6H4mY= +gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ= +gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= +gopkg.in/yaml.v2 v2.2.1 h1:mUhvW9EsL+naU5Q3cakzfE91YhliOondGd6ZrsDBHQE= +gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.2 h1:ZCJp+EgiOT7lHqUV2J862kp8Qj64Jo6az82+3Td9dZw= +gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= From 7b4bf2f83423627eeed603cf1932bcb1b19a5142 Mon Sep 17 00:00:00 2001 From: Hylke Visser Date: Thu, 16 May 2019 11:23:31 +0200 Subject: [PATCH 03/17] Get dependencies of utils/security module --- utils/security/go.mod | 5 +++++ utils/security/go.sum | 4 ++++ 2 files changed, 9 insertions(+) create mode 100644 utils/security/go.sum diff --git a/utils/security/go.mod b/utils/security/go.mod index d5604c34b..2366ab22b 100644 --- a/utils/security/go.mod +++ b/utils/security/go.mod @@ -1,3 +1,8 @@ module github.com/TheThingsNetwork/ttn/utils/security go 1.11 + +require ( + github.com/dgrijalva/jwt-go v3.2.0+incompatible + github.com/smartystreets/assertions v0.0.0-20190401211740-f487f9de1cd3 +) diff --git a/utils/security/go.sum b/utils/security/go.sum new file mode 100644 index 000000000..a051d5c21 --- /dev/null +++ b/utils/security/go.sum @@ -0,0 +1,4 @@ +github.com/dgrijalva/jwt-go v3.2.0+incompatible h1:7qlOGliEKZXTDg6OTjfoBKDXWrumCAMpl/TFQ4/5kLM= +github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= +github.com/smartystreets/assertions v0.0.0-20190401211740-f487f9de1cd3 h1:hBSHahWMEgzwRyS6dRpxY0XyjZsHyQ61s084wo5PJe0= +github.com/smartystreets/assertions v0.0.0-20190401211740-f487f9de1cd3/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= From f3370e80f580466fcd1b7bc955e76dcdbe3d3521 Mon Sep 17 00:00:00 2001 From: Hylke Visser Date: Thu, 16 May 2019 11:23:37 +0200 Subject: [PATCH 04/17] Get dependencies of utils/errors module --- utils/errors/go.mod | 6 ++++++ utils/errors/go.sum | 29 +++++++++++++++++++++++++++++ 2 files changed, 35 insertions(+) create mode 100644 utils/errors/go.sum diff --git a/utils/errors/go.mod b/utils/errors/go.mod index 78d5a19f7..ba4b49dcb 100644 --- a/utils/errors/go.mod +++ b/utils/errors/go.mod @@ -1,3 +1,9 @@ module github.com/TheThingsNetwork/ttn/utils/errors go 1.11 + +require ( + github.com/pkg/errors v0.8.1 + golang.org/x/net v0.0.0-20190514140710-3ec191127204 + google.golang.org/grpc v1.20.1 +) diff --git a/utils/errors/go.sum b/utils/errors/go.sum new file mode 100644 index 000000000..66a4931f7 --- /dev/null +++ b/utils/errors/go.sum @@ -0,0 +1,29 @@ +cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= +github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= +github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= +github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b h1:VKtxabqXZkF25pY9ekfRL6a582T4P37/31XEstQ5p58= +github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= +github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= +github.com/golang/protobuf v1.2.0 h1:P3YflyNX/ehuJFLhxviNdFxQPkGK5cDcApsge1SqnvM= +github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/pkg/errors v0.8.1 h1:iURUrRGxPUNPdy5/HRSm+Yj6okJ6UtLINN0Q9M4+h3I= +github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190514140710-3ec191127204 h1:4yG6GqBtw9C+UrLp6s2wtSniayy/Vd/3F7ffLE427XI= +golang.org/x/net v0.0.0-20190514140710-3ec191127204/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= +golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f h1:wMNYb4v58l5UBM7MYRLPG6ZhfOqbKu7X5eyFl8ZhKvA= +golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a h1:1BGLXjeY4akVXGgbC9HugT3Jv3hCI0z56oJR5vAMgBU= +golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/text v0.3.0 h1:g61tztE5qeGQ89tm6NTjjM9VPIm088od1l6aSorWRWg= +golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= +google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8 h1:Nw54tB0rB7hY/N0NQvRW8DG4Yk3Q6T9cu9RcFQDu1tc= +google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= +google.golang.org/grpc v1.20.1 h1:Hz2g2wirWK7H0qIIhGIqRGTuMwTE8HEKFnDZZ7lm9NU= +google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= +honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= From 0a236e4ff728e2ee28acf2a990219092adb65cd1 Mon Sep 17 00:00:00 2001 From: Hylke Visser Date: Thu, 16 May 2019 11:23:50 +0200 Subject: [PATCH 05/17] Get dependencies of api module --- api/go.mod | 17 ++++++ api/go.sum | 151 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 168 insertions(+) create mode 100644 api/go.sum diff --git a/api/go.mod b/api/go.mod index 049d10adc..40196e0dc 100644 --- a/api/go.mod +++ b/api/go.mod @@ -1,3 +1,20 @@ module github.com/TheThingsNetwork/ttn/api go 1.11 + +require ( + github.com/StackExchange/wmi v0.0.0-20181212234831-e0a55b97c705 // indirect + github.com/TheThingsNetwork/api v0.0.0-20190516085542-c732802571cf + github.com/TheThingsNetwork/go-utils v0.0.0-20190516083235-bdd4967fab4e + github.com/TheThingsNetwork/ttn/utils/errors v0.0.0-20190516081709-034d40b328bd + github.com/apex/log v1.1.0 + github.com/go-ole/go-ole v1.2.4 // indirect + github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0 + github.com/juju/ratelimit v1.0.1 + github.com/mwitkow/go-grpc-middleware v1.0.0 + github.com/shirou/gopsutil v2.18.12+incompatible + github.com/shirou/w32 v0.0.0-20160930032740-bb4de0191aa4 // indirect + github.com/smartystreets/assertions v0.0.0-20190401211740-f487f9de1cd3 + golang.org/x/net v0.0.0-20190514140710-3ec191127204 + google.golang.org/grpc v1.20.1 +) diff --git a/api/go.sum b/api/go.sum new file mode 100644 index 000000000..dfb23f436 --- /dev/null +++ b/api/go.sum @@ -0,0 +1,151 @@ +cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= +github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= +github.com/StackExchange/wmi v0.0.0-20181212234831-e0a55b97c705 h1:UUppSQnhf4Yc6xGxSkoQpPhb7RVzuv5Nb1mwJ5VId9s= +github.com/StackExchange/wmi v0.0.0-20181212234831-e0a55b97c705/go.mod h1:3eOhrUMpNV+6aFIbp5/iudMxNCF27Vw2OZgy4xEx0Fg= +github.com/TheThingsNetwork/api v0.0.0-20190516085542-c732802571cf h1:1LvY2VUOy+/Sb5O8eE2HIecvUZupe7kLoquUpeajuPs= +github.com/TheThingsNetwork/api v0.0.0-20190516085542-c732802571cf/go.mod h1:XO2/81Njy3JefUFXtTg63YGJJ2wUyMRyYm6LaYfu8jE= +github.com/TheThingsNetwork/go-utils v0.0.0-20190516083235-bdd4967fab4e h1:JEt3G2ONKGfW1YDp2A8Q/+kZIuIB117nkit0+GDJN04= +github.com/TheThingsNetwork/go-utils v0.0.0-20190516083235-bdd4967fab4e/go.mod h1:9uzg7Jk8ywYqL+xUEhTNrJcs68Nafj4qTaz/zB+STwg= +github.com/TheThingsNetwork/ttn/api v0.0.0-20190516081709-034d40b328bd/go.mod h1:UCRXmEaShvS/wHOf2RcoY2vKUGJnrYrotBA6LZzYdFM= +github.com/TheThingsNetwork/ttn/core/types v0.0.0-20190516081709-034d40b328bd/go.mod h1:VVWTaeAJHezuE+c0Vk0AJ4R6KSLg50H1y3RB7vGhGOA= +github.com/TheThingsNetwork/ttn/utils/errors v0.0.0-20190516081709-034d40b328bd h1:ITXOJpmUR4Jhp3Xb/xNUIJH4WR0h2/NsxZkSDzFIFiU= +github.com/TheThingsNetwork/ttn/utils/errors v0.0.0-20190516081709-034d40b328bd/go.mod h1:e8FjzgvhAVx9+iqPloB4v7QM0rmv+r5ysRn9kWFamG4= +github.com/TheThingsNetwork/ttn/utils/random v0.0.0-20190516081709-034d40b328bd/go.mod h1:ktVq1/rYkTlgilBixqCtltTh29rOUnZET4g50xoKlpE= +github.com/TheThingsNetwork/ttn/utils/security v0.0.0-20190516081709-034d40b328bd/go.mod h1:aaYF12LufW5Xs4Z2C6UOrCzpkyoBjw+rmHCcNYgb1JU= +github.com/apex/log v1.1.0 h1:J5rld6WVFi6NxA6m8GJ1LJqu3+GiTFIt3mYv27gdQWI= +github.com/apex/log v1.1.0/go.mod h1:yA770aXIDQrhVOIGurT/pVdfCpSq1GQV/auzMN5fzvY= +github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973 h1:xJ4a3vCFaGF/jqvzLMYoU8P317H5OQ+Via4RmuPwCS0= +github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= +github.com/bluele/gcache v0.0.0-20190301044115-79ae3b2d8680/go.mod h1:8c4/i2VlovMO2gBnHGQPN5EJw+H0lx1u/5p+cgsXtCk= +github.com/brocaar/lorawan v0.0.0-20170626123636-a64aca28516d/go.mod h1:kwUChfPyeHBQumTUYBvOkO4prdwMM55wby9Zw9lhzlA= +github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= +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/fatih/structs v1.1.0/go.mod h1:9NiDSp5zOcgEDl+j00MP/WkGVPOlPRLejGD8Ga6PJ7M= +github.com/fortytw2/leaktest v1.3.0/go.mod h1:jDsjWgpAGjm2CA7WthBh/CdZYEPF31XHquHwclZch5g= +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-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= +github.com/go-ole/go-ole v1.2.4 h1:nNBDSCOigTSiarFpYE9J/KtEA1IOW4CNeqT9TQDqCxI= +github.com/go-ole/go-ole v1.2.4/go.mod h1:XCwSNxSkXRo4vlyPy93sltvi/qJq0jqQhjqQNIwKuxM= +github.com/gogo/protobuf v1.2.1 h1:/s5zKNz0uPFCZ5hddgPdo2TK2TVrUNMn0OOX8/aZMTE= +github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4= +github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b h1:VKtxabqXZkF25pY9ekfRL6a582T4P37/31XEstQ5p58= +github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= +github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= +github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y= +github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.1 h1:YF8+flBXS5eO826T4nzqPrxfhQThhXl0YzfuUPu4SBg= +github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= +github.com/gotnospirit/makeplural v0.0.0-20180622080156-a5f48d94d976/go.mod h1:ZGQeOwybjD8lkCjIyJfqR5LD2wMVHJ31d6GdPxoTsWY= +github.com/gotnospirit/messageformat v0.0.0-20180622080451-0eab1176a3fb/go.mod h1:NO9UUa4C4cSmRsYSfZMAKhI5ifCRzOjSGe/pi7TKRvs= +github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0 h1:Ovs26xHkKqVztRpIrF/92BcuyuQ/YW4NSIpoGtfXNho= +github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= +github.com/grpc-ecosystem/grpc-gateway v1.9.0/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= +github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= +github.com/influxdata/influxdb v1.7.6/go.mod h1:qZna6X/4elxqT3yI9iZYdZrWWdeFOOprn86kgg4+IzY= +github.com/jacobsa/crypto v0.0.0-20190317225127-9f44e2d11115/go.mod h1:LadVJg0XuawGk+8L1rYnIED8451UyNxEMdTWCEt5kmU= +github.com/jacobsa/oglematchers v0.0.0-20150720000706-141901ea67cd/go.mod h1:TlmyIZDpGmwRoTWiakdr+HA1Tukze6C6XbRVidYq02M= +github.com/jacobsa/oglemock v0.0.0-20150831005832-e94d794d06ff/go.mod h1:gJWba/XXGl0UoOmBQKRWCJdHrr3nE0T65t6ioaj3mLI= +github.com/jacobsa/ogletest v0.0.0-20170503003838-80d50a735a11/go.mod h1:+DBdDyfoO2McrOyDemRBq0q9CMEByef7sYl7JH5Q3BI= +github.com/jacobsa/reqtrace v0.0.0-20150505043853-245c9e0234cb/go.mod h1:ivcmUvxXWjb27NsPEaiYK7AidlZXS7oQ5PowUS9z3I4= +github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= +github.com/juju/ratelimit v1.0.1 h1:+7AIFJVQ0EQgq/K9+0Krm7m530Du7tIz0METWzN0RgY= +github.com/juju/ratelimit v1.0.1/go.mod h1:qapgC/Gy+xNh9UxzV13HGGl/6UXNN+ct+vwSgWNm/qk= +github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q= +github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= +github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= +github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= +github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI= +github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= +github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= +github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE= +github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= +github.com/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/mwitkow/go-grpc-middleware v1.0.0 h1:XraEe8LhUuB33YeV4NWfLh2KUZicskSZ2lMhVRnDvTQ= +github.com/mwitkow/go-grpc-middleware v1.0.0/go.mod h1:wqm8af53+/cILryTaG+dCJS6CsDMVZDxlKh6lSkF19U= +github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/ginkgo v1.8.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/gomega v1.5.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= +github.com/pkg/errors v0.8.1 h1:iURUrRGxPUNPdy5/HRSm+Yj6okJ6UtLINN0Q9M4+h3I= +github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/prometheus/client_golang v0.9.2 h1:awm861/B8OKDd2I/6o1dy3ra4BamzKhYOiGItCeZ740= +github.com/prometheus/client_golang v0.9.2/go.mod h1:OsXs2jCmiKlQ1lTBmv21f2mNfw4xf/QclQDMrYNZzcM= +github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= +github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90 h1:S/YWwWx/RA8rT8tKFRuGUZhuA90OyIBpPCXkcbwU8DE= +github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/prometheus/common v0.0.0-20181126121408-4724e9255275 h1:PnBWHBf+6L0jOqq0gIVUe6Yk0/QMZ640k6NvkxcBf+8= +github.com/prometheus/common v0.0.0-20181126121408-4724e9255275/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= +github.com/prometheus/procfs v0.0.0-20181204211112-1dc9a6cbc91a h1:9a8MnZMP0X2nLJdBg+pBmGgkJlSaKC2KaQmTCk1XDtE= +github.com/prometheus/procfs v0.0.0-20181204211112-1dc9a6cbc91a/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= +github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg= +github.com/shirou/gopsutil v2.18.12+incompatible h1:1eaJvGomDnH74/5cF4CTmTbLHAriGFsTZppLXDX93OM= +github.com/shirou/gopsutil v2.18.12+incompatible/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA= +github.com/shirou/w32 v0.0.0-20160930032740-bb4de0191aa4 h1:udFKJ0aHUL60LboW/A+DfgoHVedieIzIXE8uylPue0U= +github.com/shirou/w32 v0.0.0-20160930032740-bb4de0191aa4/go.mod h1:qsXQc7+bwAM3Q1u/4XEfrquwF8Lw7D7y5cD8CuHnfIc= +github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMBDgk/93Q= +github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= +github.com/smartystreets/assertions v0.0.0-20190401211740-f487f9de1cd3 h1:hBSHahWMEgzwRyS6dRpxY0XyjZsHyQ61s084wo5PJe0= +github.com/smartystreets/assertions v0.0.0-20190401211740-f487f9de1cd3/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= +github.com/smartystreets/go-aws-auth v0.0.0-20180515143844-0c1422d1fdb9/go.mod h1:SnhjPscd9TpLiy1LpzGSKh3bXCfxxXuqd9xmQJy3slM= +github.com/smartystreets/goconvey v0.0.0-20190330032615-68dc04aab96a/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= +github.com/smartystreets/gunit v0.0.0-20190426220047-d9c9211acd48/go.mod h1:oqKsUQaUkJ2EU1ZzLQFJt1WUp9DDuj1CnZbp4DwPwL4= +github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/testify v1.2.2 h1:bSDNvY7ZPG5RlJ8otE/7V6gMiyenm9RtJ7IUVIAoJ1w= +github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= +github.com/tj/go-elastic v0.0.0-20171221160941-36157cbbebc2/go.mod h1:WjeM0Oo1eNAjXGDx2yma7uG2XoyRZTq1uv3M/o7imD0= +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +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-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +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-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-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-20190514140710-3ec191127204 h1:4yG6GqBtw9C+UrLp6s2wtSniayy/Vd/3F7ffLE427XI= +golang.org/x/net v0.0.0-20190514140710-3ec191127204/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= +golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181107165924-66b7b1311ac8/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a h1:1BGLXjeY4akVXGgbC9HugT3Jv3hCI0z56oJR5vAMgBU= +golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/text v0.3.0 h1:g61tztE5qeGQ89tm6NTjjM9VPIm088od1l6aSorWRWg= +golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-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-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= +google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= +google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= +google.golang.org/genproto v0.0.0-20190515210553-995ef27e003f h1:1ByLH6hSgeVhrIAQ+Y/J0kT6T3sROUx7eH9qY4UBQh4= +google.golang.org/genproto v0.0.0-20190515210553-995ef27e003f/go.mod h1:z3L6/3dTEVtUr6QSP8miRzeRqwQOioJ9I66odjN4I7s= +google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= +google.golang.org/grpc v1.20.1 h1:Hz2g2wirWK7H0qIIhGIqRGTuMwTE8HEKFnDZZ7lm9NU= +google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 h1:qIbj1fsPNlZgppZ+VLlY7N33q108Sa+fhmuc+sWQYwY= +gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= +gopkg.in/redis.v5 v5.2.9/go.mod h1:6gtv0/+A4iM08kdRfocWYB3bLX2tebpNtfKlFT6H4mY= +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/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= +honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= From 86414c703ee1f05ec121ae87e11eafdea92b29ad Mon Sep 17 00:00:00 2001 From: Hylke Visser Date: Thu, 16 May 2019 11:23:57 +0200 Subject: [PATCH 06/17] Get dependencies of core/types module --- core/types/go.mod | 17 +++++++++++++ core/types/go.sum | 53 +++++++++++++++++++++++++++++++++++++++ core/types/random_test.go | 3 +-- 3 files changed, 71 insertions(+), 2 deletions(-) create mode 100644 core/types/go.sum diff --git a/core/types/go.mod b/core/types/go.mod index 7ca339bf9..b75259eb1 100644 --- a/core/types/go.mod +++ b/core/types/go.mod @@ -1,3 +1,20 @@ module github.com/TheThingsNetwork/ttn/core/types go 1.11 + +replace github.com/brocaar/lorawan => github.com/ThethingsIndustries/legacy-lorawan-lib v0.0.0-20190212122748-b905ab327304 + +require ( + github.com/TheThingsNetwork/ttn/utils/errors v0.0.0-20190516081709-034d40b328bd + github.com/brocaar/lorawan v0.0.0-20170626123636-a64aca28516d + github.com/jacobsa/crypto v0.0.0-20190317225127-9f44e2d11115 // indirect + github.com/jacobsa/oglematchers v0.0.0-20150720000706-141901ea67cd // indirect + github.com/jacobsa/oglemock v0.0.0-20150831005832-e94d794d06ff // indirect + github.com/jacobsa/ogletest v0.0.0-20170503003838-80d50a735a11 // indirect + github.com/jacobsa/reqtrace v0.0.0-20150505043853-245c9e0234cb // indirect + github.com/pkg/errors v0.8.1 // indirect + github.com/smartystreets/assertions v0.0.0-20190401211740-f487f9de1cd3 + github.com/smartystreets/goconvey v0.0.0-20190330032615-68dc04aab96a // indirect + golang.org/x/net v0.0.0-20190514140710-3ec191127204 // indirect + google.golang.org/grpc v1.20.1 // indirect +) diff --git a/core/types/go.sum b/core/types/go.sum new file mode 100644 index 000000000..b220a8e09 --- /dev/null +++ b/core/types/go.sum @@ -0,0 +1,53 @@ +cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= +github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= +github.com/TheThingsNetwork/ttn/utils/errors v0.0.0-20190516081709-034d40b328bd h1:ITXOJpmUR4Jhp3Xb/xNUIJH4WR0h2/NsxZkSDzFIFiU= +github.com/TheThingsNetwork/ttn/utils/errors v0.0.0-20190516081709-034d40b328bd/go.mod h1:e8FjzgvhAVx9+iqPloB4v7QM0rmv+r5ysRn9kWFamG4= +github.com/ThethingsIndustries/legacy-lorawan-lib v0.0.0-20190212122748-b905ab327304 h1:/cHHaFovakFEXICcgyA9KdVaEISYbgNSGznVsrJKJcI= +github.com/ThethingsIndustries/legacy-lorawan-lib v0.0.0-20190212122748-b905ab327304/go.mod h1:EvMP/9LQnOpO1MsMXMuZB9FpzcK504XKlpDnBHox9nI= +github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= +github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b h1:VKtxabqXZkF25pY9ekfRL6a582T4P37/31XEstQ5p58= +github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= +github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= +github.com/golang/protobuf v1.2.0 h1:P3YflyNX/ehuJFLhxviNdFxQPkGK5cDcApsge1SqnvM= +github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1 h1:EGx4pi6eqNxGaHF6qqu48+N2wcFQ5qg5FXgOdqsJ5d8= +github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= +github.com/jacobsa/crypto v0.0.0-20190317225127-9f44e2d11115 h1:YuDUUFNM21CAbyPOpOP8BicaTD/0klJEKt5p8yuw+uY= +github.com/jacobsa/crypto v0.0.0-20190317225127-9f44e2d11115/go.mod h1:LadVJg0XuawGk+8L1rYnIED8451UyNxEMdTWCEt5kmU= +github.com/jacobsa/oglematchers v0.0.0-20150720000706-141901ea67cd h1:9GCSedGjMcLZCrusBZuo4tyKLpKUPenUUqi34AkuFmA= +github.com/jacobsa/oglematchers v0.0.0-20150720000706-141901ea67cd/go.mod h1:TlmyIZDpGmwRoTWiakdr+HA1Tukze6C6XbRVidYq02M= +github.com/jacobsa/oglemock v0.0.0-20150831005832-e94d794d06ff h1:2xRHTvkpJ5zJmglXLRqHiZQNjUoOkhUyhTAhEQvPAWw= +github.com/jacobsa/oglemock v0.0.0-20150831005832-e94d794d06ff/go.mod h1:gJWba/XXGl0UoOmBQKRWCJdHrr3nE0T65t6ioaj3mLI= +github.com/jacobsa/ogletest v0.0.0-20170503003838-80d50a735a11 h1:BMb8s3ENQLt5ulwVIHVDWFHp8eIXmbfSExkvdn9qMXI= +github.com/jacobsa/ogletest v0.0.0-20170503003838-80d50a735a11/go.mod h1:+DBdDyfoO2McrOyDemRBq0q9CMEByef7sYl7JH5Q3BI= +github.com/jacobsa/reqtrace v0.0.0-20150505043853-245c9e0234cb h1:uSWBjJdMf47kQlXMwWEfmc864bA1wAC+Kl3ApryuG9Y= +github.com/jacobsa/reqtrace v0.0.0-20150505043853-245c9e0234cb/go.mod h1:ivcmUvxXWjb27NsPEaiYK7AidlZXS7oQ5PowUS9z3I4= +github.com/jtolds/gls v4.20.0+incompatible h1:xdiiI2gbIgH/gLH7ADydsJ1uDOEzR8yvV7C0MuV77Wo= +github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= +github.com/pkg/errors v0.8.1 h1:iURUrRGxPUNPdy5/HRSm+Yj6okJ6UtLINN0Q9M4+h3I= +github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= +github.com/smartystreets/assertions v0.0.0-20190401211740-f487f9de1cd3 h1:hBSHahWMEgzwRyS6dRpxY0XyjZsHyQ61s084wo5PJe0= +github.com/smartystreets/assertions v0.0.0-20190401211740-f487f9de1cd3/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= +github.com/smartystreets/goconvey v0.0.0-20190330032615-68dc04aab96a h1:pa8hGb/2YqsZKovtsgrwcDH1RZhVbTKCjLp47XpqCDs= +github.com/smartystreets/goconvey v0.0.0-20190330032615-68dc04aab96a/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190514140710-3ec191127204 h1:4yG6GqBtw9C+UrLp6s2wtSniayy/Vd/3F7ffLE427XI= +golang.org/x/net v0.0.0-20190514140710-3ec191127204/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= +golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f h1:wMNYb4v58l5UBM7MYRLPG6ZhfOqbKu7X5eyFl8ZhKvA= +golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a h1:1BGLXjeY4akVXGgbC9HugT3Jv3hCI0z56oJR5vAMgBU= +golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/text v0.3.0 h1:g61tztE5qeGQ89tm6NTjjM9VPIm088od1l6aSorWRWg= +golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= +google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8 h1:Nw54tB0rB7hY/N0NQvRW8DG4Yk3Q6T9cu9RcFQDu1tc= +google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= +google.golang.org/grpc v1.20.1 h1:Hz2g2wirWK7H0qIIhGIqRGTuMwTE8HEKFnDZZ7lm9NU= +google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= +honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= diff --git a/core/types/random_test.go b/core/types/random_test.go index 283cbf159..4a0612d74 100644 --- a/core/types/random_test.go +++ b/core/types/random_test.go @@ -1,14 +1,13 @@ // Copyright © 2017 The Things Network // Use of this source code is governed by the MIT license that can be found in the LICENSE file. -package types_test +package types import ( "math/rand" "testing" "time" - . "github.com/TheThingsNetwork/ttn/core/types" . "github.com/smartystreets/assertions" ) From b66899428ed53f88def30ca65f0bf311c083fe54 Mon Sep 17 00:00:00 2001 From: Hylke Visser Date: Thu, 16 May 2019 11:30:04 +0200 Subject: [PATCH 07/17] Get dependencies of mqtt module --- mqtt/go.mod | 12 +++++ mqtt/go.sum | 136 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 148 insertions(+) create mode 100644 mqtt/go.sum diff --git a/mqtt/go.mod b/mqtt/go.mod index fae9a6f9b..848e64a5b 100644 --- a/mqtt/go.mod +++ b/mqtt/go.mod @@ -1,3 +1,15 @@ module github.com/TheThingsNetwork/ttn/mqtt go 1.11 + +replace github.com/brocaar/lorawan => github.com/ThethingsIndustries/legacy-lorawan-lib v0.0.0-20190212122748-b905ab327304 + +require ( + github.com/TheThingsNetwork/api v0.0.0-20190330165854-3fb363b63d07 // indirect + github.com/TheThingsNetwork/go-utils v0.0.0-20190516083235-bdd4967fab4e + github.com/TheThingsNetwork/ttn/core/types v0.0.0-20190516092602-86414c703ee1 + github.com/TheThingsNetwork/ttn/utils/random v0.0.0-20190516092602-86414c703ee1 + github.com/TheThingsNetwork/ttn/utils/testing v0.0.0-20190516092602-86414c703ee1 + github.com/eclipse/paho.mqtt.golang v1.2.0 + github.com/smartystreets/assertions v0.0.0-20190401211740-f487f9de1cd3 +) diff --git a/mqtt/go.sum b/mqtt/go.sum new file mode 100644 index 000000000..cfd9fac65 --- /dev/null +++ b/mqtt/go.sum @@ -0,0 +1,136 @@ +cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= +github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= +github.com/TheThingsNetwork/api v0.0.0-20190330165854-3fb363b63d07 h1:ZAe/5aYeHuy+axr9tg72o/4TH6AqsdiWG2Cm3qXQ350= +github.com/TheThingsNetwork/api v0.0.0-20190330165854-3fb363b63d07/go.mod h1:iGcCXFi0My4IJbLSWWlRONaYiMtSjLbdkfFE5xBrgRc= +github.com/TheThingsNetwork/go-utils v0.0.0-20190516083235-bdd4967fab4e h1:JEt3G2ONKGfW1YDp2A8Q/+kZIuIB117nkit0+GDJN04= +github.com/TheThingsNetwork/go-utils v0.0.0-20190516083235-bdd4967fab4e/go.mod h1:9uzg7Jk8ywYqL+xUEhTNrJcs68Nafj4qTaz/zB+STwg= +github.com/TheThingsNetwork/ttn/core/types v0.0.0-20190516092602-86414c703ee1 h1:2Zi/ABoSJdf3In7WGi8qi3RZ3IwqLJ9IWaIFA8pGhuY= +github.com/TheThingsNetwork/ttn/core/types v0.0.0-20190516092602-86414c703ee1/go.mod h1:q3r/3g5fixboWUOCounAWo+Y8OlkKdhVnGosLMEQ09Q= +github.com/TheThingsNetwork/ttn/utils/errors v0.0.0-20190516081709-034d40b328bd h1:ITXOJpmUR4Jhp3Xb/xNUIJH4WR0h2/NsxZkSDzFIFiU= +github.com/TheThingsNetwork/ttn/utils/errors v0.0.0-20190516081709-034d40b328bd/go.mod h1:e8FjzgvhAVx9+iqPloB4v7QM0rmv+r5ysRn9kWFamG4= +github.com/TheThingsNetwork/ttn/utils/random v0.0.0-20190516092602-86414c703ee1 h1:Y0jKI253ear5Kz8XJf3PIv2+rtHB2b1UoWDIpm8bdV0= +github.com/TheThingsNetwork/ttn/utils/random v0.0.0-20190516092602-86414c703ee1/go.mod h1:ktVq1/rYkTlgilBixqCtltTh29rOUnZET4g50xoKlpE= +github.com/TheThingsNetwork/ttn/utils/testing v0.0.0-20190516092602-86414c703ee1 h1:R/9yZMe1E5BhUuKhxFOZp/s5rIfg8itNDsRAVgMm1ro= +github.com/TheThingsNetwork/ttn/utils/testing v0.0.0-20190516092602-86414c703ee1/go.mod h1:KE2xKKLXyXmH9KBkUWJD5XPI0K10T2tj7E1kBLHq8kQ= +github.com/ThethingsIndustries/legacy-lorawan-lib v0.0.0-20190212122748-b905ab327304 h1:/cHHaFovakFEXICcgyA9KdVaEISYbgNSGznVsrJKJcI= +github.com/ThethingsIndustries/legacy-lorawan-lib v0.0.0-20190212122748-b905ab327304/go.mod h1:EvMP/9LQnOpO1MsMXMuZB9FpzcK504XKlpDnBHox9nI= +github.com/apex/log v1.1.0 h1:J5rld6WVFi6NxA6m8GJ1LJqu3+GiTFIt3mYv27gdQWI= +github.com/apex/log v1.1.0/go.mod h1:yA770aXIDQrhVOIGurT/pVdfCpSq1GQV/auzMN5fzvY= +github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= +github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= +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/eclipse/paho.mqtt.golang v1.2.0 h1:1F8mhG9+aO5/xpdtFkW4SxOJB67ukuDC3t2y2qayIX0= +github.com/eclipse/paho.mqtt.golang v1.2.0/go.mod h1:H9keYFcgq3Qr5OUJm/JZI/i6U7joQ8SYLhZwfeOo6Ts= +github.com/fatih/structs v1.1.0/go.mod h1:9NiDSp5zOcgEDl+j00MP/WkGVPOlPRLejGD8Ga6PJ7M= +github.com/fortytw2/leaktest v1.3.0/go.mod h1:jDsjWgpAGjm2CA7WthBh/CdZYEPF31XHquHwclZch5g= +github.com/fsnotify/fsnotify v1.4.7 h1:IXs+QLmnXW2CcXuY+8Mzv/fWEsPGWxqefPtCP5CnV9I= +github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= +github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= +github.com/gogo/protobuf v1.2.1 h1:/s5zKNz0uPFCZ5hddgPdo2TK2TVrUNMn0OOX8/aZMTE= +github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4= +github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b h1:VKtxabqXZkF25pY9ekfRL6a582T4P37/31XEstQ5p58= +github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= +github.com/golang/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 h1:YF8+flBXS5eO826T4nzqPrxfhQThhXl0YzfuUPu4SBg= +github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1 h1:EGx4pi6eqNxGaHF6qqu48+N2wcFQ5qg5FXgOdqsJ5d8= +github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= +github.com/gotnospirit/makeplural v0.0.0-20180622080156-a5f48d94d976/go.mod h1:ZGQeOwybjD8lkCjIyJfqR5LD2wMVHJ31d6GdPxoTsWY= +github.com/gotnospirit/messageformat v0.0.0-20180622080451-0eab1176a3fb/go.mod h1:NO9UUa4C4cSmRsYSfZMAKhI5ifCRzOjSGe/pi7TKRvs= +github.com/hpcloud/tail v1.0.0 h1:nfCOvKYfkgYP8hkirhJocXT2+zOD8yUNjXaWfTlyFKI= +github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= +github.com/influxdata/influxdb v1.7.6/go.mod h1:qZna6X/4elxqT3yI9iZYdZrWWdeFOOprn86kgg4+IzY= +github.com/jacobsa/crypto v0.0.0-20190317225127-9f44e2d11115 h1:YuDUUFNM21CAbyPOpOP8BicaTD/0klJEKt5p8yuw+uY= +github.com/jacobsa/crypto v0.0.0-20190317225127-9f44e2d11115/go.mod h1:LadVJg0XuawGk+8L1rYnIED8451UyNxEMdTWCEt5kmU= +github.com/jacobsa/oglematchers v0.0.0-20150720000706-141901ea67cd h1:9GCSedGjMcLZCrusBZuo4tyKLpKUPenUUqi34AkuFmA= +github.com/jacobsa/oglematchers v0.0.0-20150720000706-141901ea67cd/go.mod h1:TlmyIZDpGmwRoTWiakdr+HA1Tukze6C6XbRVidYq02M= +github.com/jacobsa/oglemock v0.0.0-20150831005832-e94d794d06ff h1:2xRHTvkpJ5zJmglXLRqHiZQNjUoOkhUyhTAhEQvPAWw= +github.com/jacobsa/oglemock v0.0.0-20150831005832-e94d794d06ff/go.mod h1:gJWba/XXGl0UoOmBQKRWCJdHrr3nE0T65t6ioaj3mLI= +github.com/jacobsa/ogletest v0.0.0-20170503003838-80d50a735a11 h1:BMb8s3ENQLt5ulwVIHVDWFHp8eIXmbfSExkvdn9qMXI= +github.com/jacobsa/ogletest v0.0.0-20170503003838-80d50a735a11/go.mod h1:+DBdDyfoO2McrOyDemRBq0q9CMEByef7sYl7JH5Q3BI= +github.com/jacobsa/reqtrace v0.0.0-20150505043853-245c9e0234cb h1:uSWBjJdMf47kQlXMwWEfmc864bA1wAC+Kl3ApryuG9Y= +github.com/jacobsa/reqtrace v0.0.0-20150505043853-245c9e0234cb/go.mod h1:ivcmUvxXWjb27NsPEaiYK7AidlZXS7oQ5PowUS9z3I4= +github.com/jtolds/gls v4.20.0+incompatible h1:xdiiI2gbIgH/gLH7ADydsJ1uDOEzR8yvV7C0MuV77Wo= +github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= +github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q= +github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= +github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= +github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= +github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI= +github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= +github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= +github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE= +github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= +github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= +github.com/mwitkow/go-grpc-middleware v1.0.0/go.mod h1:wqm8af53+/cILryTaG+dCJS6CsDMVZDxlKh6lSkF19U= +github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/ginkgo v1.8.0 h1:VkHVNpR4iVnU8XQR6DBm8BqYjN7CRzw+xKUbVVbbW9w= +github.com/onsi/ginkgo v1.8.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/gomega v1.5.0 h1:izbySO9zDPmjJ8rDjLvkA2zJHIo+HkYXHnf7eN7SSyo= +github.com/onsi/gomega v1.5.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= +github.com/pkg/errors v0.8.1 h1:iURUrRGxPUNPdy5/HRSm+Yj6okJ6UtLINN0Q9M4+h3I= +github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/prometheus/client_golang v0.9.2/go.mod h1:OsXs2jCmiKlQ1lTBmv21f2mNfw4xf/QclQDMrYNZzcM= +github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= +github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/prometheus/common v0.0.0-20181126121408-4724e9255275/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= +github.com/prometheus/procfs v0.0.0-20181204211112-1dc9a6cbc91a/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= +github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMBDgk/93Q= +github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= +github.com/smartystreets/assertions v0.0.0-20190401211740-f487f9de1cd3 h1:hBSHahWMEgzwRyS6dRpxY0XyjZsHyQ61s084wo5PJe0= +github.com/smartystreets/assertions v0.0.0-20190401211740-f487f9de1cd3/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= +github.com/smartystreets/go-aws-auth v0.0.0-20180515143844-0c1422d1fdb9/go.mod h1:SnhjPscd9TpLiy1LpzGSKh3bXCfxxXuqd9xmQJy3slM= +github.com/smartystreets/goconvey v0.0.0-20190330032615-68dc04aab96a h1:pa8hGb/2YqsZKovtsgrwcDH1RZhVbTKCjLp47XpqCDs= +github.com/smartystreets/goconvey v0.0.0-20190330032615-68dc04aab96a/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= +github.com/smartystreets/gunit v0.0.0-20190426220047-d9c9211acd48/go.mod h1:oqKsUQaUkJ2EU1ZzLQFJt1WUp9DDuj1CnZbp4DwPwL4= +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 h1:TivCn/peBQ7UY8ooIcPgZFpTNSz0Q2U6UrFlUfqbe0Q= +github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= +github.com/tj/go-elastic v0.0.0-20171221160941-36157cbbebc2/go.mod h1:WjeM0Oo1eNAjXGDx2yma7uG2XoyRZTq1uv3M/o7imD0= +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/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-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190514140710-3ec191127204 h1:4yG6GqBtw9C+UrLp6s2wtSniayy/Vd/3F7ffLE427XI= +golang.org/x/net v0.0.0-20190514140710-3ec191127204/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= +golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/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-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190516014833-cab07311ab81 h1:5Q88vZAfC0WB8T1GHRLttQaZdCNeQHM40n41gMUeFlI= +golang.org/x/sys v0.0.0-20190516014833-cab07311ab81/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.2 h1:tW2bmiBqwgJj/UpqtC8EpXEZVYOwU0yG4iWbprSVAcs= +golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= +golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= +google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8 h1:Nw54tB0rB7hY/N0NQvRW8DG4Yk3Q6T9cu9RcFQDu1tc= +google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= +google.golang.org/grpc v1.20.1 h1:Hz2g2wirWK7H0qIIhGIqRGTuMwTE8HEKFnDZZ7lm9NU= +google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 h1:qIbj1fsPNlZgppZ+VLlY7N33q108Sa+fhmuc+sWQYwY= +gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/fsnotify.v1 v1.4.7 h1:xOHLXZwVvI9hhs+cLKq5+I5onOuwQLhQwiu63xxlHs4= +gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= +gopkg.in/redis.v5 v5.2.9 h1:MNZYOLPomQzZMfpN3ZtD1uyJ2IDonTTlxYiV/pEApiw= +gopkg.in/redis.v5 v5.2.9/go.mod h1:6gtv0/+A4iM08kdRfocWYB3bLX2tebpNtfKlFT6H4mY= +gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ= +gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= +gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.2 h1:ZCJp+EgiOT7lHqUV2J862kp8Qj64Jo6az82+3Td9dZw= +gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= From fd2a4df81eea8b7b684d3c86b5da76eb4035f837 Mon Sep 17 00:00:00 2001 From: Hylke Visser Date: Thu, 16 May 2019 13:05:04 +0200 Subject: [PATCH 08/17] Get dependencies of utils/random module --- utils/random/go.mod | 7 +++ utils/random/go.sum | 131 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 138 insertions(+) create mode 100644 utils/random/go.sum diff --git a/utils/random/go.mod b/utils/random/go.mod index 210f5ca95..82abb68be 100644 --- a/utils/random/go.mod +++ b/utils/random/go.mod @@ -1,3 +1,10 @@ module github.com/TheThingsNetwork/ttn/utils/random go 1.11 + +require ( + github.com/TheThingsNetwork/api v0.0.0-20190516085542-c732802571cf + github.com/TheThingsNetwork/go-utils v0.0.0-20190516083235-bdd4967fab4e + github.com/TheThingsNetwork/ttn/core/types v0.0.0-20190516092602-86414c703ee1 + github.com/smartystreets/assertions v0.0.0-20190401211740-f487f9de1cd3 +) diff --git a/utils/random/go.sum b/utils/random/go.sum new file mode 100644 index 000000000..12318ea0c --- /dev/null +++ b/utils/random/go.sum @@ -0,0 +1,131 @@ +cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= +github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= +github.com/TheThingsNetwork/api v0.0.0-20190516085542-c732802571cf h1:1LvY2VUOy+/Sb5O8eE2HIecvUZupe7kLoquUpeajuPs= +github.com/TheThingsNetwork/api v0.0.0-20190516085542-c732802571cf/go.mod h1:XO2/81Njy3JefUFXtTg63YGJJ2wUyMRyYm6LaYfu8jE= +github.com/TheThingsNetwork/go-utils v0.0.0-20190331064810-aa2a11bd5910/go.mod h1:ux1QZ2JrltnJxuZ0VoNbJP1k8Eb5jiMkR3RGDXyBS+o= +github.com/TheThingsNetwork/go-utils v0.0.0-20190516083235-bdd4967fab4e h1:JEt3G2ONKGfW1YDp2A8Q/+kZIuIB117nkit0+GDJN04= +github.com/TheThingsNetwork/go-utils v0.0.0-20190516083235-bdd4967fab4e/go.mod h1:9uzg7Jk8ywYqL+xUEhTNrJcs68Nafj4qTaz/zB+STwg= +github.com/TheThingsNetwork/ttn/api v0.0.0-20190516081709-034d40b328bd/go.mod h1:UCRXmEaShvS/wHOf2RcoY2vKUGJnrYrotBA6LZzYdFM= +github.com/TheThingsNetwork/ttn/core/types v0.0.0-20190516081709-034d40b328bd/go.mod h1:VVWTaeAJHezuE+c0Vk0AJ4R6KSLg50H1y3RB7vGhGOA= +github.com/TheThingsNetwork/ttn/core/types v0.0.0-20190516092602-86414c703ee1 h1:2Zi/ABoSJdf3In7WGi8qi3RZ3IwqLJ9IWaIFA8pGhuY= +github.com/TheThingsNetwork/ttn/core/types v0.0.0-20190516092602-86414c703ee1/go.mod h1:q3r/3g5fixboWUOCounAWo+Y8OlkKdhVnGosLMEQ09Q= +github.com/TheThingsNetwork/ttn/utils/errors v0.0.0-20190516081709-034d40b328bd h1:ITXOJpmUR4Jhp3Xb/xNUIJH4WR0h2/NsxZkSDzFIFiU= +github.com/TheThingsNetwork/ttn/utils/errors v0.0.0-20190516081709-034d40b328bd/go.mod h1:e8FjzgvhAVx9+iqPloB4v7QM0rmv+r5ysRn9kWFamG4= +github.com/TheThingsNetwork/ttn/utils/random v0.0.0-20190516081709-034d40b328bd/go.mod h1:ktVq1/rYkTlgilBixqCtltTh29rOUnZET4g50xoKlpE= +github.com/TheThingsNetwork/ttn/utils/security v0.0.0-20190516081709-034d40b328bd/go.mod h1:aaYF12LufW5Xs4Z2C6UOrCzpkyoBjw+rmHCcNYgb1JU= +github.com/apex/log v1.1.0/go.mod h1:yA770aXIDQrhVOIGurT/pVdfCpSq1GQV/auzMN5fzvY= +github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= +github.com/bluele/gcache v0.0.0-20190301044115-79ae3b2d8680/go.mod h1:8c4/i2VlovMO2gBnHGQPN5EJw+H0lx1u/5p+cgsXtCk= +github.com/brocaar/lorawan v0.0.0-20170626123636-a64aca28516d h1:yIe4YHMG4WUoBCWlcDsfFD1IgnysKNLDKCe+yY0sknc= +github.com/brocaar/lorawan v0.0.0-20170626123636-a64aca28516d/go.mod h1:kwUChfPyeHBQumTUYBvOkO4prdwMM55wby9Zw9lhzlA= +github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= +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/fatih/structs v1.1.0/go.mod h1:9NiDSp5zOcgEDl+j00MP/WkGVPOlPRLejGD8Ga6PJ7M= +github.com/fortytw2/leaktest v1.3.0/go.mod h1:jDsjWgpAGjm2CA7WthBh/CdZYEPF31XHquHwclZch5g= +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-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= +github.com/gogo/protobuf v1.2.1 h1:/s5zKNz0uPFCZ5hddgPdo2TK2TVrUNMn0OOX8/aZMTE= +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/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= +github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y= +github.com/golang/protobuf v1.2.0 h1:P3YflyNX/ehuJFLhxviNdFxQPkGK5cDcApsge1SqnvM= +github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.1 h1:YF8+flBXS5eO826T4nzqPrxfhQThhXl0YzfuUPu4SBg= +github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= +github.com/gotnospirit/makeplural v0.0.0-20180622080156-a5f48d94d976/go.mod h1:ZGQeOwybjD8lkCjIyJfqR5LD2wMVHJ31d6GdPxoTsWY= +github.com/gotnospirit/messageformat v0.0.0-20180622080451-0eab1176a3fb/go.mod h1:NO9UUa4C4cSmRsYSfZMAKhI5ifCRzOjSGe/pi7TKRvs= +github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= +github.com/grpc-ecosystem/grpc-gateway v1.9.0/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= +github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= +github.com/influxdata/influxdb v1.7.6/go.mod h1:qZna6X/4elxqT3yI9iZYdZrWWdeFOOprn86kgg4+IzY= +github.com/jacobsa/crypto v0.0.0-20190317225127-9f44e2d11115 h1:YuDUUFNM21CAbyPOpOP8BicaTD/0klJEKt5p8yuw+uY= +github.com/jacobsa/crypto v0.0.0-20190317225127-9f44e2d11115/go.mod h1:LadVJg0XuawGk+8L1rYnIED8451UyNxEMdTWCEt5kmU= +github.com/jacobsa/oglematchers v0.0.0-20150720000706-141901ea67cd/go.mod h1:TlmyIZDpGmwRoTWiakdr+HA1Tukze6C6XbRVidYq02M= +github.com/jacobsa/oglemock v0.0.0-20150831005832-e94d794d06ff/go.mod h1:gJWba/XXGl0UoOmBQKRWCJdHrr3nE0T65t6ioaj3mLI= +github.com/jacobsa/ogletest v0.0.0-20170503003838-80d50a735a11/go.mod h1:+DBdDyfoO2McrOyDemRBq0q9CMEByef7sYl7JH5Q3BI= +github.com/jacobsa/reqtrace v0.0.0-20150505043853-245c9e0234cb/go.mod h1:ivcmUvxXWjb27NsPEaiYK7AidlZXS7oQ5PowUS9z3I4= +github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= +github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q= +github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= +github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= +github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= +github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= +github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= +github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= +github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= +github.com/mwitkow/go-grpc-middleware v1.0.0/go.mod h1:wqm8af53+/cILryTaG+dCJS6CsDMVZDxlKh6lSkF19U= +github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/ginkgo v1.8.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/gomega v1.5.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= +github.com/pkg/errors v0.8.1 h1:iURUrRGxPUNPdy5/HRSm+Yj6okJ6UtLINN0Q9M4+h3I= +github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/prometheus/client_golang v0.9.2/go.mod h1:OsXs2jCmiKlQ1lTBmv21f2mNfw4xf/QclQDMrYNZzcM= +github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= +github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/prometheus/common v0.0.0-20181126121408-4724e9255275/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= +github.com/prometheus/procfs v0.0.0-20181204211112-1dc9a6cbc91a/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= +github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg= +github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMBDgk/93Q= +github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= +github.com/smartystreets/assertions v0.0.0-20190401211740-f487f9de1cd3 h1:hBSHahWMEgzwRyS6dRpxY0XyjZsHyQ61s084wo5PJe0= +github.com/smartystreets/assertions v0.0.0-20190401211740-f487f9de1cd3/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= +github.com/smartystreets/go-aws-auth v0.0.0-20180515143844-0c1422d1fdb9/go.mod h1:SnhjPscd9TpLiy1LpzGSKh3bXCfxxXuqd9xmQJy3slM= +github.com/smartystreets/goconvey v0.0.0-20190330032615-68dc04aab96a/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= +github.com/smartystreets/gunit v0.0.0-20190426220047-d9c9211acd48/go.mod h1:oqKsUQaUkJ2EU1ZzLQFJt1WUp9DDuj1CnZbp4DwPwL4= +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/tj/go-elastic v0.0.0-20171221160941-36157cbbebc2/go.mod h1:WjeM0Oo1eNAjXGDx2yma7uG2XoyRZTq1uv3M/o7imD0= +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +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-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +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-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-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-20190514140710-3ec191127204 h1:4yG6GqBtw9C+UrLp6s2wtSniayy/Vd/3F7ffLE427XI= +golang.org/x/net v0.0.0-20190514140710-3ec191127204/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= +golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181107165924-66b7b1311ac8/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/text v0.3.0 h1:g61tztE5qeGQ89tm6NTjjM9VPIm088od1l6aSorWRWg= +golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-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-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= +google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= +google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8 h1:Nw54tB0rB7hY/N0NQvRW8DG4Yk3Q6T9cu9RcFQDu1tc= +google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= +google.golang.org/genproto v0.0.0-20190515210553-995ef27e003f h1:1ByLH6hSgeVhrIAQ+Y/J0kT6T3sROUx7eH9qY4UBQh4= +google.golang.org/genproto v0.0.0-20190515210553-995ef27e003f/go.mod h1:z3L6/3dTEVtUr6QSP8miRzeRqwQOioJ9I66odjN4I7s= +google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= +google.golang.org/grpc v1.20.1 h1:Hz2g2wirWK7H0qIIhGIqRGTuMwTE8HEKFnDZZ7lm9NU= +google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= +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/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= +gopkg.in/redis.v5 v5.2.9/go.mod h1:6gtv0/+A4iM08kdRfocWYB3bLX2tebpNtfKlFT6H4mY= +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/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= +honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= From fcd38e2b9dc6ea08e51efaf8da7a6b44589f312f Mon Sep 17 00:00:00 2001 From: Hylke Visser Date: Thu, 16 May 2019 11:59:02 +0200 Subject: [PATCH 09/17] Get dependencies of main ttn module --- go.mod | 56 +++++++++++ go.sum | 310 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 366 insertions(+) create mode 100644 go.sum diff --git a/go.mod b/go.mod index 0e0348fae..d6413868c 100644 --- a/go.mod +++ b/go.mod @@ -1,3 +1,59 @@ module github.com/TheThingsNetwork/ttn go 1.11 + +replace github.com/brocaar/lorawan => github.com/ThethingsIndustries/legacy-lorawan-lib v0.0.0-20190212122748-b905ab327304 + +replace github.com/robertkrimen/otto => github.com/ThethingsIndustries/otto v0.0.0-20181129100957-6ddbbb60554a + +require ( + github.com/TheThingsNetwork/api v0.0.0-20190516111443-a3523f89e84f + github.com/TheThingsNetwork/go-account-lib v0.0.0-20190516094738-77d15a3f8875 + github.com/TheThingsNetwork/go-cayenne-lib v1.0.0 + github.com/TheThingsNetwork/go-utils v0.0.0-20190516083235-bdd4967fab4e + github.com/TheThingsNetwork/ttn/api v0.0.0-20190516093004-b66899428ed5 + github.com/TheThingsNetwork/ttn/core/types v0.0.0-20190516093004-b66899428ed5 + github.com/TheThingsNetwork/ttn/mqtt v0.0.0-20190516093004-b66899428ed5 + github.com/TheThingsNetwork/ttn/utils/errors v0.0.0-20190516093004-b66899428ed5 + github.com/TheThingsNetwork/ttn/utils/random v0.0.0-20190516093004-b66899428ed5 + github.com/TheThingsNetwork/ttn/utils/security v0.0.0-20190516093004-b66899428ed5 + github.com/TheThingsNetwork/ttn/utils/testing v0.0.0-20190516093004-b66899428ed5 + github.com/apex/log v1.1.0 + github.com/bluele/gcache v0.0.0-20190301044115-79ae3b2d8680 + github.com/brocaar/lorawan v0.0.0-20170626123636-a64aca28516d + github.com/dgrijalva/jwt-go v3.2.0+incompatible + github.com/fatih/color v1.7.0 // indirect + github.com/fatih/structs v1.1.0 + github.com/gogo/protobuf v1.2.1 + github.com/golang/mock v1.3.1 + github.com/golang/protobuf v1.3.1 + github.com/gosuri/uitable v0.0.3 + github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0 + github.com/grpc-ecosystem/grpc-gateway v1.9.0 + github.com/howeyc/gopass v0.0.0-20170109162249-bf9dde6d0d2c + github.com/inconshreveable/mousetrap v1.0.0 // indirect + github.com/kardianos/osext v0.0.0-20190222173326-2bc1f35cddc0 + github.com/mattn/go-colorable v0.1.1 // indirect + github.com/mattn/go-isatty v0.0.7 // indirect + github.com/mattn/go-runewidth v0.0.4 // indirect + github.com/mitchellh/go-homedir v1.1.0 + github.com/mwitkow/go-grpc-middleware v1.0.0 + github.com/pkg/errors v0.8.1 + github.com/prometheus/client_golang v0.9.2 + github.com/rcrowley/go-metrics v0.0.0-20181016184325-3113b8401b8a + github.com/robertkrimen/otto v0.0.0-20180617131154-15f95af6e78d + github.com/smartystreets/assertions v0.0.0-20190401211740-f487f9de1cd3 + github.com/spf13/cobra v0.0.3 + github.com/spf13/viper v1.3.2 + github.com/streadway/amqp v0.0.0-20190404075320-75d898a42a94 + github.com/tj/go-elastic v0.0.0-20171221160941-36157cbbebc2 + golang.org/x/crypto v0.0.0-20190513172903-22d7a77e9e5f // indirect + golang.org/x/net v0.0.0-20190514140710-3ec191127204 + golang.org/x/oauth2 v0.0.0-20190402181905-9f3314589c9a + google.golang.org/appengine v1.6.0 // indirect + google.golang.org/genproto v0.0.0-20190515210553-995ef27e003f + google.golang.org/grpc v1.20.1 + gopkg.in/redis.v5 v5.2.9 + gopkg.in/sourcemap.v1 v1.0.5 // indirect + gopkg.in/yaml.v2 v2.2.2 +) diff --git a/go.sum b/go.sum new file mode 100644 index 000000000..e9c074b5e --- /dev/null +++ b/go.sum @@ -0,0 +1,310 @@ +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/StackExchange/wmi v0.0.0-20181212234831-e0a55b97c705 h1:UUppSQnhf4Yc6xGxSkoQpPhb7RVzuv5Nb1mwJ5VId9s= +github.com/StackExchange/wmi v0.0.0-20181212234831-e0a55b97c705/go.mod h1:3eOhrUMpNV+6aFIbp5/iudMxNCF27Vw2OZgy4xEx0Fg= +github.com/TheThingsNetwork/api v0.0.0-20190330165854-3fb363b63d07/go.mod h1:iGcCXFi0My4IJbLSWWlRONaYiMtSjLbdkfFE5xBrgRc= +github.com/TheThingsNetwork/api v0.0.0-20190516085542-c732802571cf h1:1LvY2VUOy+/Sb5O8eE2HIecvUZupe7kLoquUpeajuPs= +github.com/TheThingsNetwork/api v0.0.0-20190516085542-c732802571cf/go.mod h1:XO2/81Njy3JefUFXtTg63YGJJ2wUyMRyYm6LaYfu8jE= +github.com/TheThingsNetwork/api v0.0.0-20190516111443-a3523f89e84f h1:socqGNa6e5LZ4mQFZmwKHrejRHX3geh6kZzHUhVCSqI= +github.com/TheThingsNetwork/api v0.0.0-20190516111443-a3523f89e84f/go.mod h1:MYWz0xDXK+4LWQMnAcm//UPhLoamf67LgFjMwUdhKbE= +github.com/TheThingsNetwork/go-account-lib v0.0.0-20190516094738-77d15a3f8875 h1:Q6gqExgAk2mQlZPur7dwbGsy9Uxs9Hs2kurMTd+o2Rc= +github.com/TheThingsNetwork/go-account-lib v0.0.0-20190516094738-77d15a3f8875/go.mod h1:VZeXL6kkGnZouPnLESpVSGSRQNlz8zAOKHzr0P6m4pc= +github.com/TheThingsNetwork/go-cayenne-lib v1.0.0 h1:be7h6E/69+qaYs1iwQ2xjGjSFPXzvU3q6AWBCWayG2Y= +github.com/TheThingsNetwork/go-cayenne-lib v1.0.0/go.mod h1:Lkg0oDuFTF6WlZvyPV35WFHov5U9zPv2lLoAQ15NjrI= +github.com/TheThingsNetwork/go-utils v0.0.0-20190331064810-aa2a11bd5910/go.mod h1:ux1QZ2JrltnJxuZ0VoNbJP1k8Eb5jiMkR3RGDXyBS+o= +github.com/TheThingsNetwork/go-utils v0.0.0-20190516083235-bdd4967fab4e h1:JEt3G2ONKGfW1YDp2A8Q/+kZIuIB117nkit0+GDJN04= +github.com/TheThingsNetwork/go-utils v0.0.0-20190516083235-bdd4967fab4e/go.mod h1:9uzg7Jk8ywYqL+xUEhTNrJcs68Nafj4qTaz/zB+STwg= +github.com/TheThingsNetwork/ttn/api v0.0.0-20190516081709-034d40b328bd/go.mod h1:UCRXmEaShvS/wHOf2RcoY2vKUGJnrYrotBA6LZzYdFM= +github.com/TheThingsNetwork/ttn/api v0.0.0-20190516093004-b66899428ed5 h1:CWZxNG3BP+51XnsImFuBxWABdU+y2GVPzF4daWu3Sp4= +github.com/TheThingsNetwork/ttn/api v0.0.0-20190516093004-b66899428ed5/go.mod h1:UCz6JjSI/HZZjHu/TcfbI0p+76D7IUUtyX9nd3Byq1Y= +github.com/TheThingsNetwork/ttn/core/types v0.0.0-20190516081709-034d40b328bd/go.mod h1:VVWTaeAJHezuE+c0Vk0AJ4R6KSLg50H1y3RB7vGhGOA= +github.com/TheThingsNetwork/ttn/core/types v0.0.0-20190516092602-86414c703ee1/go.mod h1:q3r/3g5fixboWUOCounAWo+Y8OlkKdhVnGosLMEQ09Q= +github.com/TheThingsNetwork/ttn/core/types v0.0.0-20190516093004-b66899428ed5 h1:zNnH7q0VV6xKZbnREHhkTVU52r5WZgCEZAEC2qSj/UQ= +github.com/TheThingsNetwork/ttn/core/types v0.0.0-20190516093004-b66899428ed5/go.mod h1:q3r/3g5fixboWUOCounAWo+Y8OlkKdhVnGosLMEQ09Q= +github.com/TheThingsNetwork/ttn/mqtt v0.0.0-20190516093004-b66899428ed5 h1:Akg8xikJB5eko/Be/nbionUtWYsYybIWQdmEm+7KKfA= +github.com/TheThingsNetwork/ttn/mqtt v0.0.0-20190516093004-b66899428ed5/go.mod h1:reZ1DGzwREWfUapXIyMWU4Ybj8yxB3DD6zBW5Onm2Z0= +github.com/TheThingsNetwork/ttn/utils/errors v0.0.0-20190516081709-034d40b328bd/go.mod h1:e8FjzgvhAVx9+iqPloB4v7QM0rmv+r5ysRn9kWFamG4= +github.com/TheThingsNetwork/ttn/utils/errors v0.0.0-20190516093004-b66899428ed5 h1:hIHl7QKm0IB7YbAXkq2tHfwh1YGUdV8INcijiyoqTUQ= +github.com/TheThingsNetwork/ttn/utils/errors v0.0.0-20190516093004-b66899428ed5/go.mod h1:h8Lp+GKFavFifC9AZLb2n6CcsvX0G5vEZjC4vTH/Xlo= +github.com/TheThingsNetwork/ttn/utils/random v0.0.0-20190516081709-034d40b328bd/go.mod h1:ktVq1/rYkTlgilBixqCtltTh29rOUnZET4g50xoKlpE= +github.com/TheThingsNetwork/ttn/utils/random v0.0.0-20190516092602-86414c703ee1/go.mod h1:ktVq1/rYkTlgilBixqCtltTh29rOUnZET4g50xoKlpE= +github.com/TheThingsNetwork/ttn/utils/random v0.0.0-20190516093004-b66899428ed5 h1:5cIjvMbtmKIJrdH0J8RJmT5UeJcw/9Eb1LNpIZqwOy0= +github.com/TheThingsNetwork/ttn/utils/random v0.0.0-20190516093004-b66899428ed5/go.mod h1:ktVq1/rYkTlgilBixqCtltTh29rOUnZET4g50xoKlpE= +github.com/TheThingsNetwork/ttn/utils/security v0.0.0-20190516081709-034d40b328bd/go.mod h1:aaYF12LufW5Xs4Z2C6UOrCzpkyoBjw+rmHCcNYgb1JU= +github.com/TheThingsNetwork/ttn/utils/security v0.0.0-20190516093004-b66899428ed5 h1:OjekQ5jxJPKA2LAOIjLe/GVeE1TSrOXsTXiQD2e4z7E= +github.com/TheThingsNetwork/ttn/utils/security v0.0.0-20190516093004-b66899428ed5/go.mod h1:aNjkY4wOHP4vKYouzSgvX/BhmsC8RqqZKPbrVqUNMls= +github.com/TheThingsNetwork/ttn/utils/testing v0.0.0-20190516092602-86414c703ee1/go.mod h1:KE2xKKLXyXmH9KBkUWJD5XPI0K10T2tj7E1kBLHq8kQ= +github.com/TheThingsNetwork/ttn/utils/testing v0.0.0-20190516093004-b66899428ed5 h1:CDF7OzmynCNYYK9UoNm/3J4gniOrVub1nBkRHCkVSos= +github.com/TheThingsNetwork/ttn/utils/testing v0.0.0-20190516093004-b66899428ed5/go.mod h1:KE2xKKLXyXmH9KBkUWJD5XPI0K10T2tj7E1kBLHq8kQ= +github.com/ThethingsIndustries/legacy-lorawan-lib v0.0.0-20190212122748-b905ab327304 h1:/cHHaFovakFEXICcgyA9KdVaEISYbgNSGznVsrJKJcI= +github.com/ThethingsIndustries/legacy-lorawan-lib v0.0.0-20190212122748-b905ab327304/go.mod h1:EvMP/9LQnOpO1MsMXMuZB9FpzcK504XKlpDnBHox9nI= +github.com/ThethingsIndustries/otto v0.0.0-20181129100957-6ddbbb60554a h1:OgIt3d0PKh4q6kU+/d0ZWJF7PogxxE/EWOqISahT/Ic= +github.com/ThethingsIndustries/otto v0.0.0-20181129100957-6ddbbb60554a/go.mod h1:LdsY7jn/wxbaFJec8sYiJzeqCmVWCrM0dVEehiWVcWs= +github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= +github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= +github.com/apex/log v1.1.0 h1:J5rld6WVFi6NxA6m8GJ1LJqu3+GiTFIt3mYv27gdQWI= +github.com/apex/log v1.1.0/go.mod h1:yA770aXIDQrhVOIGurT/pVdfCpSq1GQV/auzMN5fzvY= +github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= +github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a h1:idn718Q4B6AGu/h5Sxe66HYVdqdGu2l9Iebqhi/AEoA= +github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a/go.mod h1:lB+ZfQJz7igIIfQNfa7Ml4HSf2uFQQRzpGGRXenZAgY= +github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973 h1:xJ4a3vCFaGF/jqvzLMYoU8P317H5OQ+Via4RmuPwCS0= +github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= +github.com/beorn7/perks v1.0.0 h1:HWo1m869IqiPhD389kmkxeTalrjNbbJTC8LXupb+sl0= +github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= +github.com/bluele/gcache v0.0.0-20190301044115-79ae3b2d8680 h1:jk2k2FUNIg9ogv9yFIzjA5NTrJeaAkHev4AFspbmyvo= +github.com/bluele/gcache v0.0.0-20190301044115-79ae3b2d8680/go.mod h1:8c4/i2VlovMO2gBnHGQPN5EJw+H0lx1u/5p+cgsXtCk= +github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= +github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= +github.com/coreos/go-etcd v2.0.0+incompatible/go.mod h1:Jez6KQU2B/sWsbdaef3ED8NzMklzPG4d5KIOhIy30Tk= +github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= +github.com/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 h1:7qlOGliEKZXTDg6OTjfoBKDXWrumCAMpl/TFQ4/5kLM= +github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= +github.com/eclipse/paho.mqtt.golang v1.2.0 h1:1F8mhG9+aO5/xpdtFkW4SxOJB67ukuDC3t2y2qayIX0= +github.com/eclipse/paho.mqtt.golang v1.2.0/go.mod h1:H9keYFcgq3Qr5OUJm/JZI/i6U7joQ8SYLhZwfeOo6Ts= +github.com/fatih/color v1.7.0 h1:DkWD4oS2D8LGGgTQ6IvwJJXSL5Vp2ffcQg58nFV38Ys= +github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= +github.com/fatih/structs v1.1.0 h1:Q7juDM0QtcnhCpeyLGQKyg4TOIghuNXrkL32pHAUMxo= +github.com/fatih/structs v1.1.0/go.mod h1:9NiDSp5zOcgEDl+j00MP/WkGVPOlPRLejGD8Ga6PJ7M= +github.com/fortytw2/leaktest v1.3.0/go.mod h1:jDsjWgpAGjm2CA7WthBh/CdZYEPF31XHquHwclZch5g= +github.com/fsnotify/fsnotify v1.4.7 h1:IXs+QLmnXW2CcXuY+8Mzv/fWEsPGWxqefPtCP5CnV9I= +github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= +github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= +github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= +github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= +github.com/go-logfmt/logfmt v0.4.0 h1:MP4Eh7ZCb31lleYCFuwm0oe4/YGak+5l1vA2NOE80nA= +github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= +github.com/go-ole/go-ole v1.2.4 h1:nNBDSCOigTSiarFpYE9J/KtEA1IOW4CNeqT9TQDqCxI= +github.com/go-ole/go-ole v1.2.4/go.mod h1:XCwSNxSkXRo4vlyPy93sltvi/qJq0jqQhjqQNIwKuxM= +github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= +github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= +github.com/gogo/protobuf v1.2.1 h1:/s5zKNz0uPFCZ5hddgPdo2TK2TVrUNMn0OOX8/aZMTE= +github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4= +github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b h1:VKtxabqXZkF25pY9ekfRL6a582T4P37/31XEstQ5p58= +github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= +github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= +github.com/golang/mock v1.3.1 h1:qGJ6qTW+x6xX/my+8YUVl4WNpX9B7+/l2tRsHGZ7f2s= +github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y= +github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.1 h1:YF8+flBXS5eO826T4nzqPrxfhQThhXl0YzfuUPu4SBg= +github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1 h1:EGx4pi6eqNxGaHF6qqu48+N2wcFQ5qg5FXgOdqsJ5d8= +github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= +github.com/gopherjs/gopherjs v0.0.0-20190430165422-3e4dfb77656c h1:7lF+Vz0LqiRidnzC1Oq86fpX1q/iEv2KJdrCtttYjT4= +github.com/gopherjs/gopherjs v0.0.0-20190430165422-3e4dfb77656c/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= +github.com/gosuri/uitable v0.0.3 h1:9ZY4qCODg6JL1Ui4dL9LqCF4ghWnAOSV2h7xG98SkHE= +github.com/gosuri/uitable v0.0.3/go.mod h1:tKR86bXuXPZazfOTG1FIzvjIdXzd0mo4Vtn16vt0PJo= +github.com/gotnospirit/makeplural v0.0.0-20180622080156-a5f48d94d976/go.mod h1:ZGQeOwybjD8lkCjIyJfqR5LD2wMVHJ31d6GdPxoTsWY= +github.com/gotnospirit/messageformat v0.0.0-20180622080451-0eab1176a3fb/go.mod h1:NO9UUa4C4cSmRsYSfZMAKhI5ifCRzOjSGe/pi7TKRvs= +github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0 h1:Ovs26xHkKqVztRpIrF/92BcuyuQ/YW4NSIpoGtfXNho= +github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= +github.com/grpc-ecosystem/grpc-gateway v1.9.0 h1:bM6ZAFZmc/wPFaRDi0d5L7hGEZEx/2u+Tmr2evNHDiI= +github.com/grpc-ecosystem/grpc-gateway v1.9.0/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= +github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= +github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= +github.com/howeyc/gopass v0.0.0-20170109162249-bf9dde6d0d2c h1:kQWxfPIHVLbgLzphqk3QUflDy9QdksZR4ygR807bpy0= +github.com/howeyc/gopass v0.0.0-20170109162249-bf9dde6d0d2c/go.mod h1:lADxMC39cJJqL93Duh1xhAs4I2Zs8mKS89XWXFGp9cs= +github.com/hpcloud/tail v1.0.0 h1:nfCOvKYfkgYP8hkirhJocXT2+zOD8yUNjXaWfTlyFKI= +github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= +github.com/inconshreveable/mousetrap v1.0.0 h1:Z8tu5sraLXCXIcARxBp/8cbvlwVa7Z1NHg9XEKhtSvM= +github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= +github.com/influxdata/influxdb v1.7.6/go.mod h1:qZna6X/4elxqT3yI9iZYdZrWWdeFOOprn86kgg4+IzY= +github.com/jacobsa/crypto v0.0.0-20190317225127-9f44e2d11115 h1:YuDUUFNM21CAbyPOpOP8BicaTD/0klJEKt5p8yuw+uY= +github.com/jacobsa/crypto v0.0.0-20190317225127-9f44e2d11115/go.mod h1:LadVJg0XuawGk+8L1rYnIED8451UyNxEMdTWCEt5kmU= +github.com/jacobsa/oglematchers v0.0.0-20150720000706-141901ea67cd h1:9GCSedGjMcLZCrusBZuo4tyKLpKUPenUUqi34AkuFmA= +github.com/jacobsa/oglematchers v0.0.0-20150720000706-141901ea67cd/go.mod h1:TlmyIZDpGmwRoTWiakdr+HA1Tukze6C6XbRVidYq02M= +github.com/jacobsa/oglemock v0.0.0-20150831005832-e94d794d06ff h1:2xRHTvkpJ5zJmglXLRqHiZQNjUoOkhUyhTAhEQvPAWw= +github.com/jacobsa/oglemock v0.0.0-20150831005832-e94d794d06ff/go.mod h1:gJWba/XXGl0UoOmBQKRWCJdHrr3nE0T65t6ioaj3mLI= +github.com/jacobsa/ogletest v0.0.0-20170503003838-80d50a735a11 h1:BMb8s3ENQLt5ulwVIHVDWFHp8eIXmbfSExkvdn9qMXI= +github.com/jacobsa/ogletest v0.0.0-20170503003838-80d50a735a11/go.mod h1:+DBdDyfoO2McrOyDemRBq0q9CMEByef7sYl7JH5Q3BI= +github.com/jacobsa/reqtrace v0.0.0-20150505043853-245c9e0234cb h1:uSWBjJdMf47kQlXMwWEfmc864bA1wAC+Kl3ApryuG9Y= +github.com/jacobsa/reqtrace v0.0.0-20150505043853-245c9e0234cb/go.mod h1:ivcmUvxXWjb27NsPEaiYK7AidlZXS7oQ5PowUS9z3I4= +github.com/jtolds/gls v4.20.0+incompatible h1:xdiiI2gbIgH/gLH7ADydsJ1uDOEzR8yvV7C0MuV77Wo= +github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= +github.com/juju/ratelimit v1.0.1 h1:+7AIFJVQ0EQgq/K9+0Krm7m530Du7tIz0METWzN0RgY= +github.com/juju/ratelimit v1.0.1/go.mod h1:qapgC/Gy+xNh9UxzV13HGGl/6UXNN+ct+vwSgWNm/qk= +github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= +github.com/kardianos/osext v0.0.0-20190222173326-2bc1f35cddc0 h1:iQTw/8FWTuc7uiaSepXwyf3o52HaUYcV+Tu66S3F5GA= +github.com/kardianos/osext v0.0.0-20190222173326-2bc1f35cddc0/go.mod h1:1NbS8ALrpOvjt0rHPNLyCIeMtbizbir8U//inJ+zuB8= +github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q= +github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= +github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= +github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515 h1:T+h1c/A9Gawja4Y9mFVWj2vyii2bbUNDw3kt9VxK2EY= +github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= +github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI= +github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= +github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= +github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE= +github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= +github.com/magiconair/properties v1.8.0 h1:LLgXmsheXeRoUOBOjtwPQCWIYqM/LU1ayDtDePerRcY= +github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= +github.com/mattn/go-colorable v0.1.1 h1:G1f5SKeVxmagw/IyvzvtZE4Gybcc4Tr1tf7I8z0XgOg= +github.com/mattn/go-colorable v0.1.1/go.mod h1:FuOcm+DKB9mbwrcAfNl7/TZVBZ6rcnceauSikq3lYCQ= +github.com/mattn/go-isatty v0.0.5/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= +github.com/mattn/go-isatty v0.0.7 h1:UvyT9uN+3r7yLEYSlJsbQGdsaB/a0DlgWP3pql6iwOc= +github.com/mattn/go-isatty v0.0.7/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= +github.com/mattn/go-runewidth v0.0.4 h1:2BvfKmzob6Bmd4YsL0zygOqfdFnK7GR4QL06Do4/p7Y= +github.com/mattn/go-runewidth v0.0.4/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/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y= +github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= +github.com/mitchellh/mapstructure v1.1.2 h1:fmNYVwqnSfB9mZU6OS2O6GsXM+wcskZDuKQzvN1EDeE= +github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= +github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= +github.com/mwitkow/go-grpc-middleware v1.0.0 h1:XraEe8LhUuB33YeV4NWfLh2KUZicskSZ2lMhVRnDvTQ= +github.com/mwitkow/go-grpc-middleware v1.0.0/go.mod h1:wqm8af53+/cILryTaG+dCJS6CsDMVZDxlKh6lSkF19U= +github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/ginkgo v1.8.0 h1:VkHVNpR4iVnU8XQR6DBm8BqYjN7CRzw+xKUbVVbbW9w= +github.com/onsi/ginkgo v1.8.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/gomega v1.5.0 h1:izbySO9zDPmjJ8rDjLvkA2zJHIo+HkYXHnf7eN7SSyo= +github.com/onsi/gomega v1.5.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= +github.com/pelletier/go-toml v1.2.0 h1:T5zMGML61Wp+FlcbWjRDT7yAxhJNAiPPLOFECq181zc= +github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= +github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pkg/errors v0.8.1 h1:iURUrRGxPUNPdy5/HRSm+Yj6okJ6UtLINN0Q9M4+h3I= +github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= +github.com/prometheus/client_golang v0.9.2 h1:awm861/B8OKDd2I/6o1dy3ra4BamzKhYOiGItCeZ740= +github.com/prometheus/client_golang v0.9.2/go.mod h1:OsXs2jCmiKlQ1lTBmv21f2mNfw4xf/QclQDMrYNZzcM= +github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= +github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90 h1:S/YWwWx/RA8rT8tKFRuGUZhuA90OyIBpPCXkcbwU8DE= +github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/prometheus/common v0.0.0-20181126121408-4724e9255275 h1:PnBWHBf+6L0jOqq0gIVUe6Yk0/QMZ640k6NvkxcBf+8= +github.com/prometheus/common v0.0.0-20181126121408-4724e9255275/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= +github.com/prometheus/common v0.4.0 h1:7etb9YClo3a6HjLzfl6rIQaU+FDfi0VSX39io3aQ+DM= +github.com/prometheus/common v0.4.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= +github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= +github.com/prometheus/procfs v0.0.0-20181204211112-1dc9a6cbc91a h1:9a8MnZMP0X2nLJdBg+pBmGgkJlSaKC2KaQmTCk1XDtE= +github.com/prometheus/procfs v0.0.0-20181204211112-1dc9a6cbc91a/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= +github.com/prometheus/procfs v0.0.0-20190507164030-5867b95ac084 h1:sofwID9zm4tzrgykg80hfFph1mryUeLRsUfoocVVmRY= +github.com/prometheus/procfs v0.0.0-20190507164030-5867b95ac084/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= +github.com/rcrowley/go-metrics v0.0.0-20181016184325-3113b8401b8a h1:9ZKAASQSHhDYGoxY8uLVpewe1GDZ2vu2Tr/vTdVAkFQ= +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/shirou/gopsutil v2.18.12+incompatible h1:1eaJvGomDnH74/5cF4CTmTbLHAriGFsTZppLXDX93OM= +github.com/shirou/gopsutil v2.18.12+incompatible/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA= +github.com/shirou/w32 v0.0.0-20160930032740-bb4de0191aa4 h1:udFKJ0aHUL60LboW/A+DfgoHVedieIzIXE8uylPue0U= +github.com/shirou/w32 v0.0.0-20160930032740-bb4de0191aa4/go.mod h1:qsXQc7+bwAM3Q1u/4XEfrquwF8Lw7D7y5cD8CuHnfIc= +github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= +github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMBDgk/93Q= +github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= +github.com/smartystreets/assertions v0.0.0-20190401211740-f487f9de1cd3 h1:hBSHahWMEgzwRyS6dRpxY0XyjZsHyQ61s084wo5PJe0= +github.com/smartystreets/assertions v0.0.0-20190401211740-f487f9de1cd3/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= +github.com/smartystreets/go-aws-auth v0.0.0-20180515143844-0c1422d1fdb9 h1:hp2CYQUINdZMHdvTdXtPOY2ainKl4IoMcpAXEf2xj3Q= +github.com/smartystreets/go-aws-auth v0.0.0-20180515143844-0c1422d1fdb9/go.mod h1:SnhjPscd9TpLiy1LpzGSKh3bXCfxxXuqd9xmQJy3slM= +github.com/smartystreets/goconvey v0.0.0-20190330032615-68dc04aab96a h1:pa8hGb/2YqsZKovtsgrwcDH1RZhVbTKCjLp47XpqCDs= +github.com/smartystreets/goconvey v0.0.0-20190330032615-68dc04aab96a/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= +github.com/smartystreets/gunit v0.0.0-20190426220047-d9c9211acd48 h1:0rwlrv91WdTeS4HtZDGmntuKOFdeeMWKootgyxTl9TA= +github.com/smartystreets/gunit v0.0.0-20190426220047-d9c9211acd48/go.mod h1:oqKsUQaUkJ2EU1ZzLQFJt1WUp9DDuj1CnZbp4DwPwL4= +github.com/spf13/afero v1.1.2 h1:m8/z1t7/fwjysjQRYbP0RD+bUIF/8tJwPdEZsI83ACI= +github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= +github.com/spf13/cast v1.3.0 h1:oget//CVOEoFewqQxwr0Ej5yjygnqGkvggSE/gB35Q8= +github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= +github.com/spf13/cobra v0.0.3 h1:ZlrZ4XsMRm04Fr5pSFxBgfND2EBVa1nLpiy1stUsX/8= +github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= +github.com/spf13/jwalterweatherman v1.0.0 h1:XHEdyB+EcvlqZamSM4ZOMGlc93t6AcsBEu9Gc1vn7yk= +github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= +github.com/spf13/pflag v1.0.3 h1:zPAT6CGy6wXeQ7NtTnaTerfKOsV6V6F8agHXFiazDkg= +github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= +github.com/spf13/viper v1.3.2 h1:VUFqw5KcqRf7i70GOzW7N+Q7+gxVBkSSqiXB12+JQ4M= +github.com/spf13/viper v1.3.2/go.mod h1:ZiWeW+zYFKm7srdB9IoDzzZXaJaI5eL9QjNiN/DMA2s= +github.com/streadway/amqp v0.0.0-20190404075320-75d898a42a94 h1:0ngsPmuP6XIjiFRNFYlvKwSr5zff2v+uPHaffZ6/M4k= +github.com/streadway/amqp v0.0.0-20190404075320-75d898a42a94/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw= +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 h1:TivCn/peBQ7UY8ooIcPgZFpTNSz0Q2U6UrFlUfqbe0Q= +github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= +github.com/tj/go-elastic v0.0.0-20171221160941-36157cbbebc2 h1:eGaGNxrtoZf/mBURsnNQKDR7u50Klgcf2eFDQEnc8Bc= +github.com/tj/go-elastic v0.0.0-20171221160941-36157cbbebc2/go.mod h1:WjeM0Oo1eNAjXGDx2yma7uG2XoyRZTq1uv3M/o7imD0= +github.com/ugorji/go/codec v0.0.0-20181204163529-d75b2dcb6bc8/go.mod h1:VFNgLljTbGfSG7qAOspJ7OScBnGdDN/yBr0sguwnwf0= +github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q= +golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20181203042331-505ab145d0a9/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2 h1:VklqNMn3ovrHsnt90PveolxSbWFaJdECFbxSq0Mqo2M= +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20190513172903-22d7a77e9e5f h1:R423Cnkcp5JABoeemiGEPlt9tHXFfw5kvc0yqlxRPWo= +golang.org/x/crypto v0.0.0-20190513172903-22d7a77e9e5f/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +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-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181201002055-351d144fa1fc/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181220203305-927f97764cc3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190514140710-3ec191127204 h1:4yG6GqBtw9C+UrLp6s2wtSniayy/Vd/3F7ffLE427XI= +golang.org/x/net v0.0.0-20190514140710-3ec191127204/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be h1:vEDujvNQGv4jgYKudGeI/+DAX4Jffq6hpD55MmoEvKs= +golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= +golang.org/x/oauth2 v0.0.0-20190402181905-9f3314589c9a h1:tImsplftrFpALCYumobsd0K86vlAs/eXGFms2txfJfA= +golang.org/x/oauth2 v0.0.0-20190402181905-9f3314589c9a/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-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181107165924-66b7b1311ac8/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181205085412-a5c9d58dba9a/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-20190516014833-cab07311ab81 h1:5Q88vZAfC0WB8T1GHRLttQaZdCNeQHM40n41gMUeFlI= +golang.org/x/sys v0.0.0-20190516014833-cab07311ab81/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190516110030-61b9204099cb h1:k07iPOt0d6nEnwXF+kHB+iEg+WSuKe/SOQuFM2QoD+E= +golang.org/x/sys v0.0.0-20190516110030-61b9204099cb/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.2 h1:tW2bmiBqwgJj/UpqtC8EpXEZVYOwU0yG4iWbprSVAcs= +golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= +golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= +golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= +google.golang.org/appengine v1.4.0 h1:/wp5JvzpHIxhs/dumFmF7BXTf3Z+dd4uXta4kVyO508= +google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= +google.golang.org/appengine v1.6.0 h1:Tfd7cKwKbFRsI8RMAD3oqqw7JPFRrvFlOsfbgVkjOOw= +google.golang.org/appengine v1.6.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-20190515210553-995ef27e003f h1:1ByLH6hSgeVhrIAQ+Y/J0kT6T3sROUx7eH9qY4UBQh4= +google.golang.org/genproto v0.0.0-20190515210553-995ef27e003f/go.mod h1:z3L6/3dTEVtUr6QSP8miRzeRqwQOioJ9I66odjN4I7s= +google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= +google.golang.org/grpc v1.20.1 h1:Hz2g2wirWK7H0qIIhGIqRGTuMwTE8HEKFnDZZ7lm9NU= +google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= +gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 h1:qIbj1fsPNlZgppZ+VLlY7N33q108Sa+fhmuc+sWQYwY= +gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/fsnotify.v1 v1.4.7 h1:xOHLXZwVvI9hhs+cLKq5+I5onOuwQLhQwiu63xxlHs4= +gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= +gopkg.in/redis.v5 v5.2.9 h1:MNZYOLPomQzZMfpN3ZtD1uyJ2IDonTTlxYiV/pEApiw= +gopkg.in/redis.v5 v5.2.9/go.mod h1:6gtv0/+A4iM08kdRfocWYB3bLX2tebpNtfKlFT6H4mY= +gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo= +gopkg.in/sourcemap.v1 v1.0.5 h1:inv58fC9f9J3TK2Y2R1NPntXEn3/wjWHkonhIUODNTI= +gopkg.in/sourcemap.v1 v1.0.5/go.mod h1:2RlvNNSMglmRrcvhfuzp4hQHwOtjxlbjX7UPY/GXb78= +gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ= +gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= +gopkg.in/yaml.v2 v2.0.0-20170812160011-eb3733d160e7/go.mod h1:JAlM8MvJe8wmxCU4Bli9HhUf9+ttbYbLASfIpnQbh74= +gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.2 h1:ZCJp+EgiOT7lHqUV2J862kp8Qj64Jo6az82+3Td9dZw= +gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= From 4f83a63f0673d2d8ab6df01d880c9a675fe82c54 Mon Sep 17 00:00:00 2001 From: Hylke Visser Date: Thu, 16 May 2019 13:23:42 +0200 Subject: [PATCH 10/17] Remove old vendor folder --- vendor/github.com/brocaar/lorawan/LICENSE | 22 - vendor/github.com/brocaar/lorawan/Makefile | 12 - vendor/github.com/brocaar/lorawan/README.md | 89 - .../github.com/brocaar/lorawan/band/band.go | 478 ----- .../brocaar/lorawan/band/band_as923.go | 149 -- .../brocaar/lorawan/band/band_au915_928.go | 252 --- .../brocaar/lorawan/band/band_cn470_510.go | 123 -- .../brocaar/lorawan/band/band_cn779_787.go | 101 - .../brocaar/lorawan/band/band_eu433.go | 101 - .../brocaar/lorawan/band/band_eu863_870.go | 101 - .../brocaar/lorawan/band/band_in_865_867.go | 106 -- .../brocaar/lorawan/band/band_kr920_923.go | 79 - .../brocaar/lorawan/band/band_ru864_870.go | 99 - .../brocaar/lorawan/band/band_us902_928.go | 256 --- .../github.com/brocaar/lorawan/band/errors.go | 8 - .../github.com/brocaar/lorawan/cid_string.go | 17 - vendor/github.com/brocaar/lorawan/doc.go | 74 - vendor/github.com/brocaar/lorawan/fhdr.go | 210 --- .../brocaar/lorawan/mac_commands.go | 741 -------- .../github.com/brocaar/lorawan/macpayload.go | 152 -- .../brocaar/lorawan/major_string.go | 16 - .../brocaar/lorawan/mtype_string.go | 16 - vendor/github.com/brocaar/lorawan/netid.go | 37 - vendor/github.com/brocaar/lorawan/payload.go | 287 --- .../github.com/brocaar/lorawan/phypayload.go | 592 ------ vendor/vendor.json | 1644 ----------------- 26 files changed, 5762 deletions(-) delete mode 100644 vendor/github.com/brocaar/lorawan/LICENSE delete mode 100644 vendor/github.com/brocaar/lorawan/Makefile delete mode 100644 vendor/github.com/brocaar/lorawan/README.md delete mode 100644 vendor/github.com/brocaar/lorawan/band/band.go delete mode 100644 vendor/github.com/brocaar/lorawan/band/band_as923.go delete mode 100644 vendor/github.com/brocaar/lorawan/band/band_au915_928.go delete mode 100644 vendor/github.com/brocaar/lorawan/band/band_cn470_510.go delete mode 100644 vendor/github.com/brocaar/lorawan/band/band_cn779_787.go delete mode 100644 vendor/github.com/brocaar/lorawan/band/band_eu433.go delete mode 100644 vendor/github.com/brocaar/lorawan/band/band_eu863_870.go delete mode 100644 vendor/github.com/brocaar/lorawan/band/band_in_865_867.go delete mode 100644 vendor/github.com/brocaar/lorawan/band/band_kr920_923.go delete mode 100644 vendor/github.com/brocaar/lorawan/band/band_ru864_870.go delete mode 100644 vendor/github.com/brocaar/lorawan/band/band_us902_928.go delete mode 100644 vendor/github.com/brocaar/lorawan/band/errors.go delete mode 100644 vendor/github.com/brocaar/lorawan/cid_string.go delete mode 100644 vendor/github.com/brocaar/lorawan/doc.go delete mode 100644 vendor/github.com/brocaar/lorawan/fhdr.go delete mode 100644 vendor/github.com/brocaar/lorawan/mac_commands.go delete mode 100644 vendor/github.com/brocaar/lorawan/macpayload.go delete mode 100644 vendor/github.com/brocaar/lorawan/major_string.go delete mode 100644 vendor/github.com/brocaar/lorawan/mtype_string.go delete mode 100644 vendor/github.com/brocaar/lorawan/netid.go delete mode 100644 vendor/github.com/brocaar/lorawan/payload.go delete mode 100644 vendor/github.com/brocaar/lorawan/phypayload.go delete mode 100644 vendor/vendor.json diff --git a/vendor/github.com/brocaar/lorawan/LICENSE b/vendor/github.com/brocaar/lorawan/LICENSE deleted file mode 100644 index 6b38cb0ac..000000000 --- a/vendor/github.com/brocaar/lorawan/LICENSE +++ /dev/null @@ -1,22 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2015 Orne Brocaar - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - diff --git a/vendor/github.com/brocaar/lorawan/Makefile b/vendor/github.com/brocaar/lorawan/Makefile deleted file mode 100644 index 400a19b10..000000000 --- a/vendor/github.com/brocaar/lorawan/Makefile +++ /dev/null @@ -1,12 +0,0 @@ -PKGS := $(shell go list ./... | grep -v /vendor/) - -lint: - @echo "Running linters" - @for pkg in $(PKGS) ; do \ - golint $$pkg ; \ - done - @go vet $(PKGS) - -test: lint - @echo "Running tests" - @go test -cover -v ./... diff --git a/vendor/github.com/brocaar/lorawan/README.md b/vendor/github.com/brocaar/lorawan/README.md deleted file mode 100644 index fbc5d5c9e..000000000 --- a/vendor/github.com/brocaar/lorawan/README.md +++ /dev/null @@ -1,89 +0,0 @@ -# LoRaWAN (Go) - -[![Build Status](https://travis-ci.org/brocaar/lorawan.svg?branch=master)](https://travis-ci.org/brocaar/lorawan) -[![GoDoc](https://godoc.org/github.com/brocaar/lorawan?status.svg)](https://godoc.org/github.com/brocaar/lorawan) - -Package lorawan provides structures and tools to read and write LoraWAN -messages from and to a slice of bytes. - -The following structures are implemented (+ fields): - - * PHYPayload (MHDR | MACPayload | MIC) - * MACPayload (FHDR | FPort | FRMPayload) - * FHDR (DevAddr | FCtrl | FCnt | FOpts) - -The Following message types (MType) are implemented: - - * JoinRequest - * JoinAccept - * UnconfirmedDataUp - * UnconfirmedDataDown - * ConfirmedDataUp - * ConfirmedDataDown - * Proprietary (todo: add pluggable function for MIC calculation / validation) - -The following MAC commands (and their optional payloads) are implemented: - - * LinkCheckReq - * LinkCheckAns - * LinkADRReq - * LinkADRAns - * DutyCycleReq - * DutyCycleAns - * RXParamSetupReq - * RXParamSetupAns - * DevStatusReq - * DevStatusAns - * NewChannelReq - * NewChannelAns - * RXTimingSetupReq - * RXTimingSetupAns - * Proprietary commands (0x80 - 0xFF) can be registered with RegisterProprietaryMACCommand - -Support for calculating and setting the MIC is done by calling SetMIC(): - - err := phyPayload.SetMIC(key) - -Validating the MIC is done by calling ValidateMIC(): - - valid, err := phyPayload.ValidateMIC(key) - -Encryption and decryption of the MACPayload (for join-accept) is done by -calling EncryptJoinAcceptPayload() and DecryptJoinAcceptPayload(). Note that you need to -call SetMIC BEFORE encryption. - - err := phyPayload.EncryptJoinAcceptPayload(key) - err := phyPayload.DecryptJoinAcceptPayload(key) - -Encryption and decryption of the FRMPayload is done by calling -EncryptFRMPayload() and DecryptFRMPayload(). After encryption (and thus -before decryption), the bytes are stored in the DataPayload struct. - - err := phyPayload.EncryptFRMPayload(key) - err := phyPayload.DecryptFRMPayload(key) - -All payloads implement the Payload interface. Based on the MIC value, you -should be able to know to which type to cast the Payload value, so you will -be able to access its fields. - -See the examples section of the documentation for more usage examples -of this package. - -When using this package, knowledge about the LoRaWAN specification is needed. -You can request the LoRaWAN specification here: -https://www.lora-alliance.org/For-Developers/LoRaWANDevelopers - -## ISM band configuration - -The LoRaWAN specification defines various region specific defaults and -configuration. These can be found in the ``band`` sub-package. - -## Documentation - -See https://godoc.org/github.com/brocaar/lorawan. There is also an examples -section with usage examples. - -## License - -This package is distributed under the MIT license which can be found in ``LICENSE``. -LoRaWAN is a trademark of the LoRa Alliance Inc. (https://www.lora-alliance.org/). diff --git a/vendor/github.com/brocaar/lorawan/band/band.go b/vendor/github.com/brocaar/lorawan/band/band.go deleted file mode 100644 index 49b11d887..000000000 --- a/vendor/github.com/brocaar/lorawan/band/band.go +++ /dev/null @@ -1,478 +0,0 @@ -// Package band provides band specific defaults and configuration for -// downlink communication with end-nodes. -package band - -import ( - "errors" - "fmt" - "sort" - "time" - - "github.com/brocaar/lorawan" -) - -// Name defines the band-name type. -type Name string - -// Available ISM bands. -const ( - AS_923 Name = "AS_923" - AU_915_928 Name = "AU_915_928" - CN_470_510 Name = "CN_470_510" - CN_779_787 Name = "CN_779_787" - EU_433 Name = "EU_433" - EU_863_870 Name = "EU_863_870" - IN_865_867 Name = "IN_865_867" - KR_920_923 Name = "KR_920_923" - RU_864_870 Name = "RU_864_870" - US_902_928 Name = "US_902_928" -) - -// Modulation defines the modulation type. -type Modulation string - -// Possible modulation types. -const ( - LoRaModulation Modulation = "LORA" - FSKModulation Modulation = "FSK" -) - -// DataRate defines a data rate -type DataRate struct { - Modulation Modulation `json:"modulation"` - SpreadFactor int `json:"spreadFactor,omitempty"` // used for LoRa - Bandwidth int `json:"bandwidth,omitempty"` // in kHz, used for LoRa - BitRate int `json:"bitRate,omitempty"` // bits per second, used for FSK -} - -// MaxPayloadSize defines the max payload size -type MaxPayloadSize struct { - M int // The maximum MACPayload size length - N int // The maximum application payload length in the absence of the optional FOpt control field -} - -// Channel defines the channel structure -type Channel struct { - Frequency int // frequency in Hz - DataRates []int // each int mapping to an index in DataRateConfiguration - userConfigured bool // user-configured channel - deactivated bool // used to deactivate on or multiple channels (e.g. for US ISM band) -} - -// Band defines an region specific ISM band implementation for LoRa. -type Band struct { - // dwellTime defines if dwell time limitation should be taken into account - dwellTime lorawan.DwellTime - - // rx1DataRate defines the RX1 data-rate given the uplink data-rate - // and a RX1DROffset value. These values are retrievable by using - // the GetRX1DataRate method. - rx1DataRate [][]int - - // DefaultTXPower defines the default radiated transmit output power - DefaultTXPower int - - // ImplementsCFlist defines if the band implements the optional channel - // frequency list. - ImplementsCFlist bool - - // RX2Frequency defines the fixed frequency for the RX2 receive window - RX2Frequency int - - // RX2DataRate defines the fixed data-rate for the RX2 receive window - RX2DataRate int - - // MaxFcntGap defines the MAC_FCNT_GAP default value. - MaxFCntGap uint32 - - // ADRACKLimit defines the ADR_ACK_LIMIT default value. - ADRACKLimit int - - // ADRACKDelay defines the ADR_ACK_DELAY default value. - ADRACKDelay int - - // ReceiveDelay1 defines the RECEIVE_DELAY1 default value. - ReceiveDelay1 time.Duration - - // ReceiveDelay2 defines the RECEIVE_DELAY2 default value. - ReceiveDelay2 time.Duration - - // JoinAcceptDelay1 defines the JOIN_ACCEPT_DELAY1 default value. - JoinAcceptDelay1 time.Duration - - // JoinAcceptDelay2 defines the JOIN_ACCEPT_DELAY2 default value. - JoinAcceptDelay2 time.Duration - - // ACKTimeoutMin defines the ACK_TIMEOUT min. default value. - ACKTimeoutMin time.Duration - - // ACKTimeoutMax defines the ACK_TIMEOUT max. default value. - ACKTimeoutMax time.Duration - - // DataRates defines the available data rates. - DataRates []DataRate - - // MaxPayloadSize defines the maximum payload size, per data-rate. - MaxPayloadSize []MaxPayloadSize - - // TXPower defines the TX power configuration. - TXPower []int - - // UplinkChannels defines the list of (default) configured uplink channels. - UplinkChannels []Channel - - // DownlinkChannels defines the list of (default) configured downlink - // channels. - DownlinkChannels []Channel - - // getRX1ChannelFunc implements a function which returns the RX1 channel - // based on the uplink / TX channel. - getRX1ChannelFunc func(txChannel int) int - - // getRX1FrequencyFunc implements a function which returns the RX1 frequency - // given the uplink frequency. - getRX1FrequencyFunc func(band *Band, txFrequency int) (int, error) - - // getRX1DataRateFunc implements a function which returns the RX1 data-rate - // given the uplink data-rate and data-rate offset. - getRX1DataRateFunc func(band *Band, uplinkDR, rx1DROffset int) (int, error) - - // getLinkADRReqPayloadsForEnabledChannelsFunc implements a band-specific - // function which returns the LinkADRReqPayload items needed to activate - // the used channels on the node. - // In case this is set GetLinkADRReqPayloadsForEnabledChannels will - // use both the "naive" algorithm and the algorithm used in this function. - // The smallest result is then returned. - // In case this function is left blank, only the "naive" algorithm is used. - getLinkADRReqPayloadsForEnabledChannelsFunc func(band *Band, nodeChannels []int) []lorawan.LinkADRReqPayload - - // getEnabledChannelsForLinkADRReqPayloadsFunc implements a band-specific - // function (taking ChMaskCntl values with band-specific meaning into - // account). - getEnabledChannelsForLinkADRReqPayloadsFunc func(band *Band, nodeChannels []int, pls []lorawan.LinkADRReqPayload) ([]int, error) -} - -// GetRX1Channel returns the channel to use for RX1 given the channel used -// for uplink. -func (b *Band) GetRX1Channel(txChannel int) int { - return b.getRX1ChannelFunc(txChannel) -} - -// GetRX1Frequency returns the frequency to use for RX1 given the uplink -// frequency. -func (b *Band) GetRX1Frequency(txFrequency int) (int, error) { - return b.getRX1FrequencyFunc(b, txFrequency) -} - -// GetRX1DataRate returns the RX1 data-rate given the uplink data-rate and -// RX1 data-rate offset. -func (b *Band) GetRX1DataRate(uplinkDR, rx1DROffset int) (int, error) { - // use the lookup table when no function has been defined - if b.getRX1DataRateFunc == nil { - if uplinkDR > len(b.rx1DataRate)-1 { - return 0, errors.New("lorawan/band: invalid data-rate") - } - if rx1DROffset > len(b.rx1DataRate[uplinkDR])-1 { - return 0, errors.New("lorawan/band: invalid data-rate offset") - } - return b.rx1DataRate[uplinkDR][rx1DROffset], nil - } - return b.getRX1DataRateFunc(b, uplinkDR, rx1DROffset) -} - -// GetUplinkChannelNumber returns the channel number given a frequency. -func (b *Band) GetUplinkChannelNumber(frequency int) (int, error) { - for chanNum, channel := range b.UplinkChannels { - if frequency == channel.Frequency { - return chanNum, nil - } - } - - return 0, fmt.Errorf("lorawan/band: unknown channel for frequency: %d", frequency) -} - -// GetDataRate returns the index of the given DataRate. -func (b *Band) GetDataRate(dr DataRate) (int, error) { - for i, d := range b.DataRates { - if d == dr { - return i, nil - } - } - return 0, errors.New("lorawan/band: the given data-rate does not exist") -} - -// AddChannel adds an extra (user-configured) channel to the channels. -// The DataRates wil be set to DR 0-5. -// Note: this is only allowed when the band supports a CFList. -func (b *Band) AddChannel(freq int) error { - if !b.ImplementsCFlist { - return errors.New("lorawan/band: band does not implement CFList") - } - - c := Channel{ - Frequency: freq, - DataRates: []int{0, 1, 2, 3, 4, 5}, - userConfigured: true, - deactivated: freq == 0, - } - - b.UplinkChannels = append(b.UplinkChannels, c) - b.DownlinkChannels = append(b.DownlinkChannels, c) - - return nil -} - -// GetCFList returns the CFList used for OTAA activation, or returns nil if -// the band does not implement the CFList or when there are no extra channels. -// Note that this only returns the first 5 extra channels. -func (b *Band) GetCFList() *lorawan.CFList { - if !b.ImplementsCFlist { - return nil - } - - var cFList lorawan.CFList - var i int - for _, c := range b.UplinkChannels { - if c.userConfigured && i < len(cFList) { - cFList[i] = uint32(c.Frequency) - i++ - } - } - - if cFList[0] == 0 { - return nil - } - return &cFList -} - -// DisableUplinkChannel disables the given uplink channel. -func (b *Band) DisableUplinkChannel(i int) error { - if i > len(b.UplinkChannels)-1 { - return ErrChannelDoesNotExist - } - - b.UplinkChannels[i].deactivated = true - return nil -} - -// EnableUplinkChannel enables the given uplink channel. -func (b *Band) EnableUplinkChannel(i int) error { - if i > len(b.UplinkChannels)-1 { - return ErrChannelDoesNotExist - } - - b.UplinkChannels[i].deactivated = false - return nil -} - -// GetUplinkChannels returns all available uplink channels. -func (b *Band) GetUplinkChannels() []int { - var out []int - for i := range b.UplinkChannels { - out = append(out, i) - } - return out -} - -// GetEnabledUplinkChannels returns the enabled uplink channels. -func (b *Band) GetEnabledUplinkChannels() []int { - var out []int - for i, c := range b.UplinkChannels { - if !c.deactivated { - out = append(out, i) - } - } - return out -} - -// GetDisabledUplinkChannels returns the disabled uplink channels. -func (b *Band) GetDisabledUplinkChannels() []int { - var out []int - for i, c := range b.UplinkChannels { - if c.deactivated { - out = append(out, i) - } - } - return out -} - -// GetLinkADRReqPayloadsForEnabledChannels returns the LinkADRReqPayloads to -// reconfigure the node to the current active channels. Note that in case of -// activation, user-defined channels (e.g. CFList) will be ignored as it -// is unknown if the node is aware about these extra frequencies. -func (b *Band) GetLinkADRReqPayloadsForEnabledChannels(nodeChannels []int) []lorawan.LinkADRReqPayload { - enabledChannels := b.GetEnabledUplinkChannels() - - diff := intSliceDiff(nodeChannels, enabledChannels) - var filteredDiff []int - - for _, c := range diff { - if channelIsActive(nodeChannels, c) || !b.UplinkChannels[c].userConfigured { - filteredDiff = append(filteredDiff, c) - } - } - - // nothing to do - if len(diff) == 0 || len(filteredDiff) == 0 { - return nil - } - - // make sure we're dealing with a sorted slice - sort.Ints(diff) - - var payloads []lorawan.LinkADRReqPayload - chMaskCntl := -1 - - // loop over the channel blocks that contain different channels - // note that each payload holds 16 channels and that the chMaskCntl - // defines the block - for _, c := range diff { - if c/16 != chMaskCntl { - chMaskCntl = c / 16 - pl := lorawan.LinkADRReqPayload{ - Redundancy: lorawan.Redundancy{ - ChMaskCntl: uint8(chMaskCntl), - }, - } - - // set enabled channels in this block to active - // note that we don't enable user defined channels (CFList) as - // we have no knowledge if the nodes has been provisioned with - // these frequencies - for _, ec := range enabledChannels { - if (!b.UplinkChannels[ec].userConfigured || channelIsActive(nodeChannels, ec)) && ec >= chMaskCntl*16 && ec < (chMaskCntl+1)*16 { - pl.ChMask[ec%16] = true - } - } - - payloads = append(payloads, pl) - } - } - - // some bands contain band specific logic regarding turning on / off - // channels that might require less commands (using band specific - // ChMaskCntl values) - if b.getLinkADRReqPayloadsForEnabledChannelsFunc != nil { - payloadsB := b.getLinkADRReqPayloadsForEnabledChannelsFunc(b, nodeChannels) - if len(payloadsB) < len(payloads) { - return payloadsB - } - } - - return payloads -} - -// GetEnabledChannelsForLinkADRReqPaylaods returns the enabled after which the -// given LinkADRReqPayloads have been applied to the given node channels. -func (b *Band) GetEnabledChannelsForLinkADRReqPayloads(nodeChannels []int, pls []lorawan.LinkADRReqPayload) ([]int, error) { - // for some bands some the ChMaskCntl values have special meanings - if b.getEnabledChannelsForLinkADRReqPayloadsFunc != nil { - return b.getEnabledChannelsForLinkADRReqPayloadsFunc(b, nodeChannels, pls) - } - - chMask := make([]bool, len(b.UplinkChannels)) - for _, c := range nodeChannels { - // make sure that we don't exceed the chMask length. in case we exceed - // we ignore the channel as it might have been removed from the network - if c < len(chMask) { - chMask[c] = true - } - } - - for _, pl := range pls { - for i, enabled := range pl.ChMask { - if int(pl.Redundancy.ChMaskCntl*16)+i >= len(chMask) && !enabled { - continue - } - - if int(pl.Redundancy.ChMaskCntl*16)+i >= len(chMask) { - return nil, ErrChannelDoesNotExist - } - - chMask[int(pl.Redundancy.ChMaskCntl*16)+i] = enabled - } - } - - // turn the chMask into a slice of enabled channel numbers - var out []int - for i, enabled := range chMask { - if enabled { - out = append(out, i) - } - } - - return out, nil -} - -// intSliceDiff returns all items of x that are not in y and all items of -// y that are not in x. -func intSliceDiff(x, y []int) []int { - var out []int - - for _, cX := range x { - found := false - for _, cY := range y { - if cX == cY { - found = true - break - } - } - if !found { - out = append(out, cX) - } - } - - for _, cY := range y { - found := false - for _, cX := range x { - if cY == cX { - found = true - break - } - } - if !found { - out = append(out, cY) - } - } - - return out -} - -func channelIsActive(channels []int, i int) bool { - for _, c := range channels { - if i == c { - return true - } - } - return false -} - -// GetConfig returns the band configuration for the given band. -// Please refer to the LoRaWAN specification for more details about the effect -// of the repeater and dwell time arguments. -func GetConfig(name Name, repeaterCompatible bool, dt lorawan.DwellTime) (Band, error) { - switch name { - case AS_923: - return newAS923Band(repeaterCompatible, dt) - case AU_915_928: - return newAU915Band(repeaterCompatible) - case CN_470_510: - return newCN470Band() - case CN_779_787: - return newCN779Band(repeaterCompatible) - case EU_433: - return newEU433Band(repeaterCompatible) - case EU_863_870: - return newEU863Band(repeaterCompatible) - case IN_865_867: - return newIN865Band(repeaterCompatible) - case KR_920_923: - return newKR920Band() - case RU_864_870: - return newRU864Band(repeaterCompatible) - case US_902_928: - return newUS902Band(repeaterCompatible) - default: - return Band{}, fmt.Errorf("lorawan/band: band %s is undefined", name) - } -} diff --git a/vendor/github.com/brocaar/lorawan/band/band_as923.go b/vendor/github.com/brocaar/lorawan/band/band_as923.go deleted file mode 100644 index b7e1da83f..000000000 --- a/vendor/github.com/brocaar/lorawan/band/band_as923.go +++ /dev/null @@ -1,149 +0,0 @@ -package band - -import ( - "fmt" - "time" - - "github.com/brocaar/lorawan" -) - -func newAS923Band(repeaterCompatible bool, dt lorawan.DwellTime) (Band, error) { - var maxPayloadSize []MaxPayloadSize - - if dt == lorawan.DwellTime400ms { - if repeaterCompatible { - maxPayloadSize = []MaxPayloadSize{ - {M: 0, N: 0}, - {M: 0, N: 0}, - {M: 19, N: 11}, - {M: 61, N: 53}, - {M: 134, N: 126}, - {M: 250, N: 242}, - {M: 250, N: 242}, - {M: 250, N: 242}, - } - } else { - maxPayloadSize = []MaxPayloadSize{ - {M: 0, N: 0}, - {M: 0, N: 0}, - {M: 19, N: 11}, - {M: 61, N: 53}, - {M: 134, N: 126}, - {M: 250, N: 242}, - {M: 250, N: 242}, - {M: 250, N: 242}, - } - } - } else { - if repeaterCompatible { - maxPayloadSize = []MaxPayloadSize{ - {M: 59, N: 51}, - {M: 59, N: 51}, - {M: 59, N: 51}, - {M: 123, N: 115}, - {M: 230, N: 222}, - {M: 230, N: 222}, - {M: 230, N: 222}, - {M: 230, N: 222}, - } - } else { - maxPayloadSize = []MaxPayloadSize{ - {M: 59, N: 51}, - {M: 59, N: 51}, - {M: 59, N: 51}, - {M: 123, N: 115}, - {M: 250, N: 242}, - {M: 250, N: 242}, - {M: 250, N: 242}, - {M: 250, N: 242}, - } - } - } - - return Band{ - dwellTime: dt, - - DefaultTXPower: 14, - ImplementsCFlist: true, - RX2Frequency: 923200000, - RX2DataRate: 2, - - MaxFCntGap: 16384, - ADRACKLimit: 64, - ADRACKDelay: 32, - ReceiveDelay1: time.Second, - ReceiveDelay2: time.Second * 2, - JoinAcceptDelay1: time.Second * 5, - JoinAcceptDelay2: time.Second * 6, - ACKTimeoutMin: time.Second, - ACKTimeoutMax: time.Second * 3, - - DataRates: []DataRate{ - {Modulation: LoRaModulation, SpreadFactor: 12, Bandwidth: 125}, - {Modulation: LoRaModulation, SpreadFactor: 11, Bandwidth: 125}, - {Modulation: LoRaModulation, SpreadFactor: 10, Bandwidth: 125}, - {Modulation: LoRaModulation, SpreadFactor: 9, Bandwidth: 125}, - {Modulation: LoRaModulation, SpreadFactor: 8, Bandwidth: 125}, - {Modulation: LoRaModulation, SpreadFactor: 7, Bandwidth: 125}, - {Modulation: LoRaModulation, SpreadFactor: 7, Bandwidth: 250}, - {Modulation: FSKModulation, BitRate: 50000}, - }, - - MaxPayloadSize: maxPayloadSize, - - TXPower: []int{ - 14, - 14 - 2, - 14 - 4, - 14 - 6, - 14 - 8, - 14 - 10, - }, - - UplinkChannels: []Channel{ - {Frequency: 923200000, DataRates: []int{0, 1, 2, 3, 4, 5}}, - {Frequency: 923400000, DataRates: []int{0, 1, 2, 3, 4, 5}}, - }, - - DownlinkChannels: []Channel{ - {Frequency: 923200000, DataRates: []int{0, 1, 2, 3, 4, 5}}, - {Frequency: 923400000, DataRates: []int{0, 1, 2, 3, 4, 5}}, - }, - - getRX1DataRateFunc: func(band *Band, uplinkDR, rx1DROffset int) (int, error) { - if rx1DROffset < 0 || rx1DROffset > 7 { - return 0, fmt.Errorf("lorawan/band: invalid RX1 data-rate offset: %d", rx1DROffset) - } - - if uplinkDR < 0 || uplinkDR > 7 { - return 0, fmt.Errorf("lorawan/band: invalid uplink data-rate: %d", uplinkDR) - } - - minDR := 0 - if band.dwellTime == lorawan.DwellTime400ms { - minDR = 2 - } - - effectiveRX1DROffset := []int{0, 1, 2, 3, 4, 5, -1, -2}[rx1DROffset] - dr := uplinkDR - effectiveRX1DROffset - - if dr < minDR { - dr = minDR - } - - if dr > 5 { - dr = 5 - } - - return dr, nil - }, - - getRX1ChannelFunc: func(txChannel int) int { - return txChannel - }, - - getRX1FrequencyFunc: func(b *Band, txFrequency int) (int, error) { - return txFrequency, nil - }, - }, nil -} diff --git a/vendor/github.com/brocaar/lorawan/band/band_au915_928.go b/vendor/github.com/brocaar/lorawan/band/band_au915_928.go deleted file mode 100644 index cd149b7e0..000000000 --- a/vendor/github.com/brocaar/lorawan/band/band_au915_928.go +++ /dev/null @@ -1,252 +0,0 @@ -package band - -import ( - "sort" - "time" - - "github.com/brocaar/lorawan" -) - -func newAU915Band(repeaterCompatible bool) (Band, error) { - var maxPayloadSize []MaxPayloadSize - - if repeaterCompatible { - maxPayloadSize = []MaxPayloadSize{ - {M: 59, N: 51}, - {M: 59, N: 51}, - {M: 59, N: 51}, - {M: 123, N: 115}, - {M: 230, N: 222}, - {M: 230, N: 222}, - {M: 230, N: 222}, - {}, // Not defined - {M: 41, N: 33}, - {M: 117, N: 109}, - {M: 230, N: 222}, - {M: 230, N: 222}, - {M: 230, N: 222}, - {M: 230, N: 222}, - {}, // Not defined - {}, // Not defined - } - } else { - maxPayloadSize = []MaxPayloadSize{ - {M: 59, N: 51}, - {M: 59, N: 51}, - {M: 59, N: 51}, - {M: 123, N: 115}, - {M: 250, N: 242}, - {M: 250, N: 242}, - {M: 250, N: 242}, - {}, // Not defined - {M: 61, N: 53}, - {M: 137, N: 129}, - {M: 250, N: 242}, - {M: 250, N: 242}, - {M: 250, N: 242}, - {M: 250, N: 242}, - {}, // Not defined - {}, // Not defined - } - } - - band := Band{ - DefaultTXPower: 20, - ImplementsCFlist: false, - RX2Frequency: 923300000, - RX2DataRate: 8, - - MaxFCntGap: 16384, - ADRACKLimit: 64, - ADRACKDelay: 32, - ReceiveDelay1: time.Second, - ReceiveDelay2: time.Second * 2, - JoinAcceptDelay1: time.Second * 5, - JoinAcceptDelay2: time.Second * 6, - ACKTimeoutMin: time.Second, - ACKTimeoutMax: time.Second * 3, - - DataRates: []DataRate{ - {Modulation: LoRaModulation, SpreadFactor: 12, Bandwidth: 125}, //0 - {Modulation: LoRaModulation, SpreadFactor: 11, Bandwidth: 125}, //1 - {Modulation: LoRaModulation, SpreadFactor: 10, Bandwidth: 125}, //2 - {Modulation: LoRaModulation, SpreadFactor: 9, Bandwidth: 125}, //3 - {Modulation: LoRaModulation, SpreadFactor: 8, Bandwidth: 125}, //4 - {Modulation: LoRaModulation, SpreadFactor: 7, Bandwidth: 125}, //5 - {Modulation: LoRaModulation, SpreadFactor: 8, Bandwidth: 500}, //6 - {}, // RFU - {Modulation: LoRaModulation, SpreadFactor: 12, Bandwidth: 500}, //8 - {Modulation: LoRaModulation, SpreadFactor: 11, Bandwidth: 500}, //9 - {Modulation: LoRaModulation, SpreadFactor: 10, Bandwidth: 500}, //10 - {Modulation: LoRaModulation, SpreadFactor: 9, Bandwidth: 500}, //11 - {Modulation: LoRaModulation, SpreadFactor: 8, Bandwidth: 500}, //12 - {Modulation: LoRaModulation, SpreadFactor: 7, Bandwidth: 500}, //13 - {}, // RFU - {}, // RFU - }, - - MaxPayloadSize: maxPayloadSize, - - rx1DataRate: [][]int{ - {8, 8, 8, 8, 8, 8}, - {9, 8, 8, 8, 8, 8}, - {10, 9, 8, 8, 8, 8}, - {11, 10, 9, 8, 8, 8}, - {12, 11, 10, 9, 8, 8}, - {13, 12, 11, 10, 9, 8}, - {13, 13, 12, 11, 10, 9}, - }, - - TXPower: []int{ - 30, // 0 - 28, // 1 - 26, // 2 - 24, // 3 - 22, // 4 - 20, // 5 - 18, // 6 - 16, // 7 - 14, // 8 - 12, // 9 - 10, // 10 - 0, // RFU - 0, - 0, - 0, - 0, - }, - - UplinkChannels: make([]Channel, 72), - DownlinkChannels: make([]Channel, 8), - - getRX1ChannelFunc: func(txChannel int) int { - return txChannel % 8 - }, - - getRX1FrequencyFunc: func(b *Band, txFrequency int) (int, error) { - uplinkChan, err := b.GetUplinkChannelNumber(txFrequency) - if err != nil { - return 0, err - } - - rx1Chan := b.GetRX1Channel(uplinkChan) - return b.DownlinkChannels[rx1Chan].Frequency, nil - }, - - getLinkADRReqPayloadsForEnabledChannelsFunc: func(b *Band, nodeChannels []int) []lorawan.LinkADRReqPayload { - enabledChannels := b.GetEnabledUplinkChannels() - sort.Ints(enabledChannels) - - out := []lorawan.LinkADRReqPayload{ - {Redundancy: lorawan.Redundancy{ChMaskCntl: 7}}, // All 125 kHz OFF ChMask applies to channels 64 to 71 - } - - chMaskCntl := -1 - - for _, c := range enabledChannels { - // use the ChMask of the first LinkADRReqPayload, besides - // turning off all 125 kHz this payload contains the ChMask - // for the last block of channels. - if c >= 64 { - out[0].ChMask[c%16] = true - continue - } - - if c/16 != chMaskCntl { - chMaskCntl = c / 16 - pl := lorawan.LinkADRReqPayload{ - Redundancy: lorawan.Redundancy{ - ChMaskCntl: uint8(chMaskCntl), - }, - } - - // set the channel mask for this block - for _, ec := range enabledChannels { - if ec >= chMaskCntl*16 && ec < (chMaskCntl+1)*16 { - pl.ChMask[ec%16] = true - } - } - - out = append(out, pl) - } - } - - return out - }, - - getEnabledChannelsForLinkADRReqPayloadsFunc: func(b *Band, nodeChannels []int, pls []lorawan.LinkADRReqPayload) ([]int, error) { - chMask := make([]bool, len(b.UplinkChannels)) - for _, c := range nodeChannels { - // make sure that we don't exceed the chMask length. in case we exceed - // we ignore the channel as it might have been removed from the network - if c < len(chMask) { - chMask[c] = true - } - } - - for _, pl := range pls { - if pl.Redundancy.ChMaskCntl == 6 || pl.Redundancy.ChMaskCntl == 7 { - for i := 0; i < 64; i++ { - if pl.Redundancy.ChMaskCntl == 6 { - chMask[i] = true - } else { - chMask[i] = false - } - } - - for i, cm := range pl.ChMask[0:8] { - chMask[64+i] = cm - } - } else { - for i, enabled := range pl.ChMask { - if int(pl.Redundancy.ChMaskCntl*16)+i >= len(chMask) && !enabled { - continue - } - - if int(pl.Redundancy.ChMaskCntl*16)+i >= len(chMask) { - return nil, ErrChannelDoesNotExist - } - - chMask[int(pl.Redundancy.ChMaskCntl*16)+i] = enabled - } - } - } - - // turn the chMask into a slice of enabled channel numbers - var out []int - for i, enabled := range chMask { - if enabled { - out = append(out, i) - } - } - - return out, nil - }, - } - - // initialize uplink channel 0 - 63 - for i := 0; i < 64; i++ { - band.UplinkChannels[i] = Channel{ - Frequency: 915200000 + (i * 200000), - DataRates: []int{0, 1, 2, 3}, - } - } - - // initialize uplink channel 64 - 71 - for i := 0; i < 8; i++ { - band.UplinkChannels[i+64] = Channel{ - Frequency: 915900000 + (i * 1600000), - DataRates: []int{4}, - } - } - - // initialize downlink channel 0 - 7 - for i := 0; i < 8; i++ { - band.DownlinkChannels[i] = Channel{ - Frequency: 923300000 + (i * 600000), - DataRates: []int{8, 9, 10, 11, 12, 13}, - } - } - - return band, nil -} diff --git a/vendor/github.com/brocaar/lorawan/band/band_cn470_510.go b/vendor/github.com/brocaar/lorawan/band/band_cn470_510.go deleted file mode 100644 index 0cdee30fb..000000000 --- a/vendor/github.com/brocaar/lorawan/band/band_cn470_510.go +++ /dev/null @@ -1,123 +0,0 @@ -package band - -import "time" - -func newCN470Band() (Band, error) { - band := Band{ - DefaultTXPower: 14, - ImplementsCFlist: false, - RX2Frequency: 505300000, - RX2DataRate: 0, - - MaxFCntGap: 16384, - ADRACKLimit: 64, - ADRACKDelay: 32, - ReceiveDelay1: time.Second, - ReceiveDelay2: time.Second * 2, - JoinAcceptDelay1: time.Second * 5, - JoinAcceptDelay2: time.Second * 6, - ACKTimeoutMin: time.Second, - ACKTimeoutMax: time.Second * 3, - - DataRates: []DataRate{ - {Modulation: LoRaModulation, SpreadFactor: 12, Bandwidth: 125}, - {Modulation: LoRaModulation, SpreadFactor: 11, Bandwidth: 125}, - {Modulation: LoRaModulation, SpreadFactor: 10, Bandwidth: 125}, - {Modulation: LoRaModulation, SpreadFactor: 9, Bandwidth: 125}, - {Modulation: LoRaModulation, SpreadFactor: 8, Bandwidth: 125}, - {Modulation: LoRaModulation, SpreadFactor: 7, Bandwidth: 125}, - {}, // RFU - {}, // RFU - {}, // RFU - {}, // RFU - {}, // RFU - {}, // RFU - {}, // RFU - {}, // RFU - {}, // RFU - {}, // RFU - }, - - MaxPayloadSize: []MaxPayloadSize{ - {M: 59, N: 51}, - {M: 59, N: 51}, - {M: 59, N: 51}, - {M: 123, N: 115}, - {M: 230, N: 222}, - {M: 230, N: 222}, - {}, // not defined - {}, // not defined - {}, // not defined - {}, // not defined - {}, // not defined - {}, // not defined - {}, // not defined - {}, // not defined - {}, // not defined - {}, // not defined - }, - - rx1DataRate: [][]int{ - {0, 0, 0, 0, 0, 0}, - {1, 0, 0, 0, 0, 0}, - {2, 1, 0, 0, 0, 0}, - {3, 2, 1, 0, 0, 0}, - {4, 3, 2, 1, 0, 0}, - {5, 4, 3, 2, 1, 0}, - }, - - TXPower: []int{ - 17, - 16, - 14, - 12, - 10, - 7, - 5, - 2, - 0, // rfu - 0, // rfu - 0, // rfu - 0, // rfu - 0, // rfu - 0, // rfu - 0, // rfu - 0, // rfu - }, - - UplinkChannels: make([]Channel, 96), - DownlinkChannels: make([]Channel, 48), - - getRX1ChannelFunc: func(txChannel int) int { - return txChannel % 48 - }, - - getRX1FrequencyFunc: func(b *Band, txFrequency int) (int, error) { - uplinkChan, err := b.GetUplinkChannelNumber(txFrequency) - if err != nil { - return 0, err - } - - rx1Chan := b.GetRX1Channel(uplinkChan) - return b.DownlinkChannels[rx1Chan].Frequency, nil - }, - } - - // initialize uplink channels - for i := 0; i < 96; i++ { - band.UplinkChannels[i] = Channel{ - Frequency: 470300000 + (i * 200000), - DataRates: []int{0, 1, 2, 3, 4, 5}, - } - } - - // initialize downlink channels - for i := 0; i < 48; i++ { - band.DownlinkChannels[i] = Channel{ - Frequency: 500300000 + (i * 200000), - DataRates: []int{0, 1, 2, 3, 4, 5}, - } - } - - return band, nil -} diff --git a/vendor/github.com/brocaar/lorawan/band/band_cn779_787.go b/vendor/github.com/brocaar/lorawan/band/band_cn779_787.go deleted file mode 100644 index d63d87857..000000000 --- a/vendor/github.com/brocaar/lorawan/band/band_cn779_787.go +++ /dev/null @@ -1,101 +0,0 @@ -package band - -import "time" - -func newCN779Band(repeaterCompatible bool) (Band, error) { - var maxPayloadSize []MaxPayloadSize - - if repeaterCompatible { - maxPayloadSize = []MaxPayloadSize{ - {M: 59, N: 51}, - {M: 59, N: 51}, - {M: 59, N: 51}, - {M: 123, N: 115}, - {M: 230, N: 222}, - {M: 230, N: 222}, - {M: 250, N: 242}, - {M: 230, N: 222}, - } - } else { - maxPayloadSize = []MaxPayloadSize{ - {M: 59, N: 51}, - {M: 59, N: 51}, - {M: 59, N: 51}, - {M: 123, N: 115}, - {M: 250, N: 242}, - {M: 250, N: 242}, - {M: 250, N: 242}, - {M: 250, N: 242}, - } - } - - return Band{ - DefaultTXPower: 10, - ImplementsCFlist: true, - RX2Frequency: 786000000, - RX2DataRate: 0, - - MaxFCntGap: 16384, - ADRACKLimit: 64, - ADRACKDelay: 32, - ReceiveDelay1: time.Second, - ReceiveDelay2: time.Second * 2, - JoinAcceptDelay1: time.Second * 5, - JoinAcceptDelay2: time.Second * 6, - ACKTimeoutMin: time.Second, - ACKTimeoutMax: time.Second * 3, - - DataRates: []DataRate{ - {Modulation: LoRaModulation, SpreadFactor: 12, Bandwidth: 125}, - {Modulation: LoRaModulation, SpreadFactor: 11, Bandwidth: 125}, - {Modulation: LoRaModulation, SpreadFactor: 10, Bandwidth: 125}, - {Modulation: LoRaModulation, SpreadFactor: 9, Bandwidth: 125}, - {Modulation: LoRaModulation, SpreadFactor: 8, Bandwidth: 125}, - {Modulation: LoRaModulation, SpreadFactor: 7, Bandwidth: 125}, - {Modulation: LoRaModulation, SpreadFactor: 7, Bandwidth: 250}, - {Modulation: FSKModulation, BitRate: 50000}, - }, - - MaxPayloadSize: maxPayloadSize, - - rx1DataRate: [][]int{ - {0, 0, 0, 0, 0, 0}, - {1, 0, 0, 0, 0, 0}, - {2, 1, 0, 0, 0, 0}, - {3, 2, 1, 0, 0, 0}, - {4, 3, 2, 1, 0, 0}, - {5, 4, 3, 2, 1, 0}, - {6, 5, 4, 3, 2, 1}, - {7, 6, 5, 4, 3, 2}, - }, - - TXPower: []int{ - 10, - 7, - 4, - 1, - -2, - -5, - }, - - UplinkChannels: []Channel{ - {Frequency: 779500000, DataRates: []int{0, 1, 2, 3, 4, 5}}, - {Frequency: 779700000, DataRates: []int{0, 1, 2, 3, 4, 5}}, - {Frequency: 779900000, DataRates: []int{0, 1, 2, 3, 4, 5}}, - }, - - DownlinkChannels: []Channel{ - {Frequency: 779500000, DataRates: []int{0, 1, 2, 3, 4, 5}}, - {Frequency: 779700000, DataRates: []int{0, 1, 2, 3, 4, 5}}, - {Frequency: 779900000, DataRates: []int{0, 1, 2, 3, 4, 5}}, - }, - - getRX1ChannelFunc: func(txChannel int) int { - return txChannel - }, - - getRX1FrequencyFunc: func(b *Band, txFrequency int) (int, error) { - return txFrequency, nil - }, - }, nil -} diff --git a/vendor/github.com/brocaar/lorawan/band/band_eu433.go b/vendor/github.com/brocaar/lorawan/band/band_eu433.go deleted file mode 100644 index 21f8076c6..000000000 --- a/vendor/github.com/brocaar/lorawan/band/band_eu433.go +++ /dev/null @@ -1,101 +0,0 @@ -package band - -import "time" - -func newEU433Band(repeaterCompatible bool) (Band, error) { - var maxPayloadSize []MaxPayloadSize - - if repeaterCompatible { - maxPayloadSize = []MaxPayloadSize{ - {M: 59, N: 51}, - {M: 59, N: 51}, - {M: 59, N: 51}, - {M: 123, N: 115}, - {M: 230, N: 222}, - {M: 230, N: 222}, - {M: 230, N: 222}, - {M: 230, N: 222}, - } - } else { - maxPayloadSize = []MaxPayloadSize{ - {M: 59, N: 51}, - {M: 59, N: 51}, - {M: 59, N: 51}, - {M: 123, N: 115}, - {M: 250, N: 242}, - {M: 250, N: 242}, - {M: 250, N: 242}, - {M: 250, N: 242}, - } - } - - return Band{ - DefaultTXPower: 10, - ImplementsCFlist: true, - RX2Frequency: 434665000, - RX2DataRate: 0, - - MaxFCntGap: 16384, - ADRACKLimit: 64, - ADRACKDelay: 32, - ReceiveDelay1: time.Second, - ReceiveDelay2: time.Second * 2, - JoinAcceptDelay1: time.Second * 5, - JoinAcceptDelay2: time.Second * 6, - ACKTimeoutMin: time.Second, - ACKTimeoutMax: time.Second * 3, - - DataRates: []DataRate{ - {Modulation: LoRaModulation, SpreadFactor: 12, Bandwidth: 125}, - {Modulation: LoRaModulation, SpreadFactor: 11, Bandwidth: 125}, - {Modulation: LoRaModulation, SpreadFactor: 10, Bandwidth: 125}, - {Modulation: LoRaModulation, SpreadFactor: 9, Bandwidth: 125}, - {Modulation: LoRaModulation, SpreadFactor: 8, Bandwidth: 125}, - {Modulation: LoRaModulation, SpreadFactor: 7, Bandwidth: 125}, - {Modulation: LoRaModulation, SpreadFactor: 7, Bandwidth: 250}, - {Modulation: FSKModulation, BitRate: 50000}, - }, - - MaxPayloadSize: maxPayloadSize, - - rx1DataRate: [][]int{ - {0, 0, 0, 0, 0, 0}, - {1, 0, 0, 0, 0, 0}, - {2, 1, 0, 0, 0, 0}, - {3, 2, 1, 0, 0, 0}, - {4, 3, 2, 1, 0, 0}, - {5, 4, 3, 2, 1, 0}, - {6, 5, 4, 3, 2, 1}, - {7, 6, 5, 4, 3, 2}, - }, - - TXPower: []int{ - 10, - 7, - 4, - 1, - -2, - -5, - }, - - UplinkChannels: []Channel{ - {Frequency: 433175000, DataRates: []int{0, 1, 2, 3, 4, 5}}, - {Frequency: 433375000, DataRates: []int{0, 1, 2, 3, 4, 5}}, - {Frequency: 433575000, DataRates: []int{0, 1, 2, 3, 4, 5}}, - }, - - DownlinkChannels: []Channel{ - {Frequency: 433175000, DataRates: []int{0, 1, 2, 3, 4, 5}}, - {Frequency: 433375000, DataRates: []int{0, 1, 2, 3, 4, 5}}, - {Frequency: 433575000, DataRates: []int{0, 1, 2, 3, 4, 5}}, - }, - - getRX1ChannelFunc: func(txChannel int) int { - return txChannel - }, - - getRX1FrequencyFunc: func(b *Band, txFrequency int) (int, error) { - return txFrequency, nil - }, - }, nil -} diff --git a/vendor/github.com/brocaar/lorawan/band/band_eu863_870.go b/vendor/github.com/brocaar/lorawan/band/band_eu863_870.go deleted file mode 100644 index 5f07dd5f0..000000000 --- a/vendor/github.com/brocaar/lorawan/band/band_eu863_870.go +++ /dev/null @@ -1,101 +0,0 @@ -package band - -import "time" - -func newEU863Band(repeaterCompatible bool) (Band, error) { - var maxPayloadSize []MaxPayloadSize - - if repeaterCompatible { - maxPayloadSize = []MaxPayloadSize{ - {M: 59, N: 51}, - {M: 59, N: 51}, - {M: 59, N: 51}, - {M: 123, N: 115}, - {M: 230, N: 222}, - {M: 230, N: 222}, - {M: 230, N: 222}, - {M: 230, N: 222}, - } - } else { - maxPayloadSize = []MaxPayloadSize{ - {M: 59, N: 51}, - {M: 59, N: 51}, - {M: 59, N: 51}, - {M: 123, N: 115}, - {M: 250, N: 242}, - {M: 250, N: 242}, - {M: 250, N: 242}, - {M: 250, N: 242}, - } - } - - return Band{ - DefaultTXPower: 14, - ImplementsCFlist: true, - RX2Frequency: 869525000, - RX2DataRate: 0, - - MaxFCntGap: 16384, - ADRACKLimit: 64, - ADRACKDelay: 32, - ReceiveDelay1: time.Second, - ReceiveDelay2: time.Second * 2, - JoinAcceptDelay1: time.Second * 5, - JoinAcceptDelay2: time.Second * 6, - ACKTimeoutMin: time.Second, - ACKTimeoutMax: time.Second * 3, - - DataRates: []DataRate{ - {Modulation: LoRaModulation, SpreadFactor: 12, Bandwidth: 125}, - {Modulation: LoRaModulation, SpreadFactor: 11, Bandwidth: 125}, - {Modulation: LoRaModulation, SpreadFactor: 10, Bandwidth: 125}, - {Modulation: LoRaModulation, SpreadFactor: 9, Bandwidth: 125}, - {Modulation: LoRaModulation, SpreadFactor: 8, Bandwidth: 125}, - {Modulation: LoRaModulation, SpreadFactor: 7, Bandwidth: 125}, - {Modulation: LoRaModulation, SpreadFactor: 7, Bandwidth: 250}, - {Modulation: FSKModulation, BitRate: 50000}, - }, - - MaxPayloadSize: maxPayloadSize, - - rx1DataRate: [][]int{ - {0, 0, 0, 0, 0, 0}, - {1, 0, 0, 0, 0, 0}, - {2, 1, 0, 0, 0, 0}, - {3, 2, 1, 0, 0, 0}, - {4, 3, 2, 1, 0, 0}, - {5, 4, 3, 2, 1, 0}, - {6, 5, 4, 3, 2, 1}, - {7, 6, 5, 4, 3, 2}, - }, - - TXPower: []int{ - 20, // if supported - 14, - 11, - 8, - 5, - 2, - }, - - UplinkChannels: []Channel{ - {Frequency: 868100000, DataRates: []int{0, 1, 2, 3, 4, 5}}, - {Frequency: 868300000, DataRates: []int{0, 1, 2, 3, 4, 5}}, - {Frequency: 868500000, DataRates: []int{0, 1, 2, 3, 4, 5}}, - }, - - DownlinkChannels: []Channel{ - {Frequency: 868100000, DataRates: []int{0, 1, 2, 3, 4, 5}}, - {Frequency: 868300000, DataRates: []int{0, 1, 2, 3, 4, 5}}, - {Frequency: 868500000, DataRates: []int{0, 1, 2, 3, 4, 5}}, - }, - - getRX1ChannelFunc: func(txChannel int) int { - return txChannel - }, - - getRX1FrequencyFunc: func(b *Band, txFrequency int) (int, error) { - return txFrequency, nil - }, - }, nil -} diff --git a/vendor/github.com/brocaar/lorawan/band/band_in_865_867.go b/vendor/github.com/brocaar/lorawan/band/band_in_865_867.go deleted file mode 100644 index 7b1425a52..000000000 --- a/vendor/github.com/brocaar/lorawan/band/band_in_865_867.go +++ /dev/null @@ -1,106 +0,0 @@ -package band - -import "time" - -func newIN865Band(repeaterCompatible bool) (Band, error) { - var maxPayloadSize []MaxPayloadSize - - if repeaterCompatible { - maxPayloadSize = []MaxPayloadSize{ - {M: 59, N: 51}, - {M: 59, N: 51}, - {M: 59, N: 51}, - {M: 123, N: 115}, - {M: 230, N: 222}, - {M: 230, N: 222}, - {M: 230, N: 222}, - {M: 230, N: 222}, - } - } else { - maxPayloadSize = []MaxPayloadSize{ - {M: 59, N: 51}, - {M: 59, N: 51}, - {M: 59, N: 51}, - {M: 123, N: 115}, - {M: 250, N: 242}, - {M: 250, N: 242}, - {M: 250, N: 242}, - {M: 250, N: 242}, - } - } - - return Band{ - DefaultTXPower: 27, - ImplementsCFlist: true, - RX2Frequency: 866550000, - RX2DataRate: 2, - - MaxFCntGap: 16384, - ADRACKLimit: 64, - ADRACKDelay: 32, - ReceiveDelay1: time.Second, - ReceiveDelay2: time.Second * 2, - JoinAcceptDelay1: time.Second * 5, - JoinAcceptDelay2: time.Second * 6, - ACKTimeoutMin: time.Second, - ACKTimeoutMax: time.Second * 3, - - DataRates: []DataRate{ - {Modulation: LoRaModulation, SpreadFactor: 12, Bandwidth: 125}, - {Modulation: LoRaModulation, SpreadFactor: 11, Bandwidth: 125}, - {Modulation: LoRaModulation, SpreadFactor: 10, Bandwidth: 125}, - {Modulation: LoRaModulation, SpreadFactor: 9, Bandwidth: 125}, - {Modulation: LoRaModulation, SpreadFactor: 8, Bandwidth: 125}, - {Modulation: LoRaModulation, SpreadFactor: 7, Bandwidth: 125}, - {}, - {Modulation: FSKModulation, BitRate: 50000}, - }, - - MaxPayloadSize: maxPayloadSize, - - rx1DataRate: [][]int{ - {0, 0, 0, 0, 0, 0, 1, 2}, - {1, 0, 0, 0, 0, 0, 2, 3}, - {2, 1, 0, 0, 0, 0, 3, 4}, - {3, 2, 1, 0, 0, 0, 4, 5}, - {4, 3, 2, 1, 0, 0, 5, 5}, - {5, 4, 3, 2, 1, 0, 5, 5}, - {}, - {7, 6, 5, 4, 3, 2, 7, 7}, - }, - - TXPower: []int{ - 27, - 27 - 2, - 27 - 4, - 27 - 6, - 27 - 8, - 27 - 10, - 27 - 12, - 27 - 14, - 27 - 16, - 27 - 18, - 27 - 20, - }, - - UplinkChannels: []Channel{ - {Frequency: 865062500, DataRates: []int{0, 1, 2, 3, 4, 5}}, - {Frequency: 865402500, DataRates: []int{0, 1, 2, 3, 4, 5}}, - {Frequency: 865985000, DataRates: []int{0, 1, 2, 3, 4, 5}}, - }, - - DownlinkChannels: []Channel{ - {Frequency: 865062500, DataRates: []int{0, 1, 2, 3, 4, 5}}, - {Frequency: 865402500, DataRates: []int{0, 1, 2, 3, 4, 5}}, - {Frequency: 865985000, DataRates: []int{0, 1, 2, 3, 4, 5}}, - }, - - getRX1ChannelFunc: func(txChannel int) int { - return txChannel - }, - - getRX1FrequencyFunc: func(b *Band, txFrequency int) (int, error) { - return txFrequency, nil - }, - }, nil -} diff --git a/vendor/github.com/brocaar/lorawan/band/band_kr920_923.go b/vendor/github.com/brocaar/lorawan/band/band_kr920_923.go deleted file mode 100644 index ffdb3f0ef..000000000 --- a/vendor/github.com/brocaar/lorawan/band/band_kr920_923.go +++ /dev/null @@ -1,79 +0,0 @@ -package band - -import "time" - -func newKR920Band() (Band, error) { - return Band{ - DefaultTXPower: 23, // for gateway - ImplementsCFlist: true, - RX2Frequency: 921900000, - RX2DataRate: 0, - - MaxFCntGap: 16384, - ADRACKLimit: 64, - ADRACKDelay: 32, - ReceiveDelay1: time.Second, - ReceiveDelay2: time.Second * 2, - JoinAcceptDelay1: time.Second * 5, - JoinAcceptDelay2: time.Second * 6, - ACKTimeoutMin: time.Second, - ACKTimeoutMax: time.Second * 3, - - DataRates: []DataRate{ - {Modulation: LoRaModulation, SpreadFactor: 12, Bandwidth: 125}, - {Modulation: LoRaModulation, SpreadFactor: 11, Bandwidth: 125}, - {Modulation: LoRaModulation, SpreadFactor: 10, Bandwidth: 125}, - {Modulation: LoRaModulation, SpreadFactor: 9, Bandwidth: 125}, - {Modulation: LoRaModulation, SpreadFactor: 8, Bandwidth: 125}, - {Modulation: LoRaModulation, SpreadFactor: 7, Bandwidth: 125}, - }, - - MaxPayloadSize: []MaxPayloadSize{ - {M: 73, N: 65}, - {M: 159, N: 151}, - {M: 250, N: 242}, - {M: 250, N: 242}, - {M: 250, N: 242}, - {M: 250, N: 242}, - }, - - rx1DataRate: [][]int{ - {0, 0, 0, 0, 0, 0}, - {1, 0, 0, 0, 0, 0}, - {2, 1, 0, 0, 0, 0}, - {3, 2, 1, 0, 0, 0}, - {4, 3, 2, 1, 0, 0}, - {5, 4, 3, 2, 1, 0}, - }, - - TXPower: []int{ - 20, - 14, - 10, - 8, - 5, - 2, - 0, - }, - - UplinkChannels: []Channel{ - {Frequency: 922100000, DataRates: []int{0, 1, 2, 3, 4, 5}}, - {Frequency: 922300000, DataRates: []int{0, 1, 2, 3, 4, 5}}, - {Frequency: 922500000, DataRates: []int{0, 1, 2, 3, 4, 5}}, - }, - - DownlinkChannels: []Channel{ - {Frequency: 922100000, DataRates: []int{0, 1, 2, 3, 4, 5}}, - {Frequency: 922300000, DataRates: []int{0, 1, 2, 3, 4, 5}}, - {Frequency: 922500000, DataRates: []int{0, 1, 2, 3, 4, 5}}, - }, - - getRX1ChannelFunc: func(txChannel int) int { - return txChannel - }, - - getRX1FrequencyFunc: func(b *Band, txFrequency int) (int, error) { - return txFrequency, nil - }, - }, nil -} diff --git a/vendor/github.com/brocaar/lorawan/band/band_ru864_870.go b/vendor/github.com/brocaar/lorawan/band/band_ru864_870.go deleted file mode 100644 index 674cc2240..000000000 --- a/vendor/github.com/brocaar/lorawan/band/band_ru864_870.go +++ /dev/null @@ -1,99 +0,0 @@ -package band - -import "time" - -func newRU864Band(repeaterCompatible bool) (Band, error) { - var maxPayloadSize []MaxPayloadSize - - if repeaterCompatible { - maxPayloadSize = []MaxPayloadSize{ - {M: 59, N: 51}, - {M: 59, N: 51}, - {M: 59, N: 51}, - {M: 123, N: 115}, - {M: 230, N: 222}, - {M: 230, N: 222}, - {M: 230, N: 222}, - {M: 230, N: 222}, - } - } else { - maxPayloadSize = []MaxPayloadSize{ - {M: 59, N: 51}, - {M: 59, N: 51}, - {M: 59, N: 51}, - {M: 123, N: 115}, - {M: 250, N: 242}, - {M: 250, N: 242}, - {M: 250, N: 242}, - {M: 250, N: 242}, - } - } - - return Band{ - DefaultTXPower: 14, - ImplementsCFlist: true, - RX2Frequency: 869100000, - RX2DataRate: 0, - - MaxFCntGap: 16384, - ADRACKLimit: 64, - ADRACKDelay: 32, - ReceiveDelay1: time.Second, - ReceiveDelay2: time.Second * 2, - JoinAcceptDelay1: time.Second * 5, - JoinAcceptDelay2: time.Second * 6, - ACKTimeoutMin: time.Second, - ACKTimeoutMax: time.Second * 3, - - DataRates: []DataRate{ - {Modulation: LoRaModulation, SpreadFactor: 12, Bandwidth: 125}, - {Modulation: LoRaModulation, SpreadFactor: 11, Bandwidth: 125}, - {Modulation: LoRaModulation, SpreadFactor: 10, Bandwidth: 125}, - {Modulation: LoRaModulation, SpreadFactor: 9, Bandwidth: 125}, - {Modulation: LoRaModulation, SpreadFactor: 8, Bandwidth: 125}, - {Modulation: LoRaModulation, SpreadFactor: 7, Bandwidth: 125}, - {Modulation: LoRaModulation, SpreadFactor: 7, Bandwidth: 250}, - {Modulation: FSKModulation, BitRate: 50000}, - }, - - MaxPayloadSize: maxPayloadSize, - - rx1DataRate: [][]int{ - {0, 0, 0, 0, 0, 0}, - {1, 0, 0, 0, 0, 0}, - {2, 1, 0, 0, 0, 0}, - {3, 2, 1, 0, 0, 0}, - {4, 3, 2, 1, 0, 0}, - {5, 4, 3, 2, 1, 0}, - {6, 5, 4, 3, 2, 1}, - {7, 6, 5, 4, 3, 2}, - }, - - TXPower: []int{ - 20, - 14, - 11, - 8, - 5, - 2, - }, - - UplinkChannels: []Channel{ - {Frequency: 868900000, DataRates: []int{0, 1, 2, 3, 4, 5}}, - {Frequency: 869100000, DataRates: []int{0, 1, 2, 3, 4, 5}}, - }, - - DownlinkChannels: []Channel{ - {Frequency: 868900000, DataRates: []int{0, 1, 2, 3, 4, 5}}, - {Frequency: 869100000, DataRates: []int{0, 1, 2, 3, 4, 5}}, - }, - - getRX1ChannelFunc: func(txChannel int) int { - return txChannel - }, - - getRX1FrequencyFunc: func(b *Band, txFrequency int) (int, error) { - return txFrequency, nil - }, - }, nil -} diff --git a/vendor/github.com/brocaar/lorawan/band/band_us902_928.go b/vendor/github.com/brocaar/lorawan/band/band_us902_928.go deleted file mode 100644 index 49faa9c08..000000000 --- a/vendor/github.com/brocaar/lorawan/band/band_us902_928.go +++ /dev/null @@ -1,256 +0,0 @@ -package band - -import "github.com/brocaar/lorawan" -import "sort" -import "time" - -func newUS902Band(repeaterCompatible bool) (Band, error) { - var maxPayloadSize []MaxPayloadSize - - if repeaterCompatible { - maxPayloadSize = []MaxPayloadSize{ - {M: 19, N: 11}, - {M: 61, N: 53}, - {M: 133, N: 125}, - {M: 250, N: 242}, - {M: 250, N: 242}, - {}, // Not defined - {}, // Not defined - {}, // Not defined - {M: 41, N: 33}, - {M: 117, N: 109}, - {M: 230, N: 222}, - {M: 230, N: 222}, - {M: 230, N: 222}, - {M: 230, N: 222}, - {}, // Not defined - {}, // Not defined - } - } else { - maxPayloadSize = []MaxPayloadSize{ - {M: 19, N: 11}, - {M: 61, N: 53}, - {M: 133, N: 125}, - {M: 250, N: 242}, - {M: 250, N: 242}, - {}, // Not defined - {}, // Not defined - {}, // Not defined - {M: 61, N: 53}, - {M: 137, N: 129}, - {M: 250, N: 242}, - {M: 250, N: 242}, - {M: 250, N: 242}, - {M: 250, N: 242}, - {}, // Not defined - {}, // Not defined - } - } - - band := Band{ - DefaultTXPower: 20, - ImplementsCFlist: false, - RX2Frequency: 923300000, - RX2DataRate: 8, - - MaxFCntGap: 16384, - ADRACKLimit: 64, - ADRACKDelay: 32, - ReceiveDelay1: time.Second, - ReceiveDelay2: time.Second * 2, - JoinAcceptDelay1: time.Second * 5, - JoinAcceptDelay2: time.Second * 6, - ACKTimeoutMin: time.Second, - ACKTimeoutMax: time.Second * 3, - - DataRates: []DataRate{ - {Modulation: LoRaModulation, SpreadFactor: 10, Bandwidth: 125}, - {Modulation: LoRaModulation, SpreadFactor: 9, Bandwidth: 125}, - {Modulation: LoRaModulation, SpreadFactor: 8, Bandwidth: 125}, - {Modulation: LoRaModulation, SpreadFactor: 7, Bandwidth: 125}, - {Modulation: LoRaModulation, SpreadFactor: 8, Bandwidth: 500}, - {}, // RFU - {}, // RFU - {}, // RFU - {Modulation: LoRaModulation, SpreadFactor: 12, Bandwidth: 500}, - {Modulation: LoRaModulation, SpreadFactor: 11, Bandwidth: 500}, - {Modulation: LoRaModulation, SpreadFactor: 10, Bandwidth: 500}, - {Modulation: LoRaModulation, SpreadFactor: 9, Bandwidth: 500}, - {Modulation: LoRaModulation, SpreadFactor: 8, Bandwidth: 500}, - {Modulation: LoRaModulation, SpreadFactor: 7, Bandwidth: 500}, - {}, // RFU - {}, // RFU - }, - - MaxPayloadSize: maxPayloadSize, - - rx1DataRate: [][]int{ - {10, 9, 8, 8}, - {11, 10, 9, 8}, - {12, 11, 10, 9}, - {13, 12, 11, 10}, - {13, 13, 12, 11}, - {}, // Not defined - {}, // Not defined - {}, // Not defined - {8, 8, 8, 8}, - {9, 8, 8, 8}, - {10, 9, 8, 8}, - {11, 10, 9, 8}, - {12, 11, 10, 9}, - {13, 12, 11, 10}, - }, - - TXPower: []int{ - 30, - 28, - 26, - 24, - 22, - 20, - 18, - 16, - 14, - 12, - 10, - 0, - 0, - 0, - 0, - 0, - }, - - UplinkChannels: make([]Channel, 72), - DownlinkChannels: make([]Channel, 8), - - getRX1ChannelFunc: func(txChannel int) int { - return txChannel % 8 - }, - - getRX1FrequencyFunc: func(b *Band, txFrequency int) (int, error) { - uplinkChan, err := b.GetUplinkChannelNumber(txFrequency) - if err != nil { - return 0, err - } - - rx1Chan := b.GetRX1Channel(uplinkChan) - return b.DownlinkChannels[rx1Chan].Frequency, nil - }, - - getLinkADRReqPayloadsForEnabledChannelsFunc: func(b *Band, nodeChannels []int) []lorawan.LinkADRReqPayload { - enabledChannels := b.GetEnabledUplinkChannels() - sort.Ints(enabledChannels) - - out := []lorawan.LinkADRReqPayload{ - {Redundancy: lorawan.Redundancy{ChMaskCntl: 7}}, // All 125 kHz OFF ChMask applies to channels 64 to 71 - } - - chMaskCntl := -1 - - for _, c := range enabledChannels { - // use the ChMask of the first LinkADRReqPayload, besides - // turning off all 125 kHz this payload contains the ChMask - // for the last block of channels. - if c >= 64 { - out[0].ChMask[c%16] = true - continue - } - - if c/16 != chMaskCntl { - chMaskCntl = c / 16 - pl := lorawan.LinkADRReqPayload{ - Redundancy: lorawan.Redundancy{ - ChMaskCntl: uint8(chMaskCntl), - }, - } - - // set the channel mask for this block - for _, ec := range enabledChannels { - if ec >= chMaskCntl*16 && ec < (chMaskCntl+1)*16 { - pl.ChMask[ec%16] = true - } - } - - out = append(out, pl) - } - } - - return out - }, - - getEnabledChannelsForLinkADRReqPayloadsFunc: func(b *Band, nodeChannels []int, pls []lorawan.LinkADRReqPayload) ([]int, error) { - chMask := make([]bool, len(b.UplinkChannels)) - for _, c := range nodeChannels { - // make sure that we don't exceed the chMask length. in case we exceed - // we ignore the channel as it might have been removed from the network - if c < len(chMask) { - chMask[c] = true - } - } - - for _, pl := range pls { - if pl.Redundancy.ChMaskCntl == 6 || pl.Redundancy.ChMaskCntl == 7 { - for i := 0; i < 64; i++ { - if pl.Redundancy.ChMaskCntl == 6 { - chMask[i] = true - } else { - chMask[i] = false - } - } - - for i, cm := range pl.ChMask[0:8] { - chMask[64+i] = cm - } - } else { - for i, enabled := range pl.ChMask { - if int(pl.Redundancy.ChMaskCntl*16)+i >= len(chMask) && !enabled { - continue - } - - if int(pl.Redundancy.ChMaskCntl*16)+i >= len(chMask) { - return nil, ErrChannelDoesNotExist - } - - chMask[int(pl.Redundancy.ChMaskCntl*16)+i] = enabled - } - } - } - - // turn the chMask into a slice of enabled channel numbers - var out []int - for i, enabled := range chMask { - if enabled { - out = append(out, i) - } - } - - return out, nil - }, - } - - // initialize uplink channel 0 - 63 - for i := 0; i < 64; i++ { - band.UplinkChannels[i] = Channel{ - Frequency: 902300000 + (i * 200000), - DataRates: []int{0, 1, 2, 3}, - } - } - - // initialize uplink channel 64 - 71 - for i := 0; i < 8; i++ { - band.UplinkChannels[i+64] = Channel{ - Frequency: 903000000 + (i * 1600000), - DataRates: []int{4}, - } - } - - // initialize downlink channel 0 - 7 - for i := 0; i < 8; i++ { - band.DownlinkChannels[i] = Channel{ - Frequency: 923300000 + (i * 600000), - DataRates: []int{10, 11, 12, 13}, - } - } - - return band, nil -} diff --git a/vendor/github.com/brocaar/lorawan/band/errors.go b/vendor/github.com/brocaar/lorawan/band/errors.go deleted file mode 100644 index 79cafbc5c..000000000 --- a/vendor/github.com/brocaar/lorawan/band/errors.go +++ /dev/null @@ -1,8 +0,0 @@ -package band - -import "errors" - -// errors -var ( - ErrChannelDoesNotExist = errors.New("lorawan/band: channel does not exist") -) diff --git a/vendor/github.com/brocaar/lorawan/cid_string.go b/vendor/github.com/brocaar/lorawan/cid_string.go deleted file mode 100644 index 190fb2352..000000000 --- a/vendor/github.com/brocaar/lorawan/cid_string.go +++ /dev/null @@ -1,17 +0,0 @@ -// Code generated by "stringer -type=CID"; DO NOT EDIT. - -package lorawan - -import "fmt" - -const _CID_name = "LinkCheckReqLinkADRReqDutyCycleReqRXParamSetupReqDevStatusReqNewChannelReqRXTimingSetupReqTXParamSetupReqDLChannelReq" - -var _CID_index = [...]uint8{0, 12, 22, 34, 49, 61, 74, 90, 105, 117} - -func (i CID) String() string { - i -= 2 - if i >= CID(len(_CID_index)-1) { - return fmt.Sprintf("CID(%d)", i+2) - } - return _CID_name[_CID_index[i]:_CID_index[i+1]] -} diff --git a/vendor/github.com/brocaar/lorawan/doc.go b/vendor/github.com/brocaar/lorawan/doc.go deleted file mode 100644 index f0b190fda..000000000 --- a/vendor/github.com/brocaar/lorawan/doc.go +++ /dev/null @@ -1,74 +0,0 @@ -/* - -Package lorawan provides structures and tools to read and write LoraWAN -messages from and to a slice of bytes. - -The following structures are implemented (+ fields): - - * PHYPayload (MHDR | MACPayload | MIC) - * MACPayload (FHDR | FPort | FRMPayload) - * FHDR (DevAddr | FCtrl | FCnt | FOpts) - -The Following message types (MType) are implemented: - - * JoinRequest - * JoinAccept - * UnconfirmedDataUp - * UnconfirmedDataDown - * ConfirmedDataUp - * ConfirmedDataDown - * Proprietary - -The following MAC commands (and their optional payloads) are implemented: - - * LinkCheckReq - * LinkCheckAns - * LinkADRReq - * LinkADRAns - * DutyCycleReq - * DutyCycleAns - * RXParamSetupReq - * RXParamSetupAns - * DevStatusReq - * DevStatusAns - * NewChannelReq - * NewChannelAns - * RXTimingSetupReq - * RXTimingSetupAns - * Proprietary commands (0x80 - 0xFF) can be registered with RegisterProprietaryMACCommand - -Support for calculating and setting the MIC is done by calling SetMIC(): - - err := phyPayload.SetMIC(key) - -Validating the MIC is done by calling ValidateMIC(): - - valid, err := phyPayload.ValidateMIC(key) - -Encryption and decryption of the MACPayload (for join-accept) is done by -calling EncryptJoinAcceptPayload() and DecryptJoinAcceptPayload(). Note that you need to -call SetMIC BEFORE encryption. - - err := phyPayload.EncryptJoinAcceptPayload(key) - err := phyPayload.DecryptJoinAcceptPayload(key) - -Encryption and decryption of the FRMPayload is done by calling -EncryptFRMPayload() and DecryptFRMPayload(). After encryption (and thus -before decryption), the bytes are stored in the DataPayload struct. - - err := phyPayload.EncryptFRMPayload(key) - err := phyPayload.DecryptFRMPayload(key) - -All payloads implement the Payload interface. Based on the MIC value, you -should be able to know to which type to cast the Payload value, so you will -be able to access its fields. - -See the examples section of the documentation for concrete usage examples -of this package. - -When using this package, knowledge about the LoRaWAN specification is needed. -You can download the LoRaWAN specification here: -https://www.lora-alliance.org/For-Developers/LoRaWANDevelopers - -*/ -package lorawan diff --git a/vendor/github.com/brocaar/lorawan/fhdr.go b/vendor/github.com/brocaar/lorawan/fhdr.go deleted file mode 100644 index a57398530..000000000 --- a/vendor/github.com/brocaar/lorawan/fhdr.go +++ /dev/null @@ -1,210 +0,0 @@ -package lorawan - -import ( - "encoding/binary" - "encoding/hex" - "errors" - "fmt" - "log" -) - -// DevAddr represents the device address. -type DevAddr [4]byte - -// NwkID returns the NwkID bits of the DevAddr. -func (a DevAddr) NwkID() byte { - return a[0] >> 1 // 7 msb -} - -// MarshalBinary marshals the object in binary form. -func (a DevAddr) MarshalBinary() ([]byte, error) { - out := make([]byte, len(a)) - for i, v := range a { - // little endian - out[len(a)-i-1] = v - } - return out, nil -} - -// UnmarshalBinary decodes the object from binary form. -func (a *DevAddr) UnmarshalBinary(data []byte) error { - if len(data) != len(a) { - return fmt.Errorf("lorawan: %d bytes of data are expected", len(a)) - } - for i, v := range data { - // little endian - a[len(a)-i-1] = v - } - return nil -} - -// MarshalText implements encoding.TextMarshaler. -func (a DevAddr) MarshalText() ([]byte, error) { - return []byte(a.String()), nil -} - -// UnmarshalText implements encoding.TextUnmarshaler. -func (a *DevAddr) UnmarshalText(text []byte) error { - b, err := hex.DecodeString(string(text)) - if err != nil { - return err - } - - if len(b) != len(a) { - return fmt.Errorf("lorawan: exactly %d bytes are expected", len(a)) - } - copy(a[:], b) - return nil -} - -// String implements fmt.Stringer. -func (a DevAddr) String() string { - return hex.EncodeToString(a[:]) -} - -// Scan implements sql.Scanner. -func (a *DevAddr) Scan(src interface{}) error { - b, ok := src.([]byte) - if !ok { - return errors.New("lorawan: []byte type expected") - } - if len(b) != len(a) { - return fmt.Errorf("lorawan []byte must have length %d", len(a)) - } - copy(a[:], b) - return nil -} - -// FCtrl represents the FCtrl (frame control) field. -type FCtrl struct { - ADR bool `json:"adr"` - ADRACKReq bool `json:"adrAckReq"` - ACK bool `json:"ack"` - FPending bool `json:"fPending"` // only used for downlink messages - fOptsLen uint8 // will be set automatically by the FHDR when serialized to []byte -} - -// MarshalBinary marshals the object in binary form. -func (c FCtrl) MarshalBinary() ([]byte, error) { - if c.fOptsLen > 15 { - return []byte{}, errors.New("lorawan: max value of FOptsLen is 15") - } - b := byte(c.fOptsLen) - if c.FPending { - b = b ^ (1 << 4) - } - if c.ACK { - b = b ^ (1 << 5) - } - if c.ADRACKReq { - b = b ^ (1 << 6) - } - if c.ADR { - b = b ^ (1 << 7) - } - return []byte{b}, nil -} - -// UnmarshalBinary decodes the object from binary form. -func (c *FCtrl) UnmarshalBinary(data []byte) error { - if len(data) != 1 { - return errors.New("lorawan: 1 byte of data is expected") - } - c.fOptsLen = data[0] & ((1 << 3) ^ (1 << 2) ^ (1 << 1) ^ (1 << 0)) - c.FPending = data[0]&(1<<4) > 0 - c.ACK = data[0]&(1<<5) > 0 - c.ADRACKReq = data[0]&(1<<6) > 0 - c.ADR = data[0]&(1<<7) > 0 - return nil -} - -// FHDR represents the frame header. -type FHDR struct { - DevAddr DevAddr `json:"devAddr"` - FCtrl FCtrl `json:"fCtrl"` - FCnt uint32 `json:"fCnt"` // only the least-significant 16 bits will be marshalled - FOpts []MACCommand `json:"fOpts"` // max. number of allowed bytes is 15 -} - -// MarshalBinary marshals the object in binary form. -func (h FHDR) MarshalBinary() ([]byte, error) { - var b []byte - var err error - var opts []byte - - for _, mac := range h.FOpts { - b, err = mac.MarshalBinary() - if err != nil { - return []byte{}, err - } - opts = append(opts, b...) - } - h.FCtrl.fOptsLen = uint8(len(opts)) - if h.FCtrl.fOptsLen > 15 { - return []byte{}, errors.New("lorawan: max number of FOpts bytes is 15") - } - - out := make([]byte, 0, 7+h.FCtrl.fOptsLen) - b, err = h.DevAddr.MarshalBinary() - if err != nil { - return []byte{}, err - } - out = append(out, b...) - - b, err = h.FCtrl.MarshalBinary() - if err != nil { - return []byte{}, err - } - out = append(out, b...) - fCntBytes := make([]byte, 4) - binary.LittleEndian.PutUint32(fCntBytes, h.FCnt) - out = append(out, fCntBytes[0:2]...) - out = append(out, opts...) - - return out, nil -} - -// UnmarshalBinary decodes the object from binary form. -func (h *FHDR) UnmarshalBinary(uplink bool, data []byte) error { - if len(data) < 7 { - return errors.New("lorawan: at least 7 bytes are expected") - } - - if err := h.DevAddr.UnmarshalBinary(data[0:4]); err != nil { - return err - } - if err := h.FCtrl.UnmarshalBinary(data[4:5]); err != nil { - return err - } - fCntBytes := make([]byte, 4) - copy(fCntBytes, data[5:7]) - h.FCnt = binary.LittleEndian.Uint32(fCntBytes) - - if len(data) > 7 { - var pLen int - for i := 0; i < len(data[7:]); i++ { - if _, s, err := GetMACPayloadAndSize(uplink, CID(data[7+i])); err != nil { - pLen = 0 - } else { - pLen = s - } - - // check if the remaining bytes are >= CID byte + payload size - if len(data[7+i:]) < pLen+1 { - return errors.New("lorawan: not enough remaining bytes") - } - - mc := MACCommand{} - if err := mc.UnmarshalBinary(uplink, data[7+i:7+i+1+pLen]); err != nil { - log.Printf("warning: unmarshal mac-command error (skipping remaining mac-command bytes): %s", err) - break - } - h.FOpts = append(h.FOpts, mc) - - // go to the next command (skip the payload bytes of the current command) - i = i + pLen - } - } - - return nil -} diff --git a/vendor/github.com/brocaar/lorawan/mac_commands.go b/vendor/github.com/brocaar/lorawan/mac_commands.go deleted file mode 100644 index c26ef4b2a..000000000 --- a/vendor/github.com/brocaar/lorawan/mac_commands.go +++ /dev/null @@ -1,741 +0,0 @@ -//go:generate stringer -type=CID - -package lorawan - -import ( - "encoding/binary" - "errors" - "fmt" - "sync" -) - -// macPayloadMutex is used when registering proprietary MAC command payloads to -// the macPayloadRegistry. -var macPayloadMutex sync.RWMutex - -// CID defines the MAC command identifier. -type CID byte - -// MarshalText implements encoding.TextMarshaler. -func (c CID) MarshalText() ([]byte, error) { - return []byte(c.String()), nil -} - -// MAC commands as specified by the LoRaWAN R1.0 specs. Note that each *Req / *Ans -// has the same value. Based on the fact if a message is uplink or downlink -// you should use on or the other. -const ( - LinkCheckReq CID = 0x02 - LinkCheckAns CID = 0x02 - LinkADRReq CID = 0x03 - LinkADRAns CID = 0x03 - DutyCycleReq CID = 0x04 - DutyCycleAns CID = 0x04 - RXParamSetupReq CID = 0x05 - RXParamSetupAns CID = 0x05 - DevStatusReq CID = 0x06 - DevStatusAns CID = 0x06 - NewChannelReq CID = 0x07 - NewChannelAns CID = 0x07 - RXTimingSetupReq CID = 0x08 - RXTimingSetupAns CID = 0x08 - TXParamSetupReq CID = 0x09 - TXParamSetupAns CID = 0x09 - DLChannelReq CID = 0x0A - DLChannelAns CID = 0x0A - // 0x80 to 0xFF reserved for proprietary network command extensions -) - -// macPayloadInfo contains the info about a MAC payload -type macPayloadInfo struct { - size int - payload func() MACCommandPayload -} - -// macPayloadRegistry contains the info for uplink and downlink MAC payloads -// in the format map[uplink]map[CID]. -// Note that MAC command that do not have a payload are not included in this -// list. -var macPayloadRegistry = map[bool]map[CID]macPayloadInfo{ - false: map[CID]macPayloadInfo{ - LinkCheckAns: {2, func() MACCommandPayload { return &LinkCheckAnsPayload{} }}, - LinkADRReq: {4, func() MACCommandPayload { return &LinkADRReqPayload{} }}, - DutyCycleReq: {1, func() MACCommandPayload { return &DutyCycleReqPayload{} }}, - RXParamSetupReq: {4, func() MACCommandPayload { return &RX2SetupReqPayload{} }}, - NewChannelReq: {5, func() MACCommandPayload { return &NewChannelReqPayload{} }}, - RXTimingSetupReq: {1, func() MACCommandPayload { return &RXTimingSetupReqPayload{} }}, - TXParamSetupReq: {1, func() MACCommandPayload { return &TXParamSetupReqPayload{} }}, - DLChannelReq: {4, func() MACCommandPayload { return &DLChannelReqPayload{} }}, - }, - true: map[CID]macPayloadInfo{ - LinkADRAns: {1, func() MACCommandPayload { return &LinkADRAnsPayload{} }}, - RXParamSetupAns: {1, func() MACCommandPayload { return &RX2SetupAnsPayload{} }}, - DevStatusAns: {2, func() MACCommandPayload { return &DevStatusAnsPayload{} }}, - NewChannelAns: {1, func() MACCommandPayload { return &NewChannelAnsPayload{} }}, - DLChannelAns: {1, func() MACCommandPayload { return &DLChannelAnsPayload{} }}, - }, -} - -// DwellTime defines the dwell time type. -type DwellTime int - -// Possible dwell time options. -const ( - DwellTimeNoLimit DwellTime = iota - DwellTime400ms -) - -// GetMACPayloadAndSize returns a new MACCommandPayload instance and it's size. -func GetMACPayloadAndSize(uplink bool, c CID) (MACCommandPayload, int, error) { - macPayloadMutex.RLock() - defer macPayloadMutex.RUnlock() - - v, ok := macPayloadRegistry[uplink][c] - if !ok { - return nil, 0, fmt.Errorf("lorawan: payload unknown for uplink=%v and CID=%v", uplink, c) - } - - return v.payload(), v.size, nil -} - -// RegisterProprietaryMACCommand registers a proprietary MAC command. Note -// that there is no need to call this when the size of the payload is > 0 bytes. -func RegisterProprietaryMACCommand(uplink bool, cid CID, payloadSize int) error { - if !(cid >= 128 && cid <= 255) { - return fmt.Errorf("lorawan: invalid CID %x", cid) - } - - if payloadSize == 0 { - // no need to register the payload size - return nil - } - - macPayloadMutex.Lock() - defer macPayloadMutex.Unlock() - - macPayloadRegistry[uplink][cid] = macPayloadInfo{ - size: payloadSize, - payload: func() MACCommandPayload { return &ProprietaryMACCommandPayload{} }, - } - - return nil -} - -// MACCommandPayload is the interface that every MACCommand payload -// must implement. -type MACCommandPayload interface { - MarshalBinary() (data []byte, err error) - UnmarshalBinary(data []byte) error -} - -// MACCommand represents a MAC command with optional payload. -type MACCommand struct { - CID CID `json:"cid"` - Payload MACCommandPayload `json:"payload"` -} - -// MarshalBinary marshals the object in binary form. -func (m MACCommand) MarshalBinary() ([]byte, error) { - if !(m.CID >= 2 && m.CID <= 8) && !(m.CID >= 128) { - return nil, fmt.Errorf("lorawan: invalid CID %x", m.CID) - } - - b := []byte{byte(m.CID)} - if m.Payload != nil { - p, err := m.Payload.MarshalBinary() - if err != nil { - return nil, err - } - b = append(b, p...) - } - return b, nil -} - -// UnmarshalBinary decodes the object from binary form. -func (m *MACCommand) UnmarshalBinary(uplink bool, data []byte) error { - if len(data) == 0 { - return errors.New("lorawan: at least 1 byte of data is expected") - } - - m.CID = CID(data[0]) - if !(m.CID >= 2 && m.CID <= 8) && !(m.CID >= 128) { - return fmt.Errorf("lorawan: invalid CID %x", int(m.CID)) - } - - if len(data) > 1 { - p, _, err := GetMACPayloadAndSize(uplink, m.CID) - if err != nil { - return err - } - m.Payload = p - if err := m.Payload.UnmarshalBinary(data[1:]); err != nil { - return err - } - } - return nil -} - -// ProprietaryMACCommandPayload represents a proprietary payload. -type ProprietaryMACCommandPayload struct { - Bytes []byte `json:"bytes"` -} - -// MarshalBinary marshals the object into a slice of bytes. -func (p ProprietaryMACCommandPayload) MarshalBinary() ([]byte, error) { - return p.Bytes, nil -} - -// UnmarshalBinary decodes the object from a slice of bytes. -func (p *ProprietaryMACCommandPayload) UnmarshalBinary(data []byte) error { - p.Bytes = data - return nil -} - -// LinkCheckAnsPayload represents the LinkCheckAns payload. -type LinkCheckAnsPayload struct { - Margin uint8 `json:"margin"` - GwCnt uint8 `json:"gwCnt"` -} - -// MarshalBinary marshals the object in binary form. -func (p LinkCheckAnsPayload) MarshalBinary() ([]byte, error) { - return []byte{byte(p.Margin), byte(p.GwCnt)}, nil -} - -// UnmarshalBinary decodes the object from binary form. -func (p *LinkCheckAnsPayload) UnmarshalBinary(data []byte) error { - if len(data) != 2 { - return errors.New("lorawan: 2 bytes of data are expected") - } - p.Margin = uint8(data[0]) - p.GwCnt = uint8(data[1]) - return nil -} - -// ChMask encodes the channels usable for uplink access. 0 = channel 1, -// 15 = channel 16. -type ChMask [16]bool - -// MarshalBinary marshals the object in binary form. -func (m ChMask) MarshalBinary() ([]byte, error) { - b := make([]byte, 2) - for i := uint8(0); i < 16; i++ { - if m[i] { - b[i/8] = b[i/8] ^ 1<<(i%8) - } - } - return b, nil -} - -// UnmarshalBinary decodes the object from binary form. -func (m *ChMask) UnmarshalBinary(data []byte) error { - if len(data) != 2 { - return errors.New("lorawan: 2 bytes of data are expected") - } - for i, b := range data { - for j := uint8(0); j < 8; j++ { - if b&(1< 0 { - m[uint8(i)*8+j] = true - } - } - } - return nil -} - -// Redundancy represents the redundancy field. -type Redundancy struct { - ChMaskCntl uint8 `json:"chMaskCntl"` - NbRep uint8 `json:"nbRep"` -} - -// MarshalBinary marshals the object in binary form. -func (r Redundancy) MarshalBinary() ([]byte, error) { - b := make([]byte, 1) - if r.NbRep > 15 { - return b, errors.New("lorawan: max value of NbRep is 15") - } - if r.ChMaskCntl > 7 { - return b, errors.New("lorawan: max value of ChMaskCntl is 7") - } - b[0] = r.NbRep ^ (r.ChMaskCntl << 4) - return b, nil -} - -// UnmarshalBinary decodes the object from binary form. -func (r *Redundancy) UnmarshalBinary(data []byte) error { - if len(data) != 1 { - return errors.New("lorawan: 1 byte of data is expected") - } - r.NbRep = data[0] & ((1 << 3) ^ (1 << 2) ^ (1 << 1) ^ (1 << 0)) - r.ChMaskCntl = (data[0] & ((1 << 6) ^ (1 << 5) ^ (1 << 4))) >> 4 - return nil -} - -// LinkADRReqPayload represents the LinkADRReq payload. -type LinkADRReqPayload struct { - DataRate uint8 `json:"dataRate"` - TXPower uint8 `json:"txPower"` - ChMask ChMask `json:"chMask"` - Redundancy Redundancy `json:"redundancy"` -} - -// MarshalBinary marshals the object in binary form. -func (p LinkADRReqPayload) MarshalBinary() ([]byte, error) { - b := make([]byte, 0, 4) - if p.DataRate > 15 { - return b, errors.New("lorawan: the max value of DataRate is 15") - } - if p.TXPower > 15 { - return b, errors.New("lorawan: the max value of TXPower is 15") - } - - cm, err := p.ChMask.MarshalBinary() - if err != nil { - return b, err - } - r, err := p.Redundancy.MarshalBinary() - if err != nil { - return b, err - } - - b = append(b, p.TXPower^(p.DataRate<<4)) - b = append(b, cm...) - b = append(b, r...) - - return b, nil -} - -// UnmarshalBinary decodes the object from binary form. -func (p *LinkADRReqPayload) UnmarshalBinary(data []byte) error { - if len(data) != 4 { - return errors.New("lorawan: 4 bytes of data are expected") - } - p.DataRate = (data[0] & ((1 << 7) ^ (1 << 6) ^ (1 << 5) ^ (1 << 4))) >> 4 - p.TXPower = data[0] & ((1 << 3) ^ (1 << 2) ^ (1 << 1) ^ (1 << 0)) - - if err := p.ChMask.UnmarshalBinary(data[1:3]); err != nil { - return err - } - if err := p.Redundancy.UnmarshalBinary(data[3:4]); err != nil { - return err - } - return nil -} - -// LinkADRAnsPayload represents the LinkADRAns payload. -type LinkADRAnsPayload struct { - ChannelMaskACK bool `json:"channelMaskAck"` - DataRateACK bool `json:"dataRateAck"` - PowerACK bool `json:"powerAck"` -} - -// MarshalBinary marshals the object in binary form. -func (p LinkADRAnsPayload) MarshalBinary() ([]byte, error) { - var b byte - if p.ChannelMaskACK { - b = b ^ (1 << 0) - } - if p.DataRateACK { - b = b ^ (1 << 1) - } - if p.PowerACK { - b = b ^ (1 << 2) - } - return []byte{b}, nil -} - -// UnmarshalBinary decodes the object from binary form. -func (p *LinkADRAnsPayload) UnmarshalBinary(data []byte) error { - if len(data) != 1 { - return errors.New("lorawan: 1 byte of data is expected") - } - if data[0]&(1<<0) > 0 { - p.ChannelMaskACK = true - } - if data[0]&(1<<1) > 0 { - p.DataRateACK = true - } - if data[0]&(1<<2) > 0 { - p.PowerACK = true - } - return nil -} - -// DutyCycleReqPayload represents the DutyCycleReq payload. -type DutyCycleReqPayload struct { - MaxDCycle uint8 `json:"maxDCycle"` -} - -// MarshalBinary marshals the object in binary form. -func (p DutyCycleReqPayload) MarshalBinary() ([]byte, error) { - b := make([]byte, 0, 1) - if p.MaxDCycle > 15 && p.MaxDCycle < 255 { - return b, errors.New("lorawan: only a MaxDCycle value of 0 - 15 and 255 is allowed") - } - b = append(b, p.MaxDCycle) - return b, nil -} - -// UnmarshalBinary decodes the object from binary form. -func (p *DutyCycleReqPayload) UnmarshalBinary(data []byte) error { - if len(data) != 1 { - return errors.New("lorawan: 1 byte of data is expected") - } - p.MaxDCycle = data[0] - return nil -} - -// DLSettings represents the DLSettings fields (downlink settings). -type DLSettings struct { - RX2DataRate uint8 `json:"rx2DataRate"` - RX1DROffset uint8 `json:"rx1DROffset"` -} - -// MarshalBinary marshals the object in binary form. -func (s DLSettings) MarshalBinary() ([]byte, error) { - b := make([]byte, 0, 1) - if s.RX2DataRate > 15 { - return b, errors.New("lorawan: max value of RX2DataRate is 15") - } - if s.RX1DROffset > 7 { - return b, errors.New("lorawan: max value of RX1DROffset is 7") - } - b = append(b, s.RX2DataRate^(s.RX1DROffset<<4)) - return b, nil -} - -// UnmarshalBinary decodes the object from binary form. -func (s *DLSettings) UnmarshalBinary(data []byte) error { - if len(data) != 1 { - return errors.New("lorawan: 1 byte of data is expected") - } - s.RX2DataRate = data[0] & ((1 << 3) ^ (1 << 2) ^ (1 << 1) ^ (1 << 0)) - s.RX1DROffset = (data[0] & ((1 << 6) ^ (1 << 5) ^ (1 << 4))) >> 4 - return nil -} - -// RX2SetupReqPayload represents the RX2SetupReq payload. -type RX2SetupReqPayload struct { - Frequency uint32 `json:"frequency"` - DLSettings DLSettings `json:"dlSettings"` -} - -// MarshalBinary marshals the object in binary form. -func (p RX2SetupReqPayload) MarshalBinary() ([]byte, error) { - b := make([]byte, 5) - if p.Frequency/100 >= 16777216 { // 2^24 - return b, errors.New("lorawan: max value of Frequency is 2^24-1") - } - if p.Frequency%100 != 0 { - return b, errors.New("lorawan: Frequency must be a multiple of 100") - } - bytes, err := p.DLSettings.MarshalBinary() - if err != nil { - return b, err - } - b[0] = bytes[0] - - binary.LittleEndian.PutUint32(b[1:5], p.Frequency/100) - // we don't return the last octet which is fine since we're only interested - // in the 24 LSB of Frequency - return b[0:4], nil -} - -// UnmarshalBinary decodes the object from binary form. -func (p *RX2SetupReqPayload) UnmarshalBinary(data []byte) error { - if len(data) != 4 { - return errors.New("lorawan: 4 bytes of data are expected") - } - if err := p.DLSettings.UnmarshalBinary(data[0:1]); err != nil { - return err - } - // append one block of empty bits at the end of the slice since the - // binary to uint32 expects 32 bits. - b := make([]byte, len(data)) - copy(b, data) - b = append(b, byte(0)) - p.Frequency = binary.LittleEndian.Uint32(b[1:5]) * 100 - return nil -} - -// RX2SetupAnsPayload represents the RX2SetupAns payload. -type RX2SetupAnsPayload struct { - ChannelACK bool `json:"channelAck"` - RX2DataRateACK bool `json:"rx2DataRateAck"` - RX1DROffsetACK bool `json:"rx1DROffsetAck"` -} - -// MarshalBinary marshals the object in binary form. -func (p RX2SetupAnsPayload) MarshalBinary() ([]byte, error) { - var b byte - if p.ChannelACK { - b = b ^ (1 << 0) - } - if p.RX2DataRateACK { - b = b ^ (1 << 1) - } - if p.RX1DROffsetACK { - b = b ^ (1 << 2) - } - return []byte{b}, nil -} - -// UnmarshalBinary decodes the object from binary form. -func (p *RX2SetupAnsPayload) UnmarshalBinary(data []byte) error { - if len(data) != 1 { - return errors.New("lorawan: 1 byte of data is expected") - } - p.ChannelACK = data[0]&(1<<0) > 0 - p.RX2DataRateACK = data[0]&(1<<1) > 0 - p.RX1DROffsetACK = data[0]&(1<<2) > 0 - return nil -} - -// DevStatusAnsPayload represents the DevStatusAns payload. -type DevStatusAnsPayload struct { - Battery uint8 `json:"battery"` - Margin int8 `json:"margin"` -} - -// MarshalBinary marshals the object in binary form. -func (p DevStatusAnsPayload) MarshalBinary() ([]byte, error) { - b := make([]byte, 0, 2) - if p.Margin < -32 { - return b, errors.New("lorawan: min value of Margin is -32") - } - if p.Margin > 31 { - return b, errors.New("lorawan: max value of Margin is 31") - } - - b = append(b, p.Battery) - if p.Margin < 0 { - b = append(b, uint8(64+p.Margin)) - } else { - b = append(b, uint8(p.Margin)) - } - return b, nil -} - -// UnmarshalBinary decodes the object from binary form. -func (p *DevStatusAnsPayload) UnmarshalBinary(data []byte) error { - if len(data) != 2 { - return errors.New("lorawan: 2 bytes of data are expected") - } - p.Battery = data[0] - if data[1] > 31 { - p.Margin = int8(data[1]) - 64 - } else { - p.Margin = int8(data[1]) - } - return nil -} - -// NewChannelReqPayload represents the NewChannelReq payload. -type NewChannelReqPayload struct { - ChIndex uint8 `json:"chIndex"` - Freq uint32 `json:"freq"` - MaxDR uint8 `json:"maxDR"` - MinDR uint8 `json:"minDR"` -} - -// MarshalBinary marshals the object in binary form. -func (p NewChannelReqPayload) MarshalBinary() ([]byte, error) { - b := make([]byte, 5) - if p.Freq/100 >= 16777216 { // 2^24 - return b, errors.New("lorawan: max value of Freq is 2^24 - 1") - } - if p.Freq%100 != 0 { - return b, errors.New("lorawan: Freq must be a multiple of 100") - } - if p.MaxDR > 15 { - return b, errors.New("lorawan: max value of MaxDR is 15") - } - if p.MinDR > 15 { - return b, errors.New("lorawan: max value of MinDR is 15") - } - - // we're borrowing the last byte b[4] because PutUint32 needs 4 bytes, - // the last byte b[4] will be set to 0 because max Freq = 2^24 - 1 - binary.LittleEndian.PutUint32(b[1:5], p.Freq/100) - b[0] = p.ChIndex - b[4] = p.MinDR ^ (p.MaxDR << 4) - - return b, nil -} - -// UnmarshalBinary decodes the object from binary form. -func (p *NewChannelReqPayload) UnmarshalBinary(data []byte) error { - if len(data) != 5 { - return errors.New("lorawan: 5 bytes of data are expected") - } - p.ChIndex = data[0] - p.MinDR = data[4] & ((1 << 3) ^ (1 << 2) ^ (1 << 1) ^ (1 << 0)) - p.MaxDR = (data[4] & ((1 << 7) ^ (1 << 6) ^ (1 << 5) ^ (1 << 4))) >> 4 - - b := make([]byte, len(data)) - copy(b, data) - b[4] = byte(0) - p.Freq = binary.LittleEndian.Uint32(b[1:5]) * 100 - return nil -} - -// NewChannelAnsPayload represents the NewChannelAns payload. -type NewChannelAnsPayload struct { - ChannelFrequencyOK bool `json:"channelFrequencyOK"` - DataRateRangeOK bool `json:"dataRateRangeOK"` -} - -// MarshalBinary marshals the object in binary form. -func (p NewChannelAnsPayload) MarshalBinary() ([]byte, error) { - var b byte - if p.ChannelFrequencyOK { - b = (1 << 0) - } - if p.DataRateRangeOK { - b = b ^ (1 << 1) - } - return []byte{b}, nil -} - -// UnmarshalBinary decodes the object from binary form. -func (p *NewChannelAnsPayload) UnmarshalBinary(data []byte) error { - if len(data) != 1 { - return errors.New("lorawan: 1 byte of data is expected") - } - p.ChannelFrequencyOK = data[0]&(1<<0) > 0 - p.DataRateRangeOK = data[0]&(1<<1) > 0 - return nil -} - -// RXTimingSetupReqPayload represents the RXTimingSetupReq payload. -type RXTimingSetupReqPayload struct { - Delay uint8 `json:"delay"` // 0=1s, 1=1s, 2=2s, ... 15=15s -} - -// MarshalBinary marshals the object in binary form. -func (p RXTimingSetupReqPayload) MarshalBinary() ([]byte, error) { - if p.Delay > 15 { - return []byte{}, errors.New("lorawan: the max value of Delay is 15") - } - return []byte{p.Delay}, nil -} - -// UnmarshalBinary decodes the object from binary form. -func (p *RXTimingSetupReqPayload) UnmarshalBinary(data []byte) error { - if len(data) != 1 { - return errors.New("lorawan: 1 byte of data is expected") - } - p.Delay = data[0] - return nil -} - -// TXParamSetupReqPayload represents the TXParamSetupReq payload. -type TXParamSetupReqPayload struct { - DownlinkDwelltime DwellTime `json:"downlinkDwellTime"` - UplinkDwellTime DwellTime `json:"uplinkDwellTime"` - MaxEIRP uint8 `json:"maxEIRP"` -} - -// MarshalBinary encodes the object into a bytes. -func (p TXParamSetupReqPayload) MarshalBinary() ([]byte, error) { - var b uint8 - for i, v := range []uint8{8, 10, 12, 13, 14, 16, 18, 20, 21, 24, 26, 27, 29, 30, 33, 36} { - if v == p.MaxEIRP { - b = uint8(i) - } - } - if b == 0 { - return nil, errors.New("lorawan: invalid MaxEIRP value") - } - - if p.UplinkDwellTime == DwellTime400ms { - b = b ^ (1 << 4) - } - if p.DownlinkDwelltime == DwellTime400ms { - b = b ^ (1 << 5) - } - - return []byte{b}, nil -} - -// UnmarshalBinary decodes the object from bytes. -func (p *TXParamSetupReqPayload) UnmarshalBinary(data []byte) error { - if len(data) != 1 { - return errors.New("lorawan: 1 byte of data is expected") - } - - if data[0]&(1<<4) > 0 { - p.UplinkDwellTime = DwellTime400ms - } - if data[0]&(1<<5) > 0 { - p.DownlinkDwelltime = DwellTime400ms - } - p.MaxEIRP = []uint8{8, 10, 12, 13, 14, 16, 18, 20, 21, 24, 26, 27, 29, 30, 33, 36}[data[0]&15] - - return nil -} - -// DLChannelReqPayload represents the DLChannelReq payload. -type DLChannelReqPayload struct { - ChIndex uint8 `json:"chIndex"` - Freq uint32 `json:"freq"` -} - -// MarshalBinary encodes the object into bytes. -func (p DLChannelReqPayload) MarshalBinary() ([]byte, error) { - b := make([]byte, 5) // we need one byte more for PutUint32 - if p.Freq/100 >= 16777216 { // 2^24 - return b, errors.New("lorawan: max value of Freq is 2^24 - 1") - } - - if p.Freq%100 != 0 { - return b, errors.New("lorawan: Freq must be a multiple of 100") - } - - b[0] = p.ChIndex - binary.LittleEndian.PutUint32(b[1:5], p.Freq/100) - - return b[0:4], nil -} - -// UnmarshalBinary decodes the object from bytes. -func (p *DLChannelReqPayload) UnmarshalBinary(data []byte) error { - if len(data) != 4 { - return errors.New("lorawan: 4 bytes of data are expected") - } - - p.ChIndex = data[0] - b := make([]byte, 4) - copy(b, data[1:]) - p.Freq = binary.LittleEndian.Uint32(b) * 100 - return nil -} - -// DLChannelAnsPayload represents the DLChannelAns payload. -type DLChannelAnsPayload struct { - UplinkFrequencyExists bool `json:"uplinkFrequencyExists"` - ChannelFrequencyOK bool `json:"channelFrequencyOK"` -} - -// MarshalBinary encodes the object into bytes. -func (p DLChannelAnsPayload) MarshalBinary() ([]byte, error) { - var b byte - if p.ChannelFrequencyOK { - b = b ^ 1 - } - if p.UplinkFrequencyExists { - b = b ^ (1 << 1) - } - return []byte{b}, nil -} - -// UnmarshalBinary decodes the object from bytes. -func (p *DLChannelAnsPayload) UnmarshalBinary(data []byte) error { - if len(data) != 1 { - return errors.New("lorawan: 1 byte of data is expected") - } - - p.ChannelFrequencyOK = data[0]&1 > 0 - p.UplinkFrequencyExists = data[0]&(1<<1) > 0 - return nil -} diff --git a/vendor/github.com/brocaar/lorawan/macpayload.go b/vendor/github.com/brocaar/lorawan/macpayload.go deleted file mode 100644 index 431bd3511..000000000 --- a/vendor/github.com/brocaar/lorawan/macpayload.go +++ /dev/null @@ -1,152 +0,0 @@ -package lorawan - -import ( - "errors" - "fmt" - "log" -) - -// MACPayload represents the MAC payload. Use NewMACPayload for creating a new -// MACPayload. -type MACPayload struct { - FHDR FHDR `json:"fhdr"` - FPort *uint8 `json:"fPort"` // optional, but must be set when FRMPayload is set - FRMPayload []Payload `json:"frmPayload"` -} - -func (p MACPayload) marshalPayload() ([]byte, error) { - var out []byte - var b []byte - var err error - for _, fp := range p.FRMPayload { - if mac, ok := fp.(*MACCommand); ok { - if p.FPort == nil || (p.FPort != nil && *p.FPort != 0) { - return []byte{}, errors.New("lorawan: a MAC command is only allowed when FPort=0") - } - b, err = mac.MarshalBinary() - } else { - b, err = fp.MarshalBinary() - } - if err != nil { - return nil, err - } - out = append(out, b...) - } - return out, nil -} - -func (p *MACPayload) decodeFRMPayloadToMACCommands(uplink bool) error { - if p.FPort == nil || *p.FPort != 0 { - return fmt.Errorf("lorawan: FPort must be 0 when calling decodeFRMPayloadToMACCommands") - } - - if len(p.FRMPayload) != 1 { - return fmt.Errorf("lorawan: exactly 1 Payload was expected in FRMPayload") - } - - dataPL, ok := p.FRMPayload[0].(*DataPayload) - if !ok { - return fmt.Errorf("lorawan: expected *DataPayload, got %T", p.FRMPayload[0]) - } - - var pLen int - p.FRMPayload = make([]Payload, 0) - for i := 0; i < len(dataPL.Bytes); i++ { - if _, s, err := GetMACPayloadAndSize(uplink, CID(dataPL.Bytes[i])); err != nil { - pLen = 0 - } else { - pLen = s - } - - // check if the remaining bytes are >= CID byte + payload size - if len(dataPL.Bytes[i:]) < pLen+1 { - return errors.New("lorawan: not enough remaining bytes") - } - - mc := &MACCommand{} - if err := mc.UnmarshalBinary(uplink, dataPL.Bytes[i:i+1+pLen]); err != nil { - log.Printf("warning: unmarshal mac-command error (skipping remaining mac-command bytes): %s", err) - break - } - p.FRMPayload = append(p.FRMPayload, mc) - - // go to the next command (skip the payload bytes of the current command) - i = i + pLen - } - - return nil -} - -// MarshalBinary marshals the object in binary form. -func (p MACPayload) MarshalBinary() ([]byte, error) { - var b []byte - var out []byte - var err error - - b, err = p.FHDR.MarshalBinary() - if err != nil { - return nil, err - } - out = append(out, b...) - - if p.FPort == nil { - if len(p.FRMPayload) != 0 { - return nil, errors.New("lorawan: FPort must be set when FRMPayload is not empty") - } - return out, nil - } else if len(p.FHDR.FOpts) != 0 && *p.FPort == 0 { - return nil, errors.New("lorawan: FPort must not be 0 when FOpts are set") - } - - out = append(out, *p.FPort) - - if b, err = p.marshalPayload(); err != nil { - return nil, err - } - out = append(out, b...) - return out, nil -} - -// UnmarshalBinary decodes the object from binary form. -func (p *MACPayload) UnmarshalBinary(uplink bool, data []byte) error { - dataLen := len(data) - - // check that there are enough bytes to decode a minimal FHDR - if dataLen < 7 { - return errors.New("lorawan: at least 7 bytes needed to decode FHDR") - } - - // unmarshal FCtrl so we know the FOptsLen - if err := p.FHDR.FCtrl.UnmarshalBinary(data[4:5]); err != nil { - return err - } - - // check that there are at least as many bytes as FOptsLen claims - if dataLen < 7+int(p.FHDR.FCtrl.fOptsLen) { - return errors.New("lorawan: not enough bytes to decode FHDR") - } - - // decode the full FHDR (including optional FOpts) - if err := p.FHDR.UnmarshalBinary(uplink, data[0:7+p.FHDR.FCtrl.fOptsLen]); err != nil { - return err - } - - // decode the optional FPort - if dataLen >= 7+int(p.FHDR.FCtrl.fOptsLen)+1 { - fPort := uint8(data[7+int(p.FHDR.FCtrl.fOptsLen)]) - p.FPort = &fPort - } - - // decode the rest of the payload (if present) - if dataLen > 7+int(p.FHDR.FCtrl.fOptsLen)+1 { - if p.FPort != nil && *p.FPort == 0 && p.FHDR.FCtrl.fOptsLen > 0 { - return errors.New("lorawan: FPort must not be 0 when FOpts are set") - } - - // even when FPort = 0, we store the mac-commands within a DataPayload. - // only after decryption we're able to unmarshal them. - p.FRMPayload = []Payload{&DataPayload{Bytes: data[7+p.FHDR.FCtrl.fOptsLen+1:]}} - } - - return nil -} diff --git a/vendor/github.com/brocaar/lorawan/major_string.go b/vendor/github.com/brocaar/lorawan/major_string.go deleted file mode 100644 index 1c3d38f38..000000000 --- a/vendor/github.com/brocaar/lorawan/major_string.go +++ /dev/null @@ -1,16 +0,0 @@ -// Code generated by "stringer -type=Major"; DO NOT EDIT. - -package lorawan - -import "fmt" - -const _Major_name = "LoRaWANR1" - -var _Major_index = [...]uint8{0, 9} - -func (i Major) String() string { - if i >= Major(len(_Major_index)-1) { - return fmt.Sprintf("Major(%d)", i) - } - return _Major_name[_Major_index[i]:_Major_index[i+1]] -} diff --git a/vendor/github.com/brocaar/lorawan/mtype_string.go b/vendor/github.com/brocaar/lorawan/mtype_string.go deleted file mode 100644 index 448a8db1d..000000000 --- a/vendor/github.com/brocaar/lorawan/mtype_string.go +++ /dev/null @@ -1,16 +0,0 @@ -// Code generated by "stringer -type=MType"; DO NOT EDIT. - -package lorawan - -import "fmt" - -const _MType_name = "JoinRequestJoinAcceptUnconfirmedDataUpUnconfirmedDataDownConfirmedDataUpConfirmedDataDownRFUProprietary" - -var _MType_index = [...]uint8{0, 11, 21, 38, 57, 72, 89, 92, 103} - -func (i MType) String() string { - if i >= MType(len(_MType_index)-1) { - return fmt.Sprintf("MType(%d)", i) - } - return _MType_name[_MType_index[i]:_MType_index[i+1]] -} diff --git a/vendor/github.com/brocaar/lorawan/netid.go b/vendor/github.com/brocaar/lorawan/netid.go deleted file mode 100644 index a9d1813ce..000000000 --- a/vendor/github.com/brocaar/lorawan/netid.go +++ /dev/null @@ -1,37 +0,0 @@ -package lorawan - -import ( - "encoding/hex" - "fmt" -) - -// NetID represents the NetID. -type NetID [3]byte - -// String implements fmt.Stringer. -func (n NetID) String() string { - return hex.EncodeToString(n[:]) -} - -// MarshalText implements encoding.TextMarshaler. -func (n NetID) MarshalText() ([]byte, error) { - return []byte(n.String()), nil -} - -// UnmarshalText implements encoding.TextUnmarshaler. -func (n *NetID) UnmarshalText(text []byte) error { - b, err := hex.DecodeString(string(text)) - if err != nil { - return err - } - if len(b) != len(n) { - return fmt.Errorf("lorawan: exactly %d bytes are expected", len(n)) - } - copy(n[:], b) - return nil -} - -// NwkID returns the NwkID bits of the NetID. -func (n NetID) NwkID() byte { - return n[2] & 127 // 7 lsb -} diff --git a/vendor/github.com/brocaar/lorawan/payload.go b/vendor/github.com/brocaar/lorawan/payload.go deleted file mode 100644 index 589e624a6..000000000 --- a/vendor/github.com/brocaar/lorawan/payload.go +++ /dev/null @@ -1,287 +0,0 @@ -package lorawan - -import ( - "encoding/binary" - "encoding/hex" - "errors" - "fmt" -) - -// EUI64 data type -type EUI64 [8]byte - -// MarshalText implements encoding.TextMarshaler. -func (e EUI64) MarshalText() ([]byte, error) { - return []byte(e.String()), nil -} - -// UnmarshalText implements encoding.TextUnmarshaler. -func (e *EUI64) UnmarshalText(text []byte) error { - b, err := hex.DecodeString(string(text)) - if err != nil { - return err - } - if len(e) != len(b) { - return fmt.Errorf("lorawan: exactly %d bytes are expected", len(e)) - } - copy(e[:], b) - return nil -} - -// String implement fmt.Stringer. -func (e EUI64) String() string { - return hex.EncodeToString(e[:]) -} - -// MarshalBinary implements encoding.BinaryMarshaler. -func (e EUI64) MarshalBinary() ([]byte, error) { - out := make([]byte, len(e)) - // little endian - for i, v := range e { - out[len(e)-i-1] = v - } - return out, nil -} - -// UnmarshalBinary implements encoding.BinaryUnmarshaler. -func (e *EUI64) UnmarshalBinary(data []byte) error { - if len(data) != len(e) { - return fmt.Errorf("lorawan: %d bytes of data are expected", len(e)) - } - for i, v := range data { - // little endian - e[len(e)-i-1] = v - } - return nil -} - -// Scan implements sql.Scanner. -func (e *EUI64) Scan(src interface{}) error { - b, ok := src.([]byte) - if !ok { - return errors.New("lorawan: []byte type expected") - } - if len(b) != len(e) { - return fmt.Errorf("lorawan []byte must have length %d", len(e)) - } - copy(e[:], b) - return nil -} - -// DevNonce represents a 2 byte dev-nonce. -type DevNonce [2]byte - -// String implements fmt.Stringer. -func (n DevNonce) String() string { - return hex.EncodeToString(n[:]) -} - -// MarshalText implements encoding.TextMarshaler. -func (n DevNonce) MarshalText() ([]byte, error) { - return []byte(n.String()), nil -} - -// AppNonce represents a 3 byte app-nonce. -type AppNonce [3]byte - -// String implements fmt.Stringer. -func (n AppNonce) String() string { - return hex.EncodeToString(n[:]) -} - -// MarshalText implements encoding.TextMarshaler. -func (n AppNonce) MarshalText() ([]byte, error) { - return []byte(n.String()), nil -} - -// Payload is the interface that every payload needs to implement. -// Since it might be a MACPayload, an indication must be given if -// the direction is uplink or downlink (it has different payloads -// for the same CID, based on direction). -type Payload interface { - MarshalBinary() (data []byte, err error) - UnmarshalBinary(uplink bool, data []byte) error -} - -// DataPayload represents a slice of bytes. -type DataPayload struct { - Bytes []byte `json:"bytes"` -} - -// MarshalBinary marshals the object in binary form. -func (p DataPayload) MarshalBinary() ([]byte, error) { - return p.Bytes, nil -} - -// UnmarshalBinary decodes the object from binary form. -func (p *DataPayload) UnmarshalBinary(uplink bool, data []byte) error { - p.Bytes = make([]byte, len(data)) - copy(p.Bytes, data) - return nil -} - -// JoinRequestPayload represents the join-request message payload. -type JoinRequestPayload struct { - AppEUI EUI64 `json:"appEUI"` - DevEUI EUI64 `json:"devEUI"` - DevNonce DevNonce `json:"devNonce"` -} - -// MarshalBinary marshals the object in binary form. -func (p JoinRequestPayload) MarshalBinary() ([]byte, error) { - out := make([]byte, 0, 18) - b, err := p.AppEUI.MarshalBinary() - if err != nil { - return nil, err - } - out = append(out, b...) - b, err = p.DevEUI.MarshalBinary() - if err != nil { - return nil, err - } - out = append(out, b...) - // little endian - out = append(out, p.DevNonce[1], p.DevNonce[0]) - return out, nil -} - -// UnmarshalBinary decodes the object from binary form. -func (p *JoinRequestPayload) UnmarshalBinary(uplink bool, data []byte) error { - if len(data) != 18 { - return errors.New("lorawan: 18 bytes of data are expected") - } - if err := p.AppEUI.UnmarshalBinary(data[0:8]); err != nil { - return err - } - if err := p.DevEUI.UnmarshalBinary(data[8:16]); err != nil { - return err - } - // little endian - p.DevNonce[1] = data[16] - p.DevNonce[0] = data[17] - return nil -} - -// CFList represents a list of channel frequencies. Each frequency is in Hz -// and must be multiple of 100, (since the frequency will be divided by 100 -// on encoding), the max allowed value is 2^24-1 * 100. -type CFList [5]uint32 - -// MarshalBinary marshals the object in binary form. -func (l CFList) MarshalBinary() ([]byte, error) { - out := make([]byte, 0, 16) - for _, f := range l { - if f%100 != 0 { - return nil, errors.New("lorawan: frequency must be a multiple of 100") - } - f = f / 100 - if f > 16777215 { // 2^24 - 1 - return nil, errors.New("lorawan: max value of frequency is 2^24-1") - } - b := make([]byte, 4, 4) - binary.LittleEndian.PutUint32(b, f) - out = append(out, b[:3]...) - } - // last byte is 0 / RFU - return append(out, 0), nil -} - -// UnmarshalBinary decodes the object from binary form. -func (l *CFList) UnmarshalBinary(data []byte) error { - if len(data) != 16 { - return errors.New("lorawan: 16 bytes of data are expected") - } - for i := 0; i < 5; i++ { - l[i] = binary.LittleEndian.Uint32([]byte{ - data[i*3], - data[i*3+1], - data[i*3+2], - 0, - }) * 100 - } - - return nil -} - -// JoinAcceptPayload represents the join-accept message payload. -type JoinAcceptPayload struct { - AppNonce AppNonce `json:"appNonce"` - NetID NetID `json:"netID"` - DevAddr DevAddr `json:"devAddr"` - DLSettings DLSettings `json:"dlSettings"` - RXDelay uint8 `json:"rxDelay"` // 0=1s, 1=1s, 2=2s, ... 15=15s - CFList *CFList `json:"cFlist"` -} - -// MarshalBinary marshals the object in binary form. -func (p JoinAcceptPayload) MarshalBinary() ([]byte, error) { - if p.RXDelay > 15 { - return nil, errors.New("lorawan: the max value of RXDelay is 15") - } - - out := make([]byte, 0, 12) - - // little endian - for i := len(p.AppNonce) - 1; i >= 0; i-- { - out = append(out, p.AppNonce[i]) - } - for i := len(p.NetID) - 1; i >= 0; i-- { - out = append(out, p.NetID[i]) - } - - b, err := p.DevAddr.MarshalBinary() - if err != nil { - return nil, err - } - out = append(out, b...) - - b, err = p.DLSettings.MarshalBinary() - if err != nil { - return nil, err - } - out = append(out, b...) - out = append(out, byte(p.RXDelay)) - - if p.CFList != nil { - b, err = p.CFList.MarshalBinary() - if err != nil { - return nil, err - } - out = append(out, b...) - } - - return out, nil -} - -// UnmarshalBinary decodes the object from binary form. -func (p *JoinAcceptPayload) UnmarshalBinary(uplink bool, data []byte) error { - l := len(data) - if l != 12 && l != 28 { - return errors.New("lorawan: 12 or 28 bytes of data are expected (28 bytes if CFList is present)") - } - - // little endian - for i, v := range data[0:3] { - p.AppNonce[2-i] = v - } - for i, v := range data[3:6] { - p.NetID[2-i] = v - } - - if err := p.DevAddr.UnmarshalBinary(data[6:10]); err != nil { - return err - } - if err := p.DLSettings.UnmarshalBinary(data[10:11]); err != nil { - return err - } - p.RXDelay = uint8(data[11]) - - if l == 28 { - p.CFList = &CFList{} - if err := p.CFList.UnmarshalBinary(data[12:]); err != nil { - return err - } - } - - return nil -} diff --git a/vendor/github.com/brocaar/lorawan/phypayload.go b/vendor/github.com/brocaar/lorawan/phypayload.go deleted file mode 100644 index 0cfa07029..000000000 --- a/vendor/github.com/brocaar/lorawan/phypayload.go +++ /dev/null @@ -1,592 +0,0 @@ -//go:generate stringer -type=MType -//go:generate stringer -type=Major - -package lorawan - -import ( - "crypto/aes" - "encoding/base64" - "encoding/binary" - "encoding/hex" - "encoding/json" - "errors" - "fmt" - - "github.com/jacobsa/crypto/cmac" -) - -// MType represents the message type. -type MType byte - -// MarshalText implements encoding.TextMarshaler. -func (m MType) MarshalText() ([]byte, error) { - return []byte(m.String()), nil -} - -// Major defines the major version of data message. -type Major byte - -// Supported message types (MType) -const ( - JoinRequest MType = iota - JoinAccept - UnconfirmedDataUp - UnconfirmedDataDown - ConfirmedDataUp - ConfirmedDataDown - RFU - Proprietary -) - -// Supported major versions -const ( - LoRaWANR1 Major = 0 -) - -// MarshalText implements encoding.TextMarshaler. -func (m Major) MarshalText() ([]byte, error) { - return []byte(m.String()), nil -} - -// AES128Key represents a 128 bit AES key. -type AES128Key [16]byte - -// String implements fmt.Stringer. -func (k AES128Key) String() string { - return hex.EncodeToString(k[:]) -} - -// MarshalText implements encoding.TextMarshaler. -func (k AES128Key) MarshalText() ([]byte, error) { - return []byte(k.String()), nil -} - -// UnmarshalText implements encoding.TextUnmarshaler. -func (k *AES128Key) UnmarshalText(text []byte) error { - b, err := hex.DecodeString(string(text)) - if err != nil { - return err - } - if len(b) != len(k) { - return fmt.Errorf("lorawan: exactly %d bytes are expected", len(k)) - } - copy(k[:], b) - return nil -} - -// Scan implements sql.Scanner. -func (k *AES128Key) Scan(src interface{}) error { - b, ok := src.([]byte) - if !ok { - return errors.New("lorawan: []byte type expected") - } - if len(b) != len(k) { - return fmt.Errorf("lorawan []byte must have length %d", len(k)) - } - copy(k[:], b) - return nil -} - -// MIC represents the message integrity code. -type MIC [4]byte - -// String implements fmt.Stringer. -func (m MIC) String() string { - return hex.EncodeToString(m[:]) -} - -// MarshalText implements encoding.TextMarshaler. -func (m MIC) MarshalText() ([]byte, error) { - return []byte(m.String()), nil -} - -// MHDR represents the MAC header. -type MHDR struct { - MType MType `json:"mType"` - Major Major `json:"major"` -} - -// MarshalBinary marshals the object in binary form. -func (h MHDR) MarshalBinary() ([]byte, error) { - return []byte{byte(h.Major) ^ (byte(h.MType) << 5)}, nil -} - -// UnmarshalBinary decodes the object from binary form. -func (h *MHDR) UnmarshalBinary(data []byte) error { - if len(data) != 1 { - return errors.New("lorawan: 1 byte of data is expected") - } - h.Major = Major(data[0] & 3) - h.MType = MType((data[0] & 224) >> 5) - return nil -} - -// PHYPayload represents the physical payload. -type PHYPayload struct { - MHDR MHDR `json:"mhdr"` - MACPayload Payload `json:"macPayload"` - MIC MIC `json:"mic"` -} - -// calculateMIC calculates and returns the MIC. -func (p PHYPayload) calculateMIC(key AES128Key) ([]byte, error) { - if p.MACPayload == nil { - return []byte{}, errors.New("lorawan: MACPayload should not be empty") - } - - macPayload, ok := p.MACPayload.(*MACPayload) - if !ok { - return []byte{}, errors.New("lorawan: MACPayload should be of type *MACPayload") - } - - var b []byte - var err error - var micBytes []byte - - b, err = p.MHDR.MarshalBinary() - if err != nil { - return nil, err - } - micBytes = append(micBytes, b...) - - b, err = macPayload.MarshalBinary() - if err != nil { - return nil, err - } - micBytes = append(micBytes, b...) - - b0 := make([]byte, 16) - b0[0] = 0x49 - if !p.isUplink() { - b0[5] = 1 - } - b, err = macPayload.FHDR.DevAddr.MarshalBinary() - if err != nil { - return nil, err - } - copy(b0[6:10], b) - binary.LittleEndian.PutUint32(b0[10:14], macPayload.FHDR.FCnt) - b0[15] = byte(len(micBytes)) - - hash, err := cmac.New(key[:]) - if err != nil { - return nil, err - } - - if _, err = hash.Write(b0); err != nil { - return nil, err - } - if _, err = hash.Write(micBytes); err != nil { - return nil, err - } - - hb := hash.Sum([]byte{}) - if len(hb) < 4 { - return nil, errors.New("lorawan: the hash returned less than 4 bytes") - } - return hb[0:4], nil -} - -// calculateJoinRequestMIC calculates and returns the join-request MIC. -func (p PHYPayload) calculateJoinRequestMIC(key AES128Key) ([]byte, error) { - if p.MACPayload == nil { - return []byte{}, errors.New("lorawan: MACPayload should not be empty") - } - jrPayload, ok := p.MACPayload.(*JoinRequestPayload) - if !ok { - return []byte{}, errors.New("lorawan: MACPayload should be of type *JoinRequestPayload") - } - - micBytes := make([]byte, 0, 19) - - b, err := p.MHDR.MarshalBinary() - if err != nil { - return []byte{}, err - } - micBytes = append(micBytes, b...) - - b, err = jrPayload.MarshalBinary() - if err != nil { - return nil, err - } - micBytes = append(micBytes, b...) - - hash, err := cmac.New(key[:]) - if err != nil { - return []byte{}, err - } - if _, err = hash.Write(micBytes); err != nil { - return nil, err - } - hb := hash.Sum([]byte{}) - if len(hb) < 4 { - return []byte{}, errors.New("lorawan: the hash returned less than 4 bytes") - } - return hb[0:4], nil -} - -// calculateJoinAcceptMIC calculates and returns the join-accept MIC. -func (p PHYPayload) calculateJoinAcceptMIC(key AES128Key) ([]byte, error) { - if p.MACPayload == nil { - return []byte{}, errors.New("lorawan: MACPayload should not be empty") - } - jaPayload, ok := p.MACPayload.(*JoinAcceptPayload) - if !ok { - return []byte{}, errors.New("lorawan: MACPayload should be of type *JoinAcceptPayload") - } - - micBytes := make([]byte, 0, 13) - - b, err := p.MHDR.MarshalBinary() - if err != nil { - return []byte{}, err - } - micBytes = append(micBytes, b...) - - b, err = jaPayload.MarshalBinary() - if err != nil { - return nil, err - } - micBytes = append(micBytes, b...) - - hash, err := cmac.New(key[:]) - if err != nil { - return []byte{}, err - } - if _, err = hash.Write(micBytes); err != nil { - return nil, err - } - hb := hash.Sum([]byte{}) - if len(hb) < 4 { - return []byte{}, errors.New("lorawan: the hash returned less than 4 bytes") - } - return hb[0:4], nil -} - -// SetMIC calculates and sets the MIC field. -func (p *PHYPayload) SetMIC(key AES128Key) error { - var mic []byte - var err error - - switch p.MACPayload.(type) { - case *JoinRequestPayload: - mic, err = p.calculateJoinRequestMIC(key) - case *JoinAcceptPayload: - mic, err = p.calculateJoinAcceptMIC(key) - default: - mic, err = p.calculateMIC(key) - } - - if err != nil { - return err - } - if len(mic) != 4 { - return errors.New("lorawan: a MIC of 4 bytes is expected") - } - for i, v := range mic { - p.MIC[i] = v - } - return nil -} - -// ValidateMIC returns if the MIC is valid. -// When using 32 bit frame counters, only the least-signification 16 bits are -// sent / received. In order to validate the MIC, the receiver needs to set -// the FCnt to the full 32 bit value (based on the observation of the traffic). -// See section '4.3.1.5 Frame counter (FCnt)' of the LoRaWAN 1.0 specification -// for more details. -func (p PHYPayload) ValidateMIC(key AES128Key) (bool, error) { - var mic []byte - var err error - - switch p.MACPayload.(type) { - case *JoinRequestPayload: - mic, err = p.calculateJoinRequestMIC(key) - case *JoinAcceptPayload: - mic, err = p.calculateJoinAcceptMIC(key) - default: - mic, err = p.calculateMIC(key) - } - - if err != nil { - return false, err - } - if len(mic) != 4 { - return false, errors.New("lorawan: a MIC of 4 bytes is expected") - } - for i, v := range mic { - if p.MIC[i] != v { - return false, nil - } - } - return true, nil -} - -// EncryptJoinAcceptPayload encrypts the join-accept payload with the given -// AppKey. Note that encrypted must be performed after calling SetMIC -// (sicne the MIC is part of the encrypted payload). -func (p *PHYPayload) EncryptJoinAcceptPayload(appKey AES128Key) error { - if _, ok := p.MACPayload.(*JoinAcceptPayload); !ok { - return errors.New("lorawan: MACPayload value must be of type *JoinAcceptPayload") - } - - pt, err := p.MACPayload.MarshalBinary() - if err != nil { - return err - } - - // in the 1.0 spec instead of DLSettings there is RFU field. the assumption - // is made that this should have been DLSettings. - - pt = append(pt, p.MIC[0:4]...) - if len(pt)%16 != 0 { - return errors.New("lorawan: plaintext must be a multiple of 16 bytes") - } - - block, err := aes.NewCipher(appKey[:]) - if err != nil { - return err - } - if block.BlockSize() != 16 { - return errors.New("lorawan: block-size of 16 bytes is expected") - } - ct := make([]byte, len(pt)) - for i := 0; i < len(ct)/16; i++ { - offset := i * 16 - block.Decrypt(ct[offset:offset+16], pt[offset:offset+16]) - } - p.MACPayload = &DataPayload{Bytes: ct[0 : len(ct)-4]} - copy(p.MIC[:], ct[len(ct)-4:]) - return nil -} - -// DecryptJoinAcceptPayload decrypts the join-accept payload with the given -// AppKey. Note that you need to decrypte before you can validate the MIC. -func (p *PHYPayload) DecryptJoinAcceptPayload(appKey AES128Key) error { - dp, ok := p.MACPayload.(*DataPayload) - if !ok { - return errors.New("lorawan: MACPayload must be of type *DataPayload") - } - - // append MIC to the ciphertext since it is encrypted too - ct := append(dp.Bytes, p.MIC[:]...) - - if len(ct)%16 != 0 { - return errors.New("lorawan: plaintext must be a multiple of 16 bytes") - } - - block, err := aes.NewCipher(appKey[:]) - if err != nil { - return err - } - if block.BlockSize() != 16 { - return errors.New("lorawan: block-size of 16 bytes is expected") - } - pt := make([]byte, len(ct)) - for i := 0; i < len(pt)/16; i++ { - offset := i * 16 - block.Encrypt(pt[offset:offset+16], ct[offset:offset+16]) - } - - p.MACPayload = &JoinAcceptPayload{} - copy(p.MIC[:], pt[len(pt)-4:len(pt)]) // set the decrypted MIC - return p.MACPayload.UnmarshalBinary(p.isUplink(), pt[0:len(pt)-4]) -} - -// EncryptFRMPayload encrypts the FRMPayload with the given key. -func (p *PHYPayload) EncryptFRMPayload(key AES128Key) error { - macPL, ok := p.MACPayload.(*MACPayload) - if !ok { - return errors.New("lorawan: MACPayload must be of type *MACPayload") - } - - // nothing to encrypt - if len(macPL.FRMPayload) == 0 { - return nil - } - - data, err := macPL.marshalPayload() - if err != nil { - return err - } - - data, err = EncryptFRMPayload(key, p.isUplink(), macPL.FHDR.DevAddr, macPL.FHDR.FCnt, data) - if err != nil { - return err - } - - // store the encrypted data in a DataPayload - macPL.FRMPayload = []Payload{&DataPayload{Bytes: data}} - - return nil -} - -// DecryptFRMPayload decrypts the FRMPayload with the given key. -func (p *PHYPayload) DecryptFRMPayload(key AES128Key) error { - if err := p.EncryptFRMPayload(key); err != nil { - return err - } - - macPL, ok := p.MACPayload.(*MACPayload) - if !ok { - return errors.New("lorawan: MACPayload must be of type *MACPayload") - } - - // the FRMPayload contains MAC commands, which we need to unmarshal - if macPL.FPort != nil && *macPL.FPort == 0 { - return macPL.decodeFRMPayloadToMACCommands(p.isUplink()) - } - - return nil -} - -// DecodeFRMPayloadToMACCommands decodes the (decrypted) FRMPayload bytes into -// MAC commands. Note that after calling DecryptFRMPayload, this method is -// called automatically when FPort=0. -// Use this method when unmarshaling a decrypted FRMPayload from a slice -// of bytes and this when DecryptFRMPayload is not called. -func (p *PHYPayload) DecodeFRMPayloadToMACCommands() error { - macPL, ok := p.MACPayload.(*MACPayload) - if !ok { - return errors.New("lorawan: MACPayload must be of type *MACPayload") - } - - return macPL.decodeFRMPayloadToMACCommands(p.isUplink()) -} - -// MarshalBinary marshals the object in binary form. -func (p PHYPayload) MarshalBinary() ([]byte, error) { - if p.MACPayload == nil { - return []byte{}, errors.New("lorawan: MACPayload should not be nil") - } - - var out []byte - var b []byte - var err error - - if b, err = p.MHDR.MarshalBinary(); err != nil { - return []byte{}, err - } - out = append(out, b...) - - if b, err = p.MACPayload.MarshalBinary(); err != nil { - return []byte{}, err - } - out = append(out, b...) - out = append(out, p.MIC[0:len(p.MIC)]...) - return out, nil -} - -// UnmarshalBinary decodes the object from binary form. -func (p *PHYPayload) UnmarshalBinary(data []byte) error { - if len(data) < 5 { - return errors.New("lorawan: at least 5 bytes needed to decode PHYPayload") - } - - // MHDR - if err := p.MHDR.UnmarshalBinary(data[0:1]); err != nil { - return err - } - - // MACPayload - switch p.MHDR.MType { - case JoinRequest: - p.MACPayload = &JoinRequestPayload{} - case JoinAccept: - p.MACPayload = &DataPayload{} - default: - p.MACPayload = &MACPayload{} - } - - isUplink := p.isUplink() - if err := p.MACPayload.UnmarshalBinary(isUplink, data[1:len(data)-4]); err != nil { - return err - } - - // MIC - for i := 0; i < 4; i++ { - p.MIC[i] = data[len(data)-4+i] - } - return nil -} - -// MarshalText encodes the PHYPayload into base64. -func (p PHYPayload) MarshalText() ([]byte, error) { - b, err := p.MarshalBinary() - if err != nil { - return nil, err - } - return []byte(base64.StdEncoding.EncodeToString(b)), nil -} - -// UnmarshalText decodes the PHYPayload from base64. -func (p *PHYPayload) UnmarshalText(text []byte) error { - b, err := base64.StdEncoding.DecodeString(string(text)) - if err != nil { - return err - } - return p.UnmarshalBinary(b) -} - -// MarshalJSON encodes the PHYPayload into JSON. -func (p PHYPayload) MarshalJSON() ([]byte, error) { - type phyAlias PHYPayload - return json.Marshal(phyAlias(p)) -} - -// isUplink returns a bool indicating if the packet is uplink or downlink. -// Note that for MType Proprietary it can't derrive if the packet is uplink -// or downlink. This is fine (I think) since it is also unknown how to -// calculate the MIC and the format of the MACPayload. A pluggable -// MIC calculation and MACPayload for Proprietary MType is still TODO. -func (p PHYPayload) isUplink() bool { - switch p.MHDR.MType { - case JoinRequest, UnconfirmedDataUp, ConfirmedDataUp: - return true - default: - return false - } -} - -// EncryptFRMPayload encrypts the FRMPayload (slice of bytes). -// Note that EncryptFRMPayload is used for both encryption and decryption. -func EncryptFRMPayload(key AES128Key, uplink bool, devAddr DevAddr, fCnt uint32, data []byte) ([]byte, error) { - pLen := len(data) - if pLen%16 != 0 { - // append with empty bytes so that len(data) is a multiple of 16 - data = append(data, make([]byte, 16-(pLen%16))...) - } - - block, err := aes.NewCipher(key[:]) - if err != nil { - return nil, err - } - if block.BlockSize() != 16 { - return nil, errors.New("lorawan: block size of 16 was expected") - } - - s := make([]byte, 16) - a := make([]byte, 16) - a[0] = 0x01 - if !uplink { - a[5] = 0x01 - } - - b, err := devAddr.MarshalBinary() - if err != nil { - return nil, err - } - copy(a[6:10], b) - binary.LittleEndian.PutUint32(a[10:14], uint32(fCnt)) - - for i := 0; i < len(data)/16; i++ { - a[15] = byte(i + 1) - block.Encrypt(s, a) - - for j := 0; j < len(s); j++ { - data[i*16+j] = data[i*16+j] ^ s[j] - } - } - - return data[0:pLen], nil -} diff --git a/vendor/vendor.json b/vendor/vendor.json deleted file mode 100644 index f1e48e25f..000000000 --- a/vendor/vendor.json +++ /dev/null @@ -1,1644 +0,0 @@ -{ - "comment": "", - "ignore": "test appengine/", - "package": [ - { - "checksumSHA1": "qtjd74+bErubh+qyv3s+lWmn9wc=", - "path": "github.com/StackExchange/wmi", - "revision": "ea383cf3ba6ec950874b8486cd72356d007c768f", - "revisionTime": "2017-04-10T19:29:09Z" - }, - { - "checksumSHA1": "IpQ7q3Gb4c8y0EIXqqEibFH6b4o=", - "path": "github.com/TheThingsNetwork/api", - "revision": "9be59778d6cf0edcfa83e9aa3e2bfd5e1663f857", - "revisionTime": "2018-10-05T13:18:48Z" - }, - { - "checksumSHA1": "Qyx2sVDeMNrq4cR+W1yq+Kg68iE=", - "path": "github.com/TheThingsNetwork/api/broker", - "revision": "9be59778d6cf0edcfa83e9aa3e2bfd5e1663f857", - "revisionTime": "2018-10-05T13:18:48Z" - }, - { - "checksumSHA1": "Z10EtZP2ZXhlTgZ+VggEI02WPug=", - "path": "github.com/TheThingsNetwork/api/broker/brokerclient", - "revision": "9be59778d6cf0edcfa83e9aa3e2bfd5e1663f857", - "revisionTime": "2018-10-05T13:18:48Z" - }, - { - "checksumSHA1": "oA6QqRJPs5FZ5HE5lIyplbWCrTw=", - "path": "github.com/TheThingsNetwork/api/discovery", - "revision": "9be59778d6cf0edcfa83e9aa3e2bfd5e1663f857", - "revisionTime": "2018-10-05T13:18:48Z" - }, - { - "checksumSHA1": "ws6/Hzt73JGd/0tqOXPFBhKAoWw=", - "path": "github.com/TheThingsNetwork/api/discovery/discoveryclient", - "revision": "9be59778d6cf0edcfa83e9aa3e2bfd5e1663f857", - "revisionTime": "2018-10-05T13:18:48Z" - }, - { - "checksumSHA1": "E92HDofEGnYRZ2iX4OnVjI4ExJc=", - "path": "github.com/TheThingsNetwork/api/gateway", - "revision": "9be59778d6cf0edcfa83e9aa3e2bfd5e1663f857", - "revisionTime": "2018-10-05T13:18:48Z" - }, - { - "checksumSHA1": "zN1ytE8LmTpFuQBQAsFY6Iydvfc=", - "path": "github.com/TheThingsNetwork/api/handler", - "revision": "9be59778d6cf0edcfa83e9aa3e2bfd5e1663f857", - "revisionTime": "2018-10-05T13:18:48Z" - }, - { - "checksumSHA1": "Wf1g3j9HQL33qpz1QpLGRr3JLt0=", - "path": "github.com/TheThingsNetwork/api/handler/handlerclient", - "revision": "9be59778d6cf0edcfa83e9aa3e2bfd5e1663f857", - "revisionTime": "2018-10-05T13:18:48Z" - }, - { - "checksumSHA1": "5ywHe4obsAQglqMJI2F1ecdOC3A=", - "path": "github.com/TheThingsNetwork/api/logfields", - "revision": "9be59778d6cf0edcfa83e9aa3e2bfd5e1663f857", - "revisionTime": "2018-10-05T13:18:48Z" - }, - { - "checksumSHA1": "rjQjraZh2q6YxYYqx54gQ9xkKSQ=", - "path": "github.com/TheThingsNetwork/api/monitor", - "revision": "9be59778d6cf0edcfa83e9aa3e2bfd5e1663f857", - "revisionTime": "2018-10-05T13:18:48Z" - }, - { - "checksumSHA1": "8308j9lxDoH99REc8EMOZz05vu8=", - "path": "github.com/TheThingsNetwork/api/monitor/monitorclient", - "revision": "9be59778d6cf0edcfa83e9aa3e2bfd5e1663f857", - "revisionTime": "2018-10-05T13:18:48Z" - }, - { - "checksumSHA1": "jPCAvQg958aUaQ09KNDiQXvHLAo=", - "path": "github.com/TheThingsNetwork/api/networkserver", - "revision": "9be59778d6cf0edcfa83e9aa3e2bfd5e1663f857", - "revisionTime": "2018-10-05T13:18:48Z" - }, - { - "checksumSHA1": "M4k4TzNQ4dF4d3ocaNFm4sVQvOg=", - "path": "github.com/TheThingsNetwork/api/protocol", - "revision": "9be59778d6cf0edcfa83e9aa3e2bfd5e1663f857", - "revisionTime": "2018-10-05T13:18:48Z" - }, - { - "checksumSHA1": "9htsgXY9dXpIrby7HDY+yu1Cyrg=", - "path": "github.com/TheThingsNetwork/api/protocol/lorawan", - "revision": "9be59778d6cf0edcfa83e9aa3e2bfd5e1663f857", - "revisionTime": "2018-10-05T13:18:48Z" - }, - { - "checksumSHA1": "VypJSgptmS/ctqX5WatbfiCzdHs=", - "path": "github.com/TheThingsNetwork/api/router", - "revision": "9be59778d6cf0edcfa83e9aa3e2bfd5e1663f857", - "revisionTime": "2018-10-05T13:18:48Z" - }, - { - "checksumSHA1": "DQPtILG2kmrt5/ru/oEOpnKlr/A=", - "path": "github.com/TheThingsNetwork/api/router/routerclient", - "revision": "9be59778d6cf0edcfa83e9aa3e2bfd5e1663f857", - "revisionTime": "2018-10-05T13:18:48Z" - }, - { - "checksumSHA1": "kR+KSTeWHuUB7yvaQhJFAJ8Wl1U=", - "path": "github.com/TheThingsNetwork/api/trace", - "revision": "9be59778d6cf0edcfa83e9aa3e2bfd5e1663f857", - "revisionTime": "2018-10-05T13:18:48Z" - }, - { - "checksumSHA1": "xmLs7utDpBB4MjGKc3jZUGJxGXk=", - "path": "github.com/TheThingsNetwork/go-account-lib/account", - "revision": "3314753327942c0aed5a2a9233d4f001454c21a9", - "revisionTime": "2018-05-31T09:16:50Z" - }, - { - "checksumSHA1": "b6pCShOzSh4N9LujOUFzQDzqhz8=", - "path": "github.com/TheThingsNetwork/go-account-lib/auth", - "revision": "3314753327942c0aed5a2a9233d4f001454c21a9", - "revisionTime": "2018-05-31T09:16:50Z" - }, - { - "checksumSHA1": "d1nFTGUlP4sNEf1lelyh6L59mjE=", - "path": "github.com/TheThingsNetwork/go-account-lib/cache", - "revision": "3314753327942c0aed5a2a9233d4f001454c21a9", - "revisionTime": "2018-05-31T09:16:50Z" - }, - { - "checksumSHA1": "8LlsoZGpmrUfqDNDJKU/IJ/x6TM=", - "path": "github.com/TheThingsNetwork/go-account-lib/claims", - "revision": "3314753327942c0aed5a2a9233d4f001454c21a9", - "revisionTime": "2018-05-31T09:16:50Z" - }, - { - "checksumSHA1": "3IiXhWt/UvtK73ANnQVxm0g9uGU=", - "path": "github.com/TheThingsNetwork/go-account-lib/keys", - "revision": "3314753327942c0aed5a2a9233d4f001454c21a9", - "revisionTime": "2018-05-31T09:16:50Z" - }, - { - "checksumSHA1": "6B3ymo3fpzd5+rjQDViPKBiOf+M=", - "path": "github.com/TheThingsNetwork/go-account-lib/oauth", - "revision": "3314753327942c0aed5a2a9233d4f001454c21a9", - "revisionTime": "2018-05-31T09:16:50Z" - }, - { - "checksumSHA1": "KrmYdSt7rX8Pwk2f8Fp1z/js8QQ=", - "path": "github.com/TheThingsNetwork/go-account-lib/rights", - "revision": "3314753327942c0aed5a2a9233d4f001454c21a9", - "revisionTime": "2018-05-31T09:16:50Z" - }, - { - "checksumSHA1": "RKuX3Wg2m7yvFsFoitY7hL9HcMA=", - "path": "github.com/TheThingsNetwork/go-account-lib/scope", - "revision": "3314753327942c0aed5a2a9233d4f001454c21a9", - "revisionTime": "2018-05-31T09:16:50Z" - }, - { - "checksumSHA1": "RpKXQd5sp9/jsWM991S7OhE9/ME=", - "path": "github.com/TheThingsNetwork/go-account-lib/tokenkey", - "revision": "3314753327942c0aed5a2a9233d4f001454c21a9", - "revisionTime": "2018-05-31T09:16:50Z" - }, - { - "checksumSHA1": "48WYq5L+4Gkl5NXlhDJM0Uzt/7o=", - "path": "github.com/TheThingsNetwork/go-account-lib/tokens", - "revision": "3314753327942c0aed5a2a9233d4f001454c21a9", - "revisionTime": "2018-05-31T09:16:50Z" - }, - { - "checksumSHA1": "/eebIyBMhWfiy9TAMvB8ZfyQScE=", - "path": "github.com/TheThingsNetwork/go-account-lib/util", - "revision": "3314753327942c0aed5a2a9233d4f001454c21a9", - "revisionTime": "2018-05-31T09:16:50Z" - }, - { - "checksumSHA1": "i9DF5eLNL67Prly9HZQ1jUe776I=", - "path": "github.com/TheThingsNetwork/go-cayenne-lib/cayennelpp", - "revision": "ba5c7ac69c198562633ee3ad4c90e16b4b12b88d", - "revisionTime": "2017-05-22T15:00:42Z" - }, - { - "checksumSHA1": "x795Q87cyvAAeuxXxft5iwd1Los=", - "path": "github.com/TheThingsNetwork/go-utils/backoff", - "revision": "8b4e2f02426ee7bd5ebacc97b6d840632d0f7e60", - "revisionTime": "2018-09-12T07:29:26Z" - }, - { - "checksumSHA1": "SsIrHnnCvLk9Y+9ope+z6xOfypo=", - "path": "github.com/TheThingsNetwork/go-utils/encoding", - "revision": "8b4e2f02426ee7bd5ebacc97b6d840632d0f7e60", - "revisionTime": "2018-09-12T07:29:26Z" - }, - { - "checksumSHA1": "Scfp1hQzYCbaI1fR7VJuYTgrJ/g=", - "path": "github.com/TheThingsNetwork/go-utils/grpc/auth", - "revision": "8b4e2f02426ee7bd5ebacc97b6d840632d0f7e60", - "revisionTime": "2018-09-12T07:29:26Z" - }, - { - "checksumSHA1": "Qi7vTZyzffccM1/XZ8cx+pKnGto=", - "path": "github.com/TheThingsNetwork/go-utils/grpc/restartstream", - "revision": "8b4e2f02426ee7bd5ebacc97b6d840632d0f7e60", - "revisionTime": "2018-09-12T07:29:26Z" - }, - { - "checksumSHA1": "4iLODl3lRxNw3gtzpjldw3Lk8Ig=", - "path": "github.com/TheThingsNetwork/go-utils/grpc/rpcerror", - "revision": "8b4e2f02426ee7bd5ebacc97b6d840632d0f7e60", - "revisionTime": "2018-09-12T07:29:26Z" - }, - { - "checksumSHA1": "G362bCEcpTN6usnS9qgxORA38GE=", - "path": "github.com/TheThingsNetwork/go-utils/grpc/rpclog", - "revision": "8b4e2f02426ee7bd5ebacc97b6d840632d0f7e60", - "revisionTime": "2018-09-12T07:29:26Z" - }, - { - "checksumSHA1": "2fmcExbxkfP7BQNDGDqZnL3UBvI=", - "path": "github.com/TheThingsNetwork/go-utils/grpc/streambuffer", - "revision": "8b4e2f02426ee7bd5ebacc97b6d840632d0f7e60", - "revisionTime": "2018-09-12T07:29:26Z" - }, - { - "checksumSHA1": "1ZHMKISbo6QBsYLOx8JKgp6uhs4=", - "path": "github.com/TheThingsNetwork/go-utils/grpc/ttnctx", - "revision": "8b4e2f02426ee7bd5ebacc97b6d840632d0f7e60", - "revisionTime": "2018-09-12T07:29:26Z" - }, - { - "checksumSHA1": "T7iFQUlCUAv4cJNDZC0//46Nbio=", - "path": "github.com/TheThingsNetwork/go-utils/handlers/cli", - "revision": "8b4e2f02426ee7bd5ebacc97b6d840632d0f7e60", - "revisionTime": "2018-09-12T07:29:26Z" - }, - { - "checksumSHA1": "H/qmI9ogJaP1hx+AJoalahqQ20Q=", - "path": "github.com/TheThingsNetwork/go-utils/log", - "revision": "8b4e2f02426ee7bd5ebacc97b6d840632d0f7e60", - "revisionTime": "2018-09-12T07:29:26Z" - }, - { - "checksumSHA1": "FCtEPJzinLIWyAcZzM1TsbkWC7o=", - "path": "github.com/TheThingsNetwork/go-utils/log/apex", - "revision": "8b4e2f02426ee7bd5ebacc97b6d840632d0f7e60", - "revisionTime": "2018-09-12T07:29:26Z" - }, - { - "checksumSHA1": "sQ0vy3MCGY1WgK9xldn1V6pMeZk=", - "path": "github.com/TheThingsNetwork/go-utils/log/grpc", - "revision": "8b4e2f02426ee7bd5ebacc97b6d840632d0f7e60", - "revisionTime": "2018-09-12T07:29:26Z" - }, - { - "checksumSHA1": "35KLWRFrraz1ZsE2K2kAfDZT0bw=", - "path": "github.com/TheThingsNetwork/go-utils/log/prometheus", - "revision": "8b4e2f02426ee7bd5ebacc97b6d840632d0f7e60", - "revisionTime": "2018-09-12T07:29:26Z" - }, - { - "checksumSHA1": "2/v0SMyHM5vgImOb1BEEDWeXZEY=", - "path": "github.com/TheThingsNetwork/go-utils/pseudorandom", - "revision": "8b4e2f02426ee7bd5ebacc97b6d840632d0f7e60", - "revisionTime": "2018-09-12T07:29:26Z" - }, - { - "checksumSHA1": "iYa+qSqzqZwpmoibM8/1X+aC3sI=", - "path": "github.com/TheThingsNetwork/go-utils/random", - "revision": "8b4e2f02426ee7bd5ebacc97b6d840632d0f7e60", - "revisionTime": "2018-09-12T07:29:26Z" - }, - { - "checksumSHA1": "AOXRd2QZp/h0olCTFOnAPA4Wg8E=", - "path": "github.com/TheThingsNetwork/go-utils/roots", - "revision": "8b4e2f02426ee7bd5ebacc97b6d840632d0f7e60", - "revisionTime": "2018-09-12T07:29:26Z" - }, - { - "checksumSHA1": "4IearLMTAsdyT2kExofJKklO7k4=", - "path": "github.com/apex/log", - "revision": "941dea75d3ebfbdd905a5d8b7b232965c5e5c684", - "revisionTime": "2018-07-02T15:59:52Z" - }, - { - "checksumSHA1": "rkMrOC6qQhEkDCYmmUErg8qvjGA=", - "path": "github.com/apex/log/handlers/json", - "revision": "941dea75d3ebfbdd905a5d8b7b232965c5e5c684", - "revisionTime": "2018-07-02T15:59:52Z" - }, - { - "checksumSHA1": "AHCiF3VnEqmXyZDeH+z/IGsAtnI=", - "path": "github.com/apex/log/handlers/level", - "revision": "941dea75d3ebfbdd905a5d8b7b232965c5e5c684", - "revisionTime": "2018-07-02T15:59:52Z" - }, - { - "checksumSHA1": "rxQUkWqruIZKpRzdwqrkxfcZvyw=", - "path": "github.com/apex/log/handlers/multi", - "revision": "941dea75d3ebfbdd905a5d8b7b232965c5e5c684", - "revisionTime": "2018-07-02T15:59:52Z" - }, - { - "checksumSHA1": "+urkX0ZY02ty7TvsBsYzcboRxVg=", - "path": "github.com/apex/log/handlers/text", - "revision": "941dea75d3ebfbdd905a5d8b7b232965c5e5c684", - "revisionTime": "2018-07-02T15:59:52Z" - }, - { - "checksumSHA1": "5gnBrB9ISzgkQe5rLOlFp2MqA/8=", - "path": "github.com/asaskevich/govalidator", - "revision": "f9ffefc3facfbe0caee3fea233cbb6e8208f4541", - "revisionTime": "2018-07-20T11:50:03Z" - }, - { - "checksumSHA1": "0rido7hYHQtfq3UJzVT5LClLAWc=", - "path": "github.com/beorn7/perks/quantile", - "revision": "3a771d992973f24aa725d07868b467d1ddfceafb", - "revisionTime": "2018-03-21T16:47:47Z" - }, - { - "checksumSHA1": "RLjW2GoEu83LAZLuLSlzLdiyHYQ=", - "path": "github.com/bluele/gcache", - "revision": "472614239ac7e5bc6461e237c798a6ebd5aff8c1", - "revisionTime": "2017-10-10T15:56:17Z" - }, - { - "checksumSHA1": "mUeojTdLEyzYOki70VUAeeYr/wQ=", - "path": "github.com/dgrijalva/jwt-go", - "revision": "0b96aaa707760d6ab28d9b9d1913ff5993328bae", - "revisionTime": "2018-07-19T21:18:23Z" - }, - { - "checksumSHA1": "zsBTX3L2J8TXlQB2HiIX6aQVqB0=", - "path": "github.com/eclipse/paho.mqtt.golang", - "revision": "88c4622b8e24c52f64a0caaa28e40b91629bb6e6", - "revisionTime": "2018-06-14T10:22:24Z" - }, - { - "checksumSHA1": "ITCnG3uKUnqNXrnnulKokjQKfN4=", - "path": "github.com/eclipse/paho.mqtt.golang/packets", - "revision": "88c4622b8e24c52f64a0caaa28e40b91629bb6e6", - "revisionTime": "2018-06-14T10:22:24Z" - }, - { - "checksumSHA1": "5BP5xofo0GoFi6FtgqFFbmHyUKI=", - "path": "github.com/fatih/structs", - "revision": "ebf56d35bba727c68ac77f56f2fcf90b181851aa", - "revisionTime": "2018-01-23T06:50:59Z" - }, - { - "checksumSHA1": "7NP1qUMF8Kx1y0zANxx0e+oq9Oo=", - "path": "github.com/fsnotify/fsnotify", - "revision": "ccc981bf80385c528a65fbfdd49bf2d8da22aa23", - "revisionTime": "2018-08-30T22:02:26Z" - }, - { - "checksumSHA1": "Kqv7bA4oJG0nPwQvGWDwGGaKONo=", - "path": "github.com/go-ole/go-ole", - "revision": "7a0fa49edf48165190530c675167e2f319a05268", - "revisionTime": "2018-06-25T08:58:08Z" - }, - { - "checksumSHA1": "PArleDBtadu2qO4hJwHR8a3IOTA=", - "path": "github.com/go-ole/go-ole/oleutil", - "revision": "7a0fa49edf48165190530c675167e2f319a05268", - "revisionTime": "2018-06-25T08:58:08Z" - }, - { - "checksumSHA1": "Gay+mu0LGL3M53eDVwTEbe2CjuY=", - "path": "github.com/gogo/protobuf/gogoproto", - "revision": "636bf0302bc95575d69441b25a2603156ffdddf1", - "revisionTime": "2018-07-17T14:19:46Z", - "version": "v1.1.1", - "versionExact": "v1.1.1" - }, - { - "checksumSHA1": "nDdhX1iBJuMhtp//Z9B7C2srOAE=", - "path": "github.com/gogo/protobuf/jsonpb", - "revision": "636bf0302bc95575d69441b25a2603156ffdddf1", - "revisionTime": "2018-07-17T14:19:46Z", - "version": "v1.1.1", - "versionExact": "v1.1.1" - }, - { - "checksumSHA1": "iJy58JkOJxhuyWW0RDbzE65Ms7A=", - "path": "github.com/gogo/protobuf/plugin/compare", - "revision": "636bf0302bc95575d69441b25a2603156ffdddf1", - "revisionTime": "2018-07-17T14:19:46Z", - "version": "v1.1.1", - "versionExact": "v1.1.1" - }, - { - "checksumSHA1": "TJCl1W3nXbpBqeL0FqUbLxvLj2Y=", - "path": "github.com/gogo/protobuf/plugin/defaultcheck", - "revision": "636bf0302bc95575d69441b25a2603156ffdddf1", - "revisionTime": "2018-07-17T14:19:46Z", - "version": "v1.1.1", - "versionExact": "v1.1.1" - }, - { - "checksumSHA1": "30CshOdSNU5CWITX3ZXYrDpcWPI=", - "path": "github.com/gogo/protobuf/plugin/description", - "revision": "636bf0302bc95575d69441b25a2603156ffdddf1", - "revisionTime": "2018-07-17T14:19:46Z", - "version": "v1.1.1", - "versionExact": "v1.1.1" - }, - { - "checksumSHA1": "Gg0c45e19o70P6vvs3i5pv/erqo=", - "path": "github.com/gogo/protobuf/plugin/embedcheck", - "revision": "636bf0302bc95575d69441b25a2603156ffdddf1", - "revisionTime": "2018-07-17T14:19:46Z", - "version": "v1.1.1", - "versionExact": "v1.1.1" - }, - { - "checksumSHA1": "knMp74dhZW43DcXWo3yykjhLWck=", - "path": "github.com/gogo/protobuf/plugin/enumstringer", - "revision": "636bf0302bc95575d69441b25a2603156ffdddf1", - "revisionTime": "2018-07-17T14:19:46Z", - "version": "v1.1.1", - "versionExact": "v1.1.1" - }, - { - "checksumSHA1": "HG7Fv9xqq2bgJH5viYmdgedeBSU=", - "path": "github.com/gogo/protobuf/plugin/equal", - "revision": "636bf0302bc95575d69441b25a2603156ffdddf1", - "revisionTime": "2018-07-17T14:19:46Z", - "version": "v1.1.1", - "versionExact": "v1.1.1" - }, - { - "checksumSHA1": "oW5qWSA/x87Xa5ZjBcgWMwdL99I=", - "path": "github.com/gogo/protobuf/plugin/face", - "revision": "636bf0302bc95575d69441b25a2603156ffdddf1", - "revisionTime": "2018-07-17T14:19:46Z", - "version": "v1.1.1", - "versionExact": "v1.1.1" - }, - { - "checksumSHA1": "HBqXDxv1LO9I8BoqX8l21oER1KU=", - "path": "github.com/gogo/protobuf/plugin/gostring", - "revision": "636bf0302bc95575d69441b25a2603156ffdddf1", - "revisionTime": "2018-07-17T14:19:46Z", - "version": "v1.1.1", - "versionExact": "v1.1.1" - }, - { - "checksumSHA1": "t+jrpPS8bbWp032PcILrfoIJY+c=", - "path": "github.com/gogo/protobuf/plugin/marshalto", - "revision": "636bf0302bc95575d69441b25a2603156ffdddf1", - "revisionTime": "2018-07-17T14:19:46Z", - "version": "v1.1.1", - "versionExact": "v1.1.1" - }, - { - "checksumSHA1": "EM1zgWiW8983vDSmliZC4gIjDRw=", - "path": "github.com/gogo/protobuf/plugin/oneofcheck", - "revision": "636bf0302bc95575d69441b25a2603156ffdddf1", - "revisionTime": "2018-07-17T14:19:46Z", - "version": "v1.1.1", - "versionExact": "v1.1.1" - }, - { - "checksumSHA1": "rL+cCEUlnJErjN9ydV30bBhakzM=", - "path": "github.com/gogo/protobuf/plugin/populate", - "revision": "636bf0302bc95575d69441b25a2603156ffdddf1", - "revisionTime": "2018-07-17T14:19:46Z", - "version": "v1.1.1", - "versionExact": "v1.1.1" - }, - { - "checksumSHA1": "17YWrOjOL2kWMl/dd7mOVEw7KcQ=", - "path": "github.com/gogo/protobuf/plugin/size", - "revision": "636bf0302bc95575d69441b25a2603156ffdddf1", - "revisionTime": "2018-07-17T14:19:46Z", - "version": "v1.1.1", - "versionExact": "v1.1.1" - }, - { - "checksumSHA1": "2Glqjvx+smBDPeLuGU2Rp7EsrSc=", - "path": "github.com/gogo/protobuf/plugin/stringer", - "revision": "636bf0302bc95575d69441b25a2603156ffdddf1", - "revisionTime": "2018-07-17T14:19:46Z", - "version": "v1.1.1", - "versionExact": "v1.1.1" - }, - { - "checksumSHA1": "pMp4Z/1OFvgCkOCaMZGUmaJltQo=", - "path": "github.com/gogo/protobuf/plugin/testgen", - "revision": "636bf0302bc95575d69441b25a2603156ffdddf1", - "revisionTime": "2018-07-17T14:19:46Z", - "version": "v1.1.1", - "versionExact": "v1.1.1" - }, - { - "checksumSHA1": "2TxfbXOOPHSKCUdU17i+Vl+ZJQs=", - "path": "github.com/gogo/protobuf/plugin/union", - "revision": "636bf0302bc95575d69441b25a2603156ffdddf1", - "revisionTime": "2018-07-17T14:19:46Z", - "version": "v1.1.1", - "versionExact": "v1.1.1" - }, - { - "checksumSHA1": "vv0D6y5rAW8i3hvj4Kk7yrbg9fY=", - "path": "github.com/gogo/protobuf/plugin/unmarshal", - "revision": "636bf0302bc95575d69441b25a2603156ffdddf1", - "revisionTime": "2018-07-17T14:19:46Z", - "version": "v1.1.1", - "versionExact": "v1.1.1" - }, - { - "checksumSHA1": "GYschMPw/Zi5C4QnGKRfgljnx/c=", - "path": "github.com/gogo/protobuf/proto", - "revision": "636bf0302bc95575d69441b25a2603156ffdddf1", - "revisionTime": "2018-07-17T14:19:46Z", - "version": "v1.1.1", - "versionExact": "v1.1.1" - }, - { - "checksumSHA1": "4R7X2wRYYOxdXsoXOEcyBoCakb8=", - "path": "github.com/gogo/protobuf/protoc-gen-gogo/descriptor", - "revision": "636bf0302bc95575d69441b25a2603156ffdddf1", - "revisionTime": "2018-07-17T14:19:46Z", - "version": "v1.1.1", - "versionExact": "v1.1.1" - }, - { - "checksumSHA1": "4Pks3G+XIkNOiwVhaYkzt/eICG0=", - "path": "github.com/gogo/protobuf/protoc-gen-gogo/generator", - "revision": "636bf0302bc95575d69441b25a2603156ffdddf1", - "revisionTime": "2018-07-17T14:19:46Z", - "version": "v1.1.1", - "versionExact": "v1.1.1" - }, - { - "checksumSHA1": "ekXJtMvDVvfO+juihvauPgtlpnQ=", - "path": "github.com/gogo/protobuf/protoc-gen-gogo/generator/internal/remap", - "revision": "636bf0302bc95575d69441b25a2603156ffdddf1", - "revisionTime": "2018-07-17T14:19:46Z", - "version": "v1.1.1", - "versionExact": "v1.1.1" - }, - { - "checksumSHA1": "Cy+ls8DgFNBoxMDwOtHwglAvRC0=", - "path": "github.com/gogo/protobuf/protoc-gen-gogo/grpc", - "revision": "636bf0302bc95575d69441b25a2603156ffdddf1", - "revisionTime": "2018-07-17T14:19:46Z", - "version": "v1.1.1", - "versionExact": "v1.1.1" - }, - { - "checksumSHA1": "q0ydDnVTRID+SJ7IVXdev2vejrA=", - "path": "github.com/gogo/protobuf/protoc-gen-gogo/plugin", - "revision": "636bf0302bc95575d69441b25a2603156ffdddf1", - "revisionTime": "2018-07-17T14:19:46Z", - "version": "v1.1.1", - "versionExact": "v1.1.1" - }, - { - "checksumSHA1": "HPVQZu059/Rfw2bAWM538bVTcUc=", - "path": "github.com/gogo/protobuf/sortkeys", - "revision": "636bf0302bc95575d69441b25a2603156ffdddf1", - "revisionTime": "2018-07-17T14:19:46Z", - "version": "v1.1.1", - "versionExact": "v1.1.1" - }, - { - "checksumSHA1": "8+7Pli2T4Tt7NNSUstW5bV/Zm3w=", - "path": "github.com/gogo/protobuf/types", - "revision": "636bf0302bc95575d69441b25a2603156ffdddf1", - "revisionTime": "2018-07-17T14:19:46Z", - "version": "v1.1.1", - "versionExact": "v1.1.1" - }, - { - "checksumSHA1": "tyIyCME5JLRJ5bjIMBtLDjJPwss=", - "path": "github.com/gogo/protobuf/vanity", - "revision": "636bf0302bc95575d69441b25a2603156ffdddf1", - "revisionTime": "2018-07-17T14:19:46Z", - "version": "v1.1.1", - "versionExact": "v1.1.1" - }, - { - "checksumSHA1": "GeMa6Un5ZjE3zXyCF13pti4UD0Q=", - "path": "github.com/gogo/protobuf/vanity/command", - "revision": "636bf0302bc95575d69441b25a2603156ffdddf1", - "revisionTime": "2018-07-17T14:19:46Z", - "version": "v1.1.1", - "versionExact": "v1.1.1" - }, - { - "checksumSHA1": "L1EnSrVt8iXe1VtEfYopRet5+N8=", - "path": "github.com/golang/mock/gomock", - "revision": "c7d0ee73a597d1349404607d9f692cacd09cdc06", - "revisionTime": "2017-09-16T22:02:29Z" - }, - { - "checksumSHA1": "NPefLsS2pv0+YlXAuJJvkNOMgyE=", - "path": "github.com/golang/protobuf/jsonpb", - "revision": "b4deda0973fb4c70b50d226b1af49f3da59f5265", - "revisionTime": "2018-04-30T18:52:41Z", - "version": "v1.1.0", - "versionExact": "v1.1.0" - }, - { - "checksumSHA1": "Pyou8mceOASSFxc7GeXZuVdSMi0=", - "path": "github.com/golang/protobuf/proto", - "revision": "b4deda0973fb4c70b50d226b1af49f3da59f5265", - "revisionTime": "2018-04-30T18:52:41Z", - "version": "v1.1.0", - "versionExact": "v1.1.0" - }, - { - "checksumSHA1": "DA2cyOt1W92RTyXAqKQ4JWKGR8U=", - "path": "github.com/golang/protobuf/protoc-gen-go/descriptor", - "revision": "b4deda0973fb4c70b50d226b1af49f3da59f5265", - "revisionTime": "2018-04-30T18:52:41Z", - "version": "v1.1.0", - "versionExact": "v1.1.0" - }, - { - "checksumSHA1": "DifSE44TpfgLs4XBFJHiPy1YBoM=", - "path": "github.com/golang/protobuf/protoc-gen-go/generator", - "revision": "b4deda0973fb4c70b50d226b1af49f3da59f5265", - "revisionTime": "2018-04-30T18:52:41Z", - "version": "v1.1.0", - "versionExact": "v1.1.0" - }, - { - "checksumSHA1": "uY4dEtqaAe5gsU8gbpCI1JgEIII=", - "path": "github.com/golang/protobuf/protoc-gen-go/generator/internal/remap", - "revision": "b4deda0973fb4c70b50d226b1af49f3da59f5265", - "revisionTime": "2018-04-30T18:52:41Z", - "version": "v1.1.0", - "versionExact": "v1.1.0" - }, - { - "checksumSHA1": "h4PLbJDYnRmcUuf56USJ5K3xJOg=", - "path": "github.com/golang/protobuf/protoc-gen-go/plugin", - "revision": "b4deda0973fb4c70b50d226b1af49f3da59f5265", - "revisionTime": "2018-04-30T18:52:41Z", - "version": "v1.1.0", - "versionExact": "v1.1.0" - }, - { - "checksumSHA1": "/s0InJhSrxhTpqw5FIKgSMknCfM=", - "path": "github.com/golang/protobuf/ptypes", - "revision": "b4deda0973fb4c70b50d226b1af49f3da59f5265", - "revisionTime": "2018-04-30T18:52:41Z", - "version": "v1.1.0", - "versionExact": "v1.1.0" - }, - { - "checksumSHA1": "3eqU9o+NMZSLM/coY5WDq7C1uKg=", - "path": "github.com/golang/protobuf/ptypes/any", - "revision": "b4deda0973fb4c70b50d226b1af49f3da59f5265", - "revisionTime": "2018-04-30T18:52:41Z", - "version": "v1.1.0", - "versionExact": "v1.1.0" - }, - { - "checksumSHA1": "ZIF0rnVzNLluFPqUebtJrVonMr4=", - "path": "github.com/golang/protobuf/ptypes/duration", - "revision": "b4deda0973fb4c70b50d226b1af49f3da59f5265", - "revisionTime": "2018-04-30T18:52:41Z", - "version": "v1.1.0", - "versionExact": "v1.1.0" - }, - { - "checksumSHA1": "7Az4Zl9T11I+xOfjgs/3/YMJ24I=", - "path": "github.com/golang/protobuf/ptypes/empty", - "revision": "b4deda0973fb4c70b50d226b1af49f3da59f5265", - "revisionTime": "2018-04-30T18:52:41Z", - "version": "v1.1.0", - "versionExact": "v1.1.0" - }, - { - "checksumSHA1": "QwgMLtaLi/6xHaNiDFwHN844AkI=", - "path": "github.com/golang/protobuf/ptypes/struct", - "revision": "b4deda0973fb4c70b50d226b1af49f3da59f5265", - "revisionTime": "2018-04-30T18:52:41Z", - "version": "v1.1.0", - "versionExact": "v1.1.0" - }, - { - "checksumSHA1": "1FJvuT0UllZaaS43kmPlx8oNiCs=", - "path": "github.com/golang/protobuf/ptypes/timestamp", - "revision": "b4deda0973fb4c70b50d226b1af49f3da59f5265", - "revisionTime": "2018-04-30T18:52:41Z", - "version": "v1.1.0", - "versionExact": "v1.1.0" - }, - { - "checksumSHA1": "cACEkFM7kIL+NVF6jSJPY2tW4d8=", - "path": "github.com/gosuri/uitable", - "revision": "36ee7e946282a3fb1cfecd476ddc9b35d8847e42", - "revisionTime": "2016-04-04T20:39:58Z" - }, - { - "checksumSHA1": "hfL7iFULaUity86NGidQt/AiYyo=", - "path": "github.com/gosuri/uitable/util/strutil", - "revision": "36ee7e946282a3fb1cfecd476ddc9b35d8847e42", - "revisionTime": "2016-04-04T20:39:58Z" - }, - { - "checksumSHA1": "xUvDrGeY4HijGKl+W8WSvWl1Evs=", - "path": "github.com/gosuri/uitable/util/wordwrap", - "revision": "36ee7e946282a3fb1cfecd476ddc9b35d8847e42", - "revisionTime": "2016-04-04T20:39:58Z" - }, - { - "checksumSHA1": "3iVD2sJv4uYnA8YgkR8yzZiUF7o=", - "path": "github.com/grpc-ecosystem/go-grpc-prometheus", - "revision": "93bf4626fba73b751b0f3cdf2649be4ce0c420cd", - "revisionTime": "2018-08-20T15:04:22Z" - }, - { - "checksumSHA1": "XHlYXwszEnUvx+vWdKYexz2Yris=", - "path": "github.com/grpc-ecosystem/grpc-gateway/runtime", - "revision": "7916b03771e9edb045fcfc7db5f516f8b6a29c39", - "revisionTime": "2018-09-10T11:43:36Z" - }, - { - "checksumSHA1": "0nkLVed+YhQE6+7fFbir+gCrcSs=", - "path": "github.com/grpc-ecosystem/grpc-gateway/runtime/internal", - "revision": "7916b03771e9edb045fcfc7db5f516f8b6a29c39", - "revisionTime": "2018-09-10T11:43:36Z" - }, - { - "checksumSHA1": "CKrlwtWMXiznQrgS2o/obvP7HTM=", - "path": "github.com/grpc-ecosystem/grpc-gateway/third_party/googleapis/google/api", - "revision": "7980281cb6ac1dacf3f0025c53870c817c1c9511", - "revisionTime": "2017-03-15T21:35:39Z" - }, - { - "checksumSHA1": "QuHQq2+nPPMMJ3qoJxlQ8ZCVEfk=", - "path": "github.com/grpc-ecosystem/grpc-gateway/utilities", - "revision": "7916b03771e9edb045fcfc7db5f516f8b6a29c39", - "revisionTime": "2018-09-10T11:43:36Z" - }, - { - "checksumSHA1": "bWGI7DqWg6IdhfamV96OD+Esa+8=", - "path": "github.com/hashicorp/hcl", - "revision": "65a6292f0157eff210d03ed1bf6c59b190b8b906", - "revisionTime": "2018-09-06T18:38:39Z" - }, - { - "checksumSHA1": "XQmjDva9JCGGkIecOgwtBEMCJhU=", - "path": "github.com/hashicorp/hcl/hcl/ast", - "revision": "65a6292f0157eff210d03ed1bf6c59b190b8b906", - "revisionTime": "2018-09-06T18:38:39Z" - }, - { - "checksumSHA1": "1GmX7G0Pgf5XprOh+T3zXMXX0dc=", - "path": "github.com/hashicorp/hcl/hcl/parser", - "revision": "65a6292f0157eff210d03ed1bf6c59b190b8b906", - "revisionTime": "2018-09-06T18:38:39Z" - }, - { - "checksumSHA1": "encY+ZtDf4nJaMvsVL2c+EJ2r3Q=", - "path": "github.com/hashicorp/hcl/hcl/printer", - "revision": "65a6292f0157eff210d03ed1bf6c59b190b8b906", - "revisionTime": "2018-09-06T18:38:39Z" - }, - { - "checksumSHA1": "+qJTCxhkwC7r+VZlPlZz8S74KmU=", - "path": "github.com/hashicorp/hcl/hcl/scanner", - "revision": "65a6292f0157eff210d03ed1bf6c59b190b8b906", - "revisionTime": "2018-09-06T18:38:39Z" - }, - { - "checksumSHA1": "oS3SCN9Wd6D8/LG0Yx1fu84a7gI=", - "path": "github.com/hashicorp/hcl/hcl/strconv", - "revision": "65a6292f0157eff210d03ed1bf6c59b190b8b906", - "revisionTime": "2018-09-06T18:38:39Z" - }, - { - "checksumSHA1": "c6yprzj06ASwCo18TtbbNNBHljA=", - "path": "github.com/hashicorp/hcl/hcl/token", - "revision": "65a6292f0157eff210d03ed1bf6c59b190b8b906", - "revisionTime": "2018-09-06T18:38:39Z" - }, - { - "checksumSHA1": "PwlfXt7mFS8UYzWxOK5DOq0yxS0=", - "path": "github.com/hashicorp/hcl/json/parser", - "revision": "65a6292f0157eff210d03ed1bf6c59b190b8b906", - "revisionTime": "2018-09-06T18:38:39Z" - }, - { - "checksumSHA1": "afrZ8VmAwfTdDAYVgNSXbxa4GsA=", - "path": "github.com/hashicorp/hcl/json/scanner", - "revision": "65a6292f0157eff210d03ed1bf6c59b190b8b906", - "revisionTime": "2018-09-06T18:38:39Z" - }, - { - "checksumSHA1": "fNlXQCQEnb+B3k5UDL/r15xtSJY=", - "path": "github.com/hashicorp/hcl/json/token", - "revision": "65a6292f0157eff210d03ed1bf6c59b190b8b906", - "revisionTime": "2018-09-06T18:38:39Z" - }, - { - "checksumSHA1": "K6exl2ouL7d8cR2i378EzZOdRVI=", - "path": "github.com/howeyc/gopass", - "revision": "bf9dde6d0d2c004a008c27aaee91170c786f6db8", - "revisionTime": "2017-01-09T16:22:49Z" - }, - { - "checksumSHA1": "40vJyUB4ezQSn/NSadsKEOrudMc=", - "path": "github.com/inconshreveable/mousetrap", - "revision": "76626ae9c91c4f2a10f34cad8ce83ea42c93bb75", - "revisionTime": "2014-10-17T20:07:13Z" - }, - { - "checksumSHA1": "7PLlrIaGI1TKWB96RkizgkTtOtQ=", - "path": "github.com/jacobsa/crypto/cmac", - "revision": "c73681c634de898c869684602cf0c0d2ce938c4d", - "revisionTime": "2017-10-18T23:08:03Z" - }, - { - "checksumSHA1": "NBvtX91AEKxFLmj8mwwhXEKl6d0=", - "path": "github.com/jacobsa/crypto/common", - "revision": "c73681c634de898c869684602cf0c0d2ce938c4d", - "revisionTime": "2017-10-18T23:08:03Z" - }, - { - "checksumSHA1": "dqtKfXGotqkiYaS328PpWeusig8=", - "path": "github.com/juju/ratelimit", - "revision": "59fac5042749a5afb9af70e813da1dd5474f0167", - "revisionTime": "2017-10-26T09:04:26Z" - }, - { - "checksumSHA1": "gEjGS03N1eysvpQ+FCHTxPcbxXc=", - "path": "github.com/kardianos/osext", - "revision": "ae77be60afb1dcacde03767a8c37337fad28ac14", - "revisionTime": "2017-05-10T13:15:34Z" - }, - { - "checksumSHA1": "AYZGozgchqe4WcKH/jCZI1flnP8=", - "path": "github.com/magiconair/properties", - "revision": "c2353362d570a7bfa228149c62842019201cfb71", - "revisionTime": "2018-05-15T20:40:05Z" - }, - { - "checksumSHA1": "KGCifxxR5cm2gz94i2iha+RIZlk=", - "path": "github.com/mattn/go-runewidth", - "revision": "ce7b0b5c7b45a81508558cd1dba6bb1e4ddb51bb", - "revisionTime": "2018-04-08T05:53:51Z" - }, - { - "checksumSHA1": "bKMZjd2wPw13VwoE7mBeSv5djFA=", - "path": "github.com/matttproud/golang_protobuf_extensions/pbutil", - "revision": "c12348ce28de40eed0136aa2b644d0ee0650e56c", - "revisionTime": "2016-04-24T11:30:07Z" - }, - { - "checksumSHA1": "a58zUNtDH/gEd6F6KI3FqT2iEo0=", - "path": "github.com/mitchellh/go-homedir", - "revision": "ae18d6b8b3205b561c79e8e5f69bff09736185f4", - "revisionTime": "2018-08-24T00:42:36Z" - }, - { - "checksumSHA1": "4VVcCBCqn1hvMaURZyPSKqkMc4o=", - "path": "github.com/mitchellh/mapstructure", - "revision": "fa473d140ef3c6adf42d6b391fe76707f1f243c8", - "revisionTime": "2018-08-24T00:32:02Z" - }, - { - "checksumSHA1": "jIedWzdqaQakO3DMTGZoXcmm3F4=", - "path": "github.com/mwitkow/go-grpc-middleware", - "revision": "498ae206fc3cfe81cd82e48c1d4354026fa5f9ec", - "revisionTime": "2018-08-30T09:29:08Z" - }, - { - "checksumSHA1": "yekxthsOXToQ/tMNaHEQvf9d5nY=", - "path": "github.com/pelletier/go-buffruneio", - "revision": "de1592c34d9c6055a32fc9ebe2b3ee50ca468ebe", - "revisionTime": "2018-08-27T16:26:05Z" - }, - { - "checksumSHA1": "amsJse38+uT7Z7UkvtMzVefgZOM=", - "path": "github.com/pelletier/go-toml", - "revision": "c2dbbc24a97911339e01bda0b8cabdbd8f13b602", - "revisionTime": "2018-07-24T18:49:33Z" - }, - { - "checksumSHA1": "18YrywDvb67HU8xYF5vqKMgelx0=", - "path": "github.com/pkg/errors", - "revision": "c059e472caf75dbe73903f6521a20abac245b17f", - "revisionTime": "2018-09-11T06:21:13Z" - }, - { - "checksumSHA1": "jN66lrLtNTo3Qe6+WtCbNcvznAo=", - "path": "github.com/prometheus/client_golang/prometheus", - "revision": "7858729281ec582767b20e0d696b6041d995d5e0", - "revisionTime": "2018-09-07T10:25:42Z" - }, - { - "checksumSHA1": "UBqhkyjCz47+S19MVTigxJ2VjVQ=", - "path": "github.com/prometheus/client_golang/prometheus/internal", - "revision": "7858729281ec582767b20e0d696b6041d995d5e0", - "revisionTime": "2018-09-07T10:25:42Z" - }, - { - "checksumSHA1": "d5BiEvD8MrgpWQ6PQJUvawJsMak=", - "path": "github.com/prometheus/client_golang/prometheus/promhttp", - "revision": "7858729281ec582767b20e0d696b6041d995d5e0", - "revisionTime": "2018-09-07T10:25:42Z" - }, - { - "checksumSHA1": "V8xkqgmP66sq2ZW4QO5wi9a4oZE=", - "path": "github.com/prometheus/client_model/go", - "revision": "5c3871d89910bfb32f5fcab2aa4b9ec68e65a99f", - "revisionTime": "2018-07-12T10:51:10Z" - }, - { - "checksumSHA1": "Q0mjhUEjAklUQvPkrOChWGLpvRY=", - "path": "github.com/prometheus/common/expfmt", - "revision": "c7de2306084e37d54b8be01f3541a8464345e9a5", - "revisionTime": "2018-08-01T06:44:54Z" - }, - { - "checksumSHA1": "GWlM3d2vPYyNATtTFgftS10/A9w=", - "path": "github.com/prometheus/common/internal/bitbucket.org/ww/goautoneg", - "revision": "c7de2306084e37d54b8be01f3541a8464345e9a5", - "revisionTime": "2018-08-01T06:44:54Z" - }, - { - "checksumSHA1": "EXTRY7DL9gFW8c341Dk6LDXCBn8=", - "path": "github.com/prometheus/common/model", - "revision": "c7de2306084e37d54b8be01f3541a8464345e9a5", - "revisionTime": "2018-08-01T06:44:54Z" - }, - { - "checksumSHA1": "jo/zxF+Pfj5yZjReTKGOACq9IBs=", - "path": "github.com/prometheus/procfs", - "revision": "05ee40e3a273f7245e8777337fc7b46e533a9a92", - "revisionTime": "2018-07-25T12:39:19Z" - }, - { - "checksumSHA1": "lv9rIcjbVEGo8AT1UCUZXhXrfQc=", - "path": "github.com/prometheus/procfs/internal/util", - "revision": "05ee40e3a273f7245e8777337fc7b46e533a9a92", - "revisionTime": "2018-07-25T12:39:19Z" - }, - { - "checksumSHA1": "HSP5hVT0CNMRa8+Xtz4z2Ic5U0E=", - "path": "github.com/prometheus/procfs/nfs", - "revision": "05ee40e3a273f7245e8777337fc7b46e533a9a92", - "revisionTime": "2018-07-25T12:39:19Z" - }, - { - "checksumSHA1": "yItvTQLUVqm/ArLEbvEhqG0T5a0=", - "path": "github.com/prometheus/procfs/xfs", - "revision": "05ee40e3a273f7245e8777337fc7b46e533a9a92", - "revisionTime": "2018-07-25T12:39:19Z" - }, - { - "checksumSHA1": "an5RM8wjgPPloolUUYkvEncbHu4=", - "path": "github.com/rcrowley/go-metrics", - "revision": "e2704e165165ec55d062f5919b4b29494e9fa790", - "revisionTime": "2018-05-03T17:46:38Z" - }, - { - "checksumSHA1": "o0+FxYUsE4W0478XA9AnSIB5wfs=", - "origin": "github.com/TheThingsIndustries/otto", - "path": "github.com/robertkrimen/otto", - "revision": "6ddbbb60554aaa88b1c38a9f5518165bc1160bd7", - "revisionTime": "2017-11-07T14:36:49Z" - }, - { - "checksumSHA1": "q1HKpLIWi3tTT5W5LqMlwPcGmyQ=", - "origin": "github.com/TheThingsIndustries/otto/ast", - "path": "github.com/robertkrimen/otto/ast", - "revision": "6ddbbb60554aaa88b1c38a9f5518165bc1160bd7", - "revisionTime": "2017-11-07T14:36:49Z" - }, - { - "checksumSHA1": "L0KsB2EzTlPgv0iae3q3SukNW7U=", - "origin": "github.com/TheThingsIndustries/otto/dbg", - "path": "github.com/robertkrimen/otto/dbg", - "revision": "6ddbbb60554aaa88b1c38a9f5518165bc1160bd7", - "revisionTime": "2017-11-07T14:36:49Z" - }, - { - "checksumSHA1": "euDLJKhw4doeTSxjEoezjxYXLzs=", - "origin": "github.com/TheThingsIndustries/otto/file", - "path": "github.com/robertkrimen/otto/file", - "revision": "6ddbbb60554aaa88b1c38a9f5518165bc1160bd7", - "revisionTime": "2017-11-07T14:36:49Z" - }, - { - "checksumSHA1": "w5wu2avr5PWCJy5dlEhlY3rwb+w=", - "origin": "github.com/TheThingsIndustries/otto/parser", - "path": "github.com/robertkrimen/otto/parser", - "revision": "6ddbbb60554aaa88b1c38a9f5518165bc1160bd7", - "revisionTime": "2017-11-07T14:36:49Z" - }, - { - "checksumSHA1": "7J/7NaYRqKhBvZ+dTIutsEoEgFw=", - "origin": "github.com/TheThingsIndustries/otto/registry", - "path": "github.com/robertkrimen/otto/registry", - "revision": "6ddbbb60554aaa88b1c38a9f5518165bc1160bd7", - "revisionTime": "2017-11-07T14:36:49Z" - }, - { - "checksumSHA1": "/jMXYuXycBpTqWhRyJ2xsqvHvQI=", - "origin": "github.com/TheThingsIndustries/otto/token", - "path": "github.com/robertkrimen/otto/token", - "revision": "6ddbbb60554aaa88b1c38a9f5518165bc1160bd7", - "revisionTime": "2017-11-07T14:36:49Z" - }, - { - "checksumSHA1": "q14d3C3xvWevU3dSv4P5K0+OSD0=", - "path": "github.com/shirou/gopsutil/cpu", - "revision": "eb1f1ab16f2ef35f23024e10888dfdb5c17fcb92", - "revisionTime": "2018-09-01T13:42:34Z" - }, - { - "checksumSHA1": "jqSn6muASnTMX4iMHv7Oep0suwk=", - "path": "github.com/shirou/gopsutil/host", - "revision": "eb1f1ab16f2ef35f23024e10888dfdb5c17fcb92", - "revisionTime": "2018-09-01T13:42:34Z" - }, - { - "checksumSHA1": "GR7l7Ez4ppxIfonl7aJayYRVPWc=", - "path": "github.com/shirou/gopsutil/internal/common", - "revision": "eb1f1ab16f2ef35f23024e10888dfdb5c17fcb92", - "revisionTime": "2018-09-01T13:42:34Z" - }, - { - "checksumSHA1": "q0o4cpjNszHkZqfSHi83a668CSw=", - "path": "github.com/shirou/gopsutil/load", - "revision": "eb1f1ab16f2ef35f23024e10888dfdb5c17fcb92", - "revisionTime": "2018-09-01T13:42:34Z" - }, - { - "checksumSHA1": "ehcscnqRvxDZYb1nBDVzZi8vFi8=", - "path": "github.com/shirou/gopsutil/mem", - "revision": "eb1f1ab16f2ef35f23024e10888dfdb5c17fcb92", - "revisionTime": "2018-09-01T13:42:34Z" - }, - { - "checksumSHA1": "LB73cgL0zYjR/hmcxQldCVH+AfI=", - "path": "github.com/shirou/gopsutil/net", - "revision": "eb1f1ab16f2ef35f23024e10888dfdb5c17fcb92", - "revisionTime": "2018-09-01T13:42:34Z" - }, - { - "checksumSHA1": "KWfiNGPeauBf2ujk9uGHnoOQLI0=", - "path": "github.com/shirou/gopsutil/process", - "revision": "eb1f1ab16f2ef35f23024e10888dfdb5c17fcb92", - "revisionTime": "2018-09-01T13:42:34Z" - }, - { - "checksumSHA1": "Nve7SpDmjsv6+rhkXAkfg/UQx94=", - "path": "github.com/shirou/w32", - "revision": "bb4de0191aa41b5507caa14b0650cdbddcd9280b", - "revisionTime": "2016-09-30T03:27:40Z" - }, - { - "checksumSHA1": "IFtQxH02Qj36QooV+Z41enAh/hc=", - "path": "github.com/smartystreets/assertions", - "revision": "7c9eb446e3cf06e83049467a5f25c38730ce7034", - "revisionTime": "2018-08-20T20:17:07Z" - }, - { - "checksumSHA1": "v6W3GIQMzr3QSXB2NtBa9X7SwiI=", - "path": "github.com/smartystreets/assertions/internal/go-render/render", - "revision": "7c9eb446e3cf06e83049467a5f25c38730ce7034", - "revisionTime": "2018-08-20T20:17:07Z" - }, - { - "checksumSHA1": "r6FauVdOTFnwYQgrKGFuWUbIAJE=", - "path": "github.com/smartystreets/assertions/internal/oglematchers", - "revision": "7c9eb446e3cf06e83049467a5f25c38730ce7034", - "revisionTime": "2018-08-20T20:17:07Z" - }, - { - "checksumSHA1": "+FDdVX1IlqzH3tSuA95LH2XZoOU=", - "path": "github.com/smartystreets/go-aws-auth", - "revision": "0c1422d1fdb9fef5a1ad5b2e13ac663467eb767e", - "revisionTime": "2018-05-15T14:38:44Z" - }, - { - "checksumSHA1": "RXdGcEWihBEokWLc+LTy/UnI8OM=", - "path": "github.com/spf13/afero", - "revision": "d40851caa0d747393da1ffb28f7f9d8b4eeffebd", - "revisionTime": "2018-09-07T09:23:51Z" - }, - { - "checksumSHA1": "HcOjO9+cwl+xYnkiGuIeesqwBs8=", - "path": "github.com/spf13/afero/mem", - "revision": "d40851caa0d747393da1ffb28f7f9d8b4eeffebd", - "revisionTime": "2018-09-07T09:23:51Z" - }, - { - "checksumSHA1": "Hc2i9OOK34PAImuNftTaHdbdLgs=", - "path": "github.com/spf13/cast", - "revision": "8965335b8c7107321228e3e3702cab9832751bac", - "revisionTime": "2018-02-14T17:35:30Z" - }, - { - "checksumSHA1": "YMGD3aMJlxhrWBzLlTqPhTLyxG4=", - "path": "github.com/spf13/cobra", - "revision": "99dc123558852f67743bd0b2caf8383cb3c6d720", - "revisionTime": "2018-08-29T16:07:45Z" - }, - { - "checksumSHA1": "fL/aH2pPCg51QUFedpS6EcT94KU=", - "path": "github.com/spf13/jwalterweatherman", - "revision": "4a4406e478ca629068e7768fc33f3f044173c0a6", - "revisionTime": "2018-09-07T09:17:59Z" - }, - { - "checksumSHA1": "WVKhLVXQFxXwmuRX+IRzebUmxjE=", - "path": "github.com/spf13/pflag", - "revision": "298182f68c66c05229eb03ac171abe6e309ee79a", - "revisionTime": "2018-08-31T15:14:32Z" - }, - { - "checksumSHA1": "Pz7ShJAOvkfJIBon5qZROV2r3Cg=", - "path": "github.com/spf13/viper", - "revision": "3171ef9a229903ce60a9513ec3899b63c003e91c", - "revisionTime": "2018-09-07T13:06:02Z" - }, - { - "checksumSHA1": "JPPv7nnUo01Mlyqb0g+Qk5/URR4=", - "path": "github.com/streadway/amqp", - "revision": "70e15c650864f4fc47f5d3c82ea117285480895d", - "revisionTime": "2018-08-06T23:38:56Z" - }, - { - "checksumSHA1": "brhkaHb0nqCGr7e5GUePL4ZvcsY=", - "path": "github.com/tj/go-elastic", - "revision": "36157cbbebc210c55c1c8a82c8655ccbb9f41aa0", - "revisionTime": "2017-12-21T16:09:35Z" - }, - { - "checksumSHA1": "nL4enNHknemOmxcaPTIJCrJc0/I=", - "path": "github.com/tj/go-elastic/aliases", - "revision": "36157cbbebc210c55c1c8a82c8655ccbb9f41aa0", - "revisionTime": "2017-12-21T16:09:35Z" - }, - { - "checksumSHA1": "SgbyhOvKGvet/Nw70Rxa8d3gLZ0=", - "path": "github.com/tj/go-elastic/batch", - "revision": "36157cbbebc210c55c1c8a82c8655ccbb9f41aa0", - "revisionTime": "2017-12-21T16:09:35Z" - }, - { - "checksumSHA1": "BGm8lKZmvJbf/YOJLeL1rw2WVjA=", - "path": "golang.org/x/crypto/ssh/terminal", - "revision": "0e37d006457bf46f9e6692014ba72ef82c33022c", - "revisionTime": "2018-06-14T19:19:50Z" - }, - { - "checksumSHA1": "GtamqiJoL7PGHsN454AoffBFMa8=", - "path": "golang.org/x/net/context", - "revision": "26e67e76b6c3f6ce91f7c52def5af501b4e0f3a2", - "revisionTime": "2018-09-11T21:37:47Z" - }, - { - "checksumSHA1": "WHc3uByvGaMcnSoI21fhzYgbOgg=", - "path": "golang.org/x/net/context/ctxhttp", - "revision": "26e67e76b6c3f6ce91f7c52def5af501b4e0f3a2", - "revisionTime": "2018-09-11T21:37:47Z" - }, - { - "checksumSHA1": "pCY4YtdNKVBYRbNvODjx8hj0hIs=", - "path": "golang.org/x/net/http/httpguts", - "revision": "26e67e76b6c3f6ce91f7c52def5af501b4e0f3a2", - "revisionTime": "2018-09-11T21:37:47Z" - }, - { - "checksumSHA1": "3p4xISa2iLZULxYfVsIUlHJ+PUk=", - "path": "golang.org/x/net/http2", - "revision": "26e67e76b6c3f6ce91f7c52def5af501b4e0f3a2", - "revisionTime": "2018-09-11T21:37:47Z" - }, - { - "checksumSHA1": "KZniwnfpWkaTPhUQDUTvgex/7y0=", - "path": "golang.org/x/net/http2/hpack", - "revision": "26e67e76b6c3f6ce91f7c52def5af501b4e0f3a2", - "revisionTime": "2018-09-11T21:37:47Z" - }, - { - "checksumSHA1": "RcrB7tgYS/GMW4QrwVdMOTNqIU8=", - "path": "golang.org/x/net/idna", - "revision": "26e67e76b6c3f6ce91f7c52def5af501b4e0f3a2", - "revisionTime": "2018-09-11T21:37:47Z" - }, - { - "checksumSHA1": "f3Y7JIZH61oMmp8nphqe8Mg+XoU=", - "path": "golang.org/x/net/internal/socks", - "revision": "26e67e76b6c3f6ce91f7c52def5af501b4e0f3a2", - "revisionTime": "2018-09-11T21:37:47Z" - }, - { - "checksumSHA1": "UxahDzW2v4mf/+aFxruuupaoIwo=", - "path": "golang.org/x/net/internal/timeseries", - "revision": "26e67e76b6c3f6ce91f7c52def5af501b4e0f3a2", - "revisionTime": "2018-09-11T21:37:47Z" - }, - { - "checksumSHA1": "3xyuaSNmClqG4YWC7g0isQIbUTc=", - "path": "golang.org/x/net/lex/httplex", - "revision": "84f0e6f92b10139f986b1756e149a7d9de270cdc", - "revisionTime": "2017-05-12T21:27:43Z" - }, - { - "checksumSHA1": "UrFs0T7kkYsUxJG5bsJt7KB8ejI=", - "path": "golang.org/x/net/proxy", - "revision": "26e67e76b6c3f6ce91f7c52def5af501b4e0f3a2", - "revisionTime": "2018-09-11T21:37:47Z" - }, - { - "checksumSHA1": "6ckrK99wkirarIfFNX4+AHWBEHM=", - "path": "golang.org/x/net/trace", - "revision": "26e67e76b6c3f6ce91f7c52def5af501b4e0f3a2", - "revisionTime": "2018-09-11T21:37:47Z" - }, - { - "checksumSHA1": "F+tqxPGFt5x7DKZakbbMmENX1oQ=", - "path": "golang.org/x/net/websocket", - "revision": "26e67e76b6c3f6ce91f7c52def5af501b4e0f3a2", - "revisionTime": "2018-09-11T21:37:47Z" - }, - { - "checksumSHA1": "j0z/2h06wsvTkGiLaZ5XFLbMKfo=", - "path": "golang.org/x/oauth2", - "revision": "d2e6202438beef2727060aa7cabdd924d92ebfd9", - "revisionTime": "2018-08-21T21:02:52Z" - }, - { - "checksumSHA1": "6M+WzHfPmZjznMhi8CzsRYWjJ9U=", - "path": "golang.org/x/oauth2/internal", - "revision": "d2e6202438beef2727060aa7cabdd924d92ebfd9", - "revisionTime": "2018-08-21T21:02:52Z" - }, - { - "checksumSHA1": "GKC8IFNbSdF5HKJVx+Cm/3ASlH8=", - "path": "golang.org/x/sys/unix", - "revision": "d0be0721c37eeb5299f245a996a483160fc36940", - "revisionTime": "2018-09-09T03:34:56Z" - }, - { - "checksumSHA1": "wvpEa7a7bm3i833AmLpSarI51Yc=", - "path": "golang.org/x/sys/windows", - "revision": "d0be0721c37eeb5299f245a996a483160fc36940", - "revisionTime": "2018-09-09T03:34:56Z" - }, - { - "checksumSHA1": "CbpjEkkOeh0fdM/V8xKDdI0AA88=", - "path": "golang.org/x/text/secure/bidirule", - "revision": "905a57155faa8230500121607930ebb9dd8e139c", - "revisionTime": "2018-09-08T17:02:15Z" - }, - { - "checksumSHA1": "ziMb9+ANGRJSSIuxYdRbA+cDRBQ=", - "path": "golang.org/x/text/transform", - "revision": "905a57155faa8230500121607930ebb9dd8e139c", - "revisionTime": "2018-09-08T17:02:15Z" - }, - { - "checksumSHA1": "Qw4qdlZHCnBurAPPrSt+EKPIngM=", - "path": "golang.org/x/text/unicode/bidi", - "revision": "905a57155faa8230500121607930ebb9dd8e139c", - "revisionTime": "2018-09-08T17:02:15Z" - }, - { - "checksumSHA1": "XJr6+rzzxASewSbC/SCStyGlmuw=", - "path": "golang.org/x/text/unicode/norm", - "revision": "905a57155faa8230500121607930ebb9dd8e139c", - "revisionTime": "2018-09-08T17:02:15Z" - }, - { - "checksumSHA1": "YiWH1fpJRu3R4w4LuGI63c9N9dg=", - "path": "google.golang.org/appengine/internal", - "revision": "03cac3b07182cfb08c0d0c0b6ee72a1ceb151c92", - "revisionTime": "2018-08-27T17:01:13Z" - }, - { - "checksumSHA1": "5PakGXEgSbyFptkhGO8MnGf7uH0=", - "path": "google.golang.org/appengine/internal/base", - "revision": "03cac3b07182cfb08c0d0c0b6ee72a1ceb151c92", - "revisionTime": "2018-08-27T17:01:13Z" - }, - { - "checksumSHA1": "3DZ+Ah5hFQb1/nh1+li2VE+kkfk=", - "path": "google.golang.org/appengine/internal/datastore", - "revision": "03cac3b07182cfb08c0d0c0b6ee72a1ceb151c92", - "revisionTime": "2018-08-27T17:01:13Z" - }, - { - "checksumSHA1": "HJQ4JM9YWfwIe4vmAgXC7J/1T3E=", - "path": "google.golang.org/appengine/internal/log", - "revision": "03cac3b07182cfb08c0d0c0b6ee72a1ceb151c92", - "revisionTime": "2018-08-27T17:01:13Z" - }, - { - "checksumSHA1": "hApgRLSl7w9XG2waJxdH/o0A398=", - "path": "google.golang.org/appengine/internal/remote_api", - "revision": "03cac3b07182cfb08c0d0c0b6ee72a1ceb151c92", - "revisionTime": "2018-08-27T17:01:13Z" - }, - { - "checksumSHA1": "ZnEUFEjcGAVZNDPOOc+VLN7x4pI=", - "path": "google.golang.org/appengine/internal/urlfetch", - "revision": "03cac3b07182cfb08c0d0c0b6ee72a1ceb151c92", - "revisionTime": "2018-08-27T17:01:13Z" - }, - { - "checksumSHA1": "akOV9pYnCbcPA8wJUutSQVibdyg=", - "path": "google.golang.org/appengine/urlfetch", - "revision": "03cac3b07182cfb08c0d0c0b6ee72a1ceb151c92", - "revisionTime": "2018-08-27T17:01:13Z" - }, - { - "checksumSHA1": "YNqziavfZHurG6wrwR5Uf9SnI4s=", - "path": "google.golang.org/genproto/googleapis/api/annotations", - "revision": "36d5787dc5356b711fe8f3040271aaf51c35955b", - "revisionTime": "2018-09-11T21:11:18Z" - }, - { - "checksumSHA1": "oUD15OBRSXt0t4P0s6HMjH/+iQo=", - "path": "google.golang.org/genproto/googleapis/rpc/status", - "revision": "36d5787dc5356b711fe8f3040271aaf51c35955b", - "revisionTime": "2018-09-11T21:11:18Z" - }, - { - "checksumSHA1": "HV/AvwdtsJE9iQjBxmZ89+75O1Q=", - "path": "google.golang.org/grpc", - "revision": "32fb0ac620c32ba40a4626ddf94d90d12cce3455", - "revisionTime": "2018-07-31T16:43:25Z", - "version": "v1.14.0", - "versionExact": "v1.14.0" - }, - { - "checksumSHA1": "B+kZFVP8zRiQMpoEb39Mp2oSmqg=", - "path": "google.golang.org/grpc/balancer", - "revision": "32fb0ac620c32ba40a4626ddf94d90d12cce3455", - "revisionTime": "2018-07-31T16:43:25Z", - "version": "v1.14.0", - "versionExact": "v1.14.0" - }, - { - "checksumSHA1": "lw+L836hLeH8+//le+C+ycddCCU=", - "path": "google.golang.org/grpc/balancer/base", - "revision": "32fb0ac620c32ba40a4626ddf94d90d12cce3455", - "revisionTime": "2018-07-31T16:43:25Z", - "version": "v1.14.0", - "versionExact": "v1.14.0" - }, - { - "checksumSHA1": "DJ1AtOk4Pu7bqtUMob95Hw8HPNw=", - "path": "google.golang.org/grpc/balancer/roundrobin", - "revision": "32fb0ac620c32ba40a4626ddf94d90d12cce3455", - "revisionTime": "2018-07-31T16:43:25Z", - "version": "v1.14.0", - "versionExact": "v1.14.0" - }, - { - "checksumSHA1": "R3tuACGAPyK4lr+oSNt1saUzC0M=", - "path": "google.golang.org/grpc/codes", - "revision": "32fb0ac620c32ba40a4626ddf94d90d12cce3455", - "revisionTime": "2018-07-31T16:43:25Z", - "version": "v1.14.0", - "versionExact": "v1.14.0" - }, - { - "checksumSHA1": "XH2WYcDNwVO47zYShREJjcYXm0Y=", - "path": "google.golang.org/grpc/connectivity", - "revision": "32fb0ac620c32ba40a4626ddf94d90d12cce3455", - "revisionTime": "2018-07-31T16:43:25Z", - "version": "v1.14.0", - "versionExact": "v1.14.0" - }, - { - "checksumSHA1": "wA6y5rkH1v4bWBe5M1r/Hdtgma4=", - "path": "google.golang.org/grpc/credentials", - "revision": "32fb0ac620c32ba40a4626ddf94d90d12cce3455", - "revisionTime": "2018-07-31T16:43:25Z", - "version": "v1.14.0", - "versionExact": "v1.14.0" - }, - { - "checksumSHA1": "cfLb+pzWB+Glwp82rgfcEST1mv8=", - "path": "google.golang.org/grpc/encoding", - "revision": "32fb0ac620c32ba40a4626ddf94d90d12cce3455", - "revisionTime": "2018-07-31T16:43:25Z", - "version": "v1.14.0", - "versionExact": "v1.14.0" - }, - { - "checksumSHA1": "LKKkn7EYA+Do9Qwb2/SUKLFNxoo=", - "path": "google.golang.org/grpc/encoding/proto", - "revision": "32fb0ac620c32ba40a4626ddf94d90d12cce3455", - "revisionTime": "2018-07-31T16:43:25Z", - "version": "v1.14.0", - "versionExact": "v1.14.0" - }, - { - "checksumSHA1": "XbDzI4GeUt2/8WAS5mLKm5ghVWo=", - "path": "google.golang.org/grpc/grpclb/grpc_lb_v1", - "revision": "c1fc29613da668384b9a63e81b424d627f0b0a02", - "revisionTime": "2017-11-14T23:20:10Z" - }, - { - "checksumSHA1": "H7SuPUqbPcdbNqgl+k3ohuwMAwE=", - "path": "google.golang.org/grpc/grpclb/grpc_lb_v1/messages", - "revision": "cce0e436e5c428f2094edd926779788f1024938d", - "revisionTime": "2017-12-11T17:35:50Z", - "version": "v1.14.0", - "versionExact": "v1.14.0" - }, - { - "checksumSHA1": "ZPPSFisPDz2ANO4FBZIft+fRxyk=", - "path": "google.golang.org/grpc/grpclog", - "revision": "32fb0ac620c32ba40a4626ddf94d90d12cce3455", - "revisionTime": "2018-07-31T16:43:25Z", - "version": "v1.14.0", - "versionExact": "v1.14.0" - }, - { - "checksumSHA1": "MRdkTRX18dr+tG+Q2s+BHox0T64=", - "path": "google.golang.org/grpc/health", - "revision": "32fb0ac620c32ba40a4626ddf94d90d12cce3455", - "revisionTime": "2018-07-31T16:43:25Z", - "version": "v1.14.0", - "versionExact": "v1.14.0" - }, - { - "checksumSHA1": "aOU41miZwmHdMbzZNB4H2xz5wWI=", - "path": "google.golang.org/grpc/health/grpc_health_v1", - "revision": "32fb0ac620c32ba40a4626ddf94d90d12cce3455", - "revisionTime": "2018-07-31T16:43:25Z", - "version": "v1.14.0", - "versionExact": "v1.14.0" - }, - { - "checksumSHA1": "cSdzm5GhbalJbWUNrN8pRdW0uks=", - "path": "google.golang.org/grpc/internal", - "revision": "32fb0ac620c32ba40a4626ddf94d90d12cce3455", - "revisionTime": "2018-07-31T16:43:25Z", - "version": "v1.14.0", - "versionExact": "v1.14.0" - }, - { - "checksumSHA1": "uDJA7QK2iGnEwbd9TPqkLaM+xuU=", - "path": "google.golang.org/grpc/internal/backoff", - "revision": "32fb0ac620c32ba40a4626ddf94d90d12cce3455", - "revisionTime": "2018-07-31T16:43:25Z", - "version": "v1.14.0", - "versionExact": "v1.14.0" - }, - { - "checksumSHA1": "fvj+rPmX5++NHHTTwG9gHlTEGow=", - "path": "google.golang.org/grpc/internal/channelz", - "revision": "32fb0ac620c32ba40a4626ddf94d90d12cce3455", - "revisionTime": "2018-07-31T16:43:25Z", - "version": "v1.14.0", - "versionExact": "v1.14.0" - }, - { - "checksumSHA1": "5dFUCEaPjKwza9kwKqgljp8ckU4=", - "path": "google.golang.org/grpc/internal/envconfig", - "revision": "32fb0ac620c32ba40a4626ddf94d90d12cce3455", - "revisionTime": "2018-07-31T16:43:25Z", - "version": "v1.14.0", - "versionExact": "v1.14.0" - }, - { - "checksumSHA1": "70gndc/uHwyAl3D45zqp7vyHWlo=", - "path": "google.golang.org/grpc/internal/grpcrand", - "revision": "32fb0ac620c32ba40a4626ddf94d90d12cce3455", - "revisionTime": "2018-07-31T16:43:25Z", - "version": "v1.14.0", - "versionExact": "v1.14.0" - }, - { - "checksumSHA1": "F/QkfMhNApNewEK84d9CM3fT6js=", - "path": "google.golang.org/grpc/internal/transport", - "revision": "32fb0ac620c32ba40a4626ddf94d90d12cce3455", - "revisionTime": "2018-07-31T16:43:25Z", - "version": "v1.14.0", - "versionExact": "v1.14.0" - }, - { - "checksumSHA1": "hcuHgKp8W0wIzoCnNfKI8NUss5o=", - "path": "google.golang.org/grpc/keepalive", - "revision": "32fb0ac620c32ba40a4626ddf94d90d12cce3455", - "revisionTime": "2018-07-31T16:43:25Z", - "version": "v1.14.0", - "versionExact": "v1.14.0" - }, - { - "checksumSHA1": "OjIAi5AzqlQ7kLtdAyjvdgMf6hc=", - "path": "google.golang.org/grpc/metadata", - "revision": "32fb0ac620c32ba40a4626ddf94d90d12cce3455", - "revisionTime": "2018-07-31T16:43:25Z", - "version": "v1.14.0", - "versionExact": "v1.14.0" - }, - { - "checksumSHA1": "VvGBoawND0urmYDy11FT+U1IHtU=", - "path": "google.golang.org/grpc/naming", - "revision": "32fb0ac620c32ba40a4626ddf94d90d12cce3455", - "revisionTime": "2018-07-31T16:43:25Z", - "version": "v1.14.0", - "versionExact": "v1.14.0" - }, - { - "checksumSHA1": "n5EgDdBqFMa2KQFhtl+FF/4gIFo=", - "path": "google.golang.org/grpc/peer", - "revision": "32fb0ac620c32ba40a4626ddf94d90d12cce3455", - "revisionTime": "2018-07-31T16:43:25Z", - "version": "v1.14.0", - "versionExact": "v1.14.0" - }, - { - "checksumSHA1": "GEq6wwE1qWLmkaM02SjxBmmnHDo=", - "path": "google.golang.org/grpc/resolver", - "revision": "32fb0ac620c32ba40a4626ddf94d90d12cce3455", - "revisionTime": "2018-07-31T16:43:25Z", - "version": "v1.14.0", - "versionExact": "v1.14.0" - }, - { - "checksumSHA1": "3aaLCpBkkCNQvVPHyvPi+G0vnQI=", - "path": "google.golang.org/grpc/resolver/dns", - "revision": "32fb0ac620c32ba40a4626ddf94d90d12cce3455", - "revisionTime": "2018-07-31T16:43:25Z", - "version": "v1.14.0", - "versionExact": "v1.14.0" - }, - { - "checksumSHA1": "7z5yY6Lq4/iWiMdFkAOm21wKWFo=", - "path": "google.golang.org/grpc/resolver/manual", - "revision": "32fb0ac620c32ba40a4626ddf94d90d12cce3455", - "revisionTime": "2018-07-31T16:43:25Z", - "version": "v1.14.0", - "versionExact": "v1.14.0" - }, - { - "checksumSHA1": "zs9M4xE8Lyg4wvuYvR00XoBxmuw=", - "path": "google.golang.org/grpc/resolver/passthrough", - "revision": "32fb0ac620c32ba40a4626ddf94d90d12cce3455", - "revisionTime": "2018-07-31T16:43:25Z", - "version": "v1.14.0", - "versionExact": "v1.14.0" - }, - { - "checksumSHA1": "YclPgme2gT3S0hTkHVdE1zAxJdo=", - "path": "google.golang.org/grpc/stats", - "revision": "32fb0ac620c32ba40a4626ddf94d90d12cce3455", - "revisionTime": "2018-07-31T16:43:25Z", - "version": "v1.14.0", - "versionExact": "v1.14.0" - }, - { - "checksumSHA1": "t/NhHuykWsxY0gEBd2WIv5RVBK8=", - "path": "google.golang.org/grpc/status", - "revision": "32fb0ac620c32ba40a4626ddf94d90d12cce3455", - "revisionTime": "2018-07-31T16:43:25Z", - "version": "v1.14.0", - "versionExact": "v1.14.0" - }, - { - "checksumSHA1": "qvArRhlrww5WvRmbyMF2mUfbJew=", - "path": "google.golang.org/grpc/tap", - "revision": "32fb0ac620c32ba40a4626ddf94d90d12cce3455", - "revisionTime": "2018-07-31T16:43:25Z", - "version": "v1.14.0", - "versionExact": "v1.14.0" - }, - { - "checksumSHA1": "7bfElBKfFxSer7dh/CdZS0jC2iQ=", - "path": "google.golang.org/grpc/transport", - "revision": "cce0e436e5c428f2094edd926779788f1024938d", - "revisionTime": "2017-12-11T17:35:50Z", - "version": "v1.14.0", - "versionExact": "v1.14.0" - }, - { - "checksumSHA1": "OU/wHTJqhyQfyRnXMVWx1Ox06kQ=", - "path": "gopkg.in/redis.v5", - "revision": "a16aeec10ff407b1e7be6dd35797ccf5426ef0f0", - "revisionTime": "2017-03-04T11:38:25Z" - }, - { - "checksumSHA1": "efyYmNqK7vcPhXW4KXfwbdA1wr4=", - "path": "gopkg.in/redis.v5/internal", - "revision": "a16aeec10ff407b1e7be6dd35797ccf5426ef0f0", - "revisionTime": "2017-03-04T11:38:25Z" - }, - { - "checksumSHA1": "2Ek4SixeRSKOX3mUiBMs3Aw+Guc=", - "path": "gopkg.in/redis.v5/internal/consistenthash", - "revision": "a16aeec10ff407b1e7be6dd35797ccf5426ef0f0", - "revisionTime": "2017-03-04T11:38:25Z" - }, - { - "checksumSHA1": "rJYVKcBrwYUGl7nuuusmZGrt8mY=", - "path": "gopkg.in/redis.v5/internal/hashtag", - "revision": "a16aeec10ff407b1e7be6dd35797ccf5426ef0f0", - "revisionTime": "2017-03-04T11:38:25Z" - }, - { - "checksumSHA1": "zsH5BF9qc31R7eEEVYLsjbIigDQ=", - "path": "gopkg.in/redis.v5/internal/pool", - "revision": "a16aeec10ff407b1e7be6dd35797ccf5426ef0f0", - "revisionTime": "2017-03-04T11:38:25Z" - }, - { - "checksumSHA1": "EqPdu5g8NhzxQOMCvzbreTQlzVE=", - "path": "gopkg.in/redis.v5/internal/proto", - "revision": "a16aeec10ff407b1e7be6dd35797ccf5426ef0f0", - "revisionTime": "2017-03-04T11:38:25Z" - }, - { - "checksumSHA1": "4BwmmgQUhWtizsR2soXND0nqZ1I=", - "path": "gopkg.in/sourcemap.v1", - "revision": "6e83acea0053641eff084973fee085f0c193c61a", - "revisionTime": "2017-02-13T14:20:43Z" - }, - { - "checksumSHA1": "GDXPA04g0Dfwu2w++JiOKkYuZEc=", - "path": "gopkg.in/sourcemap.v1/base64vlq", - "revision": "6e83acea0053641eff084973fee085f0c193c61a", - "revisionTime": "2017-02-13T14:20:43Z" - }, - { - "checksumSHA1": "ZSWoOPUNRr5+3dhkLK3C4cZAQPk=", - "path": "gopkg.in/yaml.v2", - "revision": "5420a8b6744d3b0345ab293f6fcba19c978f1183", - "revisionTime": "2018-03-28T19:50:20Z" - } - ], - "rootPath": "github.com/TheThingsNetwork/ttn" -} From 79d0d1ec17f7ca6acc57c180df9096cece331e44 Mon Sep 17 00:00:00 2001 From: Hylke Visser Date: Thu, 16 May 2019 13:25:19 +0200 Subject: [PATCH 11/17] Clean up Makefile --- Makefile | 88 +++++++++++++++++--------------------------------------- 1 file changed, 26 insertions(+), 62 deletions(-) diff --git a/Makefile b/Makefile index dfd6fbdf6..9d6e01213 100644 --- a/Makefile +++ b/Makefile @@ -19,10 +19,9 @@ all: deps build # Deps build-deps: - @command -v govendor > /dev/null || go get "github.com/kardianos/govendor" -deps: build-deps - govendor sync -v +deps: + go mod download dev-deps: deps @command -v protoc-gen-grpc-gateway > /dev/null || go get github.com/grpc-ecosystem/grpc-gateway/protoc-gen-grpc-gateway @@ -32,36 +31,6 @@ dev-deps: deps @command -v golint > /dev/null || go get golang.org/x/lint/golint @command -v forego > /dev/null || go get github.com/ddollar/forego -# Protobuf - -PROTO_FILES = $(shell find api -name "*.proto" -and -not -name ".git") -COMPILED_PROTO_FILES = $(patsubst api%.proto, api%.pb.go, $(PROTO_FILES)) -PROTOC_IMPORTS= -I/usr/local/include -I$(GO_PATH)/src -I$(PWD)/vendor -I$(PARENT_DIRECTORY) \ --I$(GO_PATH)/src/github.com/grpc-ecosystem/grpc-gateway/third_party/googleapis -PROTOC = protoc $(PROTOC_IMPORTS) \ ---gogottn_out=plugins=grpc:$(GO_SRC) \ ---grpc-gateway_out=:$(GO_SRC) `pwd`/ - -protos-clean: - rm -f $(COMPILED_PROTO_FILES) - -protos: $(COMPILED_PROTO_FILES) - -api/%.pb.go: api/%.proto - $(PROTOC)$< - -protodoc: $(PROTO_FILES) - protoc $(PROTOC_IMPORTS) --ttndoc_out=logtostderr=true,.lorawan.DevAddrManager=all:$(GO_SRC) `pwd`/api/protocol/lorawan/device_address.proto - protoc $(PROTOC_IMPORTS) --ttndoc_out=logtostderr=true,.handler.ApplicationManager=all:$(GO_SRC) `pwd`/api/handler/handler.proto - protoc $(PROTOC_IMPORTS) --ttndoc_out=logtostderr=true,.discovery.Discovery=all:$(GO_SRC) `pwd`/api/discovery/discovery.proto - -# Mocks - -mocks: - mockgen -source=./api/protocol/lorawan/device.pb.go -package lorawan DeviceManagerClient > api/protocol/lorawan/device_mock.go - mockgen -source=./api/networkserver/networkserver.pb.go -package networkserver NetworkServerClient > api/networkserver/networkserver_mock.go - mockgen -source=./api/discovery/client.go -package discovery Client > api/discovery/client_mock.go - dev-certs: ttn discovery gen-cert localhost 127.0.0.1 ::1 discovery --config ./.env/discovery/dev.yml ttn router gen-cert localhost 127.0.0.1 ::1 router --config ./.env/router/dev.yml @@ -72,44 +41,39 @@ dev-certs: # Go Test GO_FILES = $(shell find . -name "*.go" | grep -vE ".git|.env|vendor|.pb.go|_mock.go") -GO_PACKAGES = $(shell find . -name "*.go" | grep -vE ".git|.env|vendor" | sed 's:/[^/]*$$::' | sort | uniq) -GO_TEST_PACKAGES = $(shell find . -name "*_test.go" | grep -vE ".git|.env|vendor" | sed 's:/[^/]*$$::' | sort | uniq) -GO_COVER_PACKAGES = $(shell find . -name "*_test.go" | grep -vE ".git|.env|vendor|ttnctl|cmd|api" | sed 's:/[^/]*$$::' | sort | uniq) -GO_COVER_FILE ?= coverage.out -GO_COVER_DIR ?= .cover -GO_COVER_FILES = $(patsubst ./%, $(GO_COVER_DIR)/%.out, $(shell echo "$(GO_COVER_PACKAGES)")) +GO_COVER_FILES = `find . -name "coverage.out"` test: $(GO_FILES) - go test $(GO_TEST_PACKAGES) + go test ./... + pushd api > /dev/null; go test ./...; popd > /dev/null + pushd core/types > /dev/null; go test ./...; popd > /dev/null + pushd mqtt > /dev/null; go test ./...; popd > /dev/null + pushd utils/errors > /dev/null; go test ./...; popd > /dev/null + pushd utils/random > /dev/null; go test ./...; popd > /dev/null + pushd utils/security > /dev/null; go test ./...; popd > /dev/null + pushd utils/testing > /dev/null; go test ./...; popd > /dev/null cover-clean: - rm -rf $(GO_COVER_DIR) $(GO_COVER_FILE) + rm -f $(GO_COVER_FILES) coverage.out.merged cover-deps: @command -v goveralls > /dev/null || go get github.com/mattn/goveralls -cover: $(GO_COVER_FILE) - -$(GO_COVER_FILE): cover-clean $(GO_COVER_FILES) - echo "mode: set" > $(GO_COVER_FILE) - cat $(GO_COVER_FILES) | grep -vE "mode: set|/server.go|/manager_server.go" | sort >> $(GO_COVER_FILE) - -$(GO_COVER_DIR)/%.out: % - @mkdir -p "$(GO_COVER_DIR)/$<" - go test -cover -coverprofile="$@" "./$<" - -coveralls: cover-deps $(GO_COVER_FILE) - goveralls -coverprofile=$(GO_COVER_FILE) -service=travis-ci -repotoken $$COVERALLS_TOKEN - -fmt: - [[ -z "`echo "$(GO_PACKAGES)" | xargs go fmt | tee -a /dev/stderr`" ]] - -vet: - echo $(GO_PACKAGES) | xargs go vet - -lint: - for pkg in `echo $(GO_PACKAGES)`; do golint $$pkg | grep -vE 'mock|.pb.go'; done +cover: cover-clean $(GO_FILES) + go test -coverprofile=coverage.out ./... + pushd api > /dev/null; go test -coverprofile=coverage.out ./...; popd > /dev/null + pushd core/types > /dev/null; go test -coverprofile=coverage.out ./...; popd > /dev/null + pushd mqtt > /dev/null; go test -coverprofile=coverage.out ./...; popd > /dev/null + pushd utils/errors > /dev/null; go test -coverprofile=coverage.out ./...; popd > /dev/null + pushd utils/random > /dev/null; go test -coverprofile=coverage.out ./...; popd > /dev/null + pushd utils/security > /dev/null; go test -coverprofile=coverage.out ./...; popd > /dev/null + pushd utils/testing > /dev/null; go test -coverprofile=coverage.out ./...; popd > /dev/null + echo "mode: set" > coverage.out.merged + cat $(GO_COVER_FILES) | grep -vE "mode: set|/server.go|/manager_server.go" | sort > coverage.out.merged + +coveralls: cover-deps cover + goveralls -coverprofile=coverage.out.merged -service=travis-ci -repotoken $$COVERALLS_TOKEN # Go Build From fa3ba2959d013bc6a08e4c22dc7ab203b760bf39 Mon Sep 17 00:00:00 2001 From: Hylke Visser Date: Thu, 16 May 2019 13:25:26 +0200 Subject: [PATCH 12/17] Update travis yml --- .travis.yml | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index c281483a7..f4cffb297 100644 --- a/.travis.yml +++ b/.travis.yml @@ -8,7 +8,13 @@ services: - docker go: - - "1.11" + - "1.11.x" + - "1.12.x" + +env: + global: + - GOPROXY=https://proxy.golang.org + - GO111MODULE=on install: - make deps From 648de2b33240a53f8c8e1d5cefbf83e1403ae0dc Mon Sep 17 00:00:00 2001 From: Hylke Visser Date: Thu, 16 May 2019 13:32:35 +0200 Subject: [PATCH 13/17] Update gitlab ci yml --- .gitlab-ci.yml | 19 ++++--------------- 1 file changed, 4 insertions(+), 15 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 281c211bc..08d6f5fc0 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -5,23 +5,16 @@ stages: - package variables: + GO111MODULE: 'on' CONTAINER_NAME: thethingsnetwork/ttn PLATFORMS: linux-386 linux-amd64 linux-arm darwin-amd64 windows-386 windows-amd64 cache: key: "$CI_PROJECT_PATH" - paths: - - .govendor - -before_script: - - mkdir -p $(pwd)/.govendor - - rm -rf $GOPATH - - mkdir -p $GOPATH/.cache && ln -s $(pwd)/.govendor $GOPATH/.cache/govendor - - mkdir -p $GOPATH/src/github.com/TheThingsNetwork && ln -s $(pwd) $GOPATH/src/github.com/TheThingsNetwork/ttn tests: stage: test - image: golang:1.11 + image: golang:1.12 services: - thethingsnetwork/rabbitmq - redis @@ -30,23 +23,19 @@ tests: MQTT_ADDRESS: thethingsnetwork__rabbitmq:1883 AMQP_ADDRESS: thethingsnetwork__rabbitmq:5672 script: - - pushd $GOPATH/src/github.com/TheThingsNetwork/ttn - make deps - make test - - popd binaries: stage: build - image: golang:1.11 + image: golang:1.12 script: - mkdir release - export CI_BUILD_DATE=$(date -u +%Y-%m-%dT%H:%M:%SZ) - echo "date $CI_BUILD_DATE" >> release/info - echo "commit $CI_BUILD_REF" >> release/info - - pushd $GOPATH/src/github.com/TheThingsNetwork/ttn - make deps - for platform in $PLATFORMS; do $(echo $platform | awk -F '-' '{print "export GOOS=" $1 " GOARCH=" $2}') && make build; done - - popd artifacts: paths: - release/ @@ -57,7 +46,7 @@ sign: - master@thethingsnetwork/ttn - develop@thethingsnetwork/ttn stage: sign - image: golang:1.11 + image: golang:1.12 script: - pushd release - shasum -a 256 $(ls) > checksums From ea3fbbcd5753724608ff606a2c0a940635d6aaed Mon Sep 17 00:00:00 2001 From: Hylke Visser Date: Fri, 17 May 2019 12:06:28 +0200 Subject: [PATCH 14/17] Cache Go modules in CI --- .gitlab-ci.yml | 2 ++ .travis.yml | 5 ++++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 08d6f5fc0..0b4572641 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -11,6 +11,8 @@ variables: cache: key: "$CI_PROJECT_PATH" + paths: + - /go/pkg/mod tests: stage: test diff --git a/.travis.yml b/.travis.yml index f4cffb297..99fe6fe6e 100644 --- a/.travis.yml +++ b/.travis.yml @@ -8,7 +8,6 @@ services: - docker go: - - "1.11.x" - "1.12.x" env: @@ -16,6 +15,10 @@ env: - GOPROXY=https://proxy.golang.org - GO111MODULE=on +cache: + directories: + - $HOME/gopath/pkg/mod + install: - make deps - make cover-deps From 52d38c791f1ec5ca266e920690893e27d30fed4f Mon Sep 17 00:00:00 2001 From: Hylke Visser Date: Fri, 17 May 2019 12:10:34 +0200 Subject: [PATCH 15/17] Update TheThingsNetwork/api dependency --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index d6413868c..cd440a4ef 100644 --- a/go.mod +++ b/go.mod @@ -7,7 +7,7 @@ replace github.com/brocaar/lorawan => github.com/ThethingsIndustries/legacy-lora replace github.com/robertkrimen/otto => github.com/ThethingsIndustries/otto v0.0.0-20181129100957-6ddbbb60554a require ( - github.com/TheThingsNetwork/api v0.0.0-20190516111443-a3523f89e84f + github.com/TheThingsNetwork/api v0.0.0-20190516145942-631860935c2b github.com/TheThingsNetwork/go-account-lib v0.0.0-20190516094738-77d15a3f8875 github.com/TheThingsNetwork/go-cayenne-lib v1.0.0 github.com/TheThingsNetwork/go-utils v0.0.0-20190516083235-bdd4967fab4e diff --git a/go.sum b/go.sum index e9c074b5e..50817e532 100644 --- a/go.sum +++ b/go.sum @@ -7,8 +7,8 @@ github.com/StackExchange/wmi v0.0.0-20181212234831-e0a55b97c705/go.mod h1:3eOhrU github.com/TheThingsNetwork/api v0.0.0-20190330165854-3fb363b63d07/go.mod h1:iGcCXFi0My4IJbLSWWlRONaYiMtSjLbdkfFE5xBrgRc= github.com/TheThingsNetwork/api v0.0.0-20190516085542-c732802571cf h1:1LvY2VUOy+/Sb5O8eE2HIecvUZupe7kLoquUpeajuPs= github.com/TheThingsNetwork/api v0.0.0-20190516085542-c732802571cf/go.mod h1:XO2/81Njy3JefUFXtTg63YGJJ2wUyMRyYm6LaYfu8jE= -github.com/TheThingsNetwork/api v0.0.0-20190516111443-a3523f89e84f h1:socqGNa6e5LZ4mQFZmwKHrejRHX3geh6kZzHUhVCSqI= -github.com/TheThingsNetwork/api v0.0.0-20190516111443-a3523f89e84f/go.mod h1:MYWz0xDXK+4LWQMnAcm//UPhLoamf67LgFjMwUdhKbE= +github.com/TheThingsNetwork/api v0.0.0-20190516145942-631860935c2b h1:freUS8NvlSFKjjetQlMbfztZ+Vq7Dku5cn1o0Nfn4HI= +github.com/TheThingsNetwork/api v0.0.0-20190516145942-631860935c2b/go.mod h1:MYWz0xDXK+4LWQMnAcm//UPhLoamf67LgFjMwUdhKbE= github.com/TheThingsNetwork/go-account-lib v0.0.0-20190516094738-77d15a3f8875 h1:Q6gqExgAk2mQlZPur7dwbGsy9Uxs9Hs2kurMTd+o2Rc= github.com/TheThingsNetwork/go-account-lib v0.0.0-20190516094738-77d15a3f8875/go.mod h1:VZeXL6kkGnZouPnLESpVSGSRQNlz8zAOKHzr0P6m4pc= github.com/TheThingsNetwork/go-cayenne-lib v1.0.0 h1:be7h6E/69+qaYs1iwQ2xjGjSFPXzvU3q6AWBCWayG2Y= From 7adf4a69a7c3b2bb6cef6af0965f32e9c59c985e Mon Sep 17 00:00:00 2001 From: Hylke Visser Date: Mon, 20 May 2019 10:40:50 +0200 Subject: [PATCH 16/17] Make utils/toa a Go 1.11 module --- utils/testing/log_handler.go | 1 - utils/toa/go.mod | 8 ++++++ utils/toa/go.sum | 55 ++++++++++++++++++++++++++++++++++++ 3 files changed, 63 insertions(+), 1 deletion(-) create mode 100644 utils/toa/go.mod create mode 100644 utils/toa/go.sum diff --git a/utils/testing/log_handler.go b/utils/testing/log_handler.go index 3ab22ba7a..62158c448 100644 --- a/utils/testing/log_handler.go +++ b/utils/testing/log_handler.go @@ -8,7 +8,6 @@ import ( "sort" "sync" "testing" - "fmt" "github.com/apex/log" diff --git a/utils/toa/go.mod b/utils/toa/go.mod new file mode 100644 index 000000000..06a4b600b --- /dev/null +++ b/utils/toa/go.mod @@ -0,0 +1,8 @@ +module github.com/TheThingsNetwork/ttn/utils/toa + +go 1.11 + +require ( + github.com/TheThingsNetwork/ttn/core/types v0.0.0-20190517101034-52d38c791f1e + github.com/smartystreets/assertions v0.0.0-20190401211740-f487f9de1cd3 +) diff --git a/utils/toa/go.sum b/utils/toa/go.sum new file mode 100644 index 000000000..5b6599bc2 --- /dev/null +++ b/utils/toa/go.sum @@ -0,0 +1,55 @@ +cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= +github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= +github.com/TheThingsNetwork/ttn/core/types v0.0.0-20190517101034-52d38c791f1e h1:+En3gSQgpfHQ3mpXhqHlyAryyvvmBX0Uy+k/5TgcbCM= +github.com/TheThingsNetwork/ttn/core/types v0.0.0-20190517101034-52d38c791f1e/go.mod h1:q3r/3g5fixboWUOCounAWo+Y8OlkKdhVnGosLMEQ09Q= +github.com/TheThingsNetwork/ttn/utils/errors v0.0.0-20190516081709-034d40b328bd h1:ITXOJpmUR4Jhp3Xb/xNUIJH4WR0h2/NsxZkSDzFIFiU= +github.com/TheThingsNetwork/ttn/utils/errors v0.0.0-20190516081709-034d40b328bd/go.mod h1:e8FjzgvhAVx9+iqPloB4v7QM0rmv+r5ysRn9kWFamG4= +github.com/brocaar/lorawan v0.0.0-20170626123636-a64aca28516d h1:yIe4YHMG4WUoBCWlcDsfFD1IgnysKNLDKCe+yY0sknc= +github.com/brocaar/lorawan v0.0.0-20170626123636-a64aca28516d/go.mod h1:kwUChfPyeHBQumTUYBvOkO4prdwMM55wby9Zw9lhzlA= +github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= +github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b h1:VKtxabqXZkF25pY9ekfRL6a582T4P37/31XEstQ5p58= +github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= +github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= +github.com/golang/protobuf v1.2.0 h1:P3YflyNX/ehuJFLhxviNdFxQPkGK5cDcApsge1SqnvM= +github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1 h1:EGx4pi6eqNxGaHF6qqu48+N2wcFQ5qg5FXgOdqsJ5d8= +github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= +github.com/jacobsa/crypto v0.0.0-20190317225127-9f44e2d11115 h1:YuDUUFNM21CAbyPOpOP8BicaTD/0klJEKt5p8yuw+uY= +github.com/jacobsa/crypto v0.0.0-20190317225127-9f44e2d11115/go.mod h1:LadVJg0XuawGk+8L1rYnIED8451UyNxEMdTWCEt5kmU= +github.com/jacobsa/oglematchers v0.0.0-20150720000706-141901ea67cd h1:9GCSedGjMcLZCrusBZuo4tyKLpKUPenUUqi34AkuFmA= +github.com/jacobsa/oglematchers v0.0.0-20150720000706-141901ea67cd/go.mod h1:TlmyIZDpGmwRoTWiakdr+HA1Tukze6C6XbRVidYq02M= +github.com/jacobsa/oglemock v0.0.0-20150831005832-e94d794d06ff h1:2xRHTvkpJ5zJmglXLRqHiZQNjUoOkhUyhTAhEQvPAWw= +github.com/jacobsa/oglemock v0.0.0-20150831005832-e94d794d06ff/go.mod h1:gJWba/XXGl0UoOmBQKRWCJdHrr3nE0T65t6ioaj3mLI= +github.com/jacobsa/ogletest v0.0.0-20170503003838-80d50a735a11 h1:BMb8s3ENQLt5ulwVIHVDWFHp8eIXmbfSExkvdn9qMXI= +github.com/jacobsa/ogletest v0.0.0-20170503003838-80d50a735a11/go.mod h1:+DBdDyfoO2McrOyDemRBq0q9CMEByef7sYl7JH5Q3BI= +github.com/jacobsa/reqtrace v0.0.0-20150505043853-245c9e0234cb h1:uSWBjJdMf47kQlXMwWEfmc864bA1wAC+Kl3ApryuG9Y= +github.com/jacobsa/reqtrace v0.0.0-20150505043853-245c9e0234cb/go.mod h1:ivcmUvxXWjb27NsPEaiYK7AidlZXS7oQ5PowUS9z3I4= +github.com/jtolds/gls v4.20.0+incompatible h1:xdiiI2gbIgH/gLH7ADydsJ1uDOEzR8yvV7C0MuV77Wo= +github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= +github.com/pkg/errors v0.8.1 h1:iURUrRGxPUNPdy5/HRSm+Yj6okJ6UtLINN0Q9M4+h3I= +github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= +github.com/smartystreets/assertions v0.0.0-20190401211740-f487f9de1cd3 h1:hBSHahWMEgzwRyS6dRpxY0XyjZsHyQ61s084wo5PJe0= +github.com/smartystreets/assertions v0.0.0-20190401211740-f487f9de1cd3/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= +github.com/smartystreets/goconvey v0.0.0-20190330032615-68dc04aab96a h1:pa8hGb/2YqsZKovtsgrwcDH1RZhVbTKCjLp47XpqCDs= +github.com/smartystreets/goconvey v0.0.0-20190330032615-68dc04aab96a/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190514140710-3ec191127204 h1:4yG6GqBtw9C+UrLp6s2wtSniayy/Vd/3F7ffLE427XI= +golang.org/x/net v0.0.0-20190514140710-3ec191127204/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= +golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f h1:wMNYb4v58l5UBM7MYRLPG6ZhfOqbKu7X5eyFl8ZhKvA= +golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a h1:1BGLXjeY4akVXGgbC9HugT3Jv3hCI0z56oJR5vAMgBU= +golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/text v0.3.0 h1:g61tztE5qeGQ89tm6NTjjM9VPIm088od1l6aSorWRWg= +golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= +google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8 h1:Nw54tB0rB7hY/N0NQvRW8DG4Yk3Q6T9cu9RcFQDu1tc= +google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= +google.golang.org/grpc v1.20.1 h1:Hz2g2wirWK7H0qIIhGIqRGTuMwTE8HEKFnDZZ7lm9NU= +google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= +honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= From 78600a8e394e6bd4ba3ca5367dbd5fe318e6b302 Mon Sep 17 00:00:00 2001 From: Hylke Visser Date: Mon, 20 May 2019 10:57:27 +0200 Subject: [PATCH 17/17] Make core/proxy a Go 1.11 Module --- core/proxy/go.mod | 9 +++++ core/proxy/go.sum | 90 +++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 99 insertions(+) create mode 100644 core/proxy/go.mod create mode 100644 core/proxy/go.sum diff --git a/core/proxy/go.mod b/core/proxy/go.mod new file mode 100644 index 000000000..7d465e434 --- /dev/null +++ b/core/proxy/go.mod @@ -0,0 +1,9 @@ +module github.com/TheThingsNetwork/ttn/core/proxy + +go 1.11 + +require ( + github.com/TheThingsNetwork/go-utils v0.0.0-20190516083235-bdd4967fab4e + github.com/TheThingsNetwork/ttn/utils/testing v0.0.0-20190520084050-7adf4a69a7c3 + github.com/smartystreets/assertions v0.0.0-20190401211740-f487f9de1cd3 +) diff --git a/core/proxy/go.sum b/core/proxy/go.sum new file mode 100644 index 000000000..048beb873 --- /dev/null +++ b/core/proxy/go.sum @@ -0,0 +1,90 @@ +cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= +github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= +github.com/TheThingsNetwork/go-utils v0.0.0-20190516083235-bdd4967fab4e h1:JEt3G2ONKGfW1YDp2A8Q/+kZIuIB117nkit0+GDJN04= +github.com/TheThingsNetwork/go-utils v0.0.0-20190516083235-bdd4967fab4e/go.mod h1:9uzg7Jk8ywYqL+xUEhTNrJcs68Nafj4qTaz/zB+STwg= +github.com/TheThingsNetwork/ttn/utils/testing v0.0.0-20190520084050-7adf4a69a7c3 h1:WJLOi7cMSTbMt2VPaxI79CKpGPaqMgv0X4frOLGiye0= +github.com/TheThingsNetwork/ttn/utils/testing v0.0.0-20190520084050-7adf4a69a7c3/go.mod h1:KE2xKKLXyXmH9KBkUWJD5XPI0K10T2tj7E1kBLHq8kQ= +github.com/apex/log v1.1.0 h1:J5rld6WVFi6NxA6m8GJ1LJqu3+GiTFIt3mYv27gdQWI= +github.com/apex/log v1.1.0/go.mod h1:yA770aXIDQrhVOIGurT/pVdfCpSq1GQV/auzMN5fzvY= +github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= +github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= +github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/fatih/structs v1.1.0/go.mod h1:9NiDSp5zOcgEDl+j00MP/WkGVPOlPRLejGD8Ga6PJ7M= +github.com/fortytw2/leaktest v1.3.0/go.mod h1:jDsjWgpAGjm2CA7WthBh/CdZYEPF31XHquHwclZch5g= +github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= +github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= +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/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= +github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= +github.com/gotnospirit/makeplural v0.0.0-20180622080156-a5f48d94d976/go.mod h1:ZGQeOwybjD8lkCjIyJfqR5LD2wMVHJ31d6GdPxoTsWY= +github.com/gotnospirit/messageformat v0.0.0-20180622080451-0eab1176a3fb/go.mod h1:NO9UUa4C4cSmRsYSfZMAKhI5ifCRzOjSGe/pi7TKRvs= +github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= +github.com/influxdata/influxdb v1.7.6/go.mod h1:qZna6X/4elxqT3yI9iZYdZrWWdeFOOprn86kgg4+IzY= +github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= +github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q= +github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= +github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= +github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= +github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= +github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= +github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= +github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= +github.com/mwitkow/go-grpc-middleware v1.0.0/go.mod h1:wqm8af53+/cILryTaG+dCJS6CsDMVZDxlKh6lSkF19U= +github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/ginkgo v1.8.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/gomega v1.5.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= +github.com/pkg/errors v0.8.1 h1:iURUrRGxPUNPdy5/HRSm+Yj6okJ6UtLINN0Q9M4+h3I= +github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/prometheus/client_golang v0.9.2/go.mod h1:OsXs2jCmiKlQ1lTBmv21f2mNfw4xf/QclQDMrYNZzcM= +github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= +github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/prometheus/common v0.0.0-20181126121408-4724e9255275/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= +github.com/prometheus/procfs v0.0.0-20181204211112-1dc9a6cbc91a/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= +github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMBDgk/93Q= +github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= +github.com/smartystreets/assertions v0.0.0-20190401211740-f487f9de1cd3 h1:hBSHahWMEgzwRyS6dRpxY0XyjZsHyQ61s084wo5PJe0= +github.com/smartystreets/assertions v0.0.0-20190401211740-f487f9de1cd3/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= +github.com/smartystreets/go-aws-auth v0.0.0-20180515143844-0c1422d1fdb9/go.mod h1:SnhjPscd9TpLiy1LpzGSKh3bXCfxxXuqd9xmQJy3slM= +github.com/smartystreets/goconvey v0.0.0-20190330032615-68dc04aab96a/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= +github.com/smartystreets/gunit v0.0.0-20190426220047-d9c9211acd48/go.mod h1:oqKsUQaUkJ2EU1ZzLQFJt1WUp9DDuj1CnZbp4DwPwL4= +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/tj/go-elastic v0.0.0-20171221160941-36157cbbebc2/go.mod h1:WjeM0Oo1eNAjXGDx2yma7uG2XoyRZTq1uv3M/o7imD0= +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/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-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190514140710-3ec191127204/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= +golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/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-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190516014833-cab07311ab81/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +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/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= +google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= +google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= +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/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= +gopkg.in/redis.v5 v5.2.9 h1:MNZYOLPomQzZMfpN3ZtD1uyJ2IDonTTlxYiV/pEApiw= +gopkg.in/redis.v5 v5.2.9/go.mod h1:6gtv0/+A4iM08kdRfocWYB3bLX2tebpNtfKlFT6H4mY= +gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= +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= +honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=