1
0
Fork 0

Migrates the pass client tls cert middleware

This commit is contained in:
Jean-Baptiste Doumenjou 2019-01-09 11:28:04 +01:00 committed by Traefiker Bot
parent 0b436563bd
commit 7efafa5a2c
4 changed files with 671 additions and 471 deletions

View file

@ -13,92 +13,93 @@ import (
func TestDecode(t *testing.T) {
labels := map[string]string{
"traefik.middlewares.Middleware0.addprefix.prefix": "foobar",
"traefik.middlewares.Middleware1.basicauth.headerfield": "foobar",
"traefik.middlewares.Middleware1.basicauth.realm": "foobar",
"traefik.middlewares.Middleware1.basicauth.removeheader": "true",
"traefik.middlewares.Middleware1.basicauth.users": "foobar, fiibar",
"traefik.middlewares.Middleware1.basicauth.usersfile": "foobar",
"traefik.middlewares.Middleware2.buffering.maxrequestbodybytes": "42",
"traefik.middlewares.Middleware2.buffering.maxresponsebodybytes": "42",
"traefik.middlewares.Middleware2.buffering.memrequestbodybytes": "42",
"traefik.middlewares.Middleware2.buffering.memresponsebodybytes": "42",
"traefik.middlewares.Middleware2.buffering.retryexpression": "foobar",
"traefik.middlewares.Middleware3.chain.middlewares": "foobar, fiibar",
"traefik.middlewares.Middleware4.circuitbreaker.expression": "foobar",
"traefik.middlewares.Middleware5.digestauth.headerfield": "foobar",
"traefik.middlewares.Middleware5.digestauth.realm": "foobar",
"traefik.middlewares.Middleware5.digestauth.removeheader": "true",
"traefik.middlewares.Middleware5.digestauth.users": "foobar, fiibar",
"traefik.middlewares.Middleware5.digestauth.usersfile": "foobar",
"traefik.middlewares.Middleware6.errors.query": "foobar",
"traefik.middlewares.Middleware6.errors.service": "foobar",
"traefik.middlewares.Middleware6.errors.status": "foobar, fiibar",
"traefik.middlewares.Middleware7.forwardauth.address": "foobar",
"traefik.middlewares.Middleware7.forwardauth.authresponseheaders": "foobar, fiibar",
"traefik.middlewares.Middleware7.forwardauth.tls.ca": "foobar",
"traefik.middlewares.Middleware7.forwardauth.tls.caoptional": "true",
"traefik.middlewares.Middleware7.forwardauth.tls.cert": "foobar",
"traefik.middlewares.Middleware7.forwardauth.tls.insecureskipverify": "true",
"traefik.middlewares.Middleware7.forwardauth.tls.key": "foobar",
"traefik.middlewares.Middleware7.forwardauth.trustforwardheader": "true",
"traefik.middlewares.Middleware8.headers.allowedhosts": "foobar, fiibar",
"traefik.middlewares.Middleware8.headers.browserxssfilter": "true",
"traefik.middlewares.Middleware8.headers.contentsecuritypolicy": "foobar",
"traefik.middlewares.Middleware8.headers.contenttypenosniff": "true",
"traefik.middlewares.Middleware8.headers.custombrowserxssvalue": "foobar",
"traefik.middlewares.Middleware8.headers.customframeoptionsvalue": "foobar",
"traefik.middlewares.Middleware8.headers.customrequestheaders.name0": "foobar",
"traefik.middlewares.Middleware8.headers.customrequestheaders.name1": "foobar",
"traefik.middlewares.Middleware8.headers.customresponseheaders.name0": "foobar",
"traefik.middlewares.Middleware8.headers.customresponseheaders.name1": "foobar",
"traefik.middlewares.Middleware8.headers.forcestsheader": "true",
"traefik.middlewares.Middleware8.headers.framedeny": "true",
"traefik.middlewares.Middleware8.headers.hostsproxyheaders": "foobar, fiibar",
"traefik.middlewares.Middleware8.headers.isdevelopment": "true",
"traefik.middlewares.Middleware8.headers.publickey": "foobar",
"traefik.middlewares.Middleware8.headers.referrerpolicy": "foobar",
"traefik.middlewares.Middleware8.headers.sslforcehost": "true",
"traefik.middlewares.Middleware8.headers.sslhost": "foobar",
"traefik.middlewares.Middleware8.headers.sslproxyheaders.name0": "foobar",
"traefik.middlewares.Middleware8.headers.sslproxyheaders.name1": "foobar",
"traefik.middlewares.Middleware8.headers.sslredirect": "true",
"traefik.middlewares.Middleware8.headers.ssltemporaryredirect": "true",
"traefik.middlewares.Middleware8.headers.stsincludesubdomains": "true",
"traefik.middlewares.Middleware8.headers.stspreload": "true",
"traefik.middlewares.Middleware8.headers.stsseconds": "42",
"traefik.middlewares.Middleware9.ipwhitelist.ipstrategy.depth": "42",
"traefik.middlewares.Middleware9.ipwhitelist.ipstrategy.excludedips": "foobar, fiibar",
"traefik.middlewares.Middleware9.ipwhitelist.sourcerange": "foobar, fiibar",
"traefik.middlewares.Middleware10.maxconn.amount": "42",
"traefik.middlewares.Middleware10.maxconn.extractorfunc": "foobar",
"traefik.middlewares.Middleware11.passtlsclientcert.infos.notafter": "true",
"traefik.middlewares.Middleware11.passtlsclientcert.infos.notbefore": "true",
"traefik.middlewares.Middleware11.passtlsclientcert.infos.sans": "true",
"traefik.middlewares.Middleware11.passtlsclientcert.infos.subject.commonname": "true",
"traefik.middlewares.Middleware11.passtlsclientcert.infos.subject.country": "true",
"traefik.middlewares.Middleware11.passtlsclientcert.infos.subject.locality": "true",
"traefik.middlewares.Middleware11.passtlsclientcert.infos.subject.organization": "true",
"traefik.middlewares.Middleware11.passtlsclientcert.infos.subject.province": "true",
"traefik.middlewares.Middleware11.passtlsclientcert.infos.subject.serialnumber": "true",
"traefik.middlewares.Middleware11.passtlsclientcert.pem": "true",
"traefik.middlewares.Middleware12.ratelimit.extractorfunc": "foobar",
"traefik.middlewares.Middleware12.ratelimit.rateset.Rate0.average": "42",
"traefik.middlewares.Middleware12.ratelimit.rateset.Rate0.burst": "42",
"traefik.middlewares.Middleware12.ratelimit.rateset.Rate0.period": "42",
"traefik.middlewares.Middleware12.ratelimit.rateset.Rate1.average": "42",
"traefik.middlewares.Middleware12.ratelimit.rateset.Rate1.burst": "42",
"traefik.middlewares.Middleware12.ratelimit.rateset.Rate1.period": "42",
"traefik.middlewares.Middleware13.redirect.permanent": "true",
"traefik.middlewares.Middleware13.redirect.regex": "foobar",
"traefik.middlewares.Middleware13.redirect.replacement": "foobar",
"traefik.middlewares.Middleware14.replacepath.path": "foobar",
"traefik.middlewares.Middleware15.replacepathregex.regex": "foobar",
"traefik.middlewares.Middleware15.replacepathregex.replacement": "foobar",
"traefik.middlewares.Middleware16.retry.attempts": "42",
"traefik.middlewares.Middleware17.stripprefix.prefixes": "foobar, fiibar",
"traefik.middlewares.Middleware18.stripprefixregex.regex": "foobar, fiibar",
"traefik.middlewares.Middleware19.compress": "true",
"traefik.middlewares.Middleware0.addprefix.prefix": "foobar",
"traefik.middlewares.Middleware1.basicauth.headerfield": "foobar",
"traefik.middlewares.Middleware1.basicauth.realm": "foobar",
"traefik.middlewares.Middleware1.basicauth.removeheader": "true",
"traefik.middlewares.Middleware1.basicauth.users": "foobar, fiibar",
"traefik.middlewares.Middleware1.basicauth.usersfile": "foobar",
"traefik.middlewares.Middleware2.buffering.maxrequestbodybytes": "42",
"traefik.middlewares.Middleware2.buffering.maxresponsebodybytes": "42",
"traefik.middlewares.Middleware2.buffering.memrequestbodybytes": "42",
"traefik.middlewares.Middleware2.buffering.memresponsebodybytes": "42",
"traefik.middlewares.Middleware2.buffering.retryexpression": "foobar",
"traefik.middlewares.Middleware3.chain.middlewares": "foobar, fiibar",
"traefik.middlewares.Middleware4.circuitbreaker.expression": "foobar",
"traefik.middlewares.Middleware5.digestauth.headerfield": "foobar",
"traefik.middlewares.Middleware5.digestauth.realm": "foobar",
"traefik.middlewares.Middleware5.digestauth.removeheader": "true",
"traefik.middlewares.Middleware5.digestauth.users": "foobar, fiibar",
"traefik.middlewares.Middleware5.digestauth.usersfile": "foobar",
"traefik.middlewares.Middleware6.errors.query": "foobar",
"traefik.middlewares.Middleware6.errors.service": "foobar",
"traefik.middlewares.Middleware6.errors.status": "foobar, fiibar",
"traefik.middlewares.Middleware7.forwardauth.address": "foobar",
"traefik.middlewares.Middleware7.forwardauth.authresponseheaders": "foobar, fiibar",
"traefik.middlewares.Middleware7.forwardauth.tls.ca": "foobar",
"traefik.middlewares.Middleware7.forwardauth.tls.caoptional": "true",
"traefik.middlewares.Middleware7.forwardauth.tls.cert": "foobar",
"traefik.middlewares.Middleware7.forwardauth.tls.insecureskipverify": "true",
"traefik.middlewares.Middleware7.forwardauth.tls.key": "foobar",
"traefik.middlewares.Middleware7.forwardauth.trustforwardheader": "true",
"traefik.middlewares.Middleware8.headers.allowedhosts": "foobar, fiibar",
"traefik.middlewares.Middleware8.headers.browserxssfilter": "true",
"traefik.middlewares.Middleware8.headers.contentsecuritypolicy": "foobar",
"traefik.middlewares.Middleware8.headers.contenttypenosniff": "true",
"traefik.middlewares.Middleware8.headers.custombrowserxssvalue": "foobar",
"traefik.middlewares.Middleware8.headers.customframeoptionsvalue": "foobar",
"traefik.middlewares.Middleware8.headers.customrequestheaders.name0": "foobar",
"traefik.middlewares.Middleware8.headers.customrequestheaders.name1": "foobar",
"traefik.middlewares.Middleware8.headers.customresponseheaders.name0": "foobar",
"traefik.middlewares.Middleware8.headers.customresponseheaders.name1": "foobar",
"traefik.middlewares.Middleware8.headers.forcestsheader": "true",
"traefik.middlewares.Middleware8.headers.framedeny": "true",
"traefik.middlewares.Middleware8.headers.hostsproxyheaders": "foobar, fiibar",
"traefik.middlewares.Middleware8.headers.isdevelopment": "true",
"traefik.middlewares.Middleware8.headers.publickey": "foobar",
"traefik.middlewares.Middleware8.headers.referrerpolicy": "foobar",
"traefik.middlewares.Middleware8.headers.sslforcehost": "true",
"traefik.middlewares.Middleware8.headers.sslhost": "foobar",
"traefik.middlewares.Middleware8.headers.sslproxyheaders.name0": "foobar",
"traefik.middlewares.Middleware8.headers.sslproxyheaders.name1": "foobar",
"traefik.middlewares.Middleware8.headers.sslredirect": "true",
"traefik.middlewares.Middleware8.headers.ssltemporaryredirect": "true",
"traefik.middlewares.Middleware8.headers.stsincludesubdomains": "true",
"traefik.middlewares.Middleware8.headers.stspreload": "true",
"traefik.middlewares.Middleware8.headers.stsseconds": "42",
"traefik.middlewares.Middleware9.ipwhitelist.ipstrategy.depth": "42",
"traefik.middlewares.Middleware9.ipwhitelist.ipstrategy.excludedips": "foobar, fiibar",
"traefik.middlewares.Middleware9.ipwhitelist.sourcerange": "foobar, fiibar",
"traefik.middlewares.Middleware10.maxconn.amount": "42",
"traefik.middlewares.Middleware10.maxconn.extractorfunc": "foobar",
"traefik.middlewares.Middleware11.passtlsclientcert.info.notafter": "true",
"traefik.middlewares.Middleware11.passtlsclientcert.info.notbefore": "true",
"traefik.middlewares.Middleware11.passtlsclientcert.info.sans": "true",
"traefik.middlewares.Middleware11.passtlsclientcert.info.subject.commonname": "true",
"traefik.middlewares.Middleware11.passtlsclientcert.info.subject.country": "true",
"traefik.middlewares.Middleware11.passtlsclientcert.info.subject.domaincomponent": "true",
"traefik.middlewares.Middleware11.passtlsclientcert.info.subject.locality": "true",
"traefik.middlewares.Middleware11.passtlsclientcert.info.subject.organization": "true",
"traefik.middlewares.Middleware11.passtlsclientcert.info.subject.province": "true",
"traefik.middlewares.Middleware11.passtlsclientcert.info.subject.serialnumber": "true",
"traefik.middlewares.Middleware11.passtlsclientcert.pem": "true",
"traefik.middlewares.Middleware12.ratelimit.extractorfunc": "foobar",
"traefik.middlewares.Middleware12.ratelimit.rateset.Rate0.average": "42",
"traefik.middlewares.Middleware12.ratelimit.rateset.Rate0.burst": "42",
"traefik.middlewares.Middleware12.ratelimit.rateset.Rate0.period": "42",
"traefik.middlewares.Middleware12.ratelimit.rateset.Rate1.average": "42",
"traefik.middlewares.Middleware12.ratelimit.rateset.Rate1.burst": "42",
"traefik.middlewares.Middleware12.ratelimit.rateset.Rate1.period": "42",
"traefik.middlewares.Middleware13.redirect.permanent": "true",
"traefik.middlewares.Middleware13.redirect.regex": "foobar",
"traefik.middlewares.Middleware13.redirect.replacement": "foobar",
"traefik.middlewares.Middleware14.replacepath.path": "foobar",
"traefik.middlewares.Middleware15.replacepathregex.regex": "foobar",
"traefik.middlewares.Middleware15.replacepathregex.replacement": "foobar",
"traefik.middlewares.Middleware16.retry.attempts": "42",
"traefik.middlewares.Middleware17.stripprefix.prefixes": "foobar, fiibar",
"traefik.middlewares.Middleware18.stripprefixregex.regex": "foobar, fiibar",
"traefik.middlewares.Middleware19.compress": "true",
"traefik.routers.Router0.entrypoints": "foobar, fiibar",
"traefik.routers.Router0.middlewares": "foobar, fiibar",
@ -201,16 +202,17 @@ func TestDecode(t *testing.T) {
"Middleware11": {
PassTLSClientCert: &config.PassTLSClientCert{
PEM: true,
Infos: &config.TLSClientCertificateInfos{
Info: &config.TLSClientCertificateInfo{
NotAfter: true,
NotBefore: true,
Subject: &config.TLSCLientCertificateSubjectInfos{
Country: true,
Province: true,
Locality: true,
Organization: true,
CommonName: true,
SerialNumber: true,
Subject: &config.TLSCLientCertificateDNInfo{
Country: true,
Province: true,
Locality: true,
Organization: true,
CommonName: true,
SerialNumber: true,
DomainComponent: true,
},
Sans: true,
},
@ -514,16 +516,17 @@ func TestEncode(t *testing.T) {
"Middleware11": {
PassTLSClientCert: &config.PassTLSClientCert{
PEM: true,
Infos: &config.TLSClientCertificateInfos{
Info: &config.TLSClientCertificateInfo{
NotAfter: true,
NotBefore: true,
Subject: &config.TLSCLientCertificateSubjectInfos{
Country: true,
Province: true,
Locality: true,
Organization: true,
CommonName: true,
SerialNumber: true,
Subject: &config.TLSCLientCertificateDNInfo{
Country: true,
Province: true,
Locality: true,
Organization: true,
CommonName: true,
SerialNumber: true,
DomainComponent: true,
},
Sans: true,
},
@ -771,92 +774,93 @@ func TestEncode(t *testing.T) {
require.NoError(t, err)
expected := map[string]string{
"traefik.Middlewares.Middleware0.AddPrefix.Prefix": "foobar",
"traefik.Middlewares.Middleware1.BasicAuth.HeaderField": "foobar",
"traefik.Middlewares.Middleware1.BasicAuth.Realm": "foobar",
"traefik.Middlewares.Middleware1.BasicAuth.RemoveHeader": "true",
"traefik.Middlewares.Middleware1.BasicAuth.Users": "foobar, fiibar",
"traefik.Middlewares.Middleware1.BasicAuth.UsersFile": "foobar",
"traefik.Middlewares.Middleware2.Buffering.MaxRequestBodyBytes": "42",
"traefik.Middlewares.Middleware2.Buffering.MaxResponseBodyBytes": "42",
"traefik.Middlewares.Middleware2.Buffering.MemRequestBodyBytes": "42",
"traefik.Middlewares.Middleware2.Buffering.MemResponseBodyBytes": "42",
"traefik.Middlewares.Middleware2.Buffering.RetryExpression": "foobar",
"traefik.Middlewares.Middleware3.Chain.Middlewares": "foobar, fiibar",
"traefik.Middlewares.Middleware4.CircuitBreaker.Expression": "foobar",
"traefik.Middlewares.Middleware5.DigestAuth.HeaderField": "foobar",
"traefik.Middlewares.Middleware5.DigestAuth.Realm": "foobar",
"traefik.Middlewares.Middleware5.DigestAuth.RemoveHeader": "true",
"traefik.Middlewares.Middleware5.DigestAuth.Users": "foobar, fiibar",
"traefik.Middlewares.Middleware5.DigestAuth.UsersFile": "foobar",
"traefik.Middlewares.Middleware6.Errors.Query": "foobar",
"traefik.Middlewares.Middleware6.Errors.Service": "foobar",
"traefik.Middlewares.Middleware6.Errors.Status": "foobar, fiibar",
"traefik.Middlewares.Middleware7.ForwardAuth.Address": "foobar",
"traefik.Middlewares.Middleware7.ForwardAuth.AuthResponseHeaders": "foobar, fiibar",
"traefik.Middlewares.Middleware7.ForwardAuth.TLS.CA": "foobar",
"traefik.Middlewares.Middleware7.ForwardAuth.TLS.CAOptional": "true",
"traefik.Middlewares.Middleware7.ForwardAuth.TLS.Cert": "foobar",
"traefik.Middlewares.Middleware7.ForwardAuth.TLS.InsecureSkipVerify": "true",
"traefik.Middlewares.Middleware7.ForwardAuth.TLS.Key": "foobar",
"traefik.Middlewares.Middleware7.ForwardAuth.TrustForwardHeader": "true",
"traefik.Middlewares.Middleware8.Headers.AllowedHosts": "foobar, fiibar",
"traefik.Middlewares.Middleware8.Headers.BrowserXSSFilter": "true",
"traefik.Middlewares.Middleware8.Headers.ContentSecurityPolicy": "foobar",
"traefik.Middlewares.Middleware8.Headers.ContentTypeNosniff": "true",
"traefik.Middlewares.Middleware8.Headers.CustomBrowserXSSValue": "foobar",
"traefik.Middlewares.Middleware8.Headers.CustomFrameOptionsValue": "foobar",
"traefik.Middlewares.Middleware8.Headers.CustomRequestHeaders.name0": "foobar",
"traefik.Middlewares.Middleware8.Headers.CustomRequestHeaders.name1": "foobar",
"traefik.Middlewares.Middleware8.Headers.CustomResponseHeaders.name0": "foobar",
"traefik.Middlewares.Middleware8.Headers.CustomResponseHeaders.name1": "foobar",
"traefik.Middlewares.Middleware8.Headers.ForceSTSHeader": "true",
"traefik.Middlewares.Middleware8.Headers.FrameDeny": "true",
"traefik.Middlewares.Middleware8.Headers.HostsProxyHeaders": "foobar, fiibar",
"traefik.Middlewares.Middleware8.Headers.IsDevelopment": "true",
"traefik.Middlewares.Middleware8.Headers.PublicKey": "foobar",
"traefik.Middlewares.Middleware8.Headers.ReferrerPolicy": "foobar",
"traefik.Middlewares.Middleware8.Headers.SSLForceHost": "true",
"traefik.Middlewares.Middleware8.Headers.SSLHost": "foobar",
"traefik.Middlewares.Middleware8.Headers.SSLProxyHeaders.name0": "foobar",
"traefik.Middlewares.Middleware8.Headers.SSLProxyHeaders.name1": "foobar",
"traefik.Middlewares.Middleware8.Headers.SSLRedirect": "true",
"traefik.Middlewares.Middleware8.Headers.SSLTemporaryRedirect": "true",
"traefik.Middlewares.Middleware8.Headers.STSIncludeSubdomains": "true",
"traefik.Middlewares.Middleware8.Headers.STSPreload": "true",
"traefik.Middlewares.Middleware8.Headers.STSSeconds": "42",
"traefik.Middlewares.Middleware9.IPWhiteList.IPStrategy.Depth": "42",
"traefik.Middlewares.Middleware9.IPWhiteList.IPStrategy.ExcludedIPs": "foobar, fiibar",
"traefik.Middlewares.Middleware9.IPWhiteList.SourceRange": "foobar, fiibar",
"traefik.Middlewares.Middleware10.MaxConn.Amount": "42",
"traefik.Middlewares.Middleware10.MaxConn.ExtractorFunc": "foobar",
"traefik.Middlewares.Middleware11.PassTLSClientCert.Infos.NotAfter": "true",
"traefik.Middlewares.Middleware11.PassTLSClientCert.Infos.NotBefore": "true",
"traefik.Middlewares.Middleware11.PassTLSClientCert.Infos.Sans": "true",
"traefik.Middlewares.Middleware11.PassTLSClientCert.Infos.Subject.CommonName": "true",
"traefik.Middlewares.Middleware11.PassTLSClientCert.Infos.Subject.Country": "true",
"traefik.Middlewares.Middleware11.PassTLSClientCert.Infos.Subject.Locality": "true",
"traefik.Middlewares.Middleware11.PassTLSClientCert.Infos.Subject.Organization": "true",
"traefik.Middlewares.Middleware11.PassTLSClientCert.Infos.Subject.Province": "true",
"traefik.Middlewares.Middleware11.PassTLSClientCert.Infos.Subject.SerialNumber": "true",
"traefik.Middlewares.Middleware11.PassTLSClientCert.PEM": "true",
"traefik.Middlewares.Middleware12.RateLimit.ExtractorFunc": "foobar",
"traefik.Middlewares.Middleware12.RateLimit.RateSet.Rate0.Average": "42",
"traefik.Middlewares.Middleware12.RateLimit.RateSet.Rate0.Burst": "42",
"traefik.Middlewares.Middleware12.RateLimit.RateSet.Rate0.Period": "42",
"traefik.Middlewares.Middleware12.RateLimit.RateSet.Rate1.Average": "42",
"traefik.Middlewares.Middleware12.RateLimit.RateSet.Rate1.Burst": "42",
"traefik.Middlewares.Middleware12.RateLimit.RateSet.Rate1.Period": "42",
"traefik.Middlewares.Middleware13.Redirect.Permanent": "true",
"traefik.Middlewares.Middleware13.Redirect.Regex": "foobar",
"traefik.Middlewares.Middleware13.Redirect.Replacement": "foobar",
"traefik.Middlewares.Middleware14.ReplacePath.Path": "foobar",
"traefik.Middlewares.Middleware15.ReplacePathRegex.Regex": "foobar",
"traefik.Middlewares.Middleware15.ReplacePathRegex.Replacement": "foobar",
"traefik.Middlewares.Middleware16.Retry.Attempts": "42",
"traefik.Middlewares.Middleware17.StripPrefix.Prefixes": "foobar, fiibar",
"traefik.Middlewares.Middleware18.StripPrefixRegex.Regex": "foobar, fiibar",
"traefik.Middlewares.Middleware19.Compress": "true",
"traefik.Middlewares.Middleware0.AddPrefix.Prefix": "foobar",
"traefik.Middlewares.Middleware1.BasicAuth.HeaderField": "foobar",
"traefik.Middlewares.Middleware1.BasicAuth.Realm": "foobar",
"traefik.Middlewares.Middleware1.BasicAuth.RemoveHeader": "true",
"traefik.Middlewares.Middleware1.BasicAuth.Users": "foobar, fiibar",
"traefik.Middlewares.Middleware1.BasicAuth.UsersFile": "foobar",
"traefik.Middlewares.Middleware2.Buffering.MaxRequestBodyBytes": "42",
"traefik.Middlewares.Middleware2.Buffering.MaxResponseBodyBytes": "42",
"traefik.Middlewares.Middleware2.Buffering.MemRequestBodyBytes": "42",
"traefik.Middlewares.Middleware2.Buffering.MemResponseBodyBytes": "42",
"traefik.Middlewares.Middleware2.Buffering.RetryExpression": "foobar",
"traefik.Middlewares.Middleware3.Chain.Middlewares": "foobar, fiibar",
"traefik.Middlewares.Middleware4.CircuitBreaker.Expression": "foobar",
"traefik.Middlewares.Middleware5.DigestAuth.HeaderField": "foobar",
"traefik.Middlewares.Middleware5.DigestAuth.Realm": "foobar",
"traefik.Middlewares.Middleware5.DigestAuth.RemoveHeader": "true",
"traefik.Middlewares.Middleware5.DigestAuth.Users": "foobar, fiibar",
"traefik.Middlewares.Middleware5.DigestAuth.UsersFile": "foobar",
"traefik.Middlewares.Middleware6.Errors.Query": "foobar",
"traefik.Middlewares.Middleware6.Errors.Service": "foobar",
"traefik.Middlewares.Middleware6.Errors.Status": "foobar, fiibar",
"traefik.Middlewares.Middleware7.ForwardAuth.Address": "foobar",
"traefik.Middlewares.Middleware7.ForwardAuth.AuthResponseHeaders": "foobar, fiibar",
"traefik.Middlewares.Middleware7.ForwardAuth.TLS.CA": "foobar",
"traefik.Middlewares.Middleware7.ForwardAuth.TLS.CAOptional": "true",
"traefik.Middlewares.Middleware7.ForwardAuth.TLS.Cert": "foobar",
"traefik.Middlewares.Middleware7.ForwardAuth.TLS.InsecureSkipVerify": "true",
"traefik.Middlewares.Middleware7.ForwardAuth.TLS.Key": "foobar",
"traefik.Middlewares.Middleware7.ForwardAuth.TrustForwardHeader": "true",
"traefik.Middlewares.Middleware8.Headers.AllowedHosts": "foobar, fiibar",
"traefik.Middlewares.Middleware8.Headers.BrowserXSSFilter": "true",
"traefik.Middlewares.Middleware8.Headers.ContentSecurityPolicy": "foobar",
"traefik.Middlewares.Middleware8.Headers.ContentTypeNosniff": "true",
"traefik.Middlewares.Middleware8.Headers.CustomBrowserXSSValue": "foobar",
"traefik.Middlewares.Middleware8.Headers.CustomFrameOptionsValue": "foobar",
"traefik.Middlewares.Middleware8.Headers.CustomRequestHeaders.name0": "foobar",
"traefik.Middlewares.Middleware8.Headers.CustomRequestHeaders.name1": "foobar",
"traefik.Middlewares.Middleware8.Headers.CustomResponseHeaders.name0": "foobar",
"traefik.Middlewares.Middleware8.Headers.CustomResponseHeaders.name1": "foobar",
"traefik.Middlewares.Middleware8.Headers.ForceSTSHeader": "true",
"traefik.Middlewares.Middleware8.Headers.FrameDeny": "true",
"traefik.Middlewares.Middleware8.Headers.HostsProxyHeaders": "foobar, fiibar",
"traefik.Middlewares.Middleware8.Headers.IsDevelopment": "true",
"traefik.Middlewares.Middleware8.Headers.PublicKey": "foobar",
"traefik.Middlewares.Middleware8.Headers.ReferrerPolicy": "foobar",
"traefik.Middlewares.Middleware8.Headers.SSLForceHost": "true",
"traefik.Middlewares.Middleware8.Headers.SSLHost": "foobar",
"traefik.Middlewares.Middleware8.Headers.SSLProxyHeaders.name0": "foobar",
"traefik.Middlewares.Middleware8.Headers.SSLProxyHeaders.name1": "foobar",
"traefik.Middlewares.Middleware8.Headers.SSLRedirect": "true",
"traefik.Middlewares.Middleware8.Headers.SSLTemporaryRedirect": "true",
"traefik.Middlewares.Middleware8.Headers.STSIncludeSubdomains": "true",
"traefik.Middlewares.Middleware8.Headers.STSPreload": "true",
"traefik.Middlewares.Middleware8.Headers.STSSeconds": "42",
"traefik.Middlewares.Middleware9.IPWhiteList.IPStrategy.Depth": "42",
"traefik.Middlewares.Middleware9.IPWhiteList.IPStrategy.ExcludedIPs": "foobar, fiibar",
"traefik.Middlewares.Middleware9.IPWhiteList.SourceRange": "foobar, fiibar",
"traefik.Middlewares.Middleware10.MaxConn.Amount": "42",
"traefik.Middlewares.Middleware10.MaxConn.ExtractorFunc": "foobar",
"traefik.Middlewares.Middleware11.PassTLSClientCert.Info.NotAfter": "true",
"traefik.Middlewares.Middleware11.PassTLSClientCert.Info.NotBefore": "true",
"traefik.Middlewares.Middleware11.PassTLSClientCert.Info.Sans": "true",
"traefik.Middlewares.Middleware11.PassTLSClientCert.Info.Subject.CommonName": "true",
"traefik.Middlewares.Middleware11.PassTLSClientCert.Info.Subject.Country": "true",
"traefik.Middlewares.Middleware11.PassTLSClientCert.Info.Subject.DomainComponent": "true",
"traefik.Middlewares.Middleware11.PassTLSClientCert.Info.Subject.Locality": "true",
"traefik.Middlewares.Middleware11.PassTLSClientCert.Info.Subject.Organization": "true",
"traefik.Middlewares.Middleware11.PassTLSClientCert.Info.Subject.Province": "true",
"traefik.Middlewares.Middleware11.PassTLSClientCert.Info.Subject.SerialNumber": "true",
"traefik.Middlewares.Middleware11.PassTLSClientCert.PEM": "true",
"traefik.Middlewares.Middleware12.RateLimit.ExtractorFunc": "foobar",
"traefik.Middlewares.Middleware12.RateLimit.RateSet.Rate0.Average": "42",
"traefik.Middlewares.Middleware12.RateLimit.RateSet.Rate0.Burst": "42",
"traefik.Middlewares.Middleware12.RateLimit.RateSet.Rate0.Period": "42",
"traefik.Middlewares.Middleware12.RateLimit.RateSet.Rate1.Average": "42",
"traefik.Middlewares.Middleware12.RateLimit.RateSet.Rate1.Burst": "42",
"traefik.Middlewares.Middleware12.RateLimit.RateSet.Rate1.Period": "42",
"traefik.Middlewares.Middleware13.Redirect.Permanent": "true",
"traefik.Middlewares.Middleware13.Redirect.Regex": "foobar",
"traefik.Middlewares.Middleware13.Redirect.Replacement": "foobar",
"traefik.Middlewares.Middleware14.ReplacePath.Path": "foobar",
"traefik.Middlewares.Middleware15.ReplacePathRegex.Regex": "foobar",
"traefik.Middlewares.Middleware15.ReplacePathRegex.Replacement": "foobar",
"traefik.Middlewares.Middleware16.Retry.Attempts": "42",
"traefik.Middlewares.Middleware17.StripPrefix.Prefixes": "foobar, fiibar",
"traefik.Middlewares.Middleware18.StripPrefixRegex.Regex": "foobar, fiibar",
"traefik.Middlewares.Middleware19.Compress": "true",
"traefik.Routers.Router0.EntryPoints": "foobar, fiibar",
"traefik.Routers.Router0.Middlewares": "foobar, fiibar",