diff --git a/CHANGELOG.md b/CHANGELOG.md index 5741a5a2a..899357a0d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,13 @@ # Change Log +## [v1.4.6](https://github.com/containous/traefik/tree/v1.4.6) (2018-01-02) +[All Commits](https://github.com/containous/traefik/compare/v1.4.5...v1.4.6) + +**Bug fixes:** +- **[docker]** Normalize serviceName added to the service backend names ([#2631](https://github.com/containous/traefik/pull/2631) by [mmatur](https://github.com/mmatur)) +- **[websocket]** Use gorilla readMessage and writeMessage instead of just an io.Copy ([#2640](https://github.com/containous/traefik/pull/2640) by [Juliens](https://github.com/Juliens)) +- Fix bug report command ([#2638](https://github.com/containous/traefik/pull/2638) by [ldez](https://github.com/ldez)) + ## [v1.5.0-rc3](https://github.com/containous/traefik/tree/v1.5.0-rc3) (2017-12-20) [All Commits](https://github.com/containous/traefik/compare/v1.5.0-rc2...v1.5.0-rc3) diff --git a/cmd/traefik/bug.go b/cmd/traefik/bug.go index 27d99d389..2c7551853 100644 --- a/cmd/traefik/bug.go +++ b/cmd/traefik/bug.go @@ -84,7 +84,7 @@ Add more configuration information here. ) // newBugCmd builds a new Bug command -func newBugCmd(traefikConfiguration interface{}, traefikPointersConfiguration interface{}) *flaeg.Command { +func newBugCmd(traefikConfiguration *TraefikConfiguration, traefikPointersConfiguration *TraefikConfiguration) *flaeg.Command { //version Command init return &flaeg.Command{ @@ -99,7 +99,7 @@ func newBugCmd(traefikConfiguration interface{}, traefikPointersConfiguration in } } -func runBugCmd(traefikConfiguration interface{}) func() error { +func runBugCmd(traefikConfiguration *TraefikConfiguration) func() error { return func() error { body, err := createBugReport(traefikConfiguration) @@ -113,7 +113,7 @@ func runBugCmd(traefikConfiguration interface{}) func() error { } } -func createBugReport(traefikConfiguration interface{}) (string, error) { +func createBugReport(traefikConfiguration *TraefikConfiguration) (string, error) { var version bytes.Buffer if err := getVersionPrint(&version); err != nil { return "", err @@ -124,7 +124,7 @@ func createBugReport(traefikConfiguration interface{}) (string, error) { return "", err } - config, err := anonymize.Do(&traefikConfiguration, true) + config, err := anonymize.Do(traefikConfiguration, true) if err != nil { return "", err } diff --git a/cmd/traefik/bug_test.go b/cmd/traefik/bug_test.go index 3158e8c99..ef81091f1 100644 --- a/cmd/traefik/bug_test.go +++ b/cmd/traefik/bug_test.go @@ -7,16 +7,27 @@ import ( "github.com/containous/traefik/configuration" "github.com/containous/traefik/provider/file" "github.com/containous/traefik/tls" + "github.com/containous/traefik/types" "github.com/stretchr/testify/assert" ) func Test_createBugReport(t *testing.T) { - traefikConfiguration := TraefikConfiguration{ + traefikConfiguration := &TraefikConfiguration{ ConfigFile: "FOO", GlobalConfiguration: configuration.GlobalConfiguration{ EntryPoints: configuration.EntryPoints{ "goo": &configuration.EntryPoint{ Address: "hoo.bar", + Auth: &types.Auth{ + Basic: &types.Basic{ + UsersFile: "foo Basic UsersFile", + Users: types.Users{"foo Basic Users 1", "foo Basic Users 2", "foo Basic Users 3"}, + }, + Digest: &types.Digest{ + UsersFile: "foo Digest UsersFile", + Users: types.Users{"foo Digest Users 1", "foo Digest Users 2", "foo Digest Users 3"}, + }, + }, }, }, File: &file.Provider{ @@ -28,6 +39,11 @@ func Test_createBugReport(t *testing.T) { report, err := createBugReport(traefikConfiguration) assert.NoError(t, err, report) + + // exported anonymous configuration + assert.NotContains(t, "web Basic Users ", report) + assert.NotContains(t, "foo Digest Users ", report) + assert.NotContains(t, "hoo.bar", report) } func Test_anonymize_traefikConfiguration(t *testing.T) { diff --git a/provider/consul/consul_catalog_test.go b/provider/consul/consul_catalog_test.go index ce86cf74e..766202047 100644 --- a/provider/consul/consul_catalog_test.go +++ b/provider/consul/consul_catalog_test.go @@ -12,14 +12,6 @@ import ( ) func TestConsulCatalogGetFrontendRule(t *testing.T) { - provider := &CatalogProvider{ - Domain: "localhost", - Prefix: "traefik", - FrontEndRule: "Host:{{.ServiceName}}.{{.Domain}}", - frontEndRuleTemplate: template.New("consul catalog frontend rule"), - } - provider.setupFrontEndTemplate() - testCases := []struct { desc string service serviceUpdate @@ -71,6 +63,14 @@ func TestConsulCatalogGetFrontendRule(t *testing.T) { t.Run(test.desc, func(t *testing.T) { t.Parallel() + provider := &CatalogProvider{ + Domain: "localhost", + Prefix: "traefik", + FrontEndRule: "Host:{{.ServiceName}}.{{.Domain}}", + frontEndRuleTemplate: template.New("consul catalog frontend rule"), + } + provider.setupFrontEndTemplate() + actual := provider.getFrontendRule(test.service) assert.Equal(t, test.expected, actual) }) diff --git a/provider/docker/docker.go b/provider/docker/docker.go index bee27d225..3e2875c56 100644 --- a/provider/docker/docker.go +++ b/provider/docker/docker.go @@ -418,9 +418,9 @@ func getServiceNames(container dockerData) []string { // Extract backend from labels for a given service and a given docker container func getServiceBackend(container dockerData, serviceName string) string { if value, ok := getContainerServiceLabel(container, serviceName, types.SuffixFrontendBackend); ok { - return container.ServiceName + "-" + value + return provider.Normalize(container.ServiceName + "-" + value) } - return strings.TrimPrefix(container.ServiceName, "/") + "-" + getBackend(container) + "-" + provider.Normalize(serviceName) + return provider.Normalize(container.ServiceName + "-" + getBackend(container) + "-" + serviceName) } // Extract rule from labels for a given service and a given docker container diff --git a/provider/docker/service_test.go b/provider/docker/service_test.go index 45657e594..d8216350d 100644 --- a/provider/docker/service_test.go +++ b/provider/docker/service_test.go @@ -94,12 +94,22 @@ func TestDockerGetServiceBackend(t *testing.T) { container: containerJSON(name("foo")), expected: "foo-foo-myservice", }, + { + container: containerJSON(name("foo.bar")), + expected: "foo-bar-foo-bar-myservice", + }, { container: containerJSON(labels(map[string]string{ types.LabelBackend: "another-backend", })), expected: "fake-another-backend-myservice", }, + { + container: containerJSON(labels(map[string]string{ + types.LabelBackend: "another.backend", + })), + expected: "fake-another-backend-myservice", + }, { container: containerJSON(labels(map[string]string{ "traefik.myservice.frontend.backend": "custom-backend",