diff --git a/.travis.yml b/.travis.yml index c5d28cd4..ea5017c7 100644 --- a/.travis.yml +++ b/.travis.yml @@ -7,7 +7,7 @@ go: - 1.9 - '1.10' -go_import_path: github.com/coreos/dex +go_import_path: github.com/dexidp/dex services: - postgresql diff --git a/Dockerfile b/Dockerfile index 76fb37da..1c5321d0 100644 --- a/Dockerfile +++ b/Dockerfile @@ -2,8 +2,8 @@ FROM golang:1.10.2-alpine RUN apk add --no-cache --update alpine-sdk -COPY . /go/src/github.com/coreos/dex -RUN cd /go/src/github.com/coreos/dex && make release-binary +COPY . /go/src/github.com/dexidp/dex +RUN cd /go/src/github.com/dexidp/dex && make release-binary FROM alpine:3.4 # Dex connectors, such as GitHub and Google logins require root certificates. diff --git a/Documentation/api.md b/Documentation/api.md index c0dadbd7..45c2bd4e 100644 --- a/Documentation/api.md +++ b/Documentation/api.md @@ -31,7 +31,7 @@ $ go get -u github.com/golang/protobuf/{proto,protoc-gen-go} # Download api.proto for a given version. $ DEX_VERSION=v2.0.0-alpha.5 -$ wget https://raw.githubusercontent.com/coreos/dex/${DEX_VERSION}/api/api.proto +$ wget https://raw.githubusercontent.com/dexidp/dex/${DEX_VERSION}/api/api.proto # Generate the Go client bindings. $ protoc --go_out=import_path=dexapi:. api.proto @@ -39,7 +39,7 @@ $ protoc --go_out=import_path=dexapi:. api.proto Client programs can then be written using the generated code. A Go client which uses dex's internally generated code might look like the following: -__NOTE:__ Because dex has the `google.golang.org/grpc` package in its `vendor` directory, gRPC code in `github.com/coreos/dex/api` refers to the vendored copy, not copies in a developers GOPATH. Clients must either regenerate the gRPC Go code or vendor dex and remove its `vendor` directory to run this program. +__NOTE:__ Because dex has the `google.golang.org/grpc` package in its `vendor` directory, gRPC code in `github.com/dexidp/dex/api` refers to the vendored copy, not copies in a developers GOPATH. Clients must either regenerate the gRPC Go code or vendor dex and remove its `vendor` directory to run this program. ``` package main @@ -49,7 +49,7 @@ import ( "fmt" "log" - "github.com/coreos/dex/api" + "github.com/dexidp/dex/api" "google.golang.org/grpc" "google.golang.org/grpc/credentials" ) diff --git a/Documentation/connectors/oidc.md b/Documentation/connectors/oidc.md index 56bedd90..bcfd36eb 100644 --- a/Documentation/connectors/oidc.md +++ b/Documentation/connectors/oidc.md @@ -50,6 +50,6 @@ connectors: ``` [oidc-doc]: openid-connect.md -[issue-863]: https://github.com/coreos/dex/issues/863 -[issue-1065]: https://github.com/coreos/dex/issues/1065 +[issue-863]: https://github.com/dexidp/dex/issues/863 +[issue-1065]: https://github.com/dexidp/dex/issues/1065 [azure-ad-v1]: https://github.com/coreos/go-oidc/issues/133 diff --git a/Documentation/dev-releases.md b/Documentation/dev-releases.md index 30adb4d6..1a356703 100644 --- a/Documentation/dev-releases.md +++ b/Documentation/dev-releases.md @@ -11,7 +11,7 @@ This requires the following tools. And the following permissions. -* Push access to the github.com/coreos/dex git repo. +* Push access to the github.com/dexidp/dex git repo. * Push access to the quay.io/coreos/dex Docker repo. ## Tagging the release @@ -37,13 +37,13 @@ git tag -s v2.0.0 ea4c04fde83bd6c48f4d43862c406deb4ea9dba2 Push that tag to the CoreOS repo. ``` -git push git@github.com:coreos/dex.git v2.0.0 +git push git@github.com:dexidp/dex.git v2.0.0 ``` Draft releases on GitHub and summarize the changes since the last release. See previous releases for the expected format. -https://github.com/coreos/dex/releases +https://github.com/dexidp/dex/releases ## Minor releases - create a branch @@ -51,7 +51,7 @@ If the release is a minor release (2.1.0, 2.2.0, etc.) create a branch for futur ```bash git checkout -b v2.1.x tags/v2.1.0 -git push git@github.com:coreos/dex.git v2.1.x +git push git@github.com:dexidp/dex.git v2.1.x ``` ## Patch releases - cherry pick required commits diff --git a/Documentation/getting-started.md b/Documentation/getting-started.md index da54f835..9f724dd8 100644 --- a/Documentation/getting-started.md +++ b/Documentation/getting-started.md @@ -5,8 +5,8 @@ Dex requires a Go installation and a GOPATH configured. For setting up a Go workspace, refer to the [official documentation][go-setup]. Clone it down the correct place, and simply type `make` to compile the dex binary. ``` -$ go get github.com/coreos/dex -$ cd $GOPATH/src/github.com/coreos/dex +$ go get github.com/dexidp/dex +$ cd $GOPATH/src/github.com/dexidp/dex $ make ``` diff --git a/Documentation/integrations.md b/Documentation/integrations.md index 071dc0a7..3a9aa8d0 100644 --- a/Documentation/integrations.md +++ b/Documentation/integrations.md @@ -1,5 +1,5 @@ # Integrations -This document tracks the libraries and tools that are compatible with dex. [Join the community](https://github.com/coreos/dex/), and help us keep the list up-to-date. +This document tracks the libraries and tools that are compatible with dex. [Join the community](https://github.com/dexidp/dex/), and help us keep the list up-to-date. ## Tools diff --git a/Documentation/kubernetes.md b/Documentation/kubernetes.md index 3e364d3c..20693c15 100644 --- a/Documentation/kubernetes.md +++ b/Documentation/kubernetes.md @@ -117,10 +117,10 @@ $ curl -H "Authorization: Bearer $token" -k https://( API server host ):443/api/ [k8s-authz]: http://kubernetes.io/docs/admin/authorization/ [k8s-oidc]: http://kubernetes.io/docs/admin/authentication/#openid-connect-tokens -[trusted-peers]: https://godoc.org/github.com/coreos/dex/storage#Client +[trusted-peers]: https://godoc.org/github.com/dexidp/dex/storage#Client [coreos-kubernetes]: https://github.com/coreos/coreos-kubernetes/ [coreos-baremetal]: https://github.com/coreos/coreos-baremetal/ -[dex-healthz]: https://github.com/coreos/dex/issues/682 +[dex-healthz]: https://github.com/dexidp/dex/issues/682 [github-oauth2]: https://github.com/settings/applications/new [node-port]: http://kubernetes.io/docs/user-guide/services/#type-nodeport [coreos-kubernetes]: https://github.com/coreos/coreos-kubernetes diff --git a/Documentation/oidc-certification-setup.md b/Documentation/oidc-certification-setup.md index 1fb1959e..f54e17b3 100644 --- a/Documentation/oidc-certification-setup.md +++ b/Documentation/oidc-certification-setup.md @@ -13,8 +13,8 @@ Issue number | Relates to [\#376][dex-issue-376] | userinfo_endpoint [\#1052][dex-issue-1052] | auth_time -[dex-issue-376]: https://github.com/coreos/dex/issues/376 -[dex-issue-1052]: https://github.com/coreos/dex/issues/1052 +[dex-issue-376]: https://github.com/dexidp/dex/issues/376 +[dex-issue-1052]: https://github.com/dexidp/dex/issues/1052 ### Setup @@ -159,7 +159,7 @@ OP-OAuth-2nd-Revokes | Incomplete | Unsupported | userinfo_endpoint Once all test cases pass, submit your results by following instructions listed [on the website][oidc-result-submission]. -[dex-install]: https://github.com/coreos/dex/blob/master/Documentation/getting-started.md#building-the-dex-binary +[dex-install]: https://github.com/dexidp/dex/blob/master/Documentation/getting-started.md#building-the-dex-binary [aws-ec2-instance]: http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/concepts.htmlSSH [aws-ec2-ssh]: http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AccessingInstancesLinux.html [aws-ec2-quick-start]: http://docs.aws.amazon.com/quickstarts/latest/vmlaunch/step-1-launch-instance.html diff --git a/Documentation/production-users.md b/Documentation/production-users.md index 55a74c9a..8b42713c 100644 --- a/Documentation/production-users.md +++ b/Documentation/production-users.md @@ -1,3 +1,3 @@ # Production users -This document tracks people and use cases for dex in production. [Join the community](https://github.com/coreos/dex/), and help us keep the list up-to-date. \ No newline at end of file +This document tracks people and use cases for dex in production. [Join the community](https://github.com/dexidp/dex/), and help us keep the list up-to-date. \ No newline at end of file diff --git a/Documentation/proposals/user-object.md b/Documentation/proposals/user-object.md index 7ebb8870..e9203d18 100644 --- a/Documentation/proposals/user-object.md +++ b/Documentation/proposals/user-object.md @@ -73,7 +73,7 @@ type RemoteIdentity struct { `UserID` fields will be added to the `AuthRequest`, `AuthCode` and `RefreshToken` structs. When a user logs in successfully through a connector -[here](https://github.com/coreos/dex/blob/95a61454b522edd6643ced36b9d4b9baa8059556/server/handlers.go#L227), +[here](https://github.com/dexidp/dex/blob/95a61454b522edd6643ced36b9d4b9baa8059556/server/handlers.go#L227), the server will attempt to either get the user, or create one if none exists with the remote identity. diff --git a/Documentation/storage.md b/Documentation/storage.md index 91ae7eca..a1457c82 100644 --- a/Documentation/storage.md +++ b/Documentation/storage.md @@ -302,8 +302,8 @@ Each storage implementation bears a large ongoing maintenance cost and needs to Those who still want to construct a proposal for a new storage should review the following packages: -* `github.com/coreos/dex/storage`: Interface definitions which the storage must implement. __NOTE:__ This package is not stable. -* `github.com/coreos/dex/storage/conformance`: Conformance tests which storage implementations must pass. +* `github.com/dexidp/dex/storage`: Interface definitions which the storage must implement. __NOTE:__ This package is not stable. +* `github.com/dexidp/dex/storage/conformance`: Conformance tests which storage implementations must pass. ### New storage option requirements @@ -313,7 +313,7 @@ Any proposal to add a new implementation must address the following: * Transactional requirements: atomic deletes, updates, etc. * Is there an established and reasonable Go client? -[issues-transaction-tests]: https://github.com/coreos/dex/issues/600 +[issues-transaction-tests]: https://github.com/dexidp/dex/issues/600 [k8s-api]: https://github.com/kubernetes/kubernetes/blob/master/docs/devel/api-conventions.md#concurrency-control-and-consistency [psql-conn-options]: https://godoc.org/github.com/lib/pq#hdr-Connection_String_Parameters [crd]: https://kubernetes.io/docs/tasks/access-kubernetes-api/extend-api-custom-resource-definitions/ diff --git a/Documentation/v2.md b/Documentation/v2.md index 5eeea124..6b0c4523 100644 --- a/Documentation/v2.md +++ b/Documentation/v2.md @@ -40,7 +40,7 @@ Notable missing features include: ## Support for dex v1 -Dex v1 will continue to live under the `github.com/coreos/dex` repo on a branch. Bug fixes and minor changes will continue to be accepted, but development of new features by the dex team will largely cease. +Dex v1 will continue to live under the `github.com/dexidp/dex` repo on a branch. Bug fixes and minor changes will continue to be accepted, but development of new features by the dex team will largely cease. [k8s-api-docs]: http://kubernetes.io/docs/api/ [storage-docs]: ./storage.md diff --git a/Makefile b/Makefile index f2bd42a7..29947c9d 100644 --- a/Makefile +++ b/Makefile @@ -1,5 +1,5 @@ PROJ=dex -ORG_PATH=github.com/coreos +ORG_PATH=github.com/dexidp REPO_PATH=$(ORG_PATH)/$(PROJ) export PATH := $(PWD)/bin:$(PATH) @@ -33,10 +33,9 @@ release-binary: @go build -o /go/bin/dex -v -ldflags $(LD_FLAGS) $(REPO_PATH)/cmd/dex .PHONY: revendor -revendor: bin/license-bill-of-materials +revendor: @glide up -v @glide-vc --use-lock-file --no-tests --only-code - @./bin/license-bill-of-materials ./cmd/dex ./cmd/example-app > bill-of-materials.json test: @go test -v -i $(shell go list ./... | grep -v '/vendor/') @@ -76,9 +75,6 @@ bin/protoc: scripts/get-protoc bin/protoc-gen-go: @go install -v $(REPO_PATH)/vendor/github.com/golang/protobuf/protoc-gen-go -bin/license-bill-of-materials: - @CGO_ENABLED=1 go install -v $(REPO_PATH)/vendor/github.com/coreos/license-bill-of-materials - .PHONY: check-go-version check-go-version: @./scripts/check-go-version diff --git a/README.md b/README.md index 0b3a5950..33a941ff 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,8 @@ # dex - A federated OpenID Connect provider -[![Travis](https://api.travis-ci.org/coreos/dex.svg)](https://travis-ci.org/coreos/dex) -[![GoDoc](https://godoc.org/github.com/coreos/dex?status.svg)](https://godoc.org/github.com/coreos/dex) -[![Go Report Card](https://goreportcard.com/badge/github.com/coreos/dex)](https://goreportcard.com/report/github.com/coreos/dex) +[![Travis](https://api.travis-ci.org/dexidp/dex.svg)](https://travis-ci.org/dexidp/dex) +[![GoDoc](https://godoc.org/github.com/dexidp/dex?status.svg)](https://godoc.org/github.com/dexidp/dex) +[![Go Report Card](https://goreportcard.com/badge/github.com/dexidp/dex)](https://goreportcard.com/report/github.com/dexidp/dex) ![logo](Documentation/logos/dex-horizontal-color.png) @@ -114,8 +114,8 @@ Due to their public nature, GitHub and mailing lists are NOT appropriate places [tectonic]: https://tectonic.com/ [tectonic-console]: https://tectonic.com/enterprise/docs/latest/usage/index.html#tectonic-console [go-oidc]: https://github.com/coreos/go-oidc -[issue-1065]: https://github.com/coreos/dex/issues/1065 -[release-notes]: https://github.com/coreos/dex/releases -[issues]: https://github.com/coreos/dex/issues +[issue-1065]: https://github.com/dexidp/dex/issues/1065 +[release-notes]: https://github.com/dexidp/dex/releases +[issues]: https://github.com/dexidp/dex/issues [dex-dev]: https://groups.google.com/forum/#!forum/dex-dev [disclosure]: https://coreos.com/security/disclosure/ diff --git a/bill-of-materials.json b/bill-of-materials.json deleted file mode 100644 index 1d1e52f1..00000000 --- a/bill-of-materials.json +++ /dev/null @@ -1,348 +0,0 @@ -[ - { - "project": "github.com/beevik/etree", - "licenses": [ - { - "type": "BSD 2-clause \"Simplified\" License", - "confidence": 0.9658536585365853 - } - ] - }, - { - "project": "github.com/beorn7/perks/quantile", - "licenses": [ - { - "type": "MIT License", - "confidence": 0.9891304347826086 - } - ] - }, - { - "project": "github.com/cockroachdb/cockroach-go/crdb", - "licenses": [ - { - "type": "Apache License 2.0", - "confidence": 0.9988925802879292 - } - ] - }, - { - "project": "github.com/coreos/dex", - "licenses": [ - { - "type": "Apache License 2.0", - "confidence": 1 - } - ] - }, - { - "project": "github.com/coreos/etcd", - "licenses": [ - { - "type": "Apache License 2.0", - "confidence": 1 - } - ] - }, - { - "project": "github.com/coreos/go-oidc", - "licenses": [ - { - "type": "Apache License 2.0", - "confidence": 1 - } - ] - }, - { - "project": "github.com/felixge/httpsnoop", - "licenses": [ - { - "type": "MIT License", - "confidence": 0.9891304347826086 - } - ] - }, - { - "project": "github.com/ghodss/yaml", - "licenses": [ - { - "type": "BSD 3-clause \"New\" or \"Revised\" License", - "confidence": 0.8357142857142857 - } - ] - }, - { - "project": "github.com/go-sql-driver/mysql", - "licenses": [ - { - "type": "Mozilla Public License 2.0", - "confidence": 1 - } - ] - }, - { - "project": "github.com/golang/protobuf", - "licenses": [ - { - "type": "BSD 3-clause \"New\" or \"Revised\" License", - "confidence": 0.92 - } - ] - }, - { - "project": "github.com/gorilla/handlers", - "licenses": [ - { - "type": "BSD 2-clause \"Simplified\" License", - "confidence": 0.9852216748768473 - } - ] - }, - { - "project": "github.com/gorilla/mux", - "licenses": [ - { - "type": "BSD 3-clause \"New\" or \"Revised\" License", - "confidence": 0.9663865546218487 - } - ] - }, - { - "project": "github.com/grpc-ecosystem/go-grpc-prometheus", - "licenses": [ - { - "type": "Apache License 2.0", - "confidence": 1 - } - ] - }, - { - "project": "github.com/gtank/cryptopasta", - "licenses": [ - { - "type": "Creative Commons Zero v1.0 Universal", - "confidence": 0.9642857142857143 - } - ] - }, - { - "project": "github.com/jonboulle/clockwork", - "licenses": [ - { - "type": "Apache License 2.0", - "confidence": 1 - } - ] - }, - { - "project": "github.com/lib/pq", - "licenses": [ - { - "type": "MIT License", - "confidence": 0.9891304347826086 - } - ] - }, - { - "project": "github.com/mattn/go-sqlite3", - "licenses": [ - { - "type": "MIT License", - "confidence": 1 - } - ] - }, - { - "project": "github.com/matttproud/golang_protobuf_extensions/pbutil", - "licenses": [ - { - "type": "Apache License 2.0", - "confidence": 0.9988925802879292 - } - ] - }, - { - "project": "github.com/pquerna/cachecontrol", - "licenses": [ - { - "type": "Apache License 2.0", - "confidence": 1 - } - ] - }, - { - "project": "github.com/prometheus/client_golang/prometheus", - "licenses": [ - { - "type": "Apache License 2.0", - "confidence": 1 - } - ] - }, - { - "project": "github.com/prometheus/client_model/go", - "licenses": [ - { - "type": "Apache License 2.0", - "confidence": 1 - } - ] - }, - { - "project": "github.com/prometheus/common", - "licenses": [ - { - "type": "Apache License 2.0", - "confidence": 1 - } - ] - }, - { - "project": "github.com/prometheus/procfs", - "licenses": [ - { - "type": "Apache License 2.0", - "confidence": 1 - } - ] - }, - { - "project": "github.com/russellhaering/goxmldsig", - "licenses": [ - { - "type": "Apache License 2.0", - "confidence": 0.9573241061130334 - } - ] - }, - { - "project": "github.com/sirupsen/logrus", - "licenses": [ - { - "type": "MIT License", - "confidence": 1 - } - ] - }, - { - "project": "github.com/spf13/cobra", - "licenses": [ - { - "type": "Apache License 2.0", - "confidence": 0.9573241061130334 - } - ] - }, - { - "project": "github.com/spf13/pflag", - "licenses": [ - { - "type": "BSD 3-clause \"New\" or \"Revised\" License", - "confidence": 0.9663865546218487 - } - ] - }, - { - "project": "golang.org/x/crypto", - "licenses": [ - { - "type": "BSD 3-clause \"New\" or \"Revised\" License", - "confidence": 0.9663865546218487 - } - ] - }, - { - "project": "golang.org/x/net", - "licenses": [ - { - "type": "BSD 3-clause \"New\" or \"Revised\" License", - "confidence": 0.9663865546218487 - } - ] - }, - { - "project": "golang.org/x/oauth2", - "licenses": [ - { - "type": "BSD 3-clause \"New\" or \"Revised\" License", - "confidence": 0.9663865546218487 - } - ] - }, - { - "project": "golang.org/x/text", - "licenses": [ - { - "type": "BSD 3-clause \"New\" or \"Revised\" License", - "confidence": 0.9663865546218487 - } - ] - }, - { - "project": "google.golang.org/genproto/googleapis/rpc/status", - "licenses": [ - { - "type": "Apache License 2.0", - "confidence": 1 - } - ] - }, - { - "project": "google.golang.org/grpc", - "licenses": [ - { - "type": "BSD 3-clause \"New\" or \"Revised\" License", - "confidence": 0.979253112033195 - } - ] - }, - { - "project": "gopkg.in/asn1-ber.v1", - "licenses": [ - { - "type": "BSD 3-clause \"New\" or \"Revised\" License", - "confidence": 0.9663865546218487 - } - ] - }, - { - "project": "gopkg.in/ldap.v2", - "licenses": [ - { - "type": "BSD 3-clause \"New\" or \"Revised\" License", - "confidence": 0.9663865546218487 - } - ] - }, - { - "project": "gopkg.in/square/go-jose.v2", - "licenses": [ - { - "type": "Apache License 2.0", - "confidence": 1 - } - ] - }, - { - "project": "gopkg.in/square/go-jose.v2/json", - "licenses": [ - { - "type": "BSD 3-clause \"New\" or \"Revised\" License", - "confidence": 0.9663865546218487 - } - ] - }, - { - "project": "gopkg.in/yaml.v2", - "licenses": [ - { - "type": "GNU Lesser General Public License v3.0", - "confidence": 0.9528301886792453 - }, - { - "type": "MIT License", - "confidence": 0.8975609756097561 - } - ] - } -] diff --git a/cmd/dex/config.go b/cmd/dex/config.go index 416991ab..dde36978 100644 --- a/cmd/dex/config.go +++ b/cmd/dex/config.go @@ -9,12 +9,12 @@ import ( "github.com/sirupsen/logrus" "golang.org/x/crypto/bcrypt" - "github.com/coreos/dex/server" - "github.com/coreos/dex/storage" - "github.com/coreos/dex/storage/etcd" - "github.com/coreos/dex/storage/kubernetes" - "github.com/coreos/dex/storage/memory" - "github.com/coreos/dex/storage/sql" + "github.com/dexidp/dex/server" + "github.com/dexidp/dex/storage" + "github.com/dexidp/dex/storage/etcd" + "github.com/dexidp/dex/storage/kubernetes" + "github.com/dexidp/dex/storage/memory" + "github.com/dexidp/dex/storage/sql" ) // Config is the config format for the main application. diff --git a/cmd/dex/config_test.go b/cmd/dex/config_test.go index f5913cde..974e9c41 100644 --- a/cmd/dex/config_test.go +++ b/cmd/dex/config_test.go @@ -3,12 +3,13 @@ package main import ( "testing" - "github.com/coreos/dex/connector/mock" - "github.com/coreos/dex/connector/oidc" - "github.com/coreos/dex/storage" - "github.com/coreos/dex/storage/sql" "github.com/ghodss/yaml" "github.com/kylelemons/godebug/pretty" + + "github.com/dexidp/dex/connector/mock" + "github.com/dexidp/dex/connector/oidc" + "github.com/dexidp/dex/storage" + "github.com/dexidp/dex/storage/sql" ) var _ = yaml.YAMLToJSON diff --git a/cmd/dex/serve.go b/cmd/dex/serve.go index 3b0a0d7f..dcc0c352 100644 --- a/cmd/dex/serve.go +++ b/cmd/dex/serve.go @@ -22,9 +22,9 @@ import ( "google.golang.org/grpc" "google.golang.org/grpc/credentials" - "github.com/coreos/dex/api" - "github.com/coreos/dex/server" - "github.com/coreos/dex/storage" + "github.com/dexidp/dex/api" + "github.com/dexidp/dex/server" + "github.com/dexidp/dex/storage" ) func commandServe() *cobra.Command { diff --git a/cmd/dex/version.go b/cmd/dex/version.go index 1e92c4dc..b74cb016 100644 --- a/cmd/dex/version.go +++ b/cmd/dex/version.go @@ -4,8 +4,9 @@ import ( "fmt" "runtime" - "github.com/coreos/dex/version" "github.com/spf13/cobra" + + "github.com/dexidp/dex/version" ) func commandVersion() *cobra.Command { diff --git a/connector/authproxy/authproxy.go b/connector/authproxy/authproxy.go index e367c4f9..b4f3958d 100644 --- a/connector/authproxy/authproxy.go +++ b/connector/authproxy/authproxy.go @@ -8,8 +8,9 @@ import ( "net/http" "net/url" - "github.com/coreos/dex/connector" "github.com/sirupsen/logrus" + + "github.com/dexidp/dex/connector" ) // Config holds the configuration parameters for a connector which returns an diff --git a/connector/github/github.go b/connector/github/github.go index 3ab15282..642f4121 100644 --- a/connector/github/github.go +++ b/connector/github/github.go @@ -19,8 +19,9 @@ import ( "golang.org/x/oauth2" "golang.org/x/oauth2/github" - "github.com/coreos/dex/connector" "github.com/sirupsen/logrus" + + "github.com/dexidp/dex/connector" ) const ( diff --git a/connector/gitlab/gitlab.go b/connector/gitlab/gitlab.go index 66b17495..5d1fc156 100644 --- a/connector/gitlab/gitlab.go +++ b/connector/gitlab/gitlab.go @@ -11,9 +11,10 @@ import ( "regexp" "strconv" - "github.com/coreos/dex/connector" "github.com/sirupsen/logrus" "golang.org/x/oauth2" + + "github.com/dexidp/dex/connector" ) const ( diff --git a/connector/ldap/ldap.go b/connector/ldap/ldap.go index fd187e95..8c9e480d 100644 --- a/connector/ldap/ldap.go +++ b/connector/ldap/ldap.go @@ -12,8 +12,9 @@ import ( "gopkg.in/ldap.v2" - "github.com/coreos/dex/connector" "github.com/sirupsen/logrus" + + "github.com/dexidp/dex/connector" ) // Config holds the configuration parameters for the LDAP connector. The LDAP diff --git a/connector/ldap/ldap_test.go b/connector/ldap/ldap_test.go index 23ad593b..95c2e0b3 100644 --- a/connector/ldap/ldap_test.go +++ b/connector/ldap/ldap_test.go @@ -16,7 +16,7 @@ import ( "github.com/kylelemons/godebug/pretty" "github.com/sirupsen/logrus" - "github.com/coreos/dex/connector" + "github.com/dexidp/dex/connector" ) const envVar = "DEX_LDAP_TESTS" diff --git a/connector/linkedin/linkedin.go b/connector/linkedin/linkedin.go index ba85eefc..9ab67e57 100644 --- a/connector/linkedin/linkedin.go +++ b/connector/linkedin/linkedin.go @@ -11,8 +11,9 @@ import ( "golang.org/x/oauth2" - "github.com/coreos/dex/connector" "github.com/sirupsen/logrus" + + "github.com/dexidp/dex/connector" ) const ( diff --git a/connector/microsoft/microsoft.go b/connector/microsoft/microsoft.go index 7ea672fa..ad6b3e73 100644 --- a/connector/microsoft/microsoft.go +++ b/connector/microsoft/microsoft.go @@ -14,8 +14,9 @@ import ( "golang.org/x/oauth2" - "github.com/coreos/dex/connector" "github.com/sirupsen/logrus" + + "github.com/dexidp/dex/connector" ) const ( diff --git a/connector/mock/connectortest.go b/connector/mock/connectortest.go index 4a8b1257..e6eb5f01 100644 --- a/connector/mock/connectortest.go +++ b/connector/mock/connectortest.go @@ -8,8 +8,9 @@ import ( "net/http" "net/url" - "github.com/coreos/dex/connector" "github.com/sirupsen/logrus" + + "github.com/dexidp/dex/connector" ) // NewCallbackConnector returns a mock connector which requires no user interaction. It always returns diff --git a/connector/oidc/oidc.go b/connector/oidc/oidc.go index f0d8daf7..4468edc4 100644 --- a/connector/oidc/oidc.go +++ b/connector/oidc/oidc.go @@ -14,7 +14,7 @@ import ( "github.com/sirupsen/logrus" "golang.org/x/oauth2" - "github.com/coreos/dex/connector" + "github.com/dexidp/dex/connector" ) // Config holds configuration options for OpenID Connect logins. @@ -41,7 +41,7 @@ type Config struct { // Domains that don't support basic auth. golang.org/x/oauth2 has an internal // list, but it only matches specific URLs, not top level domains. var brokenAuthHeaderDomains = []string{ - // See: https://github.com/coreos/dex/issues/859 + // See: https://github.com/dexidp/dex/issues/859 "okta.com", "oktapreview.com", } diff --git a/connector/saml/saml.go b/connector/saml/saml.go index 02b3fad7..8210a641 100644 --- a/connector/saml/saml.go +++ b/connector/saml/saml.go @@ -17,7 +17,7 @@ import ( "github.com/russellhaering/goxmldsig/etreeutils" "github.com/sirupsen/logrus" - "github.com/coreos/dex/connector" + "github.com/dexidp/dex/connector" ) const ( diff --git a/connector/saml/saml_test.go b/connector/saml/saml_test.go index a162eedf..2f319473 100644 --- a/connector/saml/saml_test.go +++ b/connector/saml/saml_test.go @@ -14,7 +14,7 @@ import ( dsig "github.com/russellhaering/goxmldsig" "github.com/sirupsen/logrus" - "github.com/coreos/dex/connector" + "github.com/dexidp/dex/connector" ) // responseTest maps a SAML 2.0 response object to a set of expected values. diff --git a/examples/grpc-client/client.go b/examples/grpc-client/client.go index 31100b3c..41bc4c85 100644 --- a/examples/grpc-client/client.go +++ b/examples/grpc-client/client.go @@ -9,9 +9,10 @@ import ( "io/ioutil" "log" - "github.com/coreos/dex/api" "google.golang.org/grpc" "google.golang.org/grpc/credentials" + + "github.com/dexidp/dex/api" ) func newDexClient(hostAndPort, caPath, clientCrt, clientKey string) (api.DexClient, error) { diff --git a/glide.lock b/glide.lock index d23a5385..f4077196 100644 --- a/glide.lock +++ b/glide.lock @@ -1,5 +1,5 @@ -hash: dda54feb39d5947ad20e9d583ccad9be02343dac0f52752944b7cd39668af7a4 -updated: 2017-12-20T16:05:04.690191111+01:00 +hash: c41e5b1fbd68f04f14b6e9b2ebab8bf18b857b3dc3a5754e4adf7c1884981de7 +updated: 2018-09-05T08:40:39.486766558+02:00 imports: - name: github.com/beevik/etree version: 4cd0dd976db869f817248477718071a28e978df0 @@ -24,8 +24,6 @@ imports: - pkg/transport - name: github.com/coreos/go-oidc version: be73733bb8cc830d0205609b95d125215f8e9c70 -- name: github.com/coreos/license-bill-of-materials - version: d70207c33a3c79a1c0479b208f8b7ab6215144c7 - name: github.com/felixge/httpsnoop version: eadd4fad6aac69ae62379194fe0219f3dbc80fd3 - name: github.com/ghodss/yaml diff --git a/glide.yaml b/glide.yaml index b3145b54..c08d7359 100644 --- a/glide.yaml +++ b/glide.yaml @@ -7,7 +7,7 @@ # * Create a separate block for each dependency group. # * Keep updates to "vendor/" in a separate commit from actual changes. -package: github.com/coreos/dex +package: github.com/dexidp/dex import: - package: github.com/spf13/cobra @@ -133,9 +133,9 @@ import: - proto - protoc-gen-go - protoc-gen-go/grpc - - protoc-gen-go/descriptor - - protoc-gen-go/plugin - - protoc-gen-go/generator + - protoc-gen-go/descriptor + - protoc-gen-go/plugin + - protoc-gen-go/generator - package: google.golang.org/genproto version: 411e09b969b1170a9f0c467558eb4c4c110d9c77 @@ -155,10 +155,6 @@ import: - package: github.com/jonboulle/clockwork version: bcac9884e7502bb2b474c0339d889cb981a2f27f -# License bill of materials generator. -- package: github.com/coreos/license-bill-of-materials - version: d70207c33a3c79a1c0479b208f8b7ab6215144c7 - # monitoring packages - package: github.com/beorn7/perks/quantile version: 3ac7bf7a47d159a033b107610db8a1b6575507a4 diff --git a/server/api.go b/server/api.go index 6aecef59..3367ac80 100644 --- a/server/api.go +++ b/server/api.go @@ -10,11 +10,12 @@ import ( // https://github.com/grpc/grpc-go/issues/711 "golang.org/x/net/context" - "github.com/coreos/dex/api" - "github.com/coreos/dex/server/internal" - "github.com/coreos/dex/storage" - "github.com/coreos/dex/version" "github.com/sirupsen/logrus" + + "github.com/dexidp/dex/api" + "github.com/dexidp/dex/server/internal" + "github.com/dexidp/dex/storage" + "github.com/dexidp/dex/version" ) // apiVersion increases every time a new call is added to the API. Clients should use this info diff --git a/server/api_test.go b/server/api_test.go index 697d8d76..aabfde8b 100644 --- a/server/api_test.go +++ b/server/api_test.go @@ -7,12 +7,13 @@ import ( "testing" "time" - "github.com/coreos/dex/api" - "github.com/coreos/dex/server/internal" - "github.com/coreos/dex/storage" - "github.com/coreos/dex/storage/memory" "github.com/sirupsen/logrus" "google.golang.org/grpc" + + "github.com/dexidp/dex/api" + "github.com/dexidp/dex/server/internal" + "github.com/dexidp/dex/storage" + "github.com/dexidp/dex/storage/memory" ) // apiClient is a test gRPC client. When constructed, it runs a server in @@ -276,7 +277,7 @@ func TestRefreshToken(t *testing.T) { // Try to delete again. // - // See https://github.com/coreos/dex/issues/1055 + // See https://github.com/dexidp/dex/issues/1055 resp, err = client.RevokeRefresh(ctx, &revokeReq) if err != nil { t.Fatalf("Unable to revoke refresh tokens for user: %v", err) diff --git a/server/handlers.go b/server/handlers.go index 430253c3..1e02998d 100644 --- a/server/handlers.go +++ b/server/handlers.go @@ -15,9 +15,9 @@ import ( "github.com/gorilla/mux" jose "gopkg.in/square/go-jose.v2" - "github.com/coreos/dex/connector" - "github.com/coreos/dex/server/internal" - "github.com/coreos/dex/storage" + "github.com/dexidp/dex/connector" + "github.com/dexidp/dex/server/internal" + "github.com/dexidp/dex/storage" ) func (s *Server) handleHealth(w http.ResponseWriter, r *http.Request) { @@ -159,7 +159,7 @@ func (s *Server) handleAuthorization(w http.ResponseWriter, r *http.Request) { // so users don't hit "not found" database errors if they wait at the login // screen too long. // - // See: https://github.com/coreos/dex/issues/646 + // See: https://github.com/dexidp/dex/issues/646 authReq.Expiry = s.now().Add(24 * time.Hour) // Totally arbitrary value. if err := s.storage.CreateAuthRequest(authReq); err != nil { s.logger.Errorf("Failed to create authorization request: %v", err) diff --git a/server/oauth2.go b/server/oauth2.go index 7967b1bc..b5d992ca 100644 --- a/server/oauth2.go +++ b/server/oauth2.go @@ -21,9 +21,9 @@ import ( jose "gopkg.in/square/go-jose.v2" - "github.com/coreos/dex/connector" - "github.com/coreos/dex/server/internal" - "github.com/coreos/dex/storage" + "github.com/dexidp/dex/connector" + "github.com/dexidp/dex/server/internal" + "github.com/dexidp/dex/storage" ) // TODO(ericchiang): clean this file up and figure out more idiomatic error handling. @@ -150,7 +150,7 @@ func signatureAlgorithm(jwk *jose.JSONWebKey) (alg jose.SignatureAlgorithm, err // value. In the future, we might want to make this configurable on a // per client basis. For example allowing PS256 or ECDSA variants. // - // See https://github.com/coreos/dex/issues/692 + // See https://github.com/dexidp/dex/issues/692 return jose.RS256, nil case *ecdsa.PrivateKey: // We don't actually support ECDSA keys yet, but they're tested for diff --git a/server/oauth2_test.go b/server/oauth2_test.go index dcf4947b..8cad77a8 100644 --- a/server/oauth2_test.go +++ b/server/oauth2_test.go @@ -10,7 +10,7 @@ import ( jose "gopkg.in/square/go-jose.v2" - "github.com/coreos/dex/storage" + "github.com/dexidp/dex/storage" ) func TestParseAuthorizationRequest(t *testing.T) { diff --git a/server/rotation.go b/server/rotation.go index a628bfa7..bb857450 100644 --- a/server/rotation.go +++ b/server/rotation.go @@ -12,8 +12,9 @@ import ( "gopkg.in/square/go-jose.v2" - "github.com/coreos/dex/storage" "github.com/sirupsen/logrus" + + "github.com/dexidp/dex/storage" ) var errAlreadyRotated = errors.New("keys already rotated by another server instance") diff --git a/server/rotation_test.go b/server/rotation_test.go index 9d236b70..66c269ce 100644 --- a/server/rotation_test.go +++ b/server/rotation_test.go @@ -6,9 +6,10 @@ import ( "testing" "time" - "github.com/coreos/dex/storage" - "github.com/coreos/dex/storage/memory" "github.com/sirupsen/logrus" + + "github.com/dexidp/dex/storage" + "github.com/dexidp/dex/storage/memory" ) func signingKeyID(t *testing.T, s storage.Storage) string { diff --git a/server/server.go b/server/server.go index 3b586d8e..d96f562d 100644 --- a/server/server.go +++ b/server/server.go @@ -22,17 +22,17 @@ import ( "github.com/prometheus/client_golang/prometheus" "github.com/sirupsen/logrus" - "github.com/coreos/dex/connector" - "github.com/coreos/dex/connector/authproxy" - "github.com/coreos/dex/connector/github" - "github.com/coreos/dex/connector/gitlab" - "github.com/coreos/dex/connector/ldap" - "github.com/coreos/dex/connector/linkedin" - "github.com/coreos/dex/connector/microsoft" - "github.com/coreos/dex/connector/mock" - "github.com/coreos/dex/connector/oidc" - "github.com/coreos/dex/connector/saml" - "github.com/coreos/dex/storage" + "github.com/dexidp/dex/connector" + "github.com/dexidp/dex/connector/authproxy" + "github.com/dexidp/dex/connector/github" + "github.com/dexidp/dex/connector/gitlab" + "github.com/dexidp/dex/connector/ldap" + "github.com/dexidp/dex/connector/linkedin" + "github.com/dexidp/dex/connector/microsoft" + "github.com/dexidp/dex/connector/mock" + "github.com/dexidp/dex/connector/oidc" + "github.com/dexidp/dex/connector/saml" + "github.com/dexidp/dex/storage" ) // LocalConnector is the local passwordDB connector which is an internal diff --git a/server/server_test.go b/server/server_test.go index c1046afe..536387c4 100644 --- a/server/server_test.go +++ b/server/server_test.go @@ -13,7 +13,6 @@ import ( "net/http/httputil" "net/url" "os" - "path/filepath" "reflect" "sort" "strings" @@ -29,10 +28,10 @@ import ( "golang.org/x/oauth2" jose "gopkg.in/square/go-jose.v2" - "github.com/coreos/dex/connector" - "github.com/coreos/dex/connector/mock" - "github.com/coreos/dex/storage" - "github.com/coreos/dex/storage/memory" + "github.com/dexidp/dex/connector" + "github.com/dexidp/dex/connector/mock" + "github.com/dexidp/dex/storage" + "github.com/dexidp/dex/storage/memory" ) func mustLoad(s string) *rsa.PrivateKey { @@ -91,7 +90,7 @@ func newTestServer(ctx context.Context, t *testing.T, updateConfig func(c *Confi Issuer: s.URL, Storage: memory.New(logger), Web: WebConfig{ - Dir: filepath.Join(os.Getenv("GOPATH"), "src/github.com/coreos/dex/web"), + Dir: "../web", }, Logger: logger, PrometheusRegistry: prometheus.NewRegistry(), diff --git a/storage/conformance/conformance.go b/storage/conformance/conformance.go index eb038b14..5606def8 100644 --- a/storage/conformance/conformance.go +++ b/storage/conformance/conformance.go @@ -13,7 +13,7 @@ import ( "golang.org/x/crypto/bcrypt" - "github.com/coreos/dex/storage" + "github.com/dexidp/dex/storage" "github.com/kylelemons/godebug/pretty" ) diff --git a/storage/conformance/transactions.go b/storage/conformance/transactions.go index 3478460d..4b268e0f 100644 --- a/storage/conformance/transactions.go +++ b/storage/conformance/transactions.go @@ -8,7 +8,7 @@ import ( "golang.org/x/crypto/bcrypt" - "github.com/coreos/dex/storage" + "github.com/dexidp/dex/storage" ) // RunTransactionTests runs a test suite aimed a verifying the transaction diff --git a/storage/etcd/config.go b/storage/etcd/config.go index ad273968..66cb04c6 100644 --- a/storage/etcd/config.go +++ b/storage/etcd/config.go @@ -3,11 +3,12 @@ package etcd import ( "time" - "github.com/coreos/dex/storage" "github.com/coreos/etcd/clientv3" "github.com/coreos/etcd/clientv3/namespace" "github.com/coreos/etcd/pkg/transport" "github.com/sirupsen/logrus" + + "github.com/dexidp/dex/storage" ) var ( diff --git a/storage/etcd/etcd.go b/storage/etcd/etcd.go index 7ad35ea5..e323f5ab 100644 --- a/storage/etcd/etcd.go +++ b/storage/etcd/etcd.go @@ -7,9 +7,10 @@ import ( "strings" "time" - "github.com/coreos/dex/storage" "github.com/coreos/etcd/clientv3" "github.com/sirupsen/logrus" + + "github.com/dexidp/dex/storage" ) const ( diff --git a/storage/etcd/etcd_test.go b/storage/etcd/etcd_test.go index 7029e4ca..bd412536 100644 --- a/storage/etcd/etcd_test.go +++ b/storage/etcd/etcd_test.go @@ -9,10 +9,11 @@ import ( "testing" "time" - "github.com/coreos/dex/storage" - "github.com/coreos/dex/storage/conformance" "github.com/coreos/etcd/clientv3" "github.com/sirupsen/logrus" + + "github.com/dexidp/dex/storage" + "github.com/dexidp/dex/storage/conformance" ) func withTimeout(t time.Duration, f func()) { diff --git a/storage/etcd/types.go b/storage/etcd/types.go index acca7f37..8d34e0da 100644 --- a/storage/etcd/types.go +++ b/storage/etcd/types.go @@ -3,8 +3,9 @@ package etcd import ( "time" - "github.com/coreos/dex/storage" jose "gopkg.in/square/go-jose.v2" + + "github.com/dexidp/dex/storage" ) // AuthCode is a mirrored struct from storage with JSON struct tags diff --git a/storage/kubernetes/client.go b/storage/kubernetes/client.go index c17b6376..f95acaff 100644 --- a/storage/kubernetes/client.go +++ b/storage/kubernetes/client.go @@ -27,8 +27,8 @@ import ( "github.com/sirupsen/logrus" "golang.org/x/net/http2" - "github.com/coreos/dex/storage" - "github.com/coreos/dex/storage/kubernetes/k8sapi" + "github.com/dexidp/dex/storage" + "github.com/dexidp/dex/storage/kubernetes/k8sapi" ) type client struct { diff --git a/storage/kubernetes/storage.go b/storage/kubernetes/storage.go index 0b99a8b1..fa72e717 100644 --- a/storage/kubernetes/storage.go +++ b/storage/kubernetes/storage.go @@ -7,9 +7,10 @@ import ( "strings" "time" - "github.com/coreos/dex/storage" - "github.com/coreos/dex/storage/kubernetes/k8sapi" "github.com/sirupsen/logrus" + + "github.com/dexidp/dex/storage" + "github.com/dexidp/dex/storage/kubernetes/k8sapi" ) const ( diff --git a/storage/kubernetes/storage_test.go b/storage/kubernetes/storage_test.go index 58340f70..27d65416 100644 --- a/storage/kubernetes/storage_test.go +++ b/storage/kubernetes/storage_test.go @@ -5,9 +5,10 @@ import ( "os" "testing" - "github.com/coreos/dex/storage" - "github.com/coreos/dex/storage/conformance" "github.com/sirupsen/logrus" + + "github.com/dexidp/dex/storage" + "github.com/dexidp/dex/storage/conformance" ) const testKubeConfigEnv = "DEX_KUBECONFIG" diff --git a/storage/kubernetes/types.go b/storage/kubernetes/types.go index aa296531..5324998e 100644 --- a/storage/kubernetes/types.go +++ b/storage/kubernetes/types.go @@ -6,8 +6,8 @@ import ( jose "gopkg.in/square/go-jose.v2" - "github.com/coreos/dex/storage" - "github.com/coreos/dex/storage/kubernetes/k8sapi" + "github.com/dexidp/dex/storage" + "github.com/dexidp/dex/storage/kubernetes/k8sapi" ) var tprMeta = k8sapi.TypeMeta{ diff --git a/storage/memory/memory.go b/storage/memory/memory.go index ed80778b..d8817fbd 100644 --- a/storage/memory/memory.go +++ b/storage/memory/memory.go @@ -6,8 +6,9 @@ import ( "sync" "time" - "github.com/coreos/dex/storage" "github.com/sirupsen/logrus" + + "github.com/dexidp/dex/storage" ) // New returns an in memory storage. diff --git a/storage/memory/memory_test.go b/storage/memory/memory_test.go index 6628e50c..84a8826e 100644 --- a/storage/memory/memory_test.go +++ b/storage/memory/memory_test.go @@ -4,9 +4,10 @@ import ( "os" "testing" - "github.com/coreos/dex/storage" - "github.com/coreos/dex/storage/conformance" "github.com/sirupsen/logrus" + + "github.com/dexidp/dex/storage" + "github.com/dexidp/dex/storage/conformance" ) func TestStorage(t *testing.T) { diff --git a/storage/memory/static_test.go b/storage/memory/static_test.go index df990ebb..8513e0ee 100644 --- a/storage/memory/static_test.go +++ b/storage/memory/static_test.go @@ -6,8 +6,9 @@ import ( "strings" "testing" - "github.com/coreos/dex/storage" "github.com/sirupsen/logrus" + + "github.com/dexidp/dex/storage" ) func TestStaticClients(t *testing.T) { diff --git a/storage/sql/config.go b/storage/sql/config.go index 2a70234f..ec001b2c 100644 --- a/storage/sql/config.go +++ b/storage/sql/config.go @@ -6,10 +6,11 @@ import ( "net/url" "strconv" - "github.com/coreos/dex/storage" "github.com/lib/pq" sqlite3 "github.com/mattn/go-sqlite3" "github.com/sirupsen/logrus" + + "github.com/dexidp/dex/storage" ) const ( diff --git a/storage/sql/config_test.go b/storage/sql/config_test.go index 13b2508e..75b81b67 100644 --- a/storage/sql/config_test.go +++ b/storage/sql/config_test.go @@ -7,9 +7,10 @@ import ( "testing" "time" - "github.com/coreos/dex/storage" - "github.com/coreos/dex/storage/conformance" "github.com/sirupsen/logrus" + + "github.com/dexidp/dex/storage" + "github.com/dexidp/dex/storage/conformance" ) func withTimeout(t time.Duration, f func()) { diff --git a/storage/sql/crud.go b/storage/sql/crud.go index 17886b91..d7c055ab 100644 --- a/storage/sql/crud.go +++ b/storage/sql/crud.go @@ -9,7 +9,7 @@ import ( "strings" "time" - "github.com/coreos/dex/storage" + "github.com/dexidp/dex/storage" ) // TODO(ericchiang): The update, insert, and select methods queries are all diff --git a/vendor/github.com/coreos/license-bill-of-materials/LICENSE b/vendor/github.com/coreos/license-bill-of-materials/LICENSE deleted file mode 100644 index 2c68650f..00000000 --- a/vendor/github.com/coreos/license-bill-of-materials/LICENSE +++ /dev/null @@ -1,19 +0,0 @@ -Copyright (c) 2015 Patrick Mézard - -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/coreos/license-bill-of-materials/license-bill-of-materials.go b/vendor/github.com/coreos/license-bill-of-materials/license-bill-of-materials.go deleted file mode 100644 index 7ee70685..00000000 --- a/vendor/github.com/coreos/license-bill-of-materials/license-bill-of-materials.go +++ /dev/null @@ -1,733 +0,0 @@ -package main - -import ( - "bufio" - "bytes" - "encoding/json" - "flag" - "fmt" - "io/ioutil" - "log" - "os" - "os/exec" - "path/filepath" - "regexp" - "sort" - "strconv" - "strings" - - "github.com/coreos/license-bill-of-materials/assets" -) - -// Template holds pre-constructed license template info -type Template struct { - Title string - Nickname string - Words map[string]int -} - -func parseTemplate(content string) (*Template, error) { - t := Template{} - text := []byte{} - state := 0 - scanner := bufio.NewScanner(strings.NewReader(content)) - for scanner.Scan() { - line := strings.TrimSpace(scanner.Text()) - if state == 0 { - if line == "---" { - state = 1 - } - } else if state == 1 { - if line == "---" { - state = 2 - } else { - if strings.HasPrefix(line, "title:") { - t.Title = strings.TrimSpace(line[len("title:"):]) - } else if strings.HasPrefix(line, "nickname:") { - t.Nickname = strings.TrimSpace(line[len("nickname:"):]) - } - } - } else if state == 2 { - text = append(text, scanner.Bytes()...) - text = append(text, []byte("\n")...) - } - } - t.Words = makeWordSet(text) - return &t, scanner.Err() -} - -func loadTemplates() ([]*Template, error) { - templates := []*Template{} - for _, a := range assets.Assets { - templ, err := parseTemplate(a.Content) - if err != nil { - return nil, err - } - templates = append(templates, templ) - } - return templates, nil -} - -var ( - reWords = regexp.MustCompile(`[\w']+`) - reCopyright = regexp.MustCompile( - `(?i)\s*Copyright (?:©|\(c\)|\xC2\xA9)?\s*(?:\d{4}|\[year\]).*`) -) - -func cleanLicenseData(data []byte) []byte { - data = bytes.ToLower(data) - data = reCopyright.ReplaceAll(data, nil) - return data -} - -func makeWordSet(data []byte) map[string]int { - words := map[string]int{} - data = cleanLicenseData(data) - matches := reWords.FindAll(data, -1) - for i, m := range matches { - s := string(m) - if _, ok := words[s]; !ok { - // Non-matching words are likely in the license header, to mention - // copyrights and authors. Try to preserve the initial sequences, - // to display them later. - words[s] = i - } - } - return words -} - -// Word holds word and word position in a license -type Word struct { - Text string - Pos int -} - -type sortedWords []Word - -func (s sortedWords) Len() int { - return len(s) -} - -func (s sortedWords) Swap(i, j int) { - s[i], s[j] = s[j], s[i] -} - -func (s sortedWords) Less(i, j int) bool { - return s[i].Pos < s[j].Pos -} - -// MatchResult represents a matched template and matching metrics -type MatchResult struct { - Template *Template - Score float64 - ExtraWords []string - MissingWords []string -} - -func sortAndReturnWords(words []Word) []string { - sort.Sort(sortedWords(words)) - tokens := []string{} - for _, w := range words { - tokens = append(tokens, w.Text) - } - return tokens -} - -// matchTemplates returns the best license template matching supplied data, -// its score between 0 and 1 and the list of words appearing in license but not -// in the matched template. -func matchTemplates(license []byte, templates []*Template) MatchResult { - bestScore := float64(-1) - var bestTemplate *Template - bestExtra := []Word{} - bestMissing := []Word{} - words := makeWordSet(license) - for _, t := range templates { - extra := []Word{} - missing := []Word{} - common := 0 - for w, pos := range words { - _, ok := t.Words[w] - if ok { - common++ - } else { - extra = append(extra, Word{ - Text: w, - Pos: pos, - }) - } - } - for w, pos := range t.Words { - if _, ok := words[w]; !ok { - missing = append(missing, Word{ - Text: w, - Pos: pos, - }) - } - } - score := 2 * float64(common) / (float64(len(words)) + float64(len(t.Words))) - if score > bestScore { - bestScore = score - bestTemplate = t - bestMissing = missing - bestExtra = extra - } - } - return MatchResult{ - Template: bestTemplate, - Score: bestScore, - ExtraWords: sortAndReturnWords(bestExtra), - MissingWords: sortAndReturnWords(bestMissing), - } -} - -// fixEnv returns a copy of the process environment where GOPATH is adjusted to -// supplied value. It returns nil if gopath is empty. -func fixEnv(gopath string) []string { - if gopath == "" { - return nil - } - kept := []string{ - "GOPATH=" + gopath, - } - for _, env := range os.Environ() { - if !strings.HasPrefix(env, "GOPATH=") { - kept = append(kept, env) - } - } - return kept -} - -// MissingError reports on missing licenses -type MissingError struct { - Err string -} - -func (err *MissingError) Error() string { - return err.Err -} - -// expandPackages takes a list of package or package expressions and invoke go -// list to expand them to packages. In particular, it handles things like "..." -// and ".". -func expandPackages(gopath string, pkgs []string) ([]string, error) { - args := []string{"list"} - args = append(args, pkgs...) - cmd := exec.Command("go", args...) - cmd.Env = fixEnv(gopath) - out, err := cmd.CombinedOutput() - if err != nil { - output := string(out) - if strings.Contains(output, "cannot find package") || - strings.Contains(output, "no buildable Go source files") { - return nil, &MissingError{Err: output} - } - return nil, fmt.Errorf("'go %s' failed with:\n%s", - strings.Join(args, " "), output) - } - names := []string{} - for _, s := range strings.Split(string(out), "\n") { - s = strings.TrimSpace(s) - if s != "" { - names = append(names, s) - } - } - return names, nil -} - -func listPackagesAndDeps(gopath string, pkgs []string) ([]string, error) { - pkgs, err := expandPackages(gopath, pkgs) - if err != nil { - return nil, err - } - args := []string{"list", "-f", "{{range .Deps}}{{.}}|{{end}}"} - args = append(args, pkgs...) - cmd := exec.Command("go", args...) - cmd.Env = fixEnv(gopath) - out, err := cmd.CombinedOutput() - if err != nil { - output := string(out) - if strings.Contains(output, "cannot find package") || - strings.Contains(output, "no buildable Go source files") { - return nil, &MissingError{Err: output} - } - return nil, fmt.Errorf("'go %s' failed with:\n%s", - strings.Join(args, " "), output) - } - deps := []string{} - seen := map[string]bool{} - for _, s := range strings.Split(string(out), "|") { - s = strings.TrimSpace(s) - if s != "" && !seen[s] { - deps = append(deps, s) - seen[s] = true - } - } - for _, pkg := range pkgs { - if !seen[pkg] { - seen[pkg] = true - deps = append(deps, pkg) - } - } - sort.Strings(deps) - return deps, nil -} - -func listStandardPackages(gopath string) ([]string, error) { - return expandPackages(gopath, []string{"std", "cmd"}) -} - -// PkgError reports on missing packages -type PkgError struct { - Err string -} - -// PkgInfo holds identifying package info -type PkgInfo struct { - Name string - Dir string - Root string - ImportPath string - Error *PkgError -} - -func getPackagesInfo(gopath string, pkgs []string) ([]*PkgInfo, error) { - args := []string{"list", "-e", "-json"} - // TODO: split the list for platforms which do not support massive argument - // lists. - args = append(args, pkgs...) - cmd := exec.Command("go", args...) - cmd.Env = fixEnv(gopath) - out, err := cmd.CombinedOutput() - if err != nil { - return nil, fmt.Errorf("go %s failed with:\n%s", - strings.Join(args, " "), string(out)) - } - infos := make([]*PkgInfo, 0, len(pkgs)) - decoder := json.NewDecoder(bytes.NewBuffer(out)) - var derr error - for _, pkg := range pkgs { - info := &PkgInfo{} - derr = decoder.Decode(info) - if derr != nil { - return nil, fmt.Errorf("could not retrieve package information for %s", pkg) - } - if pkg != info.ImportPath { - return nil, fmt.Errorf("package information mismatch: asked for %s, got %s", - pkg, info.ImportPath) - } - if info.Error != nil && info.Name == "" { - info.Name = info.ImportPath - } - infos = append(infos, info) - } - return infos, err -} - -var ( - reLicense = regexp.MustCompile(`(?i)^(?:` + - `((?:un)?licen[sc]e(?:\.[^.]+)?)|` + - `(copy(?:ing|right)(?:\.[^.]+)?)|` + - `)$`) -) - -// scoreLicenseName returns a factor between 0 and 1 weighting how likely -// supplied filename is a license file. -func scoreLicenseName(name string) int8 { - m := reLicense.FindStringSubmatch(name) - switch { - case m == nil: - break - case m[1] != "" || m[2] != "": - return 1 - } - return 0 -} - -// findLicenses looks for license files in package import path, and down to -// parent directories until a file is found or $GOPATH/src is reached. It -// returns a slice of paths all viable files, or a slice containing one empty -// string if none were found. -func findLicenses(info *PkgInfo) ([]string, error) { - path := info.ImportPath - for ; path != "."; path = filepath.Dir(path) { - fis, err := ioutil.ReadDir(filepath.Join(info.Root, "src", path)) - if err != nil { - return []string{""}, err - } - allViableNames := make([]string, 0) - for _, fi := range fis { - if !fi.Mode().IsRegular() { - continue - } - score := scoreLicenseName(fi.Name()) - if score == 1 { - allViableNames = append(allViableNames, filepath.Join(path, fi.Name())) - } - } - if len(allViableNames) > 0 { - return allViableNames, nil - } - } - return []string{""}, nil -} - -// GoPackage represents a top-level package, ex. colors/blue -type GoPackage struct { - PackageName string - RawLicenses []*RawLicense - Err string -} - -// RawLicense holds template-matched file data -type RawLicense struct { - Path string - Score float64 - Template *Template - ExtraWords []string - MissingWords []string -} - -func listPackagesWithLicenses(gopath string, pkgs []string) ([]GoPackage, error) { - templates, err := loadTemplates() - if err != nil { - return nil, err - } - deps, err := listPackagesAndDeps(gopath, pkgs) - if err != nil { - if _, ok := err.(*MissingError); ok { - return nil, err - } - return nil, fmt.Errorf("could not list %s dependencies: %s", - strings.Join(pkgs, " "), err) - } - std, err := listStandardPackages(gopath) - if err != nil { - return nil, fmt.Errorf("could not list standard packages: %s", err) - } - stdSet := map[string]bool{} - for _, n := range std { - stdSet[n] = true - } - infos, err := getPackagesInfo(gopath, deps) - if err != nil { - return nil, err - } - - // Cache matched licenses by path. Useful for package with a lot of - // subpackages like bleve. - matched := map[string]MatchResult{} - - gPackages := []GoPackage{} - for _, info := range infos { - if info.Error != nil { - gPackages = append(gPackages, GoPackage{ - PackageName: info.Name, - Err: info.Error.Err, - RawLicenses: []*RawLicense{{Path: ""}}, - }) - continue - } - if stdSet[info.ImportPath] { - continue - } - paths, err := findLicenses(info) - if err != nil { - return nil, err - } - rawLicenseInfos := []*RawLicense{} - gPackage := GoPackage{PackageName: info.ImportPath} - for _, path := range paths { - rl := RawLicense{Path: path} - if path != "" { - fpath := filepath.Join(info.Root, "src", path) - m, ok := matched[fpath] - if !ok { - data, err := ioutil.ReadFile(fpath) - if err != nil { - return nil, err - } - m = matchTemplates(data, templates) - matched[fpath] = m - } - rl.Score = m.Score - rl.Template = m.Template - rl.ExtraWords = m.ExtraWords - rl.MissingWords = m.MissingWords - } - rawLicenseInfos = append(rawLicenseInfos, &rl) - } - gPackage.RawLicenses = rawLicenseInfos - gPackages = append(gPackages, gPackage) - } - return gPackages, nil -} - -// longestCommonPrefix returns the longest common prefix over import path -// components of supplied licenses. -func longestCommonPrefix(gPackages []GoPackage) string { - type Node struct { - Name string - Children map[string]*Node - Shared int - } - // Build a prefix tree. Not super efficient, but easy to do. - root := &Node{ - Children: map[string]*Node{}, - Shared: len(gPackages), - } - for _, l := range gPackages { - n := root - for _, part := range strings.Split(l.PackageName, "/") { - c := n.Children[part] - if c == nil { - c = &Node{ - Name: part, - Children: map[string]*Node{}, - } - n.Children[part] = c - } - c.Shared++ - n = c - } - } - n := root - prefix := []string{} - for { - if len(n.Children) != 1 { - break - } - for _, c := range n.Children { - if c.Shared == len(gPackages) { - // Handle case where there are subpackages: - // prometheus/procfs - // prometheus/procfs/xfs - prefix = append(prefix, c.Name) - } - n = c - break - } - } - return strings.Join(prefix, "/") -} - -// groupPackagesByLicense returns the input packages after grouping them by license -// path and find their longest import path common prefix. Entries with empty -// paths are left unchanged. -func groupPackagesByLicense(gPackages []GoPackage) ([]GoPackage, error) { - paths := map[string][]GoPackage{} - for _, gp := range gPackages { - for _, rl := range gp.RawLicenses { - if rl.Path == "" { - continue - } - paths[rl.Path] = append(paths[rl.Path], gp) - } - } - for k, v := range paths { - if len(v) <= 1 { - continue - } - prefix := longestCommonPrefix(v) - if prefix == "" { - return nil, fmt.Errorf( - "packages share the same license but not common prefix: %v", v) - } - gp := v[0] - gp.PackageName = prefix - paths[k] = []GoPackage{gp} - } - kept := []GoPackage{} - // Ensures only one package with multiple licenses is appended to the list of - // kept packages - seen := make(map[string]bool) - for _, gp := range gPackages { - if len(gp.RawLicenses) == 0 { - kept = append(kept, gp) - continue - } - for _, rl := range gp.RawLicenses { - if rl.Path == "" { - kept = append(kept, gp) - continue - } - if v, ok := paths[rl.Path]; ok { - if _, ok := seen[v[0].PackageName]; !ok { - kept = append(kept, v[0]) - delete(paths, rl.Path) - seen[v[0].PackageName] = true - } - } - } - } - return kept, nil -} - -type projectAndLicenses struct { - Project string `json:"project"` - Licenses []license `json:"licenses,omitempty"` - Error string `json:"error,omitempty"` -} - -type license struct { - Type string `json:"type,omitempty"` - Confidence float64 `json:"confidence,omitempty"` -} - -func licensesToProjectAndLicenses(gPackages []GoPackage) (c []projectAndLicenses, e []projectAndLicenses) { - for _, gp := range gPackages { - if gp.Err != "" { - e = append(e, projectAndLicenses{ - Project: removeVendor(gp.PackageName), - Error: gp.Err, - }) - continue - } - nt := 0 - for _, rl := range gp.RawLicenses { - if rl.Template == nil { - nt++ - } - } - if len(gp.RawLicenses) == nt { - e = append(e, projectAndLicenses{ - Project: removeVendor(gp.PackageName), - Error: "No license detected", - }) - continue - } - ls := []license{} - for _, rl := range gp.RawLicenses { - if rl.Template.Title != "" { - ls = append(ls, license{ - Type: rl.Template.Title, - Confidence: rl.Score, - }) - } - } - c = append(c, projectAndLicenses{ - Project: removeVendor(gp.PackageName), - Licenses: ls, - }) - } - return c, e -} - -func removeVendor(s string) string { - v := "/vendor/" - i := strings.Index(s, v) - if i == -1 { - return s - } - return s[i+len(v):] -} - -func truncateFloat(f float64) float64 { - nf := fmt.Sprintf("%.3f", f) - - var err error - f, err = strconv.ParseFloat(nf, 64) - if err != nil { - panic("unexpected parse float error") - } - return f -} - -func pkgsToLicenses(pkgs []string, overrides string) (pls []projectAndLicenses, ne []projectAndLicenses) { - fplm := make(map[string][]string) - if err := json.Unmarshal([]byte(overrides), &pls); err != nil { - log.Fatal(err) - } - for _, pl := range pls { - for _, l := range pl.Licenses { - fplm[pl.Project] = append(fplm[pl.Project], l.Type) - } - } - - licenses, err := listPackagesWithLicenses("", pkgs) - if err != nil { - log.Fatal(err) - } - if licenses, err = groupPackagesByLicense(licenses); err != nil { - log.Fatal(err) - } - c, e := licensesToProjectAndLicenses(licenses) - - // detected licenses - pls = nil - ls := []license{} - for _, pl := range c { - if fl, ok := fplm[pl.Project]; ok { - for _, l := range fl { - ls = append(ls, license{ - Type: l, - Confidence: 1.0, - }) - } - pl = projectAndLicenses{ - Project: pl.Project, - Licenses: ls, - } - delete(fplm, pl.Project) - } - pls = append(pls, pl) - } - // force add undetected licenses given by overrides - ls = nil - for proj, fl := range fplm { - for _, l := range fl { - ls = append(ls, license{ - Type: l, - Confidence: 1.0, - }) - } - pls = append(pls, projectAndLicenses{ - Project: proj, - Licenses: ls, - }) - } - // missing / error license - for _, pl := range e { - if _, ok := fplm[pl.Project]; !ok { - ne = append(ne, pl) - } - } - - sort.Slice(pls, func(i, j int) bool { return pls[i].Project < pls[j].Project }) - sort.Slice(ne, func(i, j int) bool { return ne[i].Project < ne[j].Project }) - return pls, ne -} - -func main() { - of := flag.String("override-file", "", "a file to overwrite licenses") - flag.Parse() - if flag.NArg() < 1 { - log.Fatal("expect at least one package argument") - } - - overrides := "[]" - if len(*of) != 0 { - b, err := ioutil.ReadFile(*of) - if err != nil { - log.Fatal(err) - } - overrides = string(b) - } - - c, ne := pkgsToLicenses(flag.Args(), overrides) - b, err := json.MarshalIndent(c, "", " ") - if err != nil { - log.Fatal(err) - } - fmt.Println(string(b)) - - if len(ne) != 0 { - fmt.Println("") - b, err := json.MarshalIndent(ne, "", " ") - if err != nil { - log.Fatal(err) - } - fmt.Println(string(b)) - os.Exit(1) - } -}