From 26dc2f4d61d768086d845d193cfc499d32cdd3fc Mon Sep 17 00:00:00 2001 From: Ludovic Fernandez Date: Tue, 30 Jan 2018 17:16:03 +0100 Subject: [PATCH 01/11] doc: option not available in 1.5. --- docs/configuration/entrypoints.md | 1 - 1 file changed, 1 deletion(-) diff --git a/docs/configuration/entrypoints.md b/docs/configuration/entrypoints.md index dc51f9616..dddaf8370 100644 --- a/docs/configuration/entrypoints.md +++ b/docs/configuration/entrypoints.md @@ -27,7 +27,6 @@ entryPoint = "https" regex = "^http://localhost/(.*)" replacement = "http://mydomain/$1" - permanent = true [entryPoints.http.auth] headerField = "X-WebAuth-User" From be4aeaacde494b23ae15f17d91939d6be92660bd Mon Sep 17 00:00:00 2001 From: Ludovic Fernandez Date: Mon, 5 Feb 2018 08:54:03 +0100 Subject: [PATCH 02/11] Add documentation about entry points definition with CLI. --- docs/configuration/entrypoints.md | 33 ++++++++++++++++++++++++ docs/user-guide/cluster-docker-consul.md | 14 +++++----- 2 files changed, 40 insertions(+), 7 deletions(-) diff --git a/docs/configuration/entrypoints.md b/docs/configuration/entrypoints.md index dddaf8370..28e5cc049 100644 --- a/docs/configuration/entrypoints.md +++ b/docs/configuration/entrypoints.md @@ -2,6 +2,8 @@ ## Reference +### TOML + ```toml [entryPoints] [entryPoints.http] @@ -63,6 +65,37 @@ # ... ``` +### CLI + +For more information about the CLI, see the documentation about [Traefik command](/basics/#traefik). + +```shell +--entryPoints='Name:http Address::80' +--entryPoints='Name:https Address::443 TLS' +``` + +!!! note + Whitespace is used as option separator and `,` is used as value separator for the list. + The names of the options are case-insensitive. + +All available options: + +```ini +Name:foo +Address::80 +TLS:goo,gii +TLS +CA:car +CA.Optional:true +Redirect.EntryPoint:https +Redirect.Regex:http://localhost/(.*) +Redirect.Replacement:http://mydomain/$1 +Compress:true +WhiteListSourceRange:10.42.0.0/16,152.89.1.33/32,afed:be44::/16 +ProxyProtocol.TrustedIPs:192.168.0.1 +ProxyProtocol.Insecure:tue +ForwardedHeaders.TrustedIPs:10.0.0.3/24,20.0.0.3/24 +``` ## Basic diff --git a/docs/user-guide/cluster-docker-consul.md b/docs/user-guide/cluster-docker-consul.md index 48c5de9e1..4fb9027f1 100644 --- a/docs/user-guide/cluster-docker-consul.md +++ b/docs/user-guide/cluster-docker-consul.md @@ -35,14 +35,14 @@ TL;DR: ```shell $ traefik \ - --entrypoints=Name:http Address::80 Redirect.EntryPoint:https \ - --entrypoints=Name:https Address::443 TLS \ + --entrypoints='Name:http Address::80 Redirect.EntryPoint:https' \ + --entrypoints='Name:https Address::443 TLS' \ --defaultentrypoints=http,https ``` To listen to different ports, we need to create an entry point for each. -The CLI syntax is `--entrypoints=Name:a_name Address:an_ip_or_empty:a_port options`. +The CLI syntax is `--entrypoints='Name:a_name Address:an_ip_or_empty:a_port options'`. If you want to redirect traffic from one entry point to another, it's the option `Redirect.EntryPoint:entrypoint_name`. By default, we don't want to configure all our services to listen on http and https, we add a default entry point configuration: `--defaultentrypoints=http,https`. @@ -94,8 +94,8 @@ services: image: traefik:1.5 command: - "--api" - - "--entrypoints=Name:http Address::80 Redirect.EntryPoint:https" - - "--entrypoints=Name:https Address::443 TLS" + - "--entrypoints='Name:http Address::80 Redirect.EntryPoint:https'" + - "--entrypoints='Name:https Address::443 TLS'" - "--defaultentrypoints=http,https" - "--acme" - "--acme.storage=/etc/traefik/acme/acme.json" @@ -204,8 +204,8 @@ services: command: - "storeconfig" - "--api" - - "--entrypoints=Name:http Address::80 Redirect.EntryPoint:https" - - "--entrypoints=Name:https Address::443 TLS" + - "--entrypoints='Name:http Address::80 Redirect.EntryPoint:https'" + - "--entrypoints='Name:https Address::443 TLS'" - "--defaultentrypoints=http,https" - "--acme" - "--acme.storage=traefik/acme/account" From 203a5c5c4830517d08eb04f8630d625c670c58b2 Mon Sep 17 00:00:00 2001 From: Ludovic Fernandez Date: Mon, 5 Feb 2018 09:12:03 +0100 Subject: [PATCH 03/11] Hide the pflag error when displaying help. --- cmd/traefik/traefik.go | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/cmd/traefik/traefik.go b/cmd/traefik/traefik.go index cdd6e5ad4..a6c403acd 100644 --- a/cmd/traefik/traefik.go +++ b/cmd/traefik/traefik.go @@ -28,6 +28,7 @@ import ( "github.com/containous/traefik/types" "github.com/containous/traefik/version" "github.com/coreos/go-systemd/daemon" + "github.com/ogier/pflag" ) func main() { @@ -75,6 +76,9 @@ Complete documentation is available at https://traefik.io`, } if _, err := f.Parse(usedCmd); err != nil { + if err == pflag.ErrHelp { + os.Exit(0) + } fmtlog.Printf("Error parsing command: %s\n", err) os.Exit(-1) } From ce3a0fdd4663056ca66525a1ce427feeddb86525 Mon Sep 17 00:00:00 2001 From: Michael Date: Mon, 5 Feb 2018 11:34:03 +0100 Subject: [PATCH 04/11] Fix dnsrr endpoint mode excluded when not using swarm LB --- provider/docker/docker.go | 27 ++++++++------ provider/docker/swarm_test.go | 66 +++++++++++++++++++++++++++++++++-- 2 files changed, 79 insertions(+), 14 deletions(-) diff --git a/provider/docker/docker.go b/provider/docker/docker.go index 12f7f9127..a56823065 100644 --- a/provider/docker/docker.go +++ b/provider/docker/docker.go @@ -777,19 +777,21 @@ func listServices(ctx context.Context, dockerClient client.APIClient) ([]dockerD for _, service := range serviceList { dockerData := parseService(service, networkMap) - if len(dockerData.NetworkSettings.Networks) > 0 { - useSwarmLB, _ := strconv.ParseBool(getIsBackendLBSwarm(dockerData)) - if useSwarmLB { + useSwarmLB, _ := strconv.ParseBool(getIsBackendLBSwarm(dockerData)) + + if useSwarmLB { + if len(dockerData.NetworkSettings.Networks) > 0 { dockerDataList = append(dockerDataList, dockerData) - } else { - isGlobalSvc := service.Spec.Mode.Global != nil - dockerDataListTasks, err = listTasks(ctx, dockerClient, service.ID, dockerData, networkMap, isGlobalSvc) - - for _, dockerDataTask := range dockerDataListTasks { - dockerDataList = append(dockerDataList, dockerDataTask) - } } + } else { + isGlobalSvc := service.Spec.Mode.Global != nil + dockerDataListTasks, err = listTasks(ctx, dockerClient, service.ID, dockerData, networkMap, isGlobalSvc) + + for _, dockerDataTask := range dockerDataListTasks { + dockerDataList = append(dockerDataList, dockerDataTask) + } + } } return dockerDataList, err @@ -805,7 +807,10 @@ func parseService(service swarmtypes.Service, networkMap map[string]*dockertypes if service.Spec.EndpointSpec != nil { if service.Spec.EndpointSpec.Mode == swarmtypes.ResolutionModeDNSRR { - log.Warnf("Ignored endpoint-mode not supported, service name: %s", service.Spec.Annotations.Name) + useSwarmLB, _ := strconv.ParseBool(getIsBackendLBSwarm(dockerData)) + if useSwarmLB { + log.Warnf("Ignored %s endpoint-mode not supported, service name: %s. Fallback to Træfik load balancing", swarmtypes.ResolutionModeDNSRR, service.Spec.Annotations.Name) + } } else if service.Spec.EndpointSpec.Mode == swarmtypes.ResolutionModeVIP { dockerData.NetworkSettings.Networks = make(map[string]*networkData) for _, virtualIP := range service.Endpoint.VirtualIPs { diff --git a/provider/docker/swarm_test.go b/provider/docker/swarm_test.go index 2ff0aaee9..e0fe058e5 100644 --- a/provider/docker/swarm_test.go +++ b/provider/docker/swarm_test.go @@ -773,6 +773,7 @@ type fakeServicesClient struct { dockerVersion string networks []dockertypes.NetworkResource services []swarm.Service + tasks []swarm.Task err error } @@ -788,10 +789,15 @@ func (c *fakeServicesClient) NetworkList(ctx context.Context, options dockertype return c.networks, c.err } +func (c *fakeServicesClient) TaskList(ctx context.Context, options dockertypes.TaskListOptions) ([]swarm.Task, error) { + return c.tasks, c.err +} + func TestListServices(t *testing.T) { testCases := []struct { desc string services []swarm.Service + tasks []swarm.Task dockerVersion string networks []dockertypes.NetworkResource expectedServices []string @@ -813,7 +819,8 @@ func TestListServices(t *testing.T) { swarmService( serviceName("service2"), serviceLabels(map[string]string{ - labelDockerNetwork: "barnet", + labelDockerNetwork: "barnet", + labelBackendLoadBalancerSwarm: "true", }), withEndpointSpec(modeDNSSR)), }, @@ -838,7 +845,8 @@ func TestListServices(t *testing.T) { swarmService( serviceName("service2"), serviceLabels(map[string]string{ - labelDockerNetwork: "barnet", + labelDockerNetwork: "barnet", + labelBackendLoadBalancerSwarm: "true", }), withEndpointSpec(modeDNSSR)), }, @@ -867,13 +875,65 @@ func TestListServices(t *testing.T) { "service1", }, }, + { + desc: "Should return service1 and service2", + services: []swarm.Service{ + swarmService( + serviceName("service1"), + serviceLabels(map[string]string{ + labelDockerNetwork: "barnet", + }), + withEndpointSpec(modeVIP), + withEndpoint( + virtualIP("yk6l57rfwizjzxxzftn4amaot", "10.11.12.13/24"), + virtualIP("2", "10.11.12.99/24"), + )), + swarmService( + serviceName("service2"), + serviceLabels(map[string]string{ + labelDockerNetwork: "barnet", + }), + withEndpointSpec(modeDNSSR)), + }, + tasks: []swarm.Task{ + swarmTask("id1", taskStatus(taskState(swarm.TaskStateRunning))), + swarmTask("id2", taskStatus(taskState(swarm.TaskStateRunning))), + }, + dockerVersion: "1.30", + networks: []dockertypes.NetworkResource{ + { + Name: "network_name", + ID: "yk6l57rfwizjzxxzftn4amaot", + Created: time.Now(), + Scope: "swarm", + Driver: "overlay", + EnableIPv6: false, + Internal: true, + Ingress: false, + ConfigOnly: false, + Options: map[string]string{ + "com.docker.network.driver.overlay.vxlanid_list": "4098", + "com.docker.network.enable_ipv6": "false", + }, + Labels: map[string]string{ + "com.docker.stack.namespace": "test", + }, + }, + }, + expectedServices: []string{ + "service1.0", + "service1.0", + "service2.0", + "service2.0", + }, + }, } for caseID, test := range testCases { test := test t.Run(strconv.Itoa(caseID), func(t *testing.T) { t.Parallel() - dockerClient := &fakeServicesClient{services: test.services, dockerVersion: test.dockerVersion, networks: test.networks} + dockerClient := &fakeServicesClient{services: test.services, tasks: test.tasks, dockerVersion: test.dockerVersion, networks: test.networks} serviceDockerData, _ := listServices(context.Background(), dockerClient) assert.Equal(t, len(test.expectedServices), len(serviceDockerData)) From afe4c307f9e2554e170170de8bff6e5244fd71d1 Mon Sep 17 00:00:00 2001 From: SALLEYRON Julien Date: Mon, 5 Feb 2018 18:20:04 +0100 Subject: [PATCH 05/11] Traefik still start when Let's encrypt is down --- acme/acme.go | 6 ++-- docs/configuration/acme.md | 12 ++++++++ integration/acme_test.go | 13 +++++++++ integration/fixtures/acme/wrong_acme.toml | 34 +++++++++++++++++++++++ 4 files changed, 63 insertions(+), 2 deletions(-) create mode 100644 integration/fixtures/acme/wrong_acme.toml diff --git a/acme/acme.go b/acme/acme.go index c3da88c4a..6dacdb90c 100644 --- a/acme/acme.go +++ b/acme/acme.go @@ -295,6 +295,7 @@ func (a *ACME) leadershipListener(elected bool) error { // CreateLocalConfig creates a tls.config using local ACME configuration func (a *ACME) CreateLocalConfig(tlsConfig *tls.Config, certs *safe.Safe, checkOnDemandDomain func(domain string) bool) error { + defer a.runJobs() err := a.init() if err != nil { return err @@ -333,7 +334,9 @@ func (a *ACME) CreateLocalConfig(tlsConfig *tls.Config, certs *safe.Safe, checkO a.client, err = a.buildACMEClient(account) if err != nil { - return err + log.Errorf(`Failed to build ACME client: %s +Let's Encrypt functionality will be limited until traefik is restarted.`, err) + return nil } if needRegister { @@ -374,7 +377,6 @@ func (a *ACME) CreateLocalConfig(tlsConfig *tls.Config, certs *safe.Safe, checkO a.retrieveCertificates() a.renewCertificates() - a.runJobs() ticker := time.NewTicker(24 * time.Hour) safe.Go(func() { diff --git a/docs/configuration/acme.md b/docs/configuration/acme.md index ffad21f29..09b4962ed 100644 --- a/docs/configuration/acme.md +++ b/docs/configuration/acme.md @@ -144,6 +144,18 @@ entryPoint = "https" If `HTTP-01` challenge is used, `acme.httpChallenge.entryPoint` has to be defined and reachable by Let's Encrypt through the port 80. These are Let's Encrypt limitations as described on the [community forum](https://community.letsencrypt.org/t/support-for-ports-other-than-80-and-443/3419/72). +### Let's Encrypt downtime + +Let's Encrypt functionality will be limited until Træfik is restarted. + +If Let's Encrypt is not reachable, these certificates will be used : + - ACME certificates already generated before downtime + - Expired ACME certificates + - Provided certificates + +!!! note + Default Træfik certificate will be used instead of ACME certificates for new (sub)domains (which need Let's Encrypt challenge). + ### `storage` ```toml diff --git a/integration/acme_test.go b/integration/acme_test.go index 5a9f1dd32..ad43b68b1 100644 --- a/integration/acme_test.go +++ b/integration/acme_test.go @@ -142,6 +142,19 @@ func (s *AcmeSuite) TestOnHostRuleRetrieveAcmeCertificateWithDynamicWildcard(c * s.retrieveAcmeCertificate(c, testCase) } +// Test Let's encrypt down +func (s *AcmeSuite) TestNoValidLetsEncryptServer(c *check.C) { + cmd, display := s.traefikCmd(withConfigFile("fixtures/acme/wrong_acme.toml")) + defer display(c) + err := cmd.Start() + c.Assert(err, checker.IsNil) + defer cmd.Process.Kill() + + // Expected traefik works + err = try.GetRequest("http://127.0.0.1:8080/api/providers", 10*time.Second, try.StatusCodeIs(http.StatusOK)) + c.Assert(err, checker.IsNil) +} + // Doing an HTTPS request and test the response certificate func (s *AcmeSuite) retrieveAcmeCertificate(c *check.C, testCase AcmeTestCase) { file := s.adaptFile(c, testCase.traefikConfFilePath, struct { diff --git a/integration/fixtures/acme/wrong_acme.toml b/integration/fixtures/acme/wrong_acme.toml new file mode 100644 index 000000000..3f8f65051 --- /dev/null +++ b/integration/fixtures/acme/wrong_acme.toml @@ -0,0 +1,34 @@ +logLevel = "DEBUG" + +defaultEntryPoints = ["http", "https"] + +[api] + +[entryPoints] + [entryPoints.http] + address = ":8081" + [entryPoints.https] + address = ":5001" + [entryPoints.https.tls] + + +[acme] +email = "test@traefik.io" +storage = "/dev/null" +entryPoint = "https" +OnHostRule = true +caServer = "http://wrongurl:4000/directory" + +[file] + +[backends] + [backends.backend] + [backends.backend.servers.server1] + url = "http://127.0.0.1:9010" + + +[frontends] + [frontends.frontend] + backend = "backend" + [frontends.frontend.routes.test] + rule = "Host:traefik.acme.wtf" From 4d0c8c189a194283241d385353a141deb54d4af5 Mon Sep 17 00:00:00 2001 From: Sonu Kumar Date: Tue, 6 Feb 2018 18:34:03 +0530 Subject: [PATCH 06/11] Fixed typo. --- docs/user-guide/kv-config.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/user-guide/kv-config.md b/docs/user-guide/kv-config.md index 21fea7d20..5366ebfce 100644 --- a/docs/user-guide/kv-config.md +++ b/docs/user-guide/kv-config.md @@ -1,6 +1,6 @@ # Key-value store configuration -Both [static global configuration](/user-guide/kv-config/#static-configuration-in-key-value-store) and [dynamic](/user-guide/kv-config/#dynamic-configuration-in-key-value-store) configuration can be sorted in a Key-value store. +Both [static global configuration](/user-guide/kv-config/#static-configuration-in-key-value-store) and [dynamic](/user-guide/kv-config/#dynamic-configuration-in-key-value-store) configuration can be stored in a Key-value store. This section explains how to launch Træfik using a configuration loaded from a Key-value store. From 0b0380b690e46348a92253d4d95a6f39ae89e7a4 Mon Sep 17 00:00:00 2001 From: Wilhelm Uschtrin Date: Tue, 6 Feb 2018 14:30:04 +0100 Subject: [PATCH 07/11] Fix typo --- docs/user-guide/docker-and-lets-encrypt.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/user-guide/docker-and-lets-encrypt.md b/docs/user-guide/docker-and-lets-encrypt.md index cca881979..68c11950d 100644 --- a/docs/user-guide/docker-and-lets-encrypt.md +++ b/docs/user-guide/docker-and-lets-encrypt.md @@ -110,7 +110,7 @@ entryPoint = "http" This is the minimum configuration required to do the following: -- Log `ERROR`-level messages (or more severe) to the console, but silence `DEBUG`-level messagse +- Log `ERROR`-level messages (or more severe) to the console, but silence `DEBUG`-level messages - Check for new versions of Træfik periodically - Create two entry points, namely an `HTTP` endpoint on port `80`, and an `HTTPS` endpoint on port `443` where all incoming traffic on port `80` will immediately get redirected to `HTTPS`. - Enable the Docker configuration backend and listen for container events on the Docker unix socket we've mounted earlier. However, **new containers will not be exposed by Træfik by default, we'll get into this in a bit!** From 514f9a72152d8cfb4fde9a67adb871f021a29e0b Mon Sep 17 00:00:00 2001 From: Timo Reimann Date: Wed, 7 Feb 2018 11:32:03 +0100 Subject: [PATCH 08/11] Reduce oxy round trip logs to debug. --- Gopkg.lock | 573 ++----------------- vendor/github.com/vulcand/oxy/forward/fwd.go | 22 +- 2 files changed, 59 insertions(+), 536 deletions(-) diff --git a/Gopkg.lock b/Gopkg.lock index 882ad5698..170cdb594 100644 --- a/Gopkg.lock +++ b/Gopkg.lock @@ -3,10 +3,7 @@ [[projects]] name = "cloud.google.com/go" - packages = [ - "compute/metadata", - "internal" - ] + packages = ["compute/metadata","internal"] revision = "2e6a95edb1071d750f6d7db777bf66cd2997af6c" version = "v0.7.0" @@ -30,21 +27,12 @@ [[projects]] branch = "master" name = "github.com/Azure/go-ansiterm" - packages = [ - ".", - "winterm" - ] + packages = [".","winterm"] revision = "d6e3b3328b783f23731bc4d058875b0371ff8109" [[projects]] name = "github.com/Azure/go-autorest" - packages = [ - "autorest", - "autorest/adal", - "autorest/azure", - "autorest/date", - "autorest/to" - ] + packages = ["autorest","autorest/adal","autorest/azure","autorest/date","autorest/to"] revision = "f6be1abbb5abd0517522f850dd785990d373da7e" version = "v9.0.0" @@ -57,10 +45,7 @@ [[projects]] branch = "master" name = "github.com/BurntSushi/ty" - packages = [ - ".", - "fun" - ] + packages = [".","fun"] revision = "6add9cd6ad42d389d6ead1dde60b4ad71e46fd74" [[projects]] @@ -140,41 +125,7 @@ [[projects]] name = "github.com/aws/aws-sdk-go" - packages = [ - "aws", - "aws/awserr", - "aws/awsutil", - "aws/client", - "aws/client/metadata", - "aws/corehandlers", - "aws/credentials", - "aws/credentials/ec2rolecreds", - "aws/credentials/endpointcreds", - "aws/credentials/stscreds", - "aws/defaults", - "aws/ec2metadata", - "aws/endpoints", - "aws/request", - "aws/session", - "aws/signer/v4", - "private/protocol", - "private/protocol/ec2query", - "private/protocol/json/jsonutil", - "private/protocol/jsonrpc", - "private/protocol/query", - "private/protocol/query/queryutil", - "private/protocol/rest", - "private/protocol/restxml", - "private/protocol/xml/xmlutil", - "private/waiter", - "service/dynamodb", - "service/dynamodb/dynamodbattribute", - "service/dynamodb/dynamodbiface", - "service/ec2", - "service/ecs", - "service/route53", - "service/sts" - ] + packages = ["aws","aws/awserr","aws/awsutil","aws/client","aws/client/metadata","aws/corehandlers","aws/credentials","aws/credentials/ec2rolecreds","aws/credentials/endpointcreds","aws/credentials/stscreds","aws/defaults","aws/ec2metadata","aws/endpoints","aws/request","aws/session","aws/signer/v4","private/protocol","private/protocol/ec2query","private/protocol/json/jsonutil","private/protocol/jsonrpc","private/protocol/query","private/protocol/query/queryutil","private/protocol/rest","private/protocol/restxml","private/protocol/xml/xmlutil","private/waiter","service/dynamodb","service/dynamodb/dynamodbattribute","service/dynamodb/dynamodbiface","service/ec2","service/ecs","service/route53","service/sts"] revision = "3f8f870ec9939e32b3372abf74d24e468bcd285d" version = "v1.6.18" @@ -239,31 +190,13 @@ [[projects]] name = "github.com/coreos/etcd" - packages = [ - "auth/authpb", - "client", - "clientv3", - "clientv3/concurrency", - "etcdserver/api/v3rpc/rpctypes", - "etcdserver/etcdserverpb", - "mvcc/mvccpb", - "pkg/pathutil", - "pkg/srv", - "pkg/types", - "version" - ] + packages = ["auth/authpb","client","clientv3","clientv3/concurrency","etcdserver/api/v3rpc/rpctypes","etcdserver/etcdserverpb","mvcc/mvccpb","pkg/pathutil","pkg/srv","pkg/types","version"] revision = "f1d7dd87da3e8feab4aaf675b8e29c6a5ed5f58b" version = "v3.2.9" [[projects]] name = "github.com/coreos/go-oidc" - packages = [ - "http", - "jose", - "key", - "oauth2", - "oidc" - ] + packages = ["http","jose","key","oauth2","oidc"] revision = "5644a2f50e2d2d5ba0b474bc5bc55fea1925936d" [[projects]] @@ -280,11 +213,7 @@ [[projects]] name = "github.com/coreos/pkg" - packages = [ - "health", - "httputil", - "timeutil" - ] + packages = ["health","httputil","timeutil"] revision = "fa29b1d70f0beaddd4c7021607cc3c3be8ce94b8" [[projects]] @@ -311,91 +240,22 @@ [[projects]] name = "github.com/docker/cli" - packages = [ - "cli/command/image/build", - "cli/config", - "cli/config/configfile" - ] + packages = ["cli/command/image/build","cli/config","cli/config/configfile"] revision = "d95fd2f38cfc23e077530c6181330727d561b6a0" [[projects]] name = "github.com/docker/distribution" - packages = [ - ".", - "context", - "digestset", - "reference", - "registry/api/errcode", - "registry/api/v2", - "registry/client", - "registry/client/auth", - "registry/client/auth/challenge", - "registry/client/transport", - "registry/storage/cache", - "registry/storage/cache/memory", - "uuid" - ] + packages = [".","context","digestset","reference","registry/api/errcode","registry/api/v2","registry/client","registry/client/auth","registry/client/auth/challenge","registry/client/transport","registry/storage/cache","registry/storage/cache/memory","uuid"] revision = "b38e5838b7b2f2ad48e06ec4b500011976080621" [[projects]] name = "github.com/docker/docker" - packages = [ - "api", - "api/types", - "api/types/blkiodev", - "api/types/container", - "api/types/events", - "api/types/filters", - "api/types/image", - "api/types/mount", - "api/types/network", - "api/types/registry", - "api/types/strslice", - "api/types/swarm", - "api/types/time", - "api/types/versions", - "api/types/volume", - "builder/dockerignore", - "client", - "opts", - "pkg/archive", - "pkg/fileutils", - "pkg/gitutils", - "pkg/homedir", - "pkg/httputils", - "pkg/idtools", - "pkg/ioutils", - "pkg/jsonlog", - "pkg/jsonmessage", - "pkg/longpath", - "pkg/mount", - "pkg/namesgenerator", - "pkg/pools", - "pkg/progress", - "pkg/promise", - "pkg/random", - "pkg/stdcopy", - "pkg/streamformatter", - "pkg/stringid", - "pkg/symlink", - "pkg/system", - "pkg/tarsum", - "pkg/term", - "pkg/term/windows", - "pkg/tlsconfig", - "pkg/urlutil", - "registry", - "runconfig/opts" - ] + packages = ["api","api/types","api/types/blkiodev","api/types/container","api/types/events","api/types/filters","api/types/image","api/types/mount","api/types/network","api/types/registry","api/types/strslice","api/types/swarm","api/types/time","api/types/versions","api/types/volume","builder/dockerignore","client","opts","pkg/archive","pkg/fileutils","pkg/gitutils","pkg/homedir","pkg/httputils","pkg/idtools","pkg/ioutils","pkg/jsonlog","pkg/jsonmessage","pkg/longpath","pkg/mount","pkg/namesgenerator","pkg/pools","pkg/progress","pkg/promise","pkg/random","pkg/stdcopy","pkg/streamformatter","pkg/stringid","pkg/symlink","pkg/system","pkg/tarsum","pkg/term","pkg/term/windows","pkg/tlsconfig","pkg/urlutil","registry","runconfig/opts"] revision = "75c7536d2e2e328b644bf69153de879d1d197988" [[projects]] name = "github.com/docker/go-connections" - packages = [ - "nat", - "sockets", - "tlsconfig" - ] + packages = ["nat","sockets","tlsconfig"] revision = "e15c02316c12de00874640cd76311849de2aeed5" [[projects]] @@ -412,42 +272,13 @@ [[projects]] name = "github.com/docker/libcompose" - packages = [ - "config", - "docker", - "docker/auth", - "docker/builder", - "docker/client", - "docker/container", - "docker/ctx", - "docker/image", - "docker/network", - "docker/service", - "docker/volume", - "labels", - "logger", - "lookup", - "project", - "project/events", - "project/options", - "utils", - "version", - "yaml" - ] + packages = ["config","docker","docker/auth","docker/builder","docker/client","docker/container","docker/ctx","docker/image","docker/network","docker/service","docker/volume","labels","logger","lookup","project","project/events","project/options","utils","version","yaml"] revision = "1b708aac26a4fc6f9bff31728a8e3a252ef57dbd" [[projects]] branch = "master" name = "github.com/docker/libkv" - packages = [ - ".", - "store", - "store/boltdb", - "store/consul", - "store/etcd/v2", - "store/etcd/v3", - "store/zookeeper" - ] + packages = [".","store","store/boltdb","store/consul","store/etcd/v2","store/etcd/v3","store/zookeeper"] revision = "5e4bb288a9a74320bb03f5c18d6bdbab0d8049de" source = "github.com/abronan/libkv" @@ -475,14 +306,7 @@ [[projects]] name = "github.com/edeckers/auroradnsclient" - packages = [ - ".", - "records", - "requests", - "requests/errors", - "tokens", - "zones" - ] + packages = [".","records","requests","requests/errors","tokens","zones"] revision = "398f53855ba258191157e20fabfaccca5e13cea9" [[projects]] @@ -493,11 +317,7 @@ [[projects]] name = "github.com/emicklei/go-restful" - packages = [ - ".", - "log", - "swagger" - ] + packages = [".","log","swagger"] revision = "89ef8af493ab468a45a42bb0d89a06fccdd2fb22" [[projects]] @@ -540,19 +360,7 @@ [[projects]] name = "github.com/go-kit/kit" - packages = [ - "log", - "metrics", - "metrics/dogstatsd", - "metrics/generic", - "metrics/influx", - "metrics/internal/lv", - "metrics/internal/ratemap", - "metrics/multi", - "metrics/prometheus", - "metrics/statsd", - "util/conn" - ] + packages = ["log","metrics","metrics/dogstatsd","metrics/generic","metrics/influx","metrics/internal/lv","metrics/internal/ratemap","metrics/multi","metrics/prometheus","metrics/statsd","util/conn"] revision = "f66b0e13579bfc5a48b9e2a94b1209c107ea1f41" version = "v0.3.0" @@ -590,10 +398,7 @@ [[projects]] name = "github.com/gogo/protobuf" - packages = [ - "proto", - "sortkeys" - ] + packages = ["proto","sortkeys"] revision = "909568be09de550ed094403c2bf8a261b5bb730a" version = "v0.3" @@ -604,10 +409,7 @@ [[projects]] name = "github.com/golang/protobuf" - packages = [ - "proto", - "ptypes/any" - ] + packages = ["proto","ptypes/any"] revision = "4bd1920723d7b7c925de087aa32e2187708897f7" [[projects]] @@ -679,11 +481,7 @@ [[projects]] name = "github.com/influxdata/influxdb" - packages = [ - "client/v2", - "models", - "pkg/escape" - ] + packages = ["client/v2","models","pkg/escape"] revision = "2d474a3089bcfce6b472779be9470a1f0ef3d5e4" version = "v1.3.7" @@ -716,10 +514,7 @@ [[projects]] name = "github.com/libkermit/compose" - packages = [ - ".", - "check" - ] + packages = [".","check"] revision = "4a33a16f1446ba205c4da7b09105d5bdc293b432" [[projects]] @@ -750,11 +545,7 @@ [[projects]] name = "github.com/mailru/easyjson" - packages = [ - "buffer", - "jlexer", - "jwriter" - ] + packages = ["buffer","jlexer","jwriter"] revision = "d5b7844b561a7bc640052f1b935f7b800330d7e0" [[projects]] @@ -781,28 +572,13 @@ [[projects]] name = "github.com/mesos/mesos-go" - packages = [ - "detector", - "detector/zoo", - "mesosproto", - "mesosutil", - "upid" - ] + packages = ["detector","detector/zoo","mesosproto","mesosutil","upid"] revision = "068d5470506e3780189fe607af40892814197c5e" [[projects]] branch = "master" name = "github.com/mesosphere/mesos-dns" - packages = [ - "detect", - "errorutil", - "logging", - "models", - "records", - "records/labels", - "records/state", - "util" - ] + packages = ["detect","errorutil","logging","models","records","records/labels","records/state","util"] revision = "b47dc4c19f215e98da687b15b4c64e70f629bea5" source = "https://github.com/containous/mesos-dns.git" @@ -853,18 +629,12 @@ [[projects]] name = "github.com/opencontainers/image-spec" - packages = [ - "specs-go", - "specs-go/v1" - ] + packages = ["specs-go","specs-go/v1"] revision = "f03dbe35d449c54915d235f1a3cf8f585a24babe" [[projects]] name = "github.com/opencontainers/runc" - packages = [ - "libcontainer/system", - "libcontainer/user" - ] + packages = ["libcontainer/system","libcontainer/user"] revision = "b6b70e53451794e8333e9b602cc096b47a20bd0f" [[projects]] @@ -889,10 +659,7 @@ [[projects]] name = "github.com/prometheus/client_golang" - packages = [ - "prometheus", - "prometheus/promhttp" - ] + packages = ["prometheus","prometheus/promhttp"] revision = "08fd2e12372a66e68e30523c7642e0cbc3e4fbde" [[projects]] @@ -902,19 +669,12 @@ [[projects]] name = "github.com/prometheus/common" - packages = [ - "expfmt", - "internal/bitbucket.org/ww/goautoneg", - "model" - ] + packages = ["expfmt","internal/bitbucket.org/ww/goautoneg","model"] revision = "49fee292b27bfff7f354ee0f64e1bc4850462edf" [[projects]] name = "github.com/prometheus/procfs" - packages = [ - ".", - "xfs" - ] + packages = [".","xfs"] revision = "a1dba9ce8baed984a2495b658c82687f8157b98f" [[projects]] @@ -957,11 +717,7 @@ [[projects]] name = "github.com/stretchr/testify" - packages = [ - "assert", - "mock", - "require" - ] + packages = ["assert","mock","require"] revision = "4d4bfba8f1d1027c4fdbe371823030df51419987" [[projects]] @@ -978,10 +734,7 @@ [[projects]] branch = "master" name = "github.com/timewasted/linode" - packages = [ - ".", - "dns" - ] + packages = [".","dns"] revision = "37e84520dcf74488f67654f9c775b9752c232dc1" [[projects]] @@ -1018,16 +771,8 @@ [[projects]] branch = "containous-fork" name = "github.com/vulcand/oxy" - packages = [ - "cbreaker", - "connlimit", - "forward", - "memmetrics", - "ratelimit", - "roundrobin", - "utils" - ] - revision = "fd6f71c694e2ab8b584c50b98ab4825027feb315" + packages = ["cbreaker","connlimit","forward","memmetrics","ratelimit","roundrobin","utils"] + revision = "7e69a72707cbd367525e3c626be40c4a39454bb2" source = "https://github.com/containous/oxy.git" [[projects]] @@ -1042,12 +787,7 @@ [[projects]] name = "github.com/vulcand/vulcand" - packages = [ - "conntracker", - "plugin", - "plugin/rewrite", - "router" - ] + packages = ["conntracker","plugin","plugin/rewrite","router"] revision = "42492a3a85e294bdbdd1bcabb8c12769a81ea284" [[projects]] @@ -1069,101 +809,33 @@ [[projects]] name = "github.com/xenolf/lego" - packages = [ - "acme", - "providers/dns", - "providers/dns/auroradns", - "providers/dns/azure", - "providers/dns/cloudflare", - "providers/dns/digitalocean", - "providers/dns/dnsimple", - "providers/dns/dnsmadeeasy", - "providers/dns/dnspod", - "providers/dns/dyn", - "providers/dns/exoscale", - "providers/dns/gandi", - "providers/dns/googlecloud", - "providers/dns/linode", - "providers/dns/namecheap", - "providers/dns/ns1", - "providers/dns/otc", - "providers/dns/ovh", - "providers/dns/pdns", - "providers/dns/rackspace", - "providers/dns/rfc2136", - "providers/dns/route53", - "providers/dns/vultr" - ] + packages = ["acme","providers/dns","providers/dns/auroradns","providers/dns/azure","providers/dns/cloudflare","providers/dns/digitalocean","providers/dns/dnsimple","providers/dns/dnsmadeeasy","providers/dns/dnspod","providers/dns/dyn","providers/dns/exoscale","providers/dns/gandi","providers/dns/googlecloud","providers/dns/linode","providers/dns/namecheap","providers/dns/ns1","providers/dns/otc","providers/dns/ovh","providers/dns/pdns","providers/dns/rackspace","providers/dns/rfc2136","providers/dns/route53","providers/dns/vultr"] revision = "67c86d860a797ce2483f50d9174d4ed24984bef2" version = "v0.4.1" [[projects]] name = "golang.org/x/crypto" - packages = [ - "bcrypt", - "blowfish", - "ocsp", - "pbkdf2", - "scrypt" - ] + packages = ["bcrypt","blowfish","ocsp","pbkdf2","scrypt"] revision = "4ed45ec682102c643324fae5dff8dab085b6c300" [[projects]] name = "golang.org/x/net" - packages = [ - "context", - "context/ctxhttp", - "http2", - "http2/hpack", - "idna", - "internal/timeseries", - "lex/httplex", - "proxy", - "publicsuffix", - "trace", - "websocket" - ] + packages = ["context","context/ctxhttp","http2","http2/hpack","idna","internal/timeseries","lex/httplex","proxy","publicsuffix","trace","websocket"] revision = "c8c74377599bd978aee1cf3b9b63a8634051cec2" [[projects]] name = "golang.org/x/oauth2" - packages = [ - ".", - "google", - "internal", - "jws", - "jwt" - ] + packages = [".","google","internal","jws","jwt"] revision = "7fdf09982454086d5570c7db3e11f360194830ca" [[projects]] name = "golang.org/x/sys" - packages = [ - "unix", - "windows" - ] + packages = ["unix","windows"] revision = "8f0908ab3b2457e2e15403d3697c9ef5cb4b57a9" [[projects]] name = "golang.org/x/text" - packages = [ - "cases", - "internal", - "internal/gen", - "internal/tag", - "internal/triegen", - "internal/ucd", - "language", - "runes", - "secure/bidirule", - "secure/precis", - "transform", - "unicode/bidi", - "unicode/cldr", - "unicode/norm", - "unicode/rangetable", - "width" - ] + packages = ["cases","internal","internal/gen","internal/tag","internal/triegen","internal/ucd","language","runes","secure/bidirule","secure/precis","transform","unicode/bidi","unicode/cldr","unicode/norm","unicode/rangetable","width"] revision = "4ee4af566555f5fbe026368b75596286a312663a" [[projects]] @@ -1173,28 +845,12 @@ [[projects]] name = "google.golang.org/api" - packages = [ - "dns/v1", - "gensupport", - "googleapi", - "googleapi/internal/uritemplates" - ] + packages = ["dns/v1","gensupport","googleapi","googleapi/internal/uritemplates"] revision = "1575df15c1bb8b18ad4d9bc5ca495cc85b0764fe" [[projects]] name = "google.golang.org/appengine" - packages = [ - ".", - "internal", - "internal/app_identity", - "internal/base", - "internal/datastore", - "internal/log", - "internal/modules", - "internal/remote_api", - "internal/urlfetch", - "urlfetch" - ] + packages = [".","internal","internal/app_identity","internal/base","internal/datastore","internal/log","internal/modules","internal/remote_api","internal/urlfetch","urlfetch"] revision = "4f7eeb5305a4ba1966344836ba4af9996b7b4e05" [[projects]] @@ -1204,23 +860,7 @@ [[projects]] name = "google.golang.org/grpc" - packages = [ - ".", - "codes", - "connectivity", - "credentials", - "grpclb/grpc_lb_v1", - "grpclog", - "internal", - "keepalive", - "metadata", - "naming", - "peer", - "stats", - "status", - "tap", - "transport" - ] + packages = [".","codes","connectivity","credentials","grpclb/grpc_lb_v1","grpclog","internal","keepalive","metadata","naming","peer","stats","status","tap","transport"] revision = "b3ddf786825de56a4178401b7e174ee332173b66" version = "v1.5.2" @@ -1244,23 +884,12 @@ [[projects]] name = "gopkg.in/ns1/ns1-go.v2" - packages = [ - "rest", - "rest/model/account", - "rest/model/data", - "rest/model/dns", - "rest/model/filter", - "rest/model/monitor" - ] + packages = ["rest","rest/model/account","rest/model/data","rest/model/dns","rest/model/filter","rest/model/monitor"] revision = "c563826f4cbef9c11bebeb9f20a3f7afe9c1e2f4" [[projects]] name = "gopkg.in/square/go-jose.v1" - packages = [ - ".", - "cipher", - "json" - ] + packages = [".","cipher","json"] revision = "aa2e30fdd1fe9dd3394119af66451ae790d50e0d" version = "v1.1.0" @@ -1271,121 +900,13 @@ [[projects]] name = "k8s.io/client-go" - packages = [ - "discovery", - "kubernetes", - "kubernetes/typed/apps/v1beta1", - "kubernetes/typed/authentication/v1beta1", - "kubernetes/typed/authorization/v1beta1", - "kubernetes/typed/autoscaling/v1", - "kubernetes/typed/batch/v1", - "kubernetes/typed/batch/v2alpha1", - "kubernetes/typed/certificates/v1alpha1", - "kubernetes/typed/core/v1", - "kubernetes/typed/extensions/v1beta1", - "kubernetes/typed/policy/v1beta1", - "kubernetes/typed/rbac/v1alpha1", - "kubernetes/typed/storage/v1beta1", - "pkg/api", - "pkg/api/errors", - "pkg/api/install", - "pkg/api/meta", - "pkg/api/meta/metatypes", - "pkg/api/resource", - "pkg/api/unversioned", - "pkg/api/v1", - "pkg/api/validation/path", - "pkg/apimachinery", - "pkg/apimachinery/announced", - "pkg/apimachinery/registered", - "pkg/apis/apps", - "pkg/apis/apps/install", - "pkg/apis/apps/v1beta1", - "pkg/apis/authentication", - "pkg/apis/authentication/install", - "pkg/apis/authentication/v1beta1", - "pkg/apis/authorization", - "pkg/apis/authorization/install", - "pkg/apis/authorization/v1beta1", - "pkg/apis/autoscaling", - "pkg/apis/autoscaling/install", - "pkg/apis/autoscaling/v1", - "pkg/apis/batch", - "pkg/apis/batch/install", - "pkg/apis/batch/v1", - "pkg/apis/batch/v2alpha1", - "pkg/apis/certificates", - "pkg/apis/certificates/install", - "pkg/apis/certificates/v1alpha1", - "pkg/apis/extensions", - "pkg/apis/extensions/install", - "pkg/apis/extensions/v1beta1", - "pkg/apis/policy", - "pkg/apis/policy/install", - "pkg/apis/policy/v1beta1", - "pkg/apis/rbac", - "pkg/apis/rbac/install", - "pkg/apis/rbac/v1alpha1", - "pkg/apis/storage", - "pkg/apis/storage/install", - "pkg/apis/storage/v1beta1", - "pkg/auth/user", - "pkg/conversion", - "pkg/conversion/queryparams", - "pkg/fields", - "pkg/genericapiserver/openapi/common", - "pkg/labels", - "pkg/runtime", - "pkg/runtime/serializer", - "pkg/runtime/serializer/json", - "pkg/runtime/serializer/protobuf", - "pkg/runtime/serializer/recognizer", - "pkg/runtime/serializer/streaming", - "pkg/runtime/serializer/versioning", - "pkg/selection", - "pkg/third_party/forked/golang/reflect", - "pkg/third_party/forked/golang/template", - "pkg/types", - "pkg/util", - "pkg/util/cert", - "pkg/util/clock", - "pkg/util/diff", - "pkg/util/errors", - "pkg/util/flowcontrol", - "pkg/util/framer", - "pkg/util/integer", - "pkg/util/intstr", - "pkg/util/json", - "pkg/util/jsonpath", - "pkg/util/labels", - "pkg/util/net", - "pkg/util/parsers", - "pkg/util/rand", - "pkg/util/runtime", - "pkg/util/sets", - "pkg/util/uuid", - "pkg/util/validation", - "pkg/util/validation/field", - "pkg/util/wait", - "pkg/util/yaml", - "pkg/version", - "pkg/watch", - "pkg/watch/versioned", - "plugin/pkg/client/auth", - "plugin/pkg/client/auth/gcp", - "plugin/pkg/client/auth/oidc", - "rest", - "tools/cache", - "tools/clientcmd/api", - "tools/metrics", - "transport" - ] + packages = ["discovery","kubernetes","kubernetes/typed/apps/v1beta1","kubernetes/typed/authentication/v1beta1","kubernetes/typed/authorization/v1beta1","kubernetes/typed/autoscaling/v1","kubernetes/typed/batch/v1","kubernetes/typed/batch/v2alpha1","kubernetes/typed/certificates/v1alpha1","kubernetes/typed/core/v1","kubernetes/typed/extensions/v1beta1","kubernetes/typed/policy/v1beta1","kubernetes/typed/rbac/v1alpha1","kubernetes/typed/storage/v1beta1","pkg/api","pkg/api/errors","pkg/api/install","pkg/api/meta","pkg/api/meta/metatypes","pkg/api/resource","pkg/api/unversioned","pkg/api/v1","pkg/api/validation/path","pkg/apimachinery","pkg/apimachinery/announced","pkg/apimachinery/registered","pkg/apis/apps","pkg/apis/apps/install","pkg/apis/apps/v1beta1","pkg/apis/authentication","pkg/apis/authentication/install","pkg/apis/authentication/v1beta1","pkg/apis/authorization","pkg/apis/authorization/install","pkg/apis/authorization/v1beta1","pkg/apis/autoscaling","pkg/apis/autoscaling/install","pkg/apis/autoscaling/v1","pkg/apis/batch","pkg/apis/batch/install","pkg/apis/batch/v1","pkg/apis/batch/v2alpha1","pkg/apis/certificates","pkg/apis/certificates/install","pkg/apis/certificates/v1alpha1","pkg/apis/extensions","pkg/apis/extensions/install","pkg/apis/extensions/v1beta1","pkg/apis/policy","pkg/apis/policy/install","pkg/apis/policy/v1beta1","pkg/apis/rbac","pkg/apis/rbac/install","pkg/apis/rbac/v1alpha1","pkg/apis/storage","pkg/apis/storage/install","pkg/apis/storage/v1beta1","pkg/auth/user","pkg/conversion","pkg/conversion/queryparams","pkg/fields","pkg/genericapiserver/openapi/common","pkg/labels","pkg/runtime","pkg/runtime/serializer","pkg/runtime/serializer/json","pkg/runtime/serializer/protobuf","pkg/runtime/serializer/recognizer","pkg/runtime/serializer/streaming","pkg/runtime/serializer/versioning","pkg/selection","pkg/third_party/forked/golang/reflect","pkg/third_party/forked/golang/template","pkg/types","pkg/util","pkg/util/cert","pkg/util/clock","pkg/util/diff","pkg/util/errors","pkg/util/flowcontrol","pkg/util/framer","pkg/util/integer","pkg/util/intstr","pkg/util/json","pkg/util/jsonpath","pkg/util/labels","pkg/util/net","pkg/util/parsers","pkg/util/rand","pkg/util/runtime","pkg/util/sets","pkg/util/uuid","pkg/util/validation","pkg/util/validation/field","pkg/util/wait","pkg/util/yaml","pkg/version","pkg/watch","pkg/watch/versioned","plugin/pkg/client/auth","plugin/pkg/client/auth/gcp","plugin/pkg/client/auth/oidc","rest","tools/cache","tools/clientcmd/api","tools/metrics","transport"] revision = "e121606b0d09b2e1c467183ee46217fa85a6b672" version = "v2.0.0" [solve-meta] analyzer-name = "dep" analyzer-version = 1 - inputs-digest = "bd1e7a1b07d95ff85c675468bbfc4bc7a91c39cf1feceeb58dfcdba9592180a5" + inputs-digest = "691b593c653c992681b518be011637c40d978c9366f518ced19a442ab2acd6d7" solver-name = "gps-cdcl" solver-version = 1 diff --git a/vendor/github.com/vulcand/oxy/forward/fwd.go b/vendor/github.com/vulcand/oxy/forward/fwd.go index 68888b8b5..049034aad 100644 --- a/vendor/github.com/vulcand/oxy/forward/fwd.go +++ b/vendor/github.com/vulcand/oxy/forward/fwd.go @@ -438,16 +438,18 @@ func (f *httpForwarder) serveHTTP(w http.ResponseWriter, inReq *http.Request, ct } revproxy.ServeHTTP(pw, outReq) - if inReq.TLS != nil { - f.log.Infof("vulcand/oxy/forward/http: Round trip: %v, code: %v, Length: %v, duration: %v tls:version: %x, tls:resume:%t, tls:csuite:%x, tls:server:%v", - inReq.URL, pw.Code, pw.Length, time.Now().UTC().Sub(start), - inReq.TLS.Version, - inReq.TLS.DidResume, - inReq.TLS.CipherSuite, - inReq.TLS.ServerName) - } else { - f.log.Infof("vulcand/oxy/forward/http: Round trip: %v, code: %v, Length: %v, duration: %v", - inReq.URL, pw.Code, pw.Length, time.Now().UTC().Sub(start)) + if f.log.Level >= log.DebugLevel { + if inReq.TLS != nil { + f.log.Debugf("vulcand/oxy/forward/http: Round trip: %v, code: %v, Length: %v, duration: %v tls:version: %x, tls:resume:%t, tls:csuite:%x, tls:server:%v", + inReq.URL, pw.Code, pw.Length, time.Now().UTC().Sub(start), + inReq.TLS.Version, + inReq.TLS.DidResume, + inReq.TLS.CipherSuite, + inReq.TLS.ServerName) + } else { + f.log.Debugf("vulcand/oxy/forward/http: Round trip: %v, code: %v, Length: %v, duration: %v", + inReq.URL, pw.Code, pw.Length, time.Now().UTC().Sub(start)) + } } } From c867f48f114316c3cff674ea88dfe73d93eda640 Mon Sep 17 00:00:00 2001 From: Ludovic Fernandez Date: Wed, 7 Feb 2018 12:40:03 +0100 Subject: [PATCH 09/11] Change go-bindata --- CONTRIBUTING.md | 2 +- build.Dockerfile | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 0146fa0e7..fa15f85bc 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -64,7 +64,7 @@ Once your environment is set up and the Træfik repository cloned you can build cd ~/go/src/github.com/containous/traefik # Get go-bindata. Please note, the ellipses are required -go get github.com/jteeuwen/go-bindata/... +go get github.com/containous/go-bindata/... # Start build diff --git a/build.Dockerfile b/build.Dockerfile index 6d2e4e81e..006de77c1 100644 --- a/build.Dockerfile +++ b/build.Dockerfile @@ -4,7 +4,7 @@ RUN apk --update upgrade \ && apk --no-cache --no-progress add git mercurial bash gcc musl-dev curl tar \ && rm -rf /var/cache/apk/* -RUN go get github.com/jteeuwen/go-bindata/... \ +RUN go get github.com/containous/go-bindata/... \ && go get github.com/golang/lint/golint \ && go get github.com/kisielk/errcheck \ && go get github.com/client9/misspell/cmd/misspell From 85cfd87c4495a03fdc617a126bba2a491ffdd789 Mon Sep 17 00:00:00 2001 From: Sune Keller Date: Wed, 7 Feb 2018 13:00:04 +0100 Subject: [PATCH 10/11] Clarify how setting a frontend priority works --- docs/basics.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/basics.md b/docs/basics.md index fcfd36006..0e20bb66e 100644 --- a/docs/basics.md +++ b/docs/basics.md @@ -236,7 +236,7 @@ The following rules are both `Matchers` and `Modifiers`, so the `Matcher` portio By default, routes will be sorted (in descending order) using rules length (to avoid path overlap): `PathPrefix:/12345` will be matched before `PathPrefix:/1234` that will be matched before `PathPrefix:/1`. -You can customize priority by frontend: +You can customize priority by frontend. The priority value is added to the rule length during sorting: ```toml [frontends] @@ -254,7 +254,7 @@ You can customize priority by frontend: rule = "PathPrefix:/toto" ``` -Here, `frontend1` will be matched before `frontend2` (`10 > 5`). +Here, `frontend1` will be matched before `frontend2` (`(3 + 10 == 13) > (4 + 5 == 9)`). #### Custom headers From dbd173b4e45eb327d39402bdca43bafa3b941156 Mon Sep 17 00:00:00 2001 From: djeeg Date: Wed, 7 Feb 2018 12:42:04 +0000 Subject: [PATCH 11/11] Docs: regex+replacement hints for URL rewriting --- docs/configuration/entrypoints.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/docs/configuration/entrypoints.md b/docs/configuration/entrypoints.md index 28e5cc049..99d4f0028 100644 --- a/docs/configuration/entrypoints.md +++ b/docs/configuration/entrypoints.md @@ -150,7 +150,11 @@ To redirect an entrypoint rewriting the URL. ``` !!! note - Please note that `regex` and `replacement` do not have to be set in the `redirect` structure if an entrypoint is defined for the redirection (they will not be used in this case). + Please note that `regex` and `replacement` do not have to be set in the `redirect` structure if an `entrypoint` is defined for the redirection (they will not be used in this case). + +Care should be taken when defining replacement expand variables: `$1x` is equivalent to `${1x}`, not `${1}x` (see [Regexp.Expand](https://golang.org/pkg/regexp/#Regexp.Expand)), so use `${1}` syntax. + +Regular expressions and replacements can be tested using online tools such as [Go Playground](https://play.golang.org/p/mWU9p-wk2ru) or the [Regex101](https://regex101.com/r/58sIgx/2). ## TLS