From 423385bca0d3f207124d06f6a0e2909318cdc870 Mon Sep 17 00:00:00 2001 From: Fernandez Ludovic Date: Sat, 16 Dec 2017 12:42:32 +0100 Subject: [PATCH] feat(docker): add passTLSCert label. --- provider/docker/config.go | 2 ++ provider/docker/config_service.go | 16 ++++++++++++++++ provider/label/label.go | 1 + templates/docker.tmpl | 2 ++ 4 files changed, 21 insertions(+) diff --git a/provider/docker/config.go b/provider/docker/config.go index 0e91bbbc6..ef3ad3741 100644 --- a/provider/docker/config.go +++ b/provider/docker/config.go @@ -20,6 +20,7 @@ func (p *Provider) buildConfiguration(containersInspected []dockerData) *types.C "getDomain": getFuncStringLabel(label.TraefikDomain, p.Domain), "getProtocol": getFuncStringLabel(label.TraefikProtocol, label.DefaultProtocol), "getPassHostHeader": getFuncStringLabel(label.TraefikFrontendPassHostHeader, label.DefaultPassHostHeader), + "getPassTLSCert": getFuncBoolLabel(label.TraefikFrontendPassTLSCert, label.DefaultPassTLSCert), "getPriority": getFuncStringLabel(label.TraefikFrontendPriority, label.DefaultFrontendPriority), "getEntryPoints": getFuncSliceStringLabel(label.TraefikFrontendEntryPoints), "getBasicAuth": getFuncSliceStringLabel(label.TraefikFrontendAuthBasic), @@ -97,6 +98,7 @@ func (p *Provider) buildConfiguration(containersInspected []dockerData) *types.C "getServiceBasicAuth": getFuncServiceSliceStringLabel(label.SuffixFrontendAuthBasic), "getServiceFrontendRule": p.getServiceFrontendRule, "getServicePassHostHeader": getFuncServiceStringLabel(label.SuffixFrontendPassHostHeader, label.DefaultPassHostHeader), + "getServicePassTLSCert": getFuncServiceBoolLabel(label.SuffixFrontendPassTLSCert, label.DefaultPassTLSCert), "getServicePriority": getFuncServiceStringLabel(label.SuffixFrontendPriority, label.DefaultFrontendPriority), "hasServiceRedirect": hasServiceRedirect, "getServiceRedirectEntryPoint": getFuncServiceStringLabel(label.SuffixFrontendRedirectEntryPoint, label.DefaultFrontendRedirectEntryPoint), diff --git a/provider/docker/config_service.go b/provider/docker/config_service.go index caaee02c0..6f67d166e 100644 --- a/provider/docker/config_service.go +++ b/provider/docker/config_service.go @@ -116,6 +116,12 @@ func getFuncServiceStringLabel(labelSuffix string, defaultValue string) func(con } } +func getFuncServiceBoolLabel(labelSuffix string, defaultValue bool) func(container dockerData, serviceName string) bool { + return func(container dockerData, serviceName string) bool { + return getServiceBoolLabel(container, serviceName, labelSuffix, defaultValue) + } +} + func hasFuncServiceLabel(labelSuffix string) func(container dockerData, serviceName string) bool { return func(container dockerData, serviceName string) bool { return hasServiceLabel(container, serviceName, labelSuffix) @@ -152,6 +158,16 @@ func getServiceStringLabel(container dockerData, serviceName string, labelSuffix return label.GetStringValue(container.Labels, label.Prefix+labelSuffix, defaultValue) } +func getServiceBoolLabel(container dockerData, serviceName string, labelSuffix string, defaultValue bool) bool { + if rawValue, ok := getServiceLabels(container, serviceName)[labelSuffix]; ok { + value, err := strconv.ParseBool(rawValue) + if err == nil { + return value + } + } + return label.GetBoolValue(container.Labels, label.Prefix+labelSuffix, defaultValue) +} + func getServiceLabels(container dockerData, serviceName string) label.ServicePropertyValues { return label.ExtractServiceProperties(container.Labels)[serviceName] } diff --git a/provider/label/label.go b/provider/label/label.go index 8342260d0..bb608c1ec 100644 --- a/provider/label/label.go +++ b/provider/label/label.go @@ -20,6 +20,7 @@ const ( DefaultWeight = "0" DefaultProtocol = "http" DefaultPassHostHeader = "true" + DefaultPassTLSCert = false DefaultFrontendPriority = "0" DefaultCircuitBreakerExpression = "NetworkErrorRatio() > 1" DefaultFrontendRedirectEntryPoint = "" diff --git a/templates/docker.tmpl b/templates/docker.tmpl index 1457cae9d..cf465bc99 100644 --- a/templates/docker.tmpl +++ b/templates/docker.tmpl @@ -53,6 +53,7 @@ backend = "backend-{{getServiceBackend $container $serviceName}}" priority = {{getServicePriority $container $serviceName}} passHostHeader = {{getServicePassHostHeader $container $serviceName}} + passTLSCert = {{getServicePassTLSCert $container $serviceName}} entryPoints = [{{range getServiceEntryPoints $container $serviceName}} "{{.}}", @@ -100,6 +101,7 @@ backend = "backend-{{getBackend $container}}" priority = {{getPriority $container}} passHostHeader = {{getPassHostHeader $container}} + passTLSCert = {{getPassTLSCert $container}} entryPoints = [{{range getEntryPoints $container}} "{{.}}",