Enhance gendoc for Generating Static and Dynamic Reference Configuration Files

This commit is contained in:
Michael 2024-01-16 10:32:05 +01:00 committed by GitHub
parent 3a461d2f23
commit 34d2a816c2
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
12 changed files with 1061 additions and 736 deletions

View file

@ -1,129 +1,136 @@
- "traefik.http.middlewares.middleware00.addprefix.prefix=foobar" ## CODE GENERATED AUTOMATICALLY
- "traefik.http.middlewares.middleware01.basicauth.headerfield=foobar" ## THIS FILE MUST NOT BE EDITED BY HAND
- "traefik.http.middlewares.middleware01.basicauth.realm=foobar" - "traefik.http.middlewares.middleware01.addprefix.prefix=foobar"
- "traefik.http.middlewares.middleware01.basicauth.removeheader=true" - "traefik.http.middlewares.middleware02.basicauth.headerfield=foobar"
- "traefik.http.middlewares.middleware01.basicauth.users=foobar, foobar" - "traefik.http.middlewares.middleware02.basicauth.realm=foobar"
- "traefik.http.middlewares.middleware01.basicauth.usersfile=foobar" - "traefik.http.middlewares.middleware02.basicauth.removeheader=true"
- "traefik.http.middlewares.middleware02.buffering.maxrequestbodybytes=42" - "traefik.http.middlewares.middleware02.basicauth.users=foobar, foobar"
- "traefik.http.middlewares.middleware02.buffering.maxresponsebodybytes=42" - "traefik.http.middlewares.middleware02.basicauth.usersfile=foobar"
- "traefik.http.middlewares.middleware02.buffering.memrequestbodybytes=42" - "traefik.http.middlewares.middleware03.buffering.maxrequestbodybytes=42"
- "traefik.http.middlewares.middleware02.buffering.memresponsebodybytes=42" - "traefik.http.middlewares.middleware03.buffering.maxresponsebodybytes=42"
- "traefik.http.middlewares.middleware02.buffering.retryexpression=foobar" - "traefik.http.middlewares.middleware03.buffering.memrequestbodybytes=42"
- "traefik.http.middlewares.middleware03.chain.middlewares=foobar, foobar" - "traefik.http.middlewares.middleware03.buffering.memresponsebodybytes=42"
- "traefik.http.middlewares.middleware04.circuitbreaker.expression=foobar" - "traefik.http.middlewares.middleware03.buffering.retryexpression=foobar"
- "traefik.http.middlewares.middleware04.circuitbreaker.checkperiod=42s" - "traefik.http.middlewares.middleware04.chain.middlewares=foobar, foobar"
- "traefik.http.middlewares.middleware04.circuitbreaker.fallbackduration=42s" - "traefik.http.middlewares.middleware05.circuitbreaker.checkperiod=42s"
- "traefik.http.middlewares.middleware04.circuitbreaker.recoveryduration=42s" - "traefik.http.middlewares.middleware05.circuitbreaker.expression=foobar"
- "traefik.http.middlewares.middleware05.compress=true" - "traefik.http.middlewares.middleware05.circuitbreaker.fallbackduration=42s"
- "traefik.http.middlewares.middleware05.compress.excludedcontenttypes=foobar, foobar" - "traefik.http.middlewares.middleware05.circuitbreaker.recoveryduration=42s"
- "traefik.http.middlewares.middleware05.compress.minresponsebodybytes=42" - "traefik.http.middlewares.middleware06.compress=true"
- "traefik.http.middlewares.middleware06.contenttype.autodetect=true" - "traefik.http.middlewares.middleware06.compress.excludedcontenttypes=foobar, foobar"
- "traefik.http.middlewares.middleware07.digestauth.headerfield=foobar" - "traefik.http.middlewares.middleware06.compress.minresponsebodybytes=42"
- "traefik.http.middlewares.middleware07.digestauth.realm=foobar" - "traefik.http.middlewares.middleware07.contenttype.autodetect=true"
- "traefik.http.middlewares.middleware07.digestauth.removeheader=true" - "traefik.http.middlewares.middleware08.digestauth.headerfield=foobar"
- "traefik.http.middlewares.middleware07.digestauth.users=foobar, foobar" - "traefik.http.middlewares.middleware08.digestauth.realm=foobar"
- "traefik.http.middlewares.middleware07.digestauth.usersfile=foobar" - "traefik.http.middlewares.middleware08.digestauth.removeheader=true"
- "traefik.http.middlewares.middleware08.errors.query=foobar" - "traefik.http.middlewares.middleware08.digestauth.users=foobar, foobar"
- "traefik.http.middlewares.middleware08.errors.service=foobar" - "traefik.http.middlewares.middleware08.digestauth.usersfile=foobar"
- "traefik.http.middlewares.middleware08.errors.status=foobar, foobar" - "traefik.http.middlewares.middleware09.errors.query=foobar"
- "traefik.http.middlewares.middleware09.forwardauth.address=foobar" - "traefik.http.middlewares.middleware09.errors.service=foobar"
- "traefik.http.middlewares.middleware09.forwardauth.authresponseheaders=foobar, foobar" - "traefik.http.middlewares.middleware09.errors.status=foobar, foobar"
- "traefik.http.middlewares.middleware09.forwardauth.authresponseheadersregex=foobar" - "traefik.http.middlewares.middleware10.forwardauth.address=foobar"
- "traefik.http.middlewares.middleware09.forwardauth.authrequestheaders=foobar, foobar" - "traefik.http.middlewares.middleware10.forwardauth.authrequestheaders=foobar, foobar"
- "traefik.http.middlewares.middleware09.forwardauth.tls.ca=foobar" - "traefik.http.middlewares.middleware10.forwardauth.authresponseheaders=foobar, foobar"
- "traefik.http.middlewares.middleware09.forwardauth.tls.caoptional=true" - "traefik.http.middlewares.middleware10.forwardauth.authresponseheadersregex=foobar"
- "traefik.http.middlewares.middleware09.forwardauth.tls.cert=foobar" - "traefik.http.middlewares.middleware10.forwardauth.tls.ca=foobar"
- "traefik.http.middlewares.middleware09.forwardauth.tls.insecureskipverify=true" - "traefik.http.middlewares.middleware10.forwardauth.tls.caoptional=true"
- "traefik.http.middlewares.middleware09.forwardauth.tls.key=foobar" - "traefik.http.middlewares.middleware10.forwardauth.tls.cert=foobar"
- "traefik.http.middlewares.middleware09.forwardauth.trustforwardheader=true" - "traefik.http.middlewares.middleware10.forwardauth.tls.insecureskipverify=true"
- "traefik.http.middlewares.middleware10.headers.accesscontrolallowcredentials=true" - "traefik.http.middlewares.middleware10.forwardauth.tls.key=foobar"
- "traefik.http.middlewares.middleware10.headers.accesscontrolallowheaders=foobar, foobar" - "traefik.http.middlewares.middleware10.forwardauth.trustforwardheader=true"
- "traefik.http.middlewares.middleware10.headers.accesscontrolallowmethods=foobar, foobar" - "traefik.http.middlewares.middleware11.headers.accesscontrolallowcredentials=true"
- "traefik.http.middlewares.middleware10.headers.accesscontrolalloworiginlist=foobar, foobar" - "traefik.http.middlewares.middleware11.headers.accesscontrolallowheaders=foobar, foobar"
- "traefik.http.middlewares.middleware10.headers.accesscontrolalloworiginlistregex=foobar, foobar" - "traefik.http.middlewares.middleware11.headers.accesscontrolallowmethods=foobar, foobar"
- "traefik.http.middlewares.middleware10.headers.accesscontrolexposeheaders=foobar, foobar" - "traefik.http.middlewares.middleware11.headers.accesscontrolalloworiginlist=foobar, foobar"
- "traefik.http.middlewares.middleware10.headers.accesscontrolmaxage=42" - "traefik.http.middlewares.middleware11.headers.accesscontrolalloworiginlistregex=foobar, foobar"
- "traefik.http.middlewares.middleware10.headers.addvaryheader=true" - "traefik.http.middlewares.middleware11.headers.accesscontrolexposeheaders=foobar, foobar"
- "traefik.http.middlewares.middleware10.headers.allowedhosts=foobar, foobar" - "traefik.http.middlewares.middleware11.headers.accesscontrolmaxage=42"
- "traefik.http.middlewares.middleware10.headers.browserxssfilter=true" - "traefik.http.middlewares.middleware11.headers.addvaryheader=true"
- "traefik.http.middlewares.middleware10.headers.contentsecuritypolicy=foobar" - "traefik.http.middlewares.middleware11.headers.allowedhosts=foobar, foobar"
- "traefik.http.middlewares.middleware10.headers.contenttypenosniff=true" - "traefik.http.middlewares.middleware11.headers.browserxssfilter=true"
- "traefik.http.middlewares.middleware10.headers.custombrowserxssvalue=foobar" - "traefik.http.middlewares.middleware11.headers.contentsecuritypolicy=foobar"
- "traefik.http.middlewares.middleware10.headers.customframeoptionsvalue=foobar" - "traefik.http.middlewares.middleware11.headers.contenttypenosniff=true"
- "traefik.http.middlewares.middleware10.headers.customrequestheaders.name0=foobar" - "traefik.http.middlewares.middleware11.headers.custombrowserxssvalue=foobar"
- "traefik.http.middlewares.middleware10.headers.customrequestheaders.name1=foobar" - "traefik.http.middlewares.middleware11.headers.customframeoptionsvalue=foobar"
- "traefik.http.middlewares.middleware10.headers.customresponseheaders.name0=foobar" - "traefik.http.middlewares.middleware11.headers.customrequestheaders.name0=foobar"
- "traefik.http.middlewares.middleware10.headers.customresponseheaders.name1=foobar" - "traefik.http.middlewares.middleware11.headers.customrequestheaders.name1=foobar"
- "traefik.http.middlewares.middleware10.headers.featurepolicy=foobar" - "traefik.http.middlewares.middleware11.headers.customresponseheaders.name0=foobar"
- "traefik.http.middlewares.middleware10.headers.forcestsheader=true" - "traefik.http.middlewares.middleware11.headers.customresponseheaders.name1=foobar"
- "traefik.http.middlewares.middleware10.headers.framedeny=true" - "traefik.http.middlewares.middleware11.headers.featurepolicy=foobar"
- "traefik.http.middlewares.middleware10.headers.hostsproxyheaders=foobar, foobar" - "traefik.http.middlewares.middleware11.headers.forcestsheader=true"
- "traefik.http.middlewares.middleware10.headers.isdevelopment=true" - "traefik.http.middlewares.middleware11.headers.framedeny=true"
- "traefik.http.middlewares.middleware10.headers.permissionspolicy=foobar" - "traefik.http.middlewares.middleware11.headers.hostsproxyheaders=foobar, foobar"
- "traefik.http.middlewares.middleware10.headers.publickey=foobar" - "traefik.http.middlewares.middleware11.headers.isdevelopment=true"
- "traefik.http.middlewares.middleware10.headers.referrerpolicy=foobar" - "traefik.http.middlewares.middleware11.headers.permissionspolicy=foobar"
- "traefik.http.middlewares.middleware10.headers.sslforcehost=true" - "traefik.http.middlewares.middleware11.headers.publickey=foobar"
- "traefik.http.middlewares.middleware10.headers.sslhost=foobar" - "traefik.http.middlewares.middleware11.headers.referrerpolicy=foobar"
- "traefik.http.middlewares.middleware10.headers.sslproxyheaders.name0=foobar" - "traefik.http.middlewares.middleware11.headers.sslforcehost=true"
- "traefik.http.middlewares.middleware10.headers.sslproxyheaders.name1=foobar" - "traefik.http.middlewares.middleware11.headers.sslhost=foobar"
- "traefik.http.middlewares.middleware10.headers.sslredirect=true" - "traefik.http.middlewares.middleware11.headers.sslproxyheaders.name0=foobar"
- "traefik.http.middlewares.middleware10.headers.ssltemporaryredirect=true" - "traefik.http.middlewares.middleware11.headers.sslproxyheaders.name1=foobar"
- "traefik.http.middlewares.middleware10.headers.stsincludesubdomains=true" - "traefik.http.middlewares.middleware11.headers.sslredirect=true"
- "traefik.http.middlewares.middleware10.headers.stspreload=true" - "traefik.http.middlewares.middleware11.headers.ssltemporaryredirect=true"
- "traefik.http.middlewares.middleware10.headers.stsseconds=42" - "traefik.http.middlewares.middleware11.headers.stsincludesubdomains=true"
- "traefik.http.middlewares.middleware11.ipwhitelist.ipstrategy.depth=42" - "traefik.http.middlewares.middleware11.headers.stspreload=true"
- "traefik.http.middlewares.middleware11.ipwhitelist.ipstrategy.excludedips=foobar, foobar" - "traefik.http.middlewares.middleware11.headers.stsseconds=42"
- "traefik.http.middlewares.middleware11.ipwhitelist.sourcerange=foobar, foobar" - "traefik.http.middlewares.middleware12.ipallowlist.ipstrategy=true"
- "traefik.http.middlewares.middleware12.inflightreq.amount=42" - "traefik.http.middlewares.middleware12.ipallowlist.ipstrategy.depth=42"
- "traefik.http.middlewares.middleware12.inflightreq.sourcecriterion.ipstrategy.depth=42" - "traefik.http.middlewares.middleware12.ipallowlist.ipstrategy.excludedips=foobar, foobar"
- "traefik.http.middlewares.middleware12.inflightreq.sourcecriterion.ipstrategy.excludedips=foobar, foobar" - "traefik.http.middlewares.middleware12.ipallowlist.sourcerange=foobar, foobar"
- "traefik.http.middlewares.middleware12.inflightreq.sourcecriterion.requestheadername=foobar" - "traefik.http.middlewares.middleware13.ipwhitelist.ipstrategy=true"
- "traefik.http.middlewares.middleware12.inflightreq.sourcecriterion.requesthost=true" - "traefik.http.middlewares.middleware13.ipwhitelist.ipstrategy.depth=42"
- "traefik.http.middlewares.middleware13.passtlsclientcert.info.issuer.commonname=true" - "traefik.http.middlewares.middleware13.ipwhitelist.ipstrategy.excludedips=foobar, foobar"
- "traefik.http.middlewares.middleware13.passtlsclientcert.info.issuer.country=true" - "traefik.http.middlewares.middleware13.ipwhitelist.sourcerange=foobar, foobar"
- "traefik.http.middlewares.middleware13.passtlsclientcert.info.issuer.domaincomponent=true" - "traefik.http.middlewares.middleware14.inflightreq.amount=42"
- "traefik.http.middlewares.middleware13.passtlsclientcert.info.issuer.locality=true" - "traefik.http.middlewares.middleware14.inflightreq.sourcecriterion.ipstrategy.depth=42"
- "traefik.http.middlewares.middleware13.passtlsclientcert.info.issuer.organization=true" - "traefik.http.middlewares.middleware14.inflightreq.sourcecriterion.ipstrategy.excludedips=foobar, foobar"
- "traefik.http.middlewares.middleware13.passtlsclientcert.info.issuer.province=true" - "traefik.http.middlewares.middleware14.inflightreq.sourcecriterion.requestheadername=foobar"
- "traefik.http.middlewares.middleware13.passtlsclientcert.info.issuer.serialnumber=true" - "traefik.http.middlewares.middleware14.inflightreq.sourcecriterion.requesthost=true"
- "traefik.http.middlewares.middleware13.passtlsclientcert.info.notafter=true" - "traefik.http.middlewares.middleware15.passtlsclientcert.info.issuer.commonname=true"
- "traefik.http.middlewares.middleware13.passtlsclientcert.info.notbefore=true" - "traefik.http.middlewares.middleware15.passtlsclientcert.info.issuer.country=true"
- "traefik.http.middlewares.middleware13.passtlsclientcert.info.sans=true" - "traefik.http.middlewares.middleware15.passtlsclientcert.info.issuer.domaincomponent=true"
- "traefik.http.middlewares.middleware13.passtlsclientcert.info.serialnumber=true" - "traefik.http.middlewares.middleware15.passtlsclientcert.info.issuer.locality=true"
- "traefik.http.middlewares.middleware13.passtlsclientcert.info.subject.commonname=true" - "traefik.http.middlewares.middleware15.passtlsclientcert.info.issuer.organization=true"
- "traefik.http.middlewares.middleware13.passtlsclientcert.info.subject.country=true" - "traefik.http.middlewares.middleware15.passtlsclientcert.info.issuer.province=true"
- "traefik.http.middlewares.middleware13.passtlsclientcert.info.subject.domaincomponent=true" - "traefik.http.middlewares.middleware15.passtlsclientcert.info.issuer.serialnumber=true"
- "traefik.http.middlewares.middleware13.passtlsclientcert.info.subject.locality=true" - "traefik.http.middlewares.middleware15.passtlsclientcert.info.notafter=true"
- "traefik.http.middlewares.middleware13.passtlsclientcert.info.subject.organization=true" - "traefik.http.middlewares.middleware15.passtlsclientcert.info.notbefore=true"
- "traefik.http.middlewares.middleware13.passtlsclientcert.info.subject.organizationalunit=true" - "traefik.http.middlewares.middleware15.passtlsclientcert.info.sans=true"
- "traefik.http.middlewares.middleware13.passtlsclientcert.info.subject.province=true" - "traefik.http.middlewares.middleware15.passtlsclientcert.info.serialnumber=true"
- "traefik.http.middlewares.middleware13.passtlsclientcert.info.subject.serialnumber=true" - "traefik.http.middlewares.middleware15.passtlsclientcert.info.subject.commonname=true"
- "traefik.http.middlewares.middleware13.passtlsclientcert.pem=true" - "traefik.http.middlewares.middleware15.passtlsclientcert.info.subject.country=true"
- "traefik.http.middlewares.middleware14.plugin.foobar.foo=bar" - "traefik.http.middlewares.middleware15.passtlsclientcert.info.subject.domaincomponent=true"
- "traefik.http.middlewares.middleware15.ratelimit.average=42" - "traefik.http.middlewares.middleware15.passtlsclientcert.info.subject.locality=true"
- "traefik.http.middlewares.middleware15.ratelimit.burst=42" - "traefik.http.middlewares.middleware15.passtlsclientcert.info.subject.organization=true"
- "traefik.http.middlewares.middleware15.ratelimit.period=42" - "traefik.http.middlewares.middleware15.passtlsclientcert.info.subject.organizationalunit=true"
- "traefik.http.middlewares.middleware15.ratelimit.sourcecriterion.ipstrategy.depth=42" - "traefik.http.middlewares.middleware15.passtlsclientcert.info.subject.province=true"
- "traefik.http.middlewares.middleware15.ratelimit.sourcecriterion.ipstrategy.excludedips=foobar, foobar" - "traefik.http.middlewares.middleware15.passtlsclientcert.info.subject.serialnumber=true"
- "traefik.http.middlewares.middleware15.ratelimit.sourcecriterion.requestheadername=foobar" - "traefik.http.middlewares.middleware15.passtlsclientcert.pem=true"
- "traefik.http.middlewares.middleware15.ratelimit.sourcecriterion.requesthost=true" - "traefik.http.middlewares.middleware16.plugin.pluginconf0.name0=foobar"
- "traefik.http.middlewares.middleware16.redirectregex.permanent=true" - "traefik.http.middlewares.middleware16.plugin.pluginconf0.name1=foobar"
- "traefik.http.middlewares.middleware16.redirectregex.regex=foobar" - "traefik.http.middlewares.middleware16.plugin.pluginconf1.name0=foobar"
- "traefik.http.middlewares.middleware16.redirectregex.replacement=foobar" - "traefik.http.middlewares.middleware16.plugin.pluginconf1.name1=foobar"
- "traefik.http.middlewares.middleware17.redirectscheme.permanent=true" - "traefik.http.middlewares.middleware17.ratelimit.average=42"
- "traefik.http.middlewares.middleware17.redirectscheme.port=foobar" - "traefik.http.middlewares.middleware17.ratelimit.burst=42"
- "traefik.http.middlewares.middleware17.redirectscheme.scheme=foobar" - "traefik.http.middlewares.middleware17.ratelimit.period=42s"
- "traefik.http.middlewares.middleware18.replacepath.path=foobar" - "traefik.http.middlewares.middleware17.ratelimit.sourcecriterion.ipstrategy.depth=42"
- "traefik.http.middlewares.middleware19.replacepathregex.regex=foobar" - "traefik.http.middlewares.middleware17.ratelimit.sourcecriterion.ipstrategy.excludedips=foobar, foobar"
- "traefik.http.middlewares.middleware19.replacepathregex.replacement=foobar" - "traefik.http.middlewares.middleware17.ratelimit.sourcecriterion.requestheadername=foobar"
- "traefik.http.middlewares.middleware20.retry.attempts=42" - "traefik.http.middlewares.middleware17.ratelimit.sourcecriterion.requesthost=true"
- "traefik.http.middlewares.middleware20.retry.initialinterval=42" - "traefik.http.middlewares.middleware18.redirectregex.permanent=true"
- "traefik.http.middlewares.middleware21.stripprefix.forceslash=true" - "traefik.http.middlewares.middleware18.redirectregex.regex=foobar"
- "traefik.http.middlewares.middleware21.stripprefix.prefixes=foobar, foobar" - "traefik.http.middlewares.middleware18.redirectregex.replacement=foobar"
- "traefik.http.middlewares.middleware22.stripprefixregex.regex=foobar, foobar" - "traefik.http.middlewares.middleware19.redirectscheme.permanent=true"
- "traefik.http.middlewares.middleware23.ipallowlist.ipstrategy.depth=42" - "traefik.http.middlewares.middleware19.redirectscheme.port=foobar"
- "traefik.http.middlewares.middleware23.ipallowlist.ipstrategy.excludedips=foobar, foobar" - "traefik.http.middlewares.middleware19.redirectscheme.scheme=foobar"
- "traefik.http.middlewares.middleware23.ipallowlist.sourcerange=foobar, foobar" - "traefik.http.middlewares.middleware20.replacepath.path=foobar"
- "traefik.http.middlewares.middleware21.replacepathregex.regex=foobar"
- "traefik.http.middlewares.middleware21.replacepathregex.replacement=foobar"
- "traefik.http.middlewares.middleware22.retry.attempts=42"
- "traefik.http.middlewares.middleware22.retry.initialinterval=42s"
- "traefik.http.middlewares.middleware23.stripprefix.forceslash=true"
- "traefik.http.middlewares.middleware23.stripprefix.prefixes=foobar, foobar"
- "traefik.http.middlewares.middleware24.stripprefixregex.regex=foobar, foobar"
- "traefik.http.routers.router0.entrypoints=foobar, foobar" - "traefik.http.routers.router0.entrypoints=foobar, foobar"
- "traefik.http.routers.router0.middlewares=foobar, foobar" - "traefik.http.routers.router0.middlewares=foobar, foobar"
- "traefik.http.routers.router0.priority=42" - "traefik.http.routers.router0.priority=42"
@ -148,33 +155,34 @@
- "traefik.http.routers.router1.tls.domains[1].main=foobar" - "traefik.http.routers.router1.tls.domains[1].main=foobar"
- "traefik.http.routers.router1.tls.domains[1].sans=foobar, foobar" - "traefik.http.routers.router1.tls.domains[1].sans=foobar, foobar"
- "traefik.http.routers.router1.tls.options=foobar" - "traefik.http.routers.router1.tls.options=foobar"
- "traefik.http.services.service01.loadbalancer.healthcheck.followredirects=true" - "traefik.http.services.service02.loadbalancer.healthcheck.followredirects=true"
- "traefik.http.services.service01.loadbalancer.healthcheck.headers.name0=foobar" - "traefik.http.services.service02.loadbalancer.healthcheck.headers.name0=foobar"
- "traefik.http.services.service01.loadbalancer.healthcheck.headers.name1=foobar" - "traefik.http.services.service02.loadbalancer.healthcheck.headers.name1=foobar"
- "traefik.http.services.service01.loadbalancer.healthcheck.hostname=foobar" - "traefik.http.services.service02.loadbalancer.healthcheck.hostname=foobar"
- "traefik.http.services.service01.loadbalancer.healthcheck.interval=foobar" - "traefik.http.services.service02.loadbalancer.healthcheck.interval=foobar"
- "traefik.http.services.service01.loadbalancer.healthcheck.path=foobar" - "traefik.http.services.service02.loadbalancer.healthcheck.method=foobar"
- "traefik.http.services.service01.loadbalancer.healthcheck.method=foobar" - "traefik.http.services.service02.loadbalancer.healthcheck.path=foobar"
- "traefik.http.services.service01.loadbalancer.healthcheck.port=42" - "traefik.http.services.service02.loadbalancer.healthcheck.port=42"
- "traefik.http.services.service01.loadbalancer.healthcheck.scheme=foobar" - "traefik.http.services.service02.loadbalancer.healthcheck.scheme=foobar"
- "traefik.http.services.service01.loadbalancer.healthcheck.timeout=foobar" - "traefik.http.services.service02.loadbalancer.healthcheck.timeout=foobar"
- "traefik.http.services.service01.loadbalancer.passhostheader=true" - "traefik.http.services.service02.loadbalancer.passhostheader=true"
- "traefik.http.services.service01.loadbalancer.responseforwarding.flushinterval=foobar" - "traefik.http.services.service02.loadbalancer.responseforwarding.flushinterval=foobar"
- "traefik.http.services.service01.loadbalancer.serverstransport=foobar" - "traefik.http.services.service02.loadbalancer.serverstransport=foobar"
- "traefik.http.services.service01.loadbalancer.sticky.cookie=true" - "traefik.http.services.service02.loadbalancer.sticky=true"
- "traefik.http.services.service01.loadbalancer.sticky.cookie.httponly=true" - "traefik.http.services.service02.loadbalancer.sticky.cookie=true"
- "traefik.http.services.service01.loadbalancer.sticky.cookie.name=foobar" - "traefik.http.services.service02.loadbalancer.sticky.cookie.httponly=true"
- "traefik.http.services.service01.loadbalancer.sticky.cookie.samesite=foobar" - "traefik.http.services.service02.loadbalancer.sticky.cookie.name=foobar"
- "traefik.http.services.service01.loadbalancer.sticky.cookie.secure=true" - "traefik.http.services.service02.loadbalancer.sticky.cookie.samesite=foobar"
- "traefik.http.services.service01.loadbalancer.server.port=foobar" - "traefik.http.services.service02.loadbalancer.sticky.cookie.secure=true"
- "traefik.http.services.service01.loadbalancer.server.scheme=foobar" - "traefik.http.services.service02.loadbalancer.server.port=foobar"
- "traefik.tcp.middlewares.tcpmiddleware00.ipwhitelist.sourcerange=foobar, foobar" - "traefik.http.services.service02.loadbalancer.server.scheme=foobar"
- "traefik.tcp.middlewares.tcpmiddleware01.inflightconn.amount=42" - "traefik.tcp.middlewares.tcpmiddleware01.ipallowlist.sourcerange=foobar, foobar"
- "traefik.tcp.middlewares.tcpmiddleware02.ipallowlist.sourcerange=foobar, foobar" - "traefik.tcp.middlewares.tcpmiddleware02.ipwhitelist.sourcerange=foobar, foobar"
- "traefik.tcp.middlewares.tcpmiddleware03.inflightconn.amount=42"
- "traefik.tcp.routers.tcprouter0.entrypoints=foobar, foobar" - "traefik.tcp.routers.tcprouter0.entrypoints=foobar, foobar"
- "traefik.tcp.routers.tcprouter0.middlewares=foobar, foobar" - "traefik.tcp.routers.tcprouter0.middlewares=foobar, foobar"
- "traefik.tcp.routers.tcprouter0.rule=foobar"
- "traefik.tcp.routers.tcprouter0.priority=42" - "traefik.tcp.routers.tcprouter0.priority=42"
- "traefik.tcp.routers.tcprouter0.rule=foobar"
- "traefik.tcp.routers.tcprouter0.service=foobar" - "traefik.tcp.routers.tcprouter0.service=foobar"
- "traefik.tcp.routers.tcprouter0.tls=true" - "traefik.tcp.routers.tcprouter0.tls=true"
- "traefik.tcp.routers.tcprouter0.tls.certresolver=foobar" - "traefik.tcp.routers.tcprouter0.tls.certresolver=foobar"
@ -186,8 +194,8 @@
- "traefik.tcp.routers.tcprouter0.tls.passthrough=true" - "traefik.tcp.routers.tcprouter0.tls.passthrough=true"
- "traefik.tcp.routers.tcprouter1.entrypoints=foobar, foobar" - "traefik.tcp.routers.tcprouter1.entrypoints=foobar, foobar"
- "traefik.tcp.routers.tcprouter1.middlewares=foobar, foobar" - "traefik.tcp.routers.tcprouter1.middlewares=foobar, foobar"
- "traefik.tcp.routers.tcprouter1.rule=foobar"
- "traefik.tcp.routers.tcprouter1.priority=42" - "traefik.tcp.routers.tcprouter1.priority=42"
- "traefik.tcp.routers.tcprouter1.rule=foobar"
- "traefik.tcp.routers.tcprouter1.service=foobar" - "traefik.tcp.routers.tcprouter1.service=foobar"
- "traefik.tcp.routers.tcprouter1.tls=true" - "traefik.tcp.routers.tcprouter1.tls=true"
- "traefik.tcp.routers.tcprouter1.tls.certresolver=foobar" - "traefik.tcp.routers.tcprouter1.tls.certresolver=foobar"
@ -197,6 +205,7 @@
- "traefik.tcp.routers.tcprouter1.tls.domains[1].sans=foobar, foobar" - "traefik.tcp.routers.tcprouter1.tls.domains[1].sans=foobar, foobar"
- "traefik.tcp.routers.tcprouter1.tls.options=foobar" - "traefik.tcp.routers.tcprouter1.tls.options=foobar"
- "traefik.tcp.routers.tcprouter1.tls.passthrough=true" - "traefik.tcp.routers.tcprouter1.tls.passthrough=true"
- "traefik.tcp.services.tcpservice01.loadbalancer.proxyprotocol=true"
- "traefik.tcp.services.tcpservice01.loadbalancer.proxyprotocol.version=42" - "traefik.tcp.services.tcpservice01.loadbalancer.proxyprotocol.version=42"
- "traefik.tcp.services.tcpservice01.loadbalancer.terminationdelay=42" - "traefik.tcp.services.tcpservice01.loadbalancer.terminationdelay=42"
- "traefik.tcp.services.tcpservice01.loadbalancer.server.port=foobar" - "traefik.tcp.services.tcpservice01.loadbalancer.server.port=foobar"
@ -205,13 +214,3 @@
- "traefik.udp.routers.udprouter1.entrypoints=foobar, foobar" - "traefik.udp.routers.udprouter1.entrypoints=foobar, foobar"
- "traefik.udp.routers.udprouter1.service=foobar" - "traefik.udp.routers.udprouter1.service=foobar"
- "traefik.udp.services.udpservice01.loadbalancer.server.port=foobar" - "traefik.udp.services.udpservice01.loadbalancer.server.port=foobar"
- "traefik.tls.stores.Store0.defaultcertificate.certfile=foobar"
- "traefik.tls.stores.Store0.defaultcertificate.keyfile=foobar"
- "traefik.tls.stores.Store0.defaultgeneratedcert.domain.main=foobar"
- "traefik.tls.stores.Store0.defaultgeneratedcert.domain.sans=foobar, foobar"
- "traefik.tls.stores.Store0.defaultgeneratedcert.resolver=foobar"
- "traefik.tls.stores.Store1.defaultcertificate.certfile=foobar"
- "traefik.tls.stores.Store1.defaultcertificate.keyfile=foobar"
- "traefik.tls.stores.Store1.defaultgeneratedcert.domain.main=foobar"
- "traefik.tls.stores.Store1.defaultgeneratedcert.domain.sans=foobar, foobar"
- "traefik.tls.stores.Store1.defaultgeneratedcert.resolver=foobar"

View file

@ -1,3 +1,5 @@
## CODE GENERATED AUTOMATICALLY
## THIS FILE MUST NOT BE EDITED BY HAND
[http] [http]
[http.routers] [http.routers]
[http.routers.Router0] [http.routers.Router0]
@ -36,22 +38,27 @@
sans = ["foobar", "foobar"] sans = ["foobar", "foobar"]
[http.services] [http.services]
[http.services.Service01] [http.services.Service01]
[http.services.Service01.loadBalancer] [http.services.Service01.failover]
service = "foobar"
fallback = "foobar"
[http.services.Service01.failover.healthCheck]
[http.services.Service02]
[http.services.Service02.loadBalancer]
passHostHeader = true passHostHeader = true
serversTransport = "foobar" serversTransport = "foobar"
[http.services.Service01.loadBalancer.sticky] [http.services.Service02.loadBalancer.sticky]
[http.services.Service01.loadBalancer.sticky.cookie] [http.services.Service02.loadBalancer.sticky.cookie]
name = "foobar" name = "foobar"
secure = true secure = true
httpOnly = true httpOnly = true
sameSite = "foobar" sameSite = "foobar"
[[http.services.Service01.loadBalancer.servers]] [[http.services.Service02.loadBalancer.servers]]
url = "foobar" url = "foobar"
[[http.services.Service01.loadBalancer.servers]] [[http.services.Service02.loadBalancer.servers]]
url = "foobar" url = "foobar"
[http.services.Service01.loadBalancer.healthCheck] [http.services.Service02.loadBalancer.healthCheck]
scheme = "foobar" scheme = "foobar"
path = "foobar" path = "foobar"
method = "foobar" method = "foobar"
@ -60,109 +67,102 @@
timeout = "foobar" timeout = "foobar"
hostname = "foobar" hostname = "foobar"
followRedirects = true followRedirects = true
[http.services.Service01.loadBalancer.healthCheck.headers] [http.services.Service02.loadBalancer.healthCheck.headers]
name0 = "foobar" name0 = "foobar"
name1 = "foobar" name1 = "foobar"
[http.services.Service01.loadBalancer.responseForwarding] [http.services.Service02.loadBalancer.responseForwarding]
flushInterval = "foobar" flushInterval = "foobar"
[http.services.Service02] [http.services.Service03]
[http.services.Service02.mirroring] [http.services.Service03.mirroring]
service = "foobar" service = "foobar"
maxBodySize = 42 maxBodySize = 42
[http.services.Service02.mirroring.healthCheck] [[http.services.Service03.mirroring.mirrors]]
[[http.services.Service02.mirroring.mirrors]]
name = "foobar" name = "foobar"
percent = 42 percent = 42
[[http.services.Service02.mirroring.mirrors]] [[http.services.Service03.mirroring.mirrors]]
name = "foobar" name = "foobar"
percent = 42 percent = 42
[http.services.Service03] [http.services.Service03.mirroring.healthCheck]
[http.services.Service03.weighted] [http.services.Service04]
[http.services.Service03.weighted.healthCheck] [http.services.Service04.weighted]
[[http.services.Service03.weighted.services]] [[http.services.Service04.weighted.services]]
name = "foobar" name = "foobar"
weight = 42 weight = 42
[[http.services.Service03.weighted.services]] [[http.services.Service04.weighted.services]]
name = "foobar" name = "foobar"
weight = 42 weight = 42
[http.services.Service03.weighted.sticky] [http.services.Service04.weighted.sticky]
[http.services.Service03.weighted.sticky.cookie] [http.services.Service04.weighted.sticky.cookie]
name = "foobar" name = "foobar"
secure = true secure = true
httpOnly = true httpOnly = true
sameSite = "foobar" sameSite = "foobar"
[http.services.Service04] [http.services.Service04.weighted.healthCheck]
[http.services.Service04.failover]
service = "foobar"
fallback = "foobar"
[http.services.Service04.failover.healthCheck]
[http.middlewares] [http.middlewares]
[http.middlewares.Middleware00]
[http.middlewares.Middleware00.addPrefix]
prefix = "foobar"
[http.middlewares.Middleware01] [http.middlewares.Middleware01]
[http.middlewares.Middleware01.basicAuth] [http.middlewares.Middleware01.addPrefix]
prefix = "foobar"
[http.middlewares.Middleware02]
[http.middlewares.Middleware02.basicAuth]
users = ["foobar", "foobar"] users = ["foobar", "foobar"]
usersFile = "foobar" usersFile = "foobar"
realm = "foobar" realm = "foobar"
removeHeader = true removeHeader = true
headerField = "foobar" headerField = "foobar"
[http.middlewares.Middleware02] [http.middlewares.Middleware03]
[http.middlewares.Middleware02.buffering] [http.middlewares.Middleware03.buffering]
maxRequestBodyBytes = 42 maxRequestBodyBytes = 42
memRequestBodyBytes = 42 memRequestBodyBytes = 42
maxResponseBodyBytes = 42 maxResponseBodyBytes = 42
memResponseBodyBytes = 42 memResponseBodyBytes = 42
retryExpression = "foobar" retryExpression = "foobar"
[http.middlewares.Middleware03]
[http.middlewares.Middleware03.chain]
middlewares = ["foobar", "foobar"]
[http.middlewares.Middleware04] [http.middlewares.Middleware04]
[http.middlewares.Middleware04.circuitBreaker] [http.middlewares.Middleware04.chain]
middlewares = ["foobar", "foobar"]
[http.middlewares.Middleware05]
[http.middlewares.Middleware05.circuitBreaker]
expression = "foobar" expression = "foobar"
checkPeriod = "42s" checkPeriod = "42s"
fallbackDuration = "42s" fallbackDuration = "42s"
recoveryDuration = "42s" recoveryDuration = "42s"
[http.middlewares.Middleware05] [http.middlewares.Middleware06]
[http.middlewares.Middleware05.compress] [http.middlewares.Middleware06.compress]
excludedContentTypes = ["foobar", "foobar"] excludedContentTypes = ["foobar", "foobar"]
minResponseBodyBytes = 42 minResponseBodyBytes = 42
[http.middlewares.Middleware06]
[http.middlewares.Middleware06.contentType]
autoDetect = true
[http.middlewares.Middleware07] [http.middlewares.Middleware07]
[http.middlewares.Middleware07.digestAuth] [http.middlewares.Middleware07.contentType]
autoDetect = true
[http.middlewares.Middleware08]
[http.middlewares.Middleware08.digestAuth]
users = ["foobar", "foobar"] users = ["foobar", "foobar"]
usersFile = "foobar" usersFile = "foobar"
removeHeader = true removeHeader = true
realm = "foobar" realm = "foobar"
headerField = "foobar" headerField = "foobar"
[http.middlewares.Middleware08] [http.middlewares.Middleware09]
[http.middlewares.Middleware08.errors] [http.middlewares.Middleware09.errors]
status = ["foobar", "foobar"] status = ["foobar", "foobar"]
service = "foobar" service = "foobar"
query = "foobar" query = "foobar"
[http.middlewares.Middleware09] [http.middlewares.Middleware10]
[http.middlewares.Middleware09.forwardAuth] [http.middlewares.Middleware10.forwardAuth]
address = "foobar" address = "foobar"
trustForwardHeader = true trustForwardHeader = true
authResponseHeaders = ["foobar", "foobar"] authResponseHeaders = ["foobar", "foobar"]
authResponseHeadersRegex = "foobar" authResponseHeadersRegex = "foobar"
authRequestHeaders = ["foobar", "foobar"] authRequestHeaders = ["foobar", "foobar"]
[http.middlewares.Middleware09.forwardAuth.tls] [http.middlewares.Middleware10.forwardAuth.tls]
ca = "foobar" ca = "foobar"
caOptional = true caOptional = true
cert = "foobar" cert = "foobar"
key = "foobar" key = "foobar"
insecureSkipVerify = true insecureSkipVerify = true
[http.middlewares.Middleware10] [http.middlewares.Middleware11]
[http.middlewares.Middleware10.headers] [http.middlewares.Middleware11.headers]
accessControlAllowCredentials = true accessControlAllowCredentials = true
accessControlAllowHeaders = ["foobar", "foobar"] accessControlAllowHeaders = ["foobar", "foobar"]
accessControlAllowMethods = ["foobar", "foobar"] accessControlAllowMethods = ["foobar", "foobar"]
@ -192,39 +192,45 @@
featurePolicy = "foobar" featurePolicy = "foobar"
permissionsPolicy = "foobar" permissionsPolicy = "foobar"
isDevelopment = true isDevelopment = true
[http.middlewares.Middleware10.headers.customRequestHeaders] [http.middlewares.Middleware11.headers.customRequestHeaders]
name0 = "foobar" name0 = "foobar"
name1 = "foobar" name1 = "foobar"
[http.middlewares.Middleware10.headers.customResponseHeaders] [http.middlewares.Middleware11.headers.customResponseHeaders]
name0 = "foobar" name0 = "foobar"
name1 = "foobar" name1 = "foobar"
[http.middlewares.Middleware10.headers.sslProxyHeaders] [http.middlewares.Middleware11.headers.sslProxyHeaders]
name0 = "foobar" name0 = "foobar"
name1 = "foobar" name1 = "foobar"
[http.middlewares.Middleware11] [http.middlewares.Middleware12]
[http.middlewares.Middleware11.ipWhiteList] [http.middlewares.Middleware12.ipAllowList]
sourceRange = ["foobar", "foobar"] sourceRange = ["foobar", "foobar"]
[http.middlewares.Middleware11.ipWhiteList.ipStrategy] [http.middlewares.Middleware12.ipAllowList.ipStrategy]
depth = 42 depth = 42
excludedIPs = ["foobar", "foobar"] excludedIPs = ["foobar", "foobar"]
[http.middlewares.Middleware12] [http.middlewares.Middleware13]
[http.middlewares.Middleware12.inFlightReq] [http.middlewares.Middleware13.ipWhiteList]
sourceRange = ["foobar", "foobar"]
[http.middlewares.Middleware13.ipWhiteList.ipStrategy]
depth = 42
excludedIPs = ["foobar", "foobar"]
[http.middlewares.Middleware14]
[http.middlewares.Middleware14.inFlightReq]
amount = 42 amount = 42
[http.middlewares.Middleware12.inFlightReq.sourceCriterion] [http.middlewares.Middleware14.inFlightReq.sourceCriterion]
requestHeaderName = "foobar" requestHeaderName = "foobar"
requestHost = true requestHost = true
[http.middlewares.Middleware12.inFlightReq.sourceCriterion.ipStrategy] [http.middlewares.Middleware14.inFlightReq.sourceCriterion.ipStrategy]
depth = 42 depth = 42
excludedIPs = ["foobar", "foobar"] excludedIPs = ["foobar", "foobar"]
[http.middlewares.Middleware13] [http.middlewares.Middleware15]
[http.middlewares.Middleware13.passTLSClientCert] [http.middlewares.Middleware15.passTLSClientCert]
pem = true pem = true
[http.middlewares.Middleware13.passTLSClientCert.info] [http.middlewares.Middleware15.passTLSClientCert.info]
notAfter = true notAfter = true
notBefore = true notBefore = true
sans = true sans = true
serialNumber = true serialNumber = true
[http.middlewares.Middleware13.passTLSClientCert.info.subject] [http.middlewares.Middleware15.passTLSClientCert.info.subject]
country = true country = true
province = true province = true
locality = true locality = true
@ -233,7 +239,7 @@
commonName = true commonName = true
serialNumber = true serialNumber = true
domainComponent = true domainComponent = true
[http.middlewares.Middleware13.passTLSClientCert.info.issuer] [http.middlewares.Middleware15.passTLSClientCert.info.issuer]
country = true country = true
province = true province = true
locality = true locality = true
@ -241,55 +247,53 @@
commonName = true commonName = true
serialNumber = true serialNumber = true
domainComponent = true domainComponent = true
[http.middlewares.Middleware14] [http.middlewares.Middleware16]
[http.middlewares.Middleware14.plugin] [http.middlewares.Middleware16.plugin]
[http.middlewares.Middleware14.plugin.PluginConf] [http.middlewares.Middleware16.plugin.PluginConf0]
foo = "bar" name0 = "foobar"
[http.middlewares.Middleware15] name1 = "foobar"
[http.middlewares.Middleware15.rateLimit] [http.middlewares.Middleware16.plugin.PluginConf1]
name0 = "foobar"
name1 = "foobar"
[http.middlewares.Middleware17]
[http.middlewares.Middleware17.rateLimit]
average = 42 average = 42
period = "42s" period = "42s"
burst = 42 burst = 42
[http.middlewares.Middleware15.rateLimit.sourceCriterion] [http.middlewares.Middleware17.rateLimit.sourceCriterion]
requestHeaderName = "foobar" requestHeaderName = "foobar"
requestHost = true requestHost = true
[http.middlewares.Middleware15.rateLimit.sourceCriterion.ipStrategy] [http.middlewares.Middleware17.rateLimit.sourceCriterion.ipStrategy]
depth = 42 depth = 42
excludedIPs = ["foobar", "foobar"] excludedIPs = ["foobar", "foobar"]
[http.middlewares.Middleware16] [http.middlewares.Middleware18]
[http.middlewares.Middleware16.redirectRegex] [http.middlewares.Middleware18.redirectRegex]
regex = "foobar" regex = "foobar"
replacement = "foobar" replacement = "foobar"
permanent = true permanent = true
[http.middlewares.Middleware17] [http.middlewares.Middleware19]
[http.middlewares.Middleware17.redirectScheme] [http.middlewares.Middleware19.redirectScheme]
scheme = "foobar" scheme = "foobar"
port = "foobar" port = "foobar"
permanent = true permanent = true
[http.middlewares.Middleware18] [http.middlewares.Middleware20]
[http.middlewares.Middleware18.replacePath] [http.middlewares.Middleware20.replacePath]
path = "foobar" path = "foobar"
[http.middlewares.Middleware19] [http.middlewares.Middleware21]
[http.middlewares.Middleware19.replacePathRegex] [http.middlewares.Middleware21.replacePathRegex]
regex = "foobar" regex = "foobar"
replacement = "foobar" replacement = "foobar"
[http.middlewares.Middleware20] [http.middlewares.Middleware22]
[http.middlewares.Middleware20.retry] [http.middlewares.Middleware22.retry]
attempts = 42 attempts = 42
initialInterval = "42s" initialInterval = "42s"
[http.middlewares.Middleware21] [http.middlewares.Middleware23]
[http.middlewares.Middleware21.stripPrefix] [http.middlewares.Middleware23.stripPrefix]
prefixes = ["foobar", "foobar"] prefixes = ["foobar", "foobar"]
forceSlash = true forceSlash = true
[http.middlewares.Middleware22] [http.middlewares.Middleware24]
[http.middlewares.Middleware22.stripPrefixRegex] [http.middlewares.Middleware24.stripPrefixRegex]
regex = ["foobar", "foobar"] regex = ["foobar", "foobar"]
[http.middlewares.Middleware23]
[http.middlewares.Middleware23.ipAllowList]
sourceRange = ["foobar", "foobar"]
[http.middlewares.Middleware23.ipAllowList.ipStrategy]
depth = 42
excludedIPs = ["foobar", "foobar"]
[http.serversTransports] [http.serversTransports]
[http.serversTransports.ServersTransport0] [http.serversTransports.ServersTransport0]
serverName = "foobar" serverName = "foobar"
@ -395,11 +399,14 @@
name = "foobar" name = "foobar"
weight = 42 weight = 42
[tcp.middlewares] [tcp.middlewares]
[tcp.middlewares.TCPMiddleware00]
[tcp.middlewares.TCPMiddleware00.ipWhiteList]
sourceRange = ["foobar", "foobar"]
[tcp.middlewares.TCPMiddleware01] [tcp.middlewares.TCPMiddleware01]
[tcp.middlewares.TCPMiddleware01.inFlightConn] [tcp.middlewares.TCPMiddleware01.ipAllowList]
sourceRange = ["foobar", "foobar"]
[tcp.middlewares.TCPMiddleware02]
[tcp.middlewares.TCPMiddleware02.ipWhiteList]
sourceRange = ["foobar", "foobar"]
[tcp.middlewares.TCPMiddleware03]
[tcp.middlewares.TCPMiddleware03.inFlightConn]
amount = 42 amount = 42
[udp] [udp]

View file

@ -1,3 +1,5 @@
## CODE GENERATED AUTOMATICALLY
## THIS FILE MUST NOT BE EDITED BY HAND
http: http:
routers: routers:
Router0: Router0:
@ -46,6 +48,11 @@ http:
- foobar - foobar
services: services:
Service01: Service01:
failover:
service: foobar
fallback: foobar
healthCheck: {}
Service02:
loadBalancer: loadBalancer:
sticky: sticky:
cookie: cookie:
@ -72,19 +79,18 @@ http:
responseForwarding: responseForwarding:
flushInterval: foobar flushInterval: foobar
serversTransport: foobar serversTransport: foobar
Service02: Service03:
mirroring: mirroring:
service: foobar service: foobar
maxBodySize: 42 maxBodySize: 42
healthCheck: {}
mirrors: mirrors:
- name: foobar - name: foobar
percent: 42 percent: 42
- name: foobar - name: foobar
percent: 42 percent: 42
Service03:
weighted:
healthCheck: {} healthCheck: {}
Service04:
weighted:
services: services:
- name: foobar - name: foobar
weight: 42 weight: 42
@ -96,16 +102,12 @@ http:
secure: true secure: true
httpOnly: true httpOnly: true
sameSite: foobar sameSite: foobar
Service04:
failover:
service: foobar
fallback: foobar
healthCheck: {} healthCheck: {}
middlewares: middlewares:
Middleware00: Middleware01:
addPrefix: addPrefix:
prefix: foobar prefix: foobar
Middleware01: Middleware02:
basicAuth: basicAuth:
users: users:
- foobar - foobar
@ -114,34 +116,34 @@ http:
realm: foobar realm: foobar
removeHeader: true removeHeader: true
headerField: foobar headerField: foobar
Middleware02: Middleware03:
buffering: buffering:
maxRequestBodyBytes: 42 maxRequestBodyBytes: 42
memRequestBodyBytes: 42 memRequestBodyBytes: 42
maxResponseBodyBytes: 42 maxResponseBodyBytes: 42
memResponseBodyBytes: 42 memResponseBodyBytes: 42
retryExpression: foobar retryExpression: foobar
Middleware03: Middleware04:
chain: chain:
middlewares: middlewares:
- foobar - foobar
- foobar - foobar
Middleware04: Middleware05:
circuitBreaker: circuitBreaker:
expression: foobar expression: foobar
checkPeriod: 42s checkPeriod: 42s
fallbackDuration: 42s fallbackDuration: 42s
recoveryDuration: 42s recoveryDuration: 42s
Middleware05: Middleware06:
compress: compress:
excludedContentTypes: excludedContentTypes:
- foobar - foobar
- foobar - foobar
minResponseBodyBytes: 42 minResponseBodyBytes: 42
Middleware06: Middleware07:
contentType: contentType:
autoDetect: true autoDetect: true
Middleware07: Middleware08:
digestAuth: digestAuth:
users: users:
- foobar - foobar
@ -150,14 +152,14 @@ http:
removeHeader: true removeHeader: true
realm: foobar realm: foobar
headerField: foobar headerField: foobar
Middleware08: Middleware09:
errors: errors:
status: status:
- foobar - foobar
- foobar - foobar
service: foobar service: foobar
query: foobar query: foobar
Middleware09: Middleware10:
forwardAuth: forwardAuth:
address: foobar address: foobar
tls: tls:
@ -174,7 +176,7 @@ http:
authRequestHeaders: authRequestHeaders:
- foobar - foobar
- foobar - foobar
Middleware10: Middleware11:
headers: headers:
customRequestHeaders: customRequestHeaders:
name0: foobar name0: foobar
@ -228,7 +230,17 @@ http:
featurePolicy: foobar featurePolicy: foobar
permissionsPolicy: foobar permissionsPolicy: foobar
isDevelopment: true isDevelopment: true
Middleware11: Middleware12:
ipAllowList:
sourceRange:
- foobar
- foobar
ipStrategy:
depth: 42
excludedIPs:
- foobar
- foobar
Middleware13:
ipWhiteList: ipWhiteList:
sourceRange: sourceRange:
- foobar - foobar
@ -238,7 +250,7 @@ http:
excludedIPs: excludedIPs:
- foobar - foobar
- foobar - foobar
Middleware12: Middleware14:
inFlightReq: inFlightReq:
amount: 42 amount: 42
sourceCriterion: sourceCriterion:
@ -249,13 +261,14 @@ http:
- foobar - foobar
requestHeaderName: foobar requestHeaderName: foobar
requestHost: true requestHost: true
Middleware13: Middleware15:
passTLSClientCert: passTLSClientCert:
pem: true pem: true
info: info:
notAfter: true notAfter: true
notBefore: true notBefore: true
sans: true sans: true
serialNumber: true
subject: subject:
country: true country: true
province: true province: true
@ -273,12 +286,15 @@ http:
commonName: true commonName: true
serialNumber: true serialNumber: true
domainComponent: true domainComponent: true
serialNumber: true Middleware16:
Middleware14:
plugin: plugin:
PluginConf: PluginConf0:
foo: bar name0: foobar
Middleware15: name1: foobar
PluginConf1:
name0: foobar
name1: foobar
Middleware17:
rateLimit: rateLimit:
average: 42 average: 42
period: 42s period: 42s
@ -291,48 +307,38 @@ http:
- foobar - foobar
requestHeaderName: foobar requestHeaderName: foobar
requestHost: true requestHost: true
Middleware16: Middleware18:
redirectRegex: redirectRegex:
regex: foobar regex: foobar
replacement: foobar replacement: foobar
permanent: true permanent: true
Middleware17: Middleware19:
redirectScheme: redirectScheme:
scheme: foobar scheme: foobar
port: foobar port: foobar
permanent: true permanent: true
Middleware18: Middleware20:
replacePath: replacePath:
path: foobar path: foobar
Middleware19: Middleware21:
replacePathRegex: replacePathRegex:
regex: foobar regex: foobar
replacement: foobar replacement: foobar
Middleware20: Middleware22:
retry: retry:
attempts: 42 attempts: 42
initialInterval: 42s initialInterval: 42s
Middleware21: Middleware23:
stripPrefix: stripPrefix:
prefixes: prefixes:
- foobar - foobar
- foobar - foobar
forceSlash: true forceSlash: true
Middleware22: Middleware24:
stripPrefixRegex: stripPrefixRegex:
regex: regex:
- foobar - foobar
- foobar - foobar
Middleware23:
ipAllowList:
sourceRange:
- foobar
- foobar
ipStrategy:
depth: 42
excludedIPs:
- foobar
- foobar
serversTransports: serversTransports:
ServersTransport0: ServersTransport0:
serverName: foobar serverName: foobar
@ -439,19 +445,19 @@ tcp:
- name: foobar - name: foobar
weight: 42 weight: 42
middlewares: middlewares:
TCPMiddleware00:
ipWhiteList:
sourceRange:
- foobar
- foobar
TCPMiddleware01: TCPMiddleware01:
inFlightConn:
amount: 42
TCPMiddleware02:
ipAllowList: ipAllowList:
sourceRange: sourceRange:
- foobar - foobar
- foobar - foobar
TCPMiddleware02:
ipWhiteList:
sourceRange:
- foobar
- foobar
TCPMiddleware03:
inFlightConn:
amount: 42
udp: udp:
routers: routers:
UDPRouter0: UDPRouter0:

View file

@ -1,150 +1,157 @@
| `traefik/http/middlewares/Middleware00/addPrefix/prefix` | `foobar` | <!--
| `traefik/http/middlewares/Middleware01/basicAuth/headerField` | `foobar` | CODE GENERATED AUTOMATICALLY
| `traefik/http/middlewares/Middleware01/basicAuth/realm` | `foobar` | THIS FILE MUST NOT BE EDITED BY HAND
| `traefik/http/middlewares/Middleware01/basicAuth/removeHeader` | `true` | -->
| `traefik/http/middlewares/Middleware01/basicAuth/users/0` | `foobar` | | `traefik/http/middlewares/Middleware01/addPrefix/prefix` | `foobar` |
| `traefik/http/middlewares/Middleware01/basicAuth/users/1` | `foobar` | | `traefik/http/middlewares/Middleware02/basicAuth/headerField` | `foobar` |
| `traefik/http/middlewares/Middleware01/basicAuth/usersFile` | `foobar` | | `traefik/http/middlewares/Middleware02/basicAuth/realm` | `foobar` |
| `traefik/http/middlewares/Middleware02/buffering/maxRequestBodyBytes` | `42` | | `traefik/http/middlewares/Middleware02/basicAuth/removeHeader` | `true` |
| `traefik/http/middlewares/Middleware02/buffering/maxResponseBodyBytes` | `42` | | `traefik/http/middlewares/Middleware02/basicAuth/users/0` | `foobar` |
| `traefik/http/middlewares/Middleware02/buffering/memRequestBodyBytes` | `42` | | `traefik/http/middlewares/Middleware02/basicAuth/users/1` | `foobar` |
| `traefik/http/middlewares/Middleware02/buffering/memResponseBodyBytes` | `42` | | `traefik/http/middlewares/Middleware02/basicAuth/usersFile` | `foobar` |
| `traefik/http/middlewares/Middleware02/buffering/retryExpression` | `foobar` | | `traefik/http/middlewares/Middleware03/buffering/maxRequestBodyBytes` | `42` |
| `traefik/http/middlewares/Middleware03/chain/middlewares/0` | `foobar` | | `traefik/http/middlewares/Middleware03/buffering/maxResponseBodyBytes` | `42` |
| `traefik/http/middlewares/Middleware03/chain/middlewares/1` | `foobar` | | `traefik/http/middlewares/Middleware03/buffering/memRequestBodyBytes` | `42` |
| `traefik/http/middlewares/Middleware04/circuitBreaker/checkPeriod` | `42s` | | `traefik/http/middlewares/Middleware03/buffering/memResponseBodyBytes` | `42` |
| `traefik/http/middlewares/Middleware04/circuitBreaker/expression` | `foobar` | | `traefik/http/middlewares/Middleware03/buffering/retryExpression` | `foobar` |
| `traefik/http/middlewares/Middleware04/circuitBreaker/fallbackDuration` | `42s` | | `traefik/http/middlewares/Middleware04/chain/middlewares/0` | `foobar` |
| `traefik/http/middlewares/Middleware04/circuitBreaker/recoveryDuration` | `42s` | | `traefik/http/middlewares/Middleware04/chain/middlewares/1` | `foobar` |
| `traefik/http/middlewares/Middleware05/compress/excludedContentTypes/0` | `foobar` | | `traefik/http/middlewares/Middleware05/circuitBreaker/checkPeriod` | `42s` |
| `traefik/http/middlewares/Middleware05/compress/excludedContentTypes/1` | `foobar` | | `traefik/http/middlewares/Middleware05/circuitBreaker/expression` | `foobar` |
| `traefik/http/middlewares/Middleware05/compress/minResponseBodyBytes` | `42` | | `traefik/http/middlewares/Middleware05/circuitBreaker/fallbackDuration` | `42s` |
| `traefik/http/middlewares/Middleware06/contentType/autoDetect` | `true` | | `traefik/http/middlewares/Middleware05/circuitBreaker/recoveryDuration` | `42s` |
| `traefik/http/middlewares/Middleware07/digestAuth/headerField` | `foobar` | | `traefik/http/middlewares/Middleware06/compress/excludedContentTypes/0` | `foobar` |
| `traefik/http/middlewares/Middleware07/digestAuth/realm` | `foobar` | | `traefik/http/middlewares/Middleware06/compress/excludedContentTypes/1` | `foobar` |
| `traefik/http/middlewares/Middleware07/digestAuth/removeHeader` | `true` | | `traefik/http/middlewares/Middleware06/compress/minResponseBodyBytes` | `42` |
| `traefik/http/middlewares/Middleware07/digestAuth/users/0` | `foobar` | | `traefik/http/middlewares/Middleware07/contentType/autoDetect` | `true` |
| `traefik/http/middlewares/Middleware07/digestAuth/users/1` | `foobar` | | `traefik/http/middlewares/Middleware08/digestAuth/headerField` | `foobar` |
| `traefik/http/middlewares/Middleware07/digestAuth/usersFile` | `foobar` | | `traefik/http/middlewares/Middleware08/digestAuth/realm` | `foobar` |
| `traefik/http/middlewares/Middleware08/errors/query` | `foobar` | | `traefik/http/middlewares/Middleware08/digestAuth/removeHeader` | `true` |
| `traefik/http/middlewares/Middleware08/errors/service` | `foobar` | | `traefik/http/middlewares/Middleware08/digestAuth/users/0` | `foobar` |
| `traefik/http/middlewares/Middleware08/errors/status/0` | `foobar` | | `traefik/http/middlewares/Middleware08/digestAuth/users/1` | `foobar` |
| `traefik/http/middlewares/Middleware08/errors/status/1` | `foobar` | | `traefik/http/middlewares/Middleware08/digestAuth/usersFile` | `foobar` |
| `traefik/http/middlewares/Middleware09/forwardAuth/address` | `foobar` | | `traefik/http/middlewares/Middleware09/errors/query` | `foobar` |
| `traefik/http/middlewares/Middleware09/forwardAuth/authRequestHeaders/0` | `foobar` | | `traefik/http/middlewares/Middleware09/errors/service` | `foobar` |
| `traefik/http/middlewares/Middleware09/forwardAuth/authRequestHeaders/1` | `foobar` | | `traefik/http/middlewares/Middleware09/errors/status/0` | `foobar` |
| `traefik/http/middlewares/Middleware09/forwardAuth/authResponseHeaders/0` | `foobar` | | `traefik/http/middlewares/Middleware09/errors/status/1` | `foobar` |
| `traefik/http/middlewares/Middleware09/forwardAuth/authResponseHeaders/1` | `foobar` | | `traefik/http/middlewares/Middleware10/forwardAuth/address` | `foobar` |
| `traefik/http/middlewares/Middleware09/forwardAuth/authResponseHeadersRegex` | `foobar` | | `traefik/http/middlewares/Middleware10/forwardAuth/authRequestHeaders/0` | `foobar` |
| `traefik/http/middlewares/Middleware09/forwardAuth/tls/ca` | `foobar` | | `traefik/http/middlewares/Middleware10/forwardAuth/authRequestHeaders/1` | `foobar` |
| `traefik/http/middlewares/Middleware09/forwardAuth/tls/caOptional` | `true` | | `traefik/http/middlewares/Middleware10/forwardAuth/authResponseHeaders/0` | `foobar` |
| `traefik/http/middlewares/Middleware09/forwardAuth/tls/cert` | `foobar` | | `traefik/http/middlewares/Middleware10/forwardAuth/authResponseHeaders/1` | `foobar` |
| `traefik/http/middlewares/Middleware09/forwardAuth/tls/insecureSkipVerify` | `true` | | `traefik/http/middlewares/Middleware10/forwardAuth/authResponseHeadersRegex` | `foobar` |
| `traefik/http/middlewares/Middleware09/forwardAuth/tls/key` | `foobar` | | `traefik/http/middlewares/Middleware10/forwardAuth/tls/ca` | `foobar` |
| `traefik/http/middlewares/Middleware09/forwardAuth/trustForwardHeader` | `true` | | `traefik/http/middlewares/Middleware10/forwardAuth/tls/caOptional` | `true` |
| `traefik/http/middlewares/Middleware10/headers/accessControlAllowCredentials` | `true` | | `traefik/http/middlewares/Middleware10/forwardAuth/tls/cert` | `foobar` |
| `traefik/http/middlewares/Middleware10/headers/accessControlAllowHeaders/0` | `foobar` | | `traefik/http/middlewares/Middleware10/forwardAuth/tls/insecureSkipVerify` | `true` |
| `traefik/http/middlewares/Middleware10/headers/accessControlAllowHeaders/1` | `foobar` | | `traefik/http/middlewares/Middleware10/forwardAuth/tls/key` | `foobar` |
| `traefik/http/middlewares/Middleware10/headers/accessControlAllowMethods/0` | `foobar` | | `traefik/http/middlewares/Middleware10/forwardAuth/trustForwardHeader` | `true` |
| `traefik/http/middlewares/Middleware10/headers/accessControlAllowMethods/1` | `foobar` | | `traefik/http/middlewares/Middleware11/headers/accessControlAllowCredentials` | `true` |
| `traefik/http/middlewares/Middleware10/headers/accessControlAllowOriginList/0` | `foobar` | | `traefik/http/middlewares/Middleware11/headers/accessControlAllowHeaders/0` | `foobar` |
| `traefik/http/middlewares/Middleware10/headers/accessControlAllowOriginList/1` | `foobar` | | `traefik/http/middlewares/Middleware11/headers/accessControlAllowHeaders/1` | `foobar` |
| `traefik/http/middlewares/Middleware10/headers/accessControlAllowOriginListRegex/0` | `foobar` | | `traefik/http/middlewares/Middleware11/headers/accessControlAllowMethods/0` | `foobar` |
| `traefik/http/middlewares/Middleware10/headers/accessControlAllowOriginListRegex/1` | `foobar` | | `traefik/http/middlewares/Middleware11/headers/accessControlAllowMethods/1` | `foobar` |
| `traefik/http/middlewares/Middleware10/headers/accessControlExposeHeaders/0` | `foobar` | | `traefik/http/middlewares/Middleware11/headers/accessControlAllowOriginList/0` | `foobar` |
| `traefik/http/middlewares/Middleware10/headers/accessControlExposeHeaders/1` | `foobar` | | `traefik/http/middlewares/Middleware11/headers/accessControlAllowOriginList/1` | `foobar` |
| `traefik/http/middlewares/Middleware10/headers/accessControlMaxAge` | `42` | | `traefik/http/middlewares/Middleware11/headers/accessControlAllowOriginListRegex/0` | `foobar` |
| `traefik/http/middlewares/Middleware10/headers/addVaryHeader` | `true` | | `traefik/http/middlewares/Middleware11/headers/accessControlAllowOriginListRegex/1` | `foobar` |
| `traefik/http/middlewares/Middleware10/headers/allowedHosts/0` | `foobar` | | `traefik/http/middlewares/Middleware11/headers/accessControlExposeHeaders/0` | `foobar` |
| `traefik/http/middlewares/Middleware10/headers/allowedHosts/1` | `foobar` | | `traefik/http/middlewares/Middleware11/headers/accessControlExposeHeaders/1` | `foobar` |
| `traefik/http/middlewares/Middleware10/headers/browserXssFilter` | `true` | | `traefik/http/middlewares/Middleware11/headers/accessControlMaxAge` | `42` |
| `traefik/http/middlewares/Middleware10/headers/contentSecurityPolicy` | `foobar` | | `traefik/http/middlewares/Middleware11/headers/addVaryHeader` | `true` |
| `traefik/http/middlewares/Middleware10/headers/contentTypeNosniff` | `true` | | `traefik/http/middlewares/Middleware11/headers/allowedHosts/0` | `foobar` |
| `traefik/http/middlewares/Middleware10/headers/customBrowserXSSValue` | `foobar` | | `traefik/http/middlewares/Middleware11/headers/allowedHosts/1` | `foobar` |
| `traefik/http/middlewares/Middleware10/headers/customFrameOptionsValue` | `foobar` | | `traefik/http/middlewares/Middleware11/headers/browserXssFilter` | `true` |
| `traefik/http/middlewares/Middleware10/headers/customRequestHeaders/name0` | `foobar` | | `traefik/http/middlewares/Middleware11/headers/contentSecurityPolicy` | `foobar` |
| `traefik/http/middlewares/Middleware10/headers/customRequestHeaders/name1` | `foobar` | | `traefik/http/middlewares/Middleware11/headers/contentTypeNosniff` | `true` |
| `traefik/http/middlewares/Middleware10/headers/customResponseHeaders/name0` | `foobar` | | `traefik/http/middlewares/Middleware11/headers/customBrowserXSSValue` | `foobar` |
| `traefik/http/middlewares/Middleware10/headers/customResponseHeaders/name1` | `foobar` | | `traefik/http/middlewares/Middleware11/headers/customFrameOptionsValue` | `foobar` |
| `traefik/http/middlewares/Middleware10/headers/featurePolicy` | `foobar` | | `traefik/http/middlewares/Middleware11/headers/customRequestHeaders/name0` | `foobar` |
| `traefik/http/middlewares/Middleware10/headers/forceSTSHeader` | `true` | | `traefik/http/middlewares/Middleware11/headers/customRequestHeaders/name1` | `foobar` |
| `traefik/http/middlewares/Middleware10/headers/frameDeny` | `true` | | `traefik/http/middlewares/Middleware11/headers/customResponseHeaders/name0` | `foobar` |
| `traefik/http/middlewares/Middleware10/headers/hostsProxyHeaders/0` | `foobar` | | `traefik/http/middlewares/Middleware11/headers/customResponseHeaders/name1` | `foobar` |
| `traefik/http/middlewares/Middleware10/headers/hostsProxyHeaders/1` | `foobar` | | `traefik/http/middlewares/Middleware11/headers/featurePolicy` | `foobar` |
| `traefik/http/middlewares/Middleware10/headers/isDevelopment` | `true` | | `traefik/http/middlewares/Middleware11/headers/forceSTSHeader` | `true` |
| `traefik/http/middlewares/Middleware10/headers/permissionsPolicy` | `foobar` | | `traefik/http/middlewares/Middleware11/headers/frameDeny` | `true` |
| `traefik/http/middlewares/Middleware10/headers/publicKey` | `foobar` | | `traefik/http/middlewares/Middleware11/headers/hostsProxyHeaders/0` | `foobar` |
| `traefik/http/middlewares/Middleware10/headers/referrerPolicy` | `foobar` | | `traefik/http/middlewares/Middleware11/headers/hostsProxyHeaders/1` | `foobar` |
| `traefik/http/middlewares/Middleware10/headers/sslForceHost` | `true` | | `traefik/http/middlewares/Middleware11/headers/isDevelopment` | `true` |
| `traefik/http/middlewares/Middleware10/headers/sslHost` | `foobar` | | `traefik/http/middlewares/Middleware11/headers/permissionsPolicy` | `foobar` |
| `traefik/http/middlewares/Middleware10/headers/sslProxyHeaders/name0` | `foobar` | | `traefik/http/middlewares/Middleware11/headers/publicKey` | `foobar` |
| `traefik/http/middlewares/Middleware10/headers/sslProxyHeaders/name1` | `foobar` | | `traefik/http/middlewares/Middleware11/headers/referrerPolicy` | `foobar` |
| `traefik/http/middlewares/Middleware10/headers/sslRedirect` | `true` | | `traefik/http/middlewares/Middleware11/headers/sslForceHost` | `true` |
| `traefik/http/middlewares/Middleware10/headers/sslTemporaryRedirect` | `true` | | `traefik/http/middlewares/Middleware11/headers/sslHost` | `foobar` |
| `traefik/http/middlewares/Middleware10/headers/stsIncludeSubdomains` | `true` | | `traefik/http/middlewares/Middleware11/headers/sslProxyHeaders/name0` | `foobar` |
| `traefik/http/middlewares/Middleware10/headers/stsPreload` | `true` | | `traefik/http/middlewares/Middleware11/headers/sslProxyHeaders/name1` | `foobar` |
| `traefik/http/middlewares/Middleware10/headers/stsSeconds` | `42` | | `traefik/http/middlewares/Middleware11/headers/sslRedirect` | `true` |
| `traefik/http/middlewares/Middleware11/ipWhiteList/ipStrategy/depth` | `42` | | `traefik/http/middlewares/Middleware11/headers/sslTemporaryRedirect` | `true` |
| `traefik/http/middlewares/Middleware11/ipWhiteList/ipStrategy/excludedIPs/0` | `foobar` | | `traefik/http/middlewares/Middleware11/headers/stsIncludeSubdomains` | `true` |
| `traefik/http/middlewares/Middleware11/ipWhiteList/ipStrategy/excludedIPs/1` | `foobar` | | `traefik/http/middlewares/Middleware11/headers/stsPreload` | `true` |
| `traefik/http/middlewares/Middleware11/ipWhiteList/sourceRange/0` | `foobar` | | `traefik/http/middlewares/Middleware11/headers/stsSeconds` | `42` |
| `traefik/http/middlewares/Middleware11/ipWhiteList/sourceRange/1` | `foobar` | | `traefik/http/middlewares/Middleware12/ipAllowList/ipStrategy/depth` | `42` |
| `traefik/http/middlewares/Middleware12/inFlightReq/amount` | `42` | | `traefik/http/middlewares/Middleware12/ipAllowList/ipStrategy/excludedIPs/0` | `foobar` |
| `traefik/http/middlewares/Middleware12/inFlightReq/sourceCriterion/ipStrategy/depth` | `42` | | `traefik/http/middlewares/Middleware12/ipAllowList/ipStrategy/excludedIPs/1` | `foobar` |
| `traefik/http/middlewares/Middleware12/inFlightReq/sourceCriterion/ipStrategy/excludedIPs/0` | `foobar` | | `traefik/http/middlewares/Middleware12/ipAllowList/sourceRange/0` | `foobar` |
| `traefik/http/middlewares/Middleware12/inFlightReq/sourceCriterion/ipStrategy/excludedIPs/1` | `foobar` | | `traefik/http/middlewares/Middleware12/ipAllowList/sourceRange/1` | `foobar` |
| `traefik/http/middlewares/Middleware12/inFlightReq/sourceCriterion/requestHeaderName` | `foobar` | | `traefik/http/middlewares/Middleware13/ipWhiteList/ipStrategy/depth` | `42` |
| `traefik/http/middlewares/Middleware12/inFlightReq/sourceCriterion/requestHost` | `true` | | `traefik/http/middlewares/Middleware13/ipWhiteList/ipStrategy/excludedIPs/0` | `foobar` |
| `traefik/http/middlewares/Middleware13/passTLSClientCert/info/issuer/commonName` | `true` | | `traefik/http/middlewares/Middleware13/ipWhiteList/ipStrategy/excludedIPs/1` | `foobar` |
| `traefik/http/middlewares/Middleware13/passTLSClientCert/info/issuer/country` | `true` | | `traefik/http/middlewares/Middleware13/ipWhiteList/sourceRange/0` | `foobar` |
| `traefik/http/middlewares/Middleware13/passTLSClientCert/info/issuer/domainComponent` | `true` | | `traefik/http/middlewares/Middleware13/ipWhiteList/sourceRange/1` | `foobar` |
| `traefik/http/middlewares/Middleware13/passTLSClientCert/info/issuer/locality` | `true` | | `traefik/http/middlewares/Middleware14/inFlightReq/amount` | `42` |
| `traefik/http/middlewares/Middleware13/passTLSClientCert/info/issuer/organization` | `true` | | `traefik/http/middlewares/Middleware14/inFlightReq/sourceCriterion/ipStrategy/depth` | `42` |
| `traefik/http/middlewares/Middleware13/passTLSClientCert/info/issuer/province` | `true` | | `traefik/http/middlewares/Middleware14/inFlightReq/sourceCriterion/ipStrategy/excludedIPs/0` | `foobar` |
| `traefik/http/middlewares/Middleware13/passTLSClientCert/info/issuer/serialNumber` | `true` | | `traefik/http/middlewares/Middleware14/inFlightReq/sourceCriterion/ipStrategy/excludedIPs/1` | `foobar` |
| `traefik/http/middlewares/Middleware13/passTLSClientCert/info/notAfter` | `true` | | `traefik/http/middlewares/Middleware14/inFlightReq/sourceCriterion/requestHeaderName` | `foobar` |
| `traefik/http/middlewares/Middleware13/passTLSClientCert/info/notBefore` | `true` | | `traefik/http/middlewares/Middleware14/inFlightReq/sourceCriterion/requestHost` | `true` |
| `traefik/http/middlewares/Middleware13/passTLSClientCert/info/sans` | `true` | | `traefik/http/middlewares/Middleware15/passTLSClientCert/info/issuer/commonName` | `true` |
| `traefik/http/middlewares/Middleware13/passTLSClientCert/info/serialNumber` | `true` | | `traefik/http/middlewares/Middleware15/passTLSClientCert/info/issuer/country` | `true` |
| `traefik/http/middlewares/Middleware13/passTLSClientCert/info/subject/commonName` | `true` | | `traefik/http/middlewares/Middleware15/passTLSClientCert/info/issuer/domainComponent` | `true` |
| `traefik/http/middlewares/Middleware13/passTLSClientCert/info/subject/country` | `true` | | `traefik/http/middlewares/Middleware15/passTLSClientCert/info/issuer/locality` | `true` |
| `traefik/http/middlewares/Middleware13/passTLSClientCert/info/subject/domainComponent` | `true` | | `traefik/http/middlewares/Middleware15/passTLSClientCert/info/issuer/organization` | `true` |
| `traefik/http/middlewares/Middleware13/passTLSClientCert/info/subject/locality` | `true` | | `traefik/http/middlewares/Middleware15/passTLSClientCert/info/issuer/province` | `true` |
| `traefik/http/middlewares/Middleware13/passTLSClientCert/info/subject/organization` | `true` | | `traefik/http/middlewares/Middleware15/passTLSClientCert/info/issuer/serialNumber` | `true` |
| `traefik/http/middlewares/Middleware13/passTLSClientCert/info/subject/organizationalUnit` | `true` | | `traefik/http/middlewares/Middleware15/passTLSClientCert/info/notAfter` | `true` |
| `traefik/http/middlewares/Middleware13/passTLSClientCert/info/subject/province` | `true` | | `traefik/http/middlewares/Middleware15/passTLSClientCert/info/notBefore` | `true` |
| `traefik/http/middlewares/Middleware13/passTLSClientCert/info/subject/serialNumber` | `true` | | `traefik/http/middlewares/Middleware15/passTLSClientCert/info/sans` | `true` |
| `traefik/http/middlewares/Middleware13/passTLSClientCert/pem` | `true` | | `traefik/http/middlewares/Middleware15/passTLSClientCert/info/serialNumber` | `true` |
| `traefik/http/middlewares/Middleware14/plugin/PluginConf/foo` | `bar` | | `traefik/http/middlewares/Middleware15/passTLSClientCert/info/subject/commonName` | `true` |
| `traefik/http/middlewares/Middleware15/rateLimit/average` | `42` | | `traefik/http/middlewares/Middleware15/passTLSClientCert/info/subject/country` | `true` |
| `traefik/http/middlewares/Middleware15/rateLimit/burst` | `42` | | `traefik/http/middlewares/Middleware15/passTLSClientCert/info/subject/domainComponent` | `true` |
| `traefik/http/middlewares/Middleware15/rateLimit/period` | `42s` | | `traefik/http/middlewares/Middleware15/passTLSClientCert/info/subject/locality` | `true` |
| `traefik/http/middlewares/Middleware15/rateLimit/sourceCriterion/ipStrategy/depth` | `42` | | `traefik/http/middlewares/Middleware15/passTLSClientCert/info/subject/organization` | `true` |
| `traefik/http/middlewares/Middleware15/rateLimit/sourceCriterion/ipStrategy/excludedIPs/0` | `foobar` | | `traefik/http/middlewares/Middleware15/passTLSClientCert/info/subject/organizationalUnit` | `true` |
| `traefik/http/middlewares/Middleware15/rateLimit/sourceCriterion/ipStrategy/excludedIPs/1` | `foobar` | | `traefik/http/middlewares/Middleware15/passTLSClientCert/info/subject/province` | `true` |
| `traefik/http/middlewares/Middleware15/rateLimit/sourceCriterion/requestHeaderName` | `foobar` | | `traefik/http/middlewares/Middleware15/passTLSClientCert/info/subject/serialNumber` | `true` |
| `traefik/http/middlewares/Middleware15/rateLimit/sourceCriterion/requestHost` | `true` | | `traefik/http/middlewares/Middleware15/passTLSClientCert/pem` | `true` |
| `traefik/http/middlewares/Middleware16/redirectRegex/permanent` | `true` | | `traefik/http/middlewares/Middleware16/plugin/PluginConf0/name0` | `foobar` |
| `traefik/http/middlewares/Middleware16/redirectRegex/regex` | `foobar` | | `traefik/http/middlewares/Middleware16/plugin/PluginConf0/name1` | `foobar` |
| `traefik/http/middlewares/Middleware16/redirectRegex/replacement` | `foobar` | | `traefik/http/middlewares/Middleware16/plugin/PluginConf1/name0` | `foobar` |
| `traefik/http/middlewares/Middleware17/redirectScheme/permanent` | `true` | | `traefik/http/middlewares/Middleware16/plugin/PluginConf1/name1` | `foobar` |
| `traefik/http/middlewares/Middleware17/redirectScheme/port` | `foobar` | | `traefik/http/middlewares/Middleware17/rateLimit/average` | `42` |
| `traefik/http/middlewares/Middleware17/redirectScheme/scheme` | `foobar` | | `traefik/http/middlewares/Middleware17/rateLimit/burst` | `42` |
| `traefik/http/middlewares/Middleware18/replacePath/path` | `foobar` | | `traefik/http/middlewares/Middleware17/rateLimit/period` | `42s` |
| `traefik/http/middlewares/Middleware19/replacePathRegex/regex` | `foobar` | | `traefik/http/middlewares/Middleware17/rateLimit/sourceCriterion/ipStrategy/depth` | `42` |
| `traefik/http/middlewares/Middleware19/replacePathRegex/replacement` | `foobar` | | `traefik/http/middlewares/Middleware17/rateLimit/sourceCriterion/ipStrategy/excludedIPs/0` | `foobar` |
| `traefik/http/middlewares/Middleware20/retry/attempts` | `42` | | `traefik/http/middlewares/Middleware17/rateLimit/sourceCriterion/ipStrategy/excludedIPs/1` | `foobar` |
| `traefik/http/middlewares/Middleware20/retry/initialInterval` | `42s` | | `traefik/http/middlewares/Middleware17/rateLimit/sourceCriterion/requestHeaderName` | `foobar` |
| `traefik/http/middlewares/Middleware21/stripPrefix/forceSlash` | `true` | | `traefik/http/middlewares/Middleware17/rateLimit/sourceCriterion/requestHost` | `true` |
| `traefik/http/middlewares/Middleware21/stripPrefix/prefixes/0` | `foobar` | | `traefik/http/middlewares/Middleware18/redirectRegex/permanent` | `true` |
| `traefik/http/middlewares/Middleware21/stripPrefix/prefixes/1` | `foobar` | | `traefik/http/middlewares/Middleware18/redirectRegex/regex` | `foobar` |
| `traefik/http/middlewares/Middleware22/stripPrefixRegex/regex/0` | `foobar` | | `traefik/http/middlewares/Middleware18/redirectRegex/replacement` | `foobar` |
| `traefik/http/middlewares/Middleware22/stripPrefixRegex/regex/1` | `foobar` | | `traefik/http/middlewares/Middleware19/redirectScheme/permanent` | `true` |
| `traefik/http/middlewares/Middleware23/ipAllowList/ipStrategy/depth` | `42` | | `traefik/http/middlewares/Middleware19/redirectScheme/port` | `foobar` |
| `traefik/http/middlewares/Middleware23/ipAllowList/ipStrategy/excludedIPs/0` | `foobar` | | `traefik/http/middlewares/Middleware19/redirectScheme/scheme` | `foobar` |
| `traefik/http/middlewares/Middleware23/ipAllowList/ipStrategy/excludedIPs/1` | `foobar` | | `traefik/http/middlewares/Middleware20/replacePath/path` | `foobar` |
| `traefik/http/middlewares/Middleware23/ipAllowList/sourceRange/0` | `foobar` | | `traefik/http/middlewares/Middleware21/replacePathRegex/regex` | `foobar` |
| `traefik/http/middlewares/Middleware23/ipAllowList/sourceRange/1` | `foobar` | | `traefik/http/middlewares/Middleware21/replacePathRegex/replacement` | `foobar` |
| `traefik/http/middlewares/Middleware22/retry/attempts` | `42` |
| `traefik/http/middlewares/Middleware22/retry/initialInterval` | `42s` |
| `traefik/http/middlewares/Middleware23/stripPrefix/forceSlash` | `true` |
| `traefik/http/middlewares/Middleware23/stripPrefix/prefixes/0` | `foobar` |
| `traefik/http/middlewares/Middleware23/stripPrefix/prefixes/1` | `foobar` |
| `traefik/http/middlewares/Middleware24/stripPrefixRegex/regex/0` | `foobar` |
| `traefik/http/middlewares/Middleware24/stripPrefixRegex/regex/1` | `foobar` |
| `traefik/http/routers/Router0/entryPoints/0` | `foobar` | | `traefik/http/routers/Router0/entryPoints/0` | `foobar` |
| `traefik/http/routers/Router0/entryPoints/1` | `foobar` | | `traefik/http/routers/Router0/entryPoints/1` | `foobar` |
| `traefik/http/routers/Router0/middlewares/0` | `foobar` | | `traefik/http/routers/Router0/middlewares/0` | `foobar` |
@ -207,47 +214,49 @@
| `traefik/http/serversTransports/ServersTransport1/rootCAs/0` | `foobar` | | `traefik/http/serversTransports/ServersTransport1/rootCAs/0` | `foobar` |
| `traefik/http/serversTransports/ServersTransport1/rootCAs/1` | `foobar` | | `traefik/http/serversTransports/ServersTransport1/rootCAs/1` | `foobar` |
| `traefik/http/serversTransports/ServersTransport1/serverName` | `foobar` | | `traefik/http/serversTransports/ServersTransport1/serverName` | `foobar` |
| `traefik/http/services/Service01/loadBalancer/healthCheck/followRedirects` | `true` | | `traefik/http/services/Service01/failover/fallback` | `foobar` |
| `traefik/http/services/Service01/loadBalancer/healthCheck/headers/name0` | `foobar` | | `traefik/http/services/Service01/failover/healthCheck` | `` |
| `traefik/http/services/Service01/loadBalancer/healthCheck/headers/name1` | `foobar` | | `traefik/http/services/Service01/failover/service` | `foobar` |
| `traefik/http/services/Service01/loadBalancer/healthCheck/hostname` | `foobar` | | `traefik/http/services/Service02/loadBalancer/healthCheck/followRedirects` | `true` |
| `traefik/http/services/Service01/loadBalancer/healthCheck/interval` | `foobar` | | `traefik/http/services/Service02/loadBalancer/healthCheck/headers/name0` | `foobar` |
| `traefik/http/services/Service01/loadBalancer/healthCheck/method` | `foobar` | | `traefik/http/services/Service02/loadBalancer/healthCheck/headers/name1` | `foobar` |
| `traefik/http/services/Service01/loadBalancer/healthCheck/path` | `foobar` | | `traefik/http/services/Service02/loadBalancer/healthCheck/hostname` | `foobar` |
| `traefik/http/services/Service01/loadBalancer/healthCheck/port` | `42` | | `traefik/http/services/Service02/loadBalancer/healthCheck/interval` | `foobar` |
| `traefik/http/services/Service01/loadBalancer/healthCheck/scheme` | `foobar` | | `traefik/http/services/Service02/loadBalancer/healthCheck/method` | `foobar` |
| `traefik/http/services/Service01/loadBalancer/healthCheck/timeout` | `foobar` | | `traefik/http/services/Service02/loadBalancer/healthCheck/path` | `foobar` |
| `traefik/http/services/Service01/loadBalancer/passHostHeader` | `true` | | `traefik/http/services/Service02/loadBalancer/healthCheck/port` | `42` |
| `traefik/http/services/Service01/loadBalancer/responseForwarding/flushInterval` | `foobar` | | `traefik/http/services/Service02/loadBalancer/healthCheck/scheme` | `foobar` |
| `traefik/http/services/Service01/loadBalancer/servers/0/url` | `foobar` | | `traefik/http/services/Service02/loadBalancer/healthCheck/timeout` | `foobar` |
| `traefik/http/services/Service01/loadBalancer/servers/1/url` | `foobar` | | `traefik/http/services/Service02/loadBalancer/passHostHeader` | `true` |
| `traefik/http/services/Service01/loadBalancer/serversTransport` | `foobar` | | `traefik/http/services/Service02/loadBalancer/responseForwarding/flushInterval` | `foobar` |
| `traefik/http/services/Service01/loadBalancer/sticky/cookie/httpOnly` | `true` | | `traefik/http/services/Service02/loadBalancer/servers/0/url` | `foobar` |
| `traefik/http/services/Service01/loadBalancer/sticky/cookie/name` | `foobar` | | `traefik/http/services/Service02/loadBalancer/servers/1/url` | `foobar` |
| `traefik/http/services/Service01/loadBalancer/sticky/cookie/sameSite` | `foobar` | | `traefik/http/services/Service02/loadBalancer/serversTransport` | `foobar` |
| `traefik/http/services/Service01/loadBalancer/sticky/cookie/secure` | `true` | | `traefik/http/services/Service02/loadBalancer/sticky/cookie/httpOnly` | `true` |
| `traefik/http/services/Service02/mirroring/healthCheck` | `` | | `traefik/http/services/Service02/loadBalancer/sticky/cookie/name` | `foobar` |
| `traefik/http/services/Service02/mirroring/maxBodySize` | `42` | | `traefik/http/services/Service02/loadBalancer/sticky/cookie/sameSite` | `foobar` |
| `traefik/http/services/Service02/mirroring/mirrors/0/name` | `foobar` | | `traefik/http/services/Service02/loadBalancer/sticky/cookie/secure` | `true` |
| `traefik/http/services/Service02/mirroring/mirrors/0/percent` | `42` | | `traefik/http/services/Service03/mirroring/healthCheck` | `` |
| `traefik/http/services/Service02/mirroring/mirrors/1/name` | `foobar` | | `traefik/http/services/Service03/mirroring/maxBodySize` | `42` |
| `traefik/http/services/Service02/mirroring/mirrors/1/percent` | `42` | | `traefik/http/services/Service03/mirroring/mirrors/0/name` | `foobar` |
| `traefik/http/services/Service02/mirroring/service` | `foobar` | | `traefik/http/services/Service03/mirroring/mirrors/0/percent` | `42` |
| `traefik/http/services/Service03/weighted/healthCheck` | `` | | `traefik/http/services/Service03/mirroring/mirrors/1/name` | `foobar` |
| `traefik/http/services/Service03/weighted/services/0/name` | `foobar` | | `traefik/http/services/Service03/mirroring/mirrors/1/percent` | `42` |
| `traefik/http/services/Service03/weighted/services/0/weight` | `42` | | `traefik/http/services/Service03/mirroring/service` | `foobar` |
| `traefik/http/services/Service03/weighted/services/1/name` | `foobar` | | `traefik/http/services/Service04/weighted/healthCheck` | `` |
| `traefik/http/services/Service03/weighted/services/1/weight` | `42` | | `traefik/http/services/Service04/weighted/services/0/name` | `foobar` |
| `traefik/http/services/Service03/weighted/sticky/cookie/httpOnly` | `true` | | `traefik/http/services/Service04/weighted/services/0/weight` | `42` |
| `traefik/http/services/Service03/weighted/sticky/cookie/name` | `foobar` | | `traefik/http/services/Service04/weighted/services/1/name` | `foobar` |
| `traefik/http/services/Service03/weighted/sticky/cookie/sameSite` | `foobar` | | `traefik/http/services/Service04/weighted/services/1/weight` | `42` |
| `traefik/http/services/Service03/weighted/sticky/cookie/secure` | `true` | | `traefik/http/services/Service04/weighted/sticky/cookie/httpOnly` | `true` |
| `traefik/http/services/Service04/failover/fallback` | `foobar` | | `traefik/http/services/Service04/weighted/sticky/cookie/name` | `foobar` |
| `traefik/http/services/Service04/failover/healthCheck` | `` | | `traefik/http/services/Service04/weighted/sticky/cookie/sameSite` | `foobar` |
| `traefik/http/services/Service04/failover/service` | `foobar` | | `traefik/http/services/Service04/weighted/sticky/cookie/secure` | `true` |
| `traefik/tcp/middlewares/TCPMiddleware00/ipWhiteList/sourceRange/0` | `foobar` | | `traefik/tcp/middlewares/TCPMiddleware01/ipAllowList/sourceRange/0` | `foobar` |
| `traefik/tcp/middlewares/TCPMiddleware00/ipWhiteList/sourceRange/1` | `foobar` | | `traefik/tcp/middlewares/TCPMiddleware01/ipAllowList/sourceRange/1` | `foobar` |
| `traefik/tcp/middlewares/TCPMiddleware01/inFlightConn/amount` | `42` | | `traefik/tcp/middlewares/TCPMiddleware02/ipWhiteList/sourceRange/0` | `foobar` |
| `traefik/tcp/middlewares/TCPMiddleware02/ipWhiteList/sourceRange/1` | `foobar` |
| `traefik/tcp/middlewares/TCPMiddleware03/inFlightConn/amount` | `42` |
| `traefik/tcp/routers/TCPRouter0/entryPoints/0` | `foobar` | | `traefik/tcp/routers/TCPRouter0/entryPoints/0` | `foobar` |
| `traefik/tcp/routers/TCPRouter0/entryPoints/1` | `foobar` | | `traefik/tcp/routers/TCPRouter0/entryPoints/1` | `foobar` |
| `traefik/tcp/routers/TCPRouter0/middlewares/0` | `foobar` | | `traefik/tcp/routers/TCPRouter0/middlewares/0` | `foobar` |

View file

@ -1,129 +1,136 @@
"traefik.http.middlewares.middleware00.addprefix.prefix": "foobar", // CODE GENERATED AUTOMATICALLY
"traefik.http.middlewares.middleware01.basicauth.headerfield": "foobar", // THIS FILE MUST NOT BE EDITED BY HAND
"traefik.http.middlewares.middleware01.basicauth.realm": "foobar", "traefik.http.middlewares.middleware01.addprefix.prefix": "foobar",
"traefik.http.middlewares.middleware01.basicauth.removeheader": "true", "traefik.http.middlewares.middleware02.basicauth.headerfield": "foobar",
"traefik.http.middlewares.middleware01.basicauth.users": "foobar, foobar", "traefik.http.middlewares.middleware02.basicauth.realm": "foobar",
"traefik.http.middlewares.middleware01.basicauth.usersfile": "foobar", "traefik.http.middlewares.middleware02.basicauth.removeheader": "true",
"traefik.http.middlewares.middleware02.buffering.maxrequestbodybytes": "42", "traefik.http.middlewares.middleware02.basicauth.users": "foobar, foobar",
"traefik.http.middlewares.middleware02.buffering.maxresponsebodybytes": "42", "traefik.http.middlewares.middleware02.basicauth.usersfile": "foobar",
"traefik.http.middlewares.middleware02.buffering.memrequestbodybytes": "42", "traefik.http.middlewares.middleware03.buffering.maxrequestbodybytes": "42",
"traefik.http.middlewares.middleware02.buffering.memresponsebodybytes": "42", "traefik.http.middlewares.middleware03.buffering.maxresponsebodybytes": "42",
"traefik.http.middlewares.middleware02.buffering.retryexpression": "foobar", "traefik.http.middlewares.middleware03.buffering.memrequestbodybytes": "42",
"traefik.http.middlewares.middleware03.chain.middlewares": "foobar, foobar", "traefik.http.middlewares.middleware03.buffering.memresponsebodybytes": "42",
"traefik.http.middlewares.middleware04.circuitbreaker.expression": "foobar", "traefik.http.middlewares.middleware03.buffering.retryexpression": "foobar",
"traefik.http.middlewares.middleware04.circuitbreaker.checkperiod": "42s", "traefik.http.middlewares.middleware04.chain.middlewares": "foobar, foobar",
"traefik.http.middlewares.middleware04.circuitbreaker.fallbackduration": "42s", "traefik.http.middlewares.middleware05.circuitbreaker.checkperiod": "42s",
"traefik.http.middlewares.middleware04.circuitbreaker.recoveryduration": "42s", "traefik.http.middlewares.middleware05.circuitbreaker.expression": "foobar",
"traefik.http.middlewares.middleware05.compress": "true", "traefik.http.middlewares.middleware05.circuitbreaker.fallbackduration": "42s",
"traefik.http.middlewares.middleware05.compress.excludedcontenttypes": "foobar, foobar", "traefik.http.middlewares.middleware05.circuitbreaker.recoveryduration": "42s",
"traefik.http.middlewares.middleware05.compress.minresponsebodybytes": "42", "traefik.http.middlewares.middleware06.compress": "true",
"traefik.http.middlewares.middleware06.contenttype.autodetect": "true", "traefik.http.middlewares.middleware06.compress.excludedcontenttypes": "foobar, foobar",
"traefik.http.middlewares.middleware07.digestauth.headerfield": "foobar", "traefik.http.middlewares.middleware06.compress.minresponsebodybytes": "42",
"traefik.http.middlewares.middleware07.digestauth.realm": "foobar", "traefik.http.middlewares.middleware07.contenttype.autodetect": "true",
"traefik.http.middlewares.middleware07.digestauth.removeheader": "true", "traefik.http.middlewares.middleware08.digestauth.headerfield": "foobar",
"traefik.http.middlewares.middleware07.digestauth.users": "foobar, foobar", "traefik.http.middlewares.middleware08.digestauth.realm": "foobar",
"traefik.http.middlewares.middleware07.digestauth.usersfile": "foobar", "traefik.http.middlewares.middleware08.digestauth.removeheader": "true",
"traefik.http.middlewares.middleware08.errors.query": "foobar", "traefik.http.middlewares.middleware08.digestauth.users": "foobar, foobar",
"traefik.http.middlewares.middleware08.errors.service": "foobar", "traefik.http.middlewares.middleware08.digestauth.usersfile": "foobar",
"traefik.http.middlewares.middleware08.errors.status": "foobar, foobar", "traefik.http.middlewares.middleware09.errors.query": "foobar",
"traefik.http.middlewares.middleware09.forwardauth.address": "foobar", "traefik.http.middlewares.middleware09.errors.service": "foobar",
"traefik.http.middlewares.middleware09.forwardauth.authrequestheaders": "foobar, foobar", "traefik.http.middlewares.middleware09.errors.status": "foobar, foobar",
"traefik.http.middlewares.middleware09.forwardauth.authresponseheaders": "foobar, foobar", "traefik.http.middlewares.middleware10.forwardauth.address": "foobar",
"traefik.http.middlewares.middleware09.forwardauth.authresponseheadersregex": "foobar", "traefik.http.middlewares.middleware10.forwardauth.authrequestheaders": "foobar, foobar",
"traefik.http.middlewares.middleware09.forwardauth.tls.ca": "foobar", "traefik.http.middlewares.middleware10.forwardauth.authresponseheaders": "foobar, foobar",
"traefik.http.middlewares.middleware09.forwardauth.tls.caoptional": "true", "traefik.http.middlewares.middleware10.forwardauth.authresponseheadersregex": "foobar",
"traefik.http.middlewares.middleware09.forwardauth.tls.cert": "foobar", "traefik.http.middlewares.middleware10.forwardauth.tls.ca": "foobar",
"traefik.http.middlewares.middleware09.forwardauth.tls.insecureskipverify": "true", "traefik.http.middlewares.middleware10.forwardauth.tls.caoptional": "true",
"traefik.http.middlewares.middleware09.forwardauth.tls.key": "foobar", "traefik.http.middlewares.middleware10.forwardauth.tls.cert": "foobar",
"traefik.http.middlewares.middleware09.forwardauth.trustforwardheader": "true", "traefik.http.middlewares.middleware10.forwardauth.tls.insecureskipverify": "true",
"traefik.http.middlewares.middleware10.headers.accesscontrolallowcredentials": "true", "traefik.http.middlewares.middleware10.forwardauth.tls.key": "foobar",
"traefik.http.middlewares.middleware10.headers.accesscontrolallowheaders": "foobar, foobar", "traefik.http.middlewares.middleware10.forwardauth.trustforwardheader": "true",
"traefik.http.middlewares.middleware10.headers.accesscontrolallowmethods": "foobar, foobar", "traefik.http.middlewares.middleware11.headers.accesscontrolallowcredentials": "true",
"traefik.http.middlewares.middleware10.headers.accesscontrolalloworiginlist": "foobar, foobar", "traefik.http.middlewares.middleware11.headers.accesscontrolallowheaders": "foobar, foobar",
"traefik.http.middlewares.middleware10.headers.accesscontrolalloworiginlistregex": "foobar, foobar", "traefik.http.middlewares.middleware11.headers.accesscontrolallowmethods": "foobar, foobar",
"traefik.http.middlewares.middleware10.headers.accesscontrolexposeheaders": "foobar, foobar", "traefik.http.middlewares.middleware11.headers.accesscontrolalloworiginlist": "foobar, foobar",
"traefik.http.middlewares.middleware10.headers.accesscontrolmaxage": "42", "traefik.http.middlewares.middleware11.headers.accesscontrolalloworiginlistregex": "foobar, foobar",
"traefik.http.middlewares.middleware10.headers.addvaryheader": "true", "traefik.http.middlewares.middleware11.headers.accesscontrolexposeheaders": "foobar, foobar",
"traefik.http.middlewares.middleware10.headers.allowedhosts": "foobar, foobar", "traefik.http.middlewares.middleware11.headers.accesscontrolmaxage": "42",
"traefik.http.middlewares.middleware10.headers.browserxssfilter": "true", "traefik.http.middlewares.middleware11.headers.addvaryheader": "true",
"traefik.http.middlewares.middleware10.headers.contentsecuritypolicy": "foobar", "traefik.http.middlewares.middleware11.headers.allowedhosts": "foobar, foobar",
"traefik.http.middlewares.middleware10.headers.contenttypenosniff": "true", "traefik.http.middlewares.middleware11.headers.browserxssfilter": "true",
"traefik.http.middlewares.middleware10.headers.custombrowserxssvalue": "foobar", "traefik.http.middlewares.middleware11.headers.contentsecuritypolicy": "foobar",
"traefik.http.middlewares.middleware10.headers.customframeoptionsvalue": "foobar", "traefik.http.middlewares.middleware11.headers.contenttypenosniff": "true",
"traefik.http.middlewares.middleware10.headers.customrequestheaders.name0": "foobar", "traefik.http.middlewares.middleware11.headers.custombrowserxssvalue": "foobar",
"traefik.http.middlewares.middleware10.headers.customrequestheaders.name1": "foobar", "traefik.http.middlewares.middleware11.headers.customframeoptionsvalue": "foobar",
"traefik.http.middlewares.middleware10.headers.customresponseheaders.name0": "foobar", "traefik.http.middlewares.middleware11.headers.customrequestheaders.name0": "foobar",
"traefik.http.middlewares.middleware10.headers.customresponseheaders.name1": "foobar", "traefik.http.middlewares.middleware11.headers.customrequestheaders.name1": "foobar",
"traefik.http.middlewares.middleware10.headers.featurepolicy": "foobar", "traefik.http.middlewares.middleware11.headers.customresponseheaders.name0": "foobar",
"traefik.http.middlewares.middleware10.headers.forcestsheader": "true", "traefik.http.middlewares.middleware11.headers.customresponseheaders.name1": "foobar",
"traefik.http.middlewares.middleware10.headers.framedeny": "true", "traefik.http.middlewares.middleware11.headers.featurepolicy": "foobar",
"traefik.http.middlewares.middleware10.headers.hostsproxyheaders": "foobar, foobar", "traefik.http.middlewares.middleware11.headers.forcestsheader": "true",
"traefik.http.middlewares.middleware10.headers.isdevelopment": "true", "traefik.http.middlewares.middleware11.headers.framedeny": "true",
"traefik.http.middlewares.middleware10.headers.permissionspolicy": "foobar", "traefik.http.middlewares.middleware11.headers.hostsproxyheaders": "foobar, foobar",
"traefik.http.middlewares.middleware10.headers.publickey": "foobar", "traefik.http.middlewares.middleware11.headers.isdevelopment": "true",
"traefik.http.middlewares.middleware10.headers.referrerpolicy": "foobar", "traefik.http.middlewares.middleware11.headers.permissionspolicy": "foobar",
"traefik.http.middlewares.middleware10.headers.sslforcehost": "true", "traefik.http.middlewares.middleware11.headers.publickey": "foobar",
"traefik.http.middlewares.middleware10.headers.sslhost": "foobar", "traefik.http.middlewares.middleware11.headers.referrerpolicy": "foobar",
"traefik.http.middlewares.middleware10.headers.sslproxyheaders.name0": "foobar", "traefik.http.middlewares.middleware11.headers.sslforcehost": "true",
"traefik.http.middlewares.middleware10.headers.sslproxyheaders.name1": "foobar", "traefik.http.middlewares.middleware11.headers.sslhost": "foobar",
"traefik.http.middlewares.middleware10.headers.sslredirect": "true", "traefik.http.middlewares.middleware11.headers.sslproxyheaders.name0": "foobar",
"traefik.http.middlewares.middleware10.headers.ssltemporaryredirect": "true", "traefik.http.middlewares.middleware11.headers.sslproxyheaders.name1": "foobar",
"traefik.http.middlewares.middleware10.headers.stsincludesubdomains": "true", "traefik.http.middlewares.middleware11.headers.sslredirect": "true",
"traefik.http.middlewares.middleware10.headers.stspreload": "true", "traefik.http.middlewares.middleware11.headers.ssltemporaryredirect": "true",
"traefik.http.middlewares.middleware10.headers.stsseconds": "42", "traefik.http.middlewares.middleware11.headers.stsincludesubdomains": "true",
"traefik.http.middlewares.middleware11.ipwhitelist.ipstrategy.depth": "42", "traefik.http.middlewares.middleware11.headers.stspreload": "true",
"traefik.http.middlewares.middleware11.ipwhitelist.ipstrategy.excludedips": "foobar, foobar", "traefik.http.middlewares.middleware11.headers.stsseconds": "42",
"traefik.http.middlewares.middleware11.ipwhitelist.sourcerange": "foobar, foobar", "traefik.http.middlewares.middleware12.ipallowlist.ipstrategy": "true",
"traefik.http.middlewares.middleware12.inflightreq.amount": "42", "traefik.http.middlewares.middleware12.ipallowlist.ipstrategy.depth": "42",
"traefik.http.middlewares.middleware12.inflightreq.sourcecriterion.ipstrategy.depth": "42", "traefik.http.middlewares.middleware12.ipallowlist.ipstrategy.excludedips": "foobar, foobar",
"traefik.http.middlewares.middleware12.inflightreq.sourcecriterion.ipstrategy.excludedips": "foobar, foobar", "traefik.http.middlewares.middleware12.ipallowlist.sourcerange": "foobar, foobar",
"traefik.http.middlewares.middleware12.inflightreq.sourcecriterion.requestheadername": "foobar", "traefik.http.middlewares.middleware13.ipwhitelist.ipstrategy": "true",
"traefik.http.middlewares.middleware12.inflightreq.sourcecriterion.requesthost": "true", "traefik.http.middlewares.middleware13.ipwhitelist.ipstrategy.depth": "42",
"traefik.http.middlewares.middleware13.passtlsclientcert.info.issuer.commonname": "true", "traefik.http.middlewares.middleware13.ipwhitelist.ipstrategy.excludedips": "foobar, foobar",
"traefik.http.middlewares.middleware13.passtlsclientcert.info.issuer.country": "true", "traefik.http.middlewares.middleware13.ipwhitelist.sourcerange": "foobar, foobar",
"traefik.http.middlewares.middleware13.passtlsclientcert.info.issuer.domaincomponent": "true", "traefik.http.middlewares.middleware14.inflightreq.amount": "42",
"traefik.http.middlewares.middleware13.passtlsclientcert.info.issuer.locality": "true", "traefik.http.middlewares.middleware14.inflightreq.sourcecriterion.ipstrategy.depth": "42",
"traefik.http.middlewares.middleware13.passtlsclientcert.info.issuer.organization": "true", "traefik.http.middlewares.middleware14.inflightreq.sourcecriterion.ipstrategy.excludedips": "foobar, foobar",
"traefik.http.middlewares.middleware13.passtlsclientcert.info.issuer.province": "true", "traefik.http.middlewares.middleware14.inflightreq.sourcecriterion.requestheadername": "foobar",
"traefik.http.middlewares.middleware13.passtlsclientcert.info.issuer.serialnumber": "true", "traefik.http.middlewares.middleware14.inflightreq.sourcecriterion.requesthost": "true",
"traefik.http.middlewares.middleware13.passtlsclientcert.info.notafter": "true", "traefik.http.middlewares.middleware15.passtlsclientcert.info.issuer.commonname": "true",
"traefik.http.middlewares.middleware13.passtlsclientcert.info.notbefore": "true", "traefik.http.middlewares.middleware15.passtlsclientcert.info.issuer.country": "true",
"traefik.http.middlewares.middleware13.passtlsclientcert.info.sans": "true", "traefik.http.middlewares.middleware15.passtlsclientcert.info.issuer.domaincomponent": "true",
"traefik.http.middlewares.middleware13.passtlsclientcert.info.serialnumber": "true", "traefik.http.middlewares.middleware15.passtlsclientcert.info.issuer.locality": "true",
"traefik.http.middlewares.middleware13.passtlsclientcert.info.subject.commonname": "true", "traefik.http.middlewares.middleware15.passtlsclientcert.info.issuer.organization": "true",
"traefik.http.middlewares.middleware13.passtlsclientcert.info.subject.country": "true", "traefik.http.middlewares.middleware15.passtlsclientcert.info.issuer.province": "true",
"traefik.http.middlewares.middleware13.passtlsclientcert.info.subject.domaincomponent": "true", "traefik.http.middlewares.middleware15.passtlsclientcert.info.issuer.serialnumber": "true",
"traefik.http.middlewares.middleware13.passtlsclientcert.info.subject.locality": "true", "traefik.http.middlewares.middleware15.passtlsclientcert.info.notafter": "true",
"traefik.http.middlewares.middleware13.passtlsclientcert.info.subject.organization": "true", "traefik.http.middlewares.middleware15.passtlsclientcert.info.notbefore": "true",
"traefik.http.middlewares.middleware13.passtlsclientcert.info.subject.organizationalunit": "true", "traefik.http.middlewares.middleware15.passtlsclientcert.info.sans": "true",
"traefik.http.middlewares.middleware13.passtlsclientcert.info.subject.province": "true", "traefik.http.middlewares.middleware15.passtlsclientcert.info.serialnumber": "true",
"traefik.http.middlewares.middleware13.passtlsclientcert.info.subject.serialnumber": "true", "traefik.http.middlewares.middleware15.passtlsclientcert.info.subject.commonname": "true",
"traefik.http.middlewares.middleware13.passtlsclientcert.pem": "true", "traefik.http.middlewares.middleware15.passtlsclientcert.info.subject.country": "true",
"traefik.http.middlewares.middleware14.plugin.foobar.foo": "bar", "traefik.http.middlewares.middleware15.passtlsclientcert.info.subject.domaincomponent": "true",
"traefik.http.middlewares.middleware15.ratelimit.average": "42", "traefik.http.middlewares.middleware15.passtlsclientcert.info.subject.locality": "true",
"traefik.http.middlewares.middleware15.ratelimit.burst": "42", "traefik.http.middlewares.middleware15.passtlsclientcert.info.subject.organization": "true",
"traefik.http.middlewares.middleware15.ratelimit.period": "42", "traefik.http.middlewares.middleware15.passtlsclientcert.info.subject.organizationalunit": "true",
"traefik.http.middlewares.middleware15.ratelimit.sourcecriterion.ipstrategy.depth": "42", "traefik.http.middlewares.middleware15.passtlsclientcert.info.subject.province": "true",
"traefik.http.middlewares.middleware15.ratelimit.sourcecriterion.ipstrategy.excludedips": "foobar, foobar", "traefik.http.middlewares.middleware15.passtlsclientcert.info.subject.serialnumber": "true",
"traefik.http.middlewares.middleware15.ratelimit.sourcecriterion.requestheadername": "foobar", "traefik.http.middlewares.middleware15.passtlsclientcert.pem": "true",
"traefik.http.middlewares.middleware15.ratelimit.sourcecriterion.requesthost": "true", "traefik.http.middlewares.middleware16.plugin.pluginconf0.name0": "foobar",
"traefik.http.middlewares.middleware16.redirectregex.permanent": "true", "traefik.http.middlewares.middleware16.plugin.pluginconf0.name1": "foobar",
"traefik.http.middlewares.middleware16.redirectregex.regex": "foobar", "traefik.http.middlewares.middleware16.plugin.pluginconf1.name0": "foobar",
"traefik.http.middlewares.middleware16.redirectregex.replacement": "foobar", "traefik.http.middlewares.middleware16.plugin.pluginconf1.name1": "foobar",
"traefik.http.middlewares.middleware17.redirectscheme.permanent": "true", "traefik.http.middlewares.middleware17.ratelimit.average": "42",
"traefik.http.middlewares.middleware17.redirectscheme.port": "foobar", "traefik.http.middlewares.middleware17.ratelimit.burst": "42",
"traefik.http.middlewares.middleware17.redirectscheme.scheme": "foobar", "traefik.http.middlewares.middleware17.ratelimit.period": "42s",
"traefik.http.middlewares.middleware18.replacepath.path": "foobar", "traefik.http.middlewares.middleware17.ratelimit.sourcecriterion.ipstrategy.depth": "42",
"traefik.http.middlewares.middleware19.replacepathregex.regex": "foobar", "traefik.http.middlewares.middleware17.ratelimit.sourcecriterion.ipstrategy.excludedips": "foobar, foobar",
"traefik.http.middlewares.middleware19.replacepathregex.replacement": "foobar", "traefik.http.middlewares.middleware17.ratelimit.sourcecriterion.requestheadername": "foobar",
"traefik.http.middlewares.middleware20.retry.attempts": "42", "traefik.http.middlewares.middleware17.ratelimit.sourcecriterion.requesthost": "true",
"traefik.http.middlewares.middleware20.retry.initialinterval": "42", "traefik.http.middlewares.middleware18.redirectregex.permanent": "true",
"traefik.http.middlewares.middleware21.stripprefix.forceslash": "true", "traefik.http.middlewares.middleware18.redirectregex.regex": "foobar",
"traefik.http.middlewares.middleware21.stripprefix.prefixes": "foobar, foobar", "traefik.http.middlewares.middleware18.redirectregex.replacement": "foobar",
"traefik.http.middlewares.middleware22.stripprefixregex.regex": "foobar, foobar", "traefik.http.middlewares.middleware19.redirectscheme.permanent": "true",
"traefik.http.middlewares.middleware23.ipallowlist.ipstrategy.depth": "42", "traefik.http.middlewares.middleware19.redirectscheme.port": "foobar",
"traefik.http.middlewares.middleware23.ipallowlist.ipstrategy.excludedips": "foobar, foobar", "traefik.http.middlewares.middleware19.redirectscheme.scheme": "foobar",
"traefik.http.middlewares.middleware23.ipallowlist.sourcerange": "foobar, foobar", "traefik.http.middlewares.middleware20.replacepath.path": "foobar",
"traefik.http.middlewares.middleware21.replacepathregex.regex": "foobar",
"traefik.http.middlewares.middleware21.replacepathregex.replacement": "foobar",
"traefik.http.middlewares.middleware22.retry.attempts": "42",
"traefik.http.middlewares.middleware22.retry.initialinterval": "42s",
"traefik.http.middlewares.middleware23.stripprefix.forceslash": "true",
"traefik.http.middlewares.middleware23.stripprefix.prefixes": "foobar, foobar",
"traefik.http.middlewares.middleware24.stripprefixregex.regex": "foobar, foobar",
"traefik.http.routers.router0.entrypoints": "foobar, foobar", "traefik.http.routers.router0.entrypoints": "foobar, foobar",
"traefik.http.routers.router0.middlewares": "foobar, foobar", "traefik.http.routers.router0.middlewares": "foobar, foobar",
"traefik.http.routers.router0.priority": "42", "traefik.http.routers.router0.priority": "42",
@ -148,33 +155,34 @@
"traefik.http.routers.router1.tls.domains[1].main": "foobar", "traefik.http.routers.router1.tls.domains[1].main": "foobar",
"traefik.http.routers.router1.tls.domains[1].sans": "foobar, foobar", "traefik.http.routers.router1.tls.domains[1].sans": "foobar, foobar",
"traefik.http.routers.router1.tls.options": "foobar", "traefik.http.routers.router1.tls.options": "foobar",
"traefik.http.services.service01.loadbalancer.healthcheck.followredirects": "true", "traefik.http.services.service02.loadbalancer.healthcheck.followredirects": "true",
"traefik.http.services.service01.loadbalancer.healthcheck.headers.name0": "foobar", "traefik.http.services.service02.loadbalancer.healthcheck.headers.name0": "foobar",
"traefik.http.services.service01.loadbalancer.healthcheck.headers.name1": "foobar", "traefik.http.services.service02.loadbalancer.healthcheck.headers.name1": "foobar",
"traefik.http.services.service01.loadbalancer.healthcheck.hostname": "foobar", "traefik.http.services.service02.loadbalancer.healthcheck.hostname": "foobar",
"traefik.http.services.service01.loadbalancer.healthcheck.interval": "foobar", "traefik.http.services.service02.loadbalancer.healthcheck.interval": "foobar",
"traefik.http.services.service01.loadbalancer.healthcheck.path": "foobar", "traefik.http.services.service02.loadbalancer.healthcheck.method": "foobar",
"traefik.http.services.service01.loadbalancer.healthcheck.method": "foobar", "traefik.http.services.service02.loadbalancer.healthcheck.path": "foobar",
"traefik.http.services.service01.loadbalancer.healthcheck.port": "42", "traefik.http.services.service02.loadbalancer.healthcheck.port": "42",
"traefik.http.services.service01.loadbalancer.healthcheck.scheme": "foobar", "traefik.http.services.service02.loadbalancer.healthcheck.scheme": "foobar",
"traefik.http.services.service01.loadbalancer.healthcheck.timeout": "foobar", "traefik.http.services.service02.loadbalancer.healthcheck.timeout": "foobar",
"traefik.http.services.service01.loadbalancer.passhostheader": "true", "traefik.http.services.service02.loadbalancer.passhostheader": "true",
"traefik.http.services.service01.loadbalancer.responseforwarding.flushinterval": "foobar", "traefik.http.services.service02.loadbalancer.responseforwarding.flushinterval": "foobar",
"traefik.http.services.service01.loadbalancer.serverstransport": "foobar", "traefik.http.services.service02.loadbalancer.serverstransport": "foobar",
"traefik.http.services.service01.loadbalancer.sticky.cookie": "true", "traefik.http.services.service02.loadbalancer.sticky": "true",
"traefik.http.services.service01.loadbalancer.sticky.cookie.httponly": "true", "traefik.http.services.service02.loadbalancer.sticky.cookie": "true",
"traefik.http.services.service01.loadbalancer.sticky.cookie.name": "foobar", "traefik.http.services.service02.loadbalancer.sticky.cookie.httponly": "true",
"traefik.http.services.service01.loadbalancer.sticky.cookie.samesite": "foobar", "traefik.http.services.service02.loadbalancer.sticky.cookie.name": "foobar",
"traefik.http.services.service01.loadbalancer.sticky.cookie.secure": "true", "traefik.http.services.service02.loadbalancer.sticky.cookie.samesite": "foobar",
"traefik.http.services.service01.loadbalancer.server.port": "foobar", "traefik.http.services.service02.loadbalancer.sticky.cookie.secure": "true",
"traefik.http.services.service01.loadbalancer.server.scheme": "foobar", "traefik.http.services.service02.loadbalancer.server.port": "foobar",
"traefik.tcp.middlewares.tcpmiddleware00.ipwhitelist.sourcerange": "foobar, foobar", "traefik.http.services.service02.loadbalancer.server.scheme": "foobar",
"traefik.tcp.middlewares.tcpmiddleware01.inflightconn.amount": "42", "traefik.tcp.middlewares.tcpmiddleware01.ipallowlist.sourcerange": "foobar, foobar",
"traefik.tcp.middlewares.tcpmiddleware02.ipallowlist.sourcerange": "foobar, foobar", "traefik.tcp.middlewares.tcpmiddleware02.ipwhitelist.sourcerange": "foobar, foobar",
"traefik.tcp.middlewares.tcpmiddleware03.inflightconn.amount": "42",
"traefik.tcp.routers.tcprouter0.entrypoints": "foobar, foobar", "traefik.tcp.routers.tcprouter0.entrypoints": "foobar, foobar",
"traefik.tcp.routers.tcprouter0.middlewares": "foobar, foobar", "traefik.tcp.routers.tcprouter0.middlewares": "foobar, foobar",
"traefik.tcp.routers.tcprouter0.rule": "foobar",
"traefik.tcp.routers.tcprouter0.priority": "42", "traefik.tcp.routers.tcprouter0.priority": "42",
"traefik.tcp.routers.tcprouter0.rule": "foobar",
"traefik.tcp.routers.tcprouter0.service": "foobar", "traefik.tcp.routers.tcprouter0.service": "foobar",
"traefik.tcp.routers.tcprouter0.tls": "true", "traefik.tcp.routers.tcprouter0.tls": "true",
"traefik.tcp.routers.tcprouter0.tls.certresolver": "foobar", "traefik.tcp.routers.tcprouter0.tls.certresolver": "foobar",
@ -186,8 +194,8 @@
"traefik.tcp.routers.tcprouter0.tls.passthrough": "true", "traefik.tcp.routers.tcprouter0.tls.passthrough": "true",
"traefik.tcp.routers.tcprouter1.entrypoints": "foobar, foobar", "traefik.tcp.routers.tcprouter1.entrypoints": "foobar, foobar",
"traefik.tcp.routers.tcprouter1.middlewares": "foobar, foobar", "traefik.tcp.routers.tcprouter1.middlewares": "foobar, foobar",
"traefik.tcp.routers.tcprouter1.rule": "foobar",
"traefik.tcp.routers.tcprouter1.priority": "42", "traefik.tcp.routers.tcprouter1.priority": "42",
"traefik.tcp.routers.tcprouter1.rule": "foobar",
"traefik.tcp.routers.tcprouter1.service": "foobar", "traefik.tcp.routers.tcprouter1.service": "foobar",
"traefik.tcp.routers.tcprouter1.tls": "true", "traefik.tcp.routers.tcprouter1.tls": "true",
"traefik.tcp.routers.tcprouter1.tls.certresolver": "foobar", "traefik.tcp.routers.tcprouter1.tls.certresolver": "foobar",
@ -197,6 +205,7 @@
"traefik.tcp.routers.tcprouter1.tls.domains[1].sans": "foobar, foobar", "traefik.tcp.routers.tcprouter1.tls.domains[1].sans": "foobar, foobar",
"traefik.tcp.routers.tcprouter1.tls.options": "foobar", "traefik.tcp.routers.tcprouter1.tls.options": "foobar",
"traefik.tcp.routers.tcprouter1.tls.passthrough": "true", "traefik.tcp.routers.tcprouter1.tls.passthrough": "true",
"traefik.tcp.services.tcpservice01.loadbalancer.proxyprotocol": "true",
"traefik.tcp.services.tcpservice01.loadbalancer.proxyprotocol.version": "42", "traefik.tcp.services.tcpservice01.loadbalancer.proxyprotocol.version": "42",
"traefik.tcp.services.tcpservice01.loadbalancer.terminationdelay": "42", "traefik.tcp.services.tcpservice01.loadbalancer.terminationdelay": "42",
"traefik.tcp.services.tcpservice01.loadbalancer.server.port": "foobar", "traefik.tcp.services.tcpservice01.loadbalancer.server.port": "foobar",
@ -205,13 +214,3 @@
"traefik.udp.routers.udprouter1.entrypoints": "foobar, foobar", "traefik.udp.routers.udprouter1.entrypoints": "foobar, foobar",
"traefik.udp.routers.udprouter1.service": "foobar", "traefik.udp.routers.udprouter1.service": "foobar",
"traefik.udp.services.udpservice01.loadbalancer.server.port": "foobar", "traefik.udp.services.udpservice01.loadbalancer.server.port": "foobar",
"traefik.tls.stores.Store0.defaultcertificate.certfile": "foobar",
"traefik.tls.stores.Store0.defaultcertificate.keyfile": "foobar",
"traefik.tls.stores.Store0.defaultgeneratedcert.domain.main": "foobar",
"traefik.tls.stores.Store0.defaultgeneratedcert.domain.sans": "foobar, foobar",
"traefik.tls.stores.Store0.defaultgeneratedcert.resolver": "foobar",
"traefik.tls.stores.Store1.defaultcertificate.certfile": "foobar",
"traefik.tls.stores.Store1.defaultcertificate.keyfile": "foobar",
"traefik.tls.stores.Store1.defaultgeneratedcert.domain.main": "foobar",
"traefik.tls.stores.Store1.defaultgeneratedcert.domain.sans": "foobar, foobar",
"traefik.tls.stores.Store1.defaultgeneratedcert.resolver": "foobar",

View file

@ -1,3 +1,5 @@
## CODE GENERATED AUTOMATICALLY
## THIS FILE MUST NOT BE EDITED BY HAND
[global] [global]
checkNewVersion = true checkNewVersion = true
sendAnonymousUsage = true sendAnonymousUsage = true
@ -15,8 +17,8 @@
[entryPoints.EntryPoint0] [entryPoints.EntryPoint0]
address = "foobar" address = "foobar"
[entryPoints.EntryPoint0.transport] [entryPoints.EntryPoint0.transport]
keepAliveMaxRequests = 42
keepAliveMaxTime = "42s" keepAliveMaxTime = "42s"
keepAliveMaxRequests = 42
[entryPoints.EntryPoint0.transport.lifeCycle] [entryPoints.EntryPoint0.transport.lifeCycle]
requestAcceptGraceTimeout = "42s" requestAcceptGraceTimeout = "42s"
graceTimeOut = "42s" graceTimeOut = "42s"
@ -183,10 +185,10 @@
constraints = "foobar" constraints = "foobar"
prefix = "foobar" prefix = "foobar"
stale = true stale = true
namespace = "foobar"
namespaces = ["foobar", "foobar"]
exposedByDefault = true exposedByDefault = true
refreshInterval = "42s" refreshInterval = "42s"
namespace = "foobar"
namespaces = ["foobar", "foobar"]
[providers.nomad.endpoint] [providers.nomad.endpoint]
address = "foobar" address = "foobar"
region = "foobar" region = "foobar"
@ -205,10 +207,10 @@
defaultRule = "foobar" defaultRule = "foobar"
clusters = ["foobar", "foobar"] clusters = ["foobar", "foobar"]
autoDiscoverClusters = true autoDiscoverClusters = true
ecsAnywhere = true
region = "foobar" region = "foobar"
accessKeyID = "foobar" accessKeyID = "foobar"
secretAccessKey = "foobar" secretAccessKey = "foobar"
ecsAnywhere = true
[providers.consul] [providers.consul]
rootKey = "foobar" rootKey = "foobar"
endpoints = ["foobar", "foobar"] endpoints = ["foobar", "foobar"]
@ -268,14 +270,18 @@
key = "foobar" key = "foobar"
insecureSkipVerify = true insecureSkipVerify = true
[providers.plugin] [providers.plugin]
[providers.plugin.Descriptor0] [providers.plugin.PluginConf0]
[providers.plugin.Descriptor1] name0 = "foobar"
name1 = "foobar"
[providers.plugin.PluginConf1]
name0 = "foobar"
name1 = "foobar"
[api] [api]
insecure = true insecure = true
dashboard = true dashboard = true
debug = true debug = true
disabledashboardad = false disableDashboardAd = true
[metrics] [metrics]
[metrics.prometheus] [metrics.prometheus]
@ -286,8 +292,8 @@
entryPoint = "foobar" entryPoint = "foobar"
manualRouting = true manualRouting = true
[metrics.prometheus.headerLabels] [metrics.prometheus.headerLabels]
label1 = "foobar" name0 = "foobar"
label2 = "foobar" name1 = "foobar"
[metrics.datadog] [metrics.datadog]
address = "foobar" address = "foobar"
pushInterval = "42s" pushInterval = "42s"
@ -383,15 +389,15 @@
localAgentHostPort = "foobar" localAgentHostPort = "foobar"
localAgentSocket = "foobar" localAgentSocket = "foobar"
globalTag = "foobar" globalTag = "foobar"
[tracing.datadog.globalTags]
tag1 = "foobar"
tag2 = "foobar"
debug = true debug = true
prioritySampling = true prioritySampling = true
traceIDHeaderName = "foobar" traceIDHeaderName = "foobar"
parentIDHeaderName = "foobar" parentIDHeaderName = "foobar"
samplingPriorityHeaderName = "foobar" samplingPriorityHeaderName = "foobar"
bagagePrefixHeaderName = "foobar" bagagePrefixHeaderName = "foobar"
[tracing.datadog.globalTags]
name0 = "foobar"
name1 = "foobar"
[tracing.instana] [tracing.instana]
localAgentHost = "foobar" localAgentHost = "foobar"
localAgentPort = 42 localAgentPort = 42
@ -455,6 +461,10 @@
entryPoint = "foobar" entryPoint = "foobar"
[certificatesResolvers.CertificateResolver1.acme.tlsChallenge] [certificatesResolvers.CertificateResolver1.acme.tlsChallenge]
[pilot]
token = "foobar"
dashboard = true
[experimental] [experimental]
kubernetesGateway = true kubernetesGateway = true
http3 = true http3 = true
@ -466,7 +476,7 @@
moduleName = "foobar" moduleName = "foobar"
version = "foobar" version = "foobar"
[experimental.localPlugins] [experimental.localPlugins]
[experimental.localPlugins.Descriptor0] [experimental.localPlugins.LocalDescriptor0]
moduleName = "foobar" moduleName = "foobar"
[experimental.localPlugins.Descriptor1] [experimental.localPlugins.LocalDescriptor1]
moduleName = "foobar" moduleName = "foobar"

View file

@ -1,3 +1,5 @@
## CODE GENERATED AUTOMATICALLY
## THIS FILE MUST NOT BE EDITED BY HAND
global: global:
checkNewVersion: true checkNewVersion: true
sendAnonymousUsage: true sendAnonymousUsage: true
@ -15,8 +17,6 @@ entryPoints:
EntryPoint0: EntryPoint0:
address: foobar address: foobar
transport: transport:
keepAliveMaxRequests: 42
keepAliveMaxTime: 42s
lifeCycle: lifeCycle:
requestAcceptGraceTimeout: 42s requestAcceptGraceTimeout: 42s
graceTimeOut: 42s graceTimeOut: 42s
@ -24,6 +24,8 @@ entryPoints:
readTimeout: 42s readTimeout: 42s
writeTimeout: 42s writeTimeout: 42s
idleTimeout: 42s idleTimeout: 42s
keepAliveMaxTime: 42s
keepAliveMaxRequests: 42
proxyProtocol: proxyProtocol:
insecure: true insecure: true
trustedIPs: trustedIPs:
@ -35,7 +37,6 @@ entryPoints:
- foobar - foobar
- foobar - foobar
http: http:
encodeQuerySemicolons: true
redirections: redirections:
entryPoint: entryPoint:
to: foobar to: foobar
@ -57,6 +58,7 @@ entryPoints:
sans: sans:
- foobar - foobar
- foobar - foobar
encodeQuerySemicolons: true
http2: http2:
maxConcurrentStreams: 42 maxConcurrentStreams: 42
http3: http3:
@ -120,13 +122,13 @@ providers:
- foobar - foobar
labelSelector: foobar labelSelector: foobar
ingressClass: foobar ingressClass: foobar
throttleDuration: 42s
allowEmptyServices: true
allowExternalNameServices: true
ingressEndpoint: ingressEndpoint:
ip: foobar ip: foobar
hostname: foobar hostname: foobar
publishedService: foobar publishedService: foobar
throttleDuration: 42s
allowEmptyServices: true
allowExternalNameServices: true
kubernetesCRD: kubernetesCRD:
endpoint: foobar endpoint: foobar
token: foobar token: foobar
@ -162,6 +164,21 @@ providers:
prefix: foobar prefix: foobar
consulCatalog: consulCatalog:
constraints: foobar constraints: foobar
endpoint:
address: foobar
scheme: foobar
datacenter: foobar
token: foobar
tls:
ca: foobar
caOptional: true
cert: foobar
key: foobar
insecureSkipVerify: true
httpAuth:
username: foobar
password: foobar
endpointWaitTime: 42s
prefix: foobar prefix: foobar
refreshInterval: 42s refreshInterval: 42s
requireConsistent: true requireConsistent: true
@ -177,43 +194,28 @@ providers:
namespaces: namespaces:
- foobar - foobar
- foobar - foobar
endpoint:
address: foobar
scheme: foobar
datacenter: foobar
token: foobar
endpointWaitTime: 42s
tls:
ca: foobar
caOptional: true
cert: foobar
key: foobar
insecureSkipVerify: true
httpAuth:
username: foobar
password: foobar
nomad: nomad:
defaultRule: foobar defaultRule: foobar
constraints: foobar constraints: foobar
prefix: foobar
stale: true
namespace: foobar
namespaces:
- foobar
- foobar
exposedByDefault: true
refreshInterval: 42s
endpoint: endpoint:
address: foobar address: foobar
region: foobar region: foobar
token: foobar token: foobar
endpointWaitTime: 42s
tls: tls:
ca: foobar ca: foobar
caOptional: true caOptional: true
cert: foobar cert: foobar
key: foobar key: foobar
insecureSkipVerify: true insecureSkipVerify: true
endpointWaitTime: 42s
prefix: foobar
stale: true
exposedByDefault: true
refreshInterval: 42s
namespace: foobar
namespaces:
- foobar
- foobar
ecs: ecs:
constraints: foobar constraints: foobar
exposedByDefault: true exposedByDefault: true
@ -223,39 +225,39 @@ providers:
- foobar - foobar
- foobar - foobar
autoDiscoverClusters: true autoDiscoverClusters: true
ecsAnywhere: true
region: foobar region: foobar
accessKeyID: foobar accessKeyID: foobar
secretAccessKey: foobar secretAccessKey: foobar
ecsAnywhere: true
consul: consul:
rootKey: foobar rootKey: foobar
endpoints: endpoints:
- foobar - foobar
- foobar - foobar
token: foobar token: foobar
namespace: foobar
namespaces:
- foobar
- foobar
tls: tls:
ca: foobar ca: foobar
caOptional: true caOptional: true
cert: foobar cert: foobar
key: foobar key: foobar
insecureSkipVerify: true insecureSkipVerify: true
namespace: foobar
namespaces:
- foobar
- foobar
etcd: etcd:
rootKey: foobar rootKey: foobar
endpoints: endpoints:
- foobar - foobar
- foobar - foobar
username: foobar
password: foobar
tls: tls:
ca: foobar ca: foobar
caOptional: true caOptional: true
cert: foobar cert: foobar
key: foobar key: foobar
insecureSkipVerify: true insecureSkipVerify: true
username: foobar
password: foobar
zooKeeper: zooKeeper:
rootKey: foobar rootKey: foobar
endpoints: endpoints:
@ -268,15 +270,15 @@ providers:
endpoints: endpoints:
- foobar - foobar
- foobar - foobar
username: foobar
password: foobar
db: 42
tls: tls:
ca: foobar ca: foobar
caOptional: true caOptional: true
cert: foobar cert: foobar
key: foobar key: foobar
insecureSkipVerify: true insecureSkipVerify: true
username: foobar
password: foobar
db: 42
sentinel: sentinel:
masterName: foobar masterName: foobar
username: foobar username: foobar
@ -296,13 +298,17 @@ providers:
key: foobar key: foobar
insecureSkipVerify: true insecureSkipVerify: true
plugin: plugin:
Descriptor0: {} PluginConf0:
Descriptor1: {} name0: foobar
name1: foobar
PluginConf1:
name0: foobar
name1: foobar
api: api:
insecure: true insecure: true
dashboard: true dashboard: true
debug: true debug: true
disabledashboardad: false disableDashboardAd: true
metrics: metrics:
prometheus: prometheus:
buckets: buckets:
@ -314,8 +320,8 @@ metrics:
entryPoint: foobar entryPoint: foobar
manualRouting: true manualRouting: true
headerLabels: headerLabels:
label1: foobar name0: foobar
label2: foobar name1: foobar
datadog: datadog:
address: foobar address: foobar
pushInterval: 42s pushInterval: 42s
@ -395,11 +401,11 @@ tracing:
gen128Bit: true gen128Bit: true
propagation: foobar propagation: foobar
traceContextHeaderName: foobar traceContextHeaderName: foobar
disableAttemptReconnecting: true
collector: collector:
endpoint: foobar endpoint: foobar
user: foobar user: foobar
password: foobar password: foobar
disableAttemptReconnecting: true
zipkin: zipkin:
httpEndpoint: foobar httpEndpoint: foobar
sameSpan: true sameSpan: true
@ -410,8 +416,8 @@ tracing:
localAgentSocket: foobar localAgentSocket: foobar
globalTag: foobar globalTag: foobar
globalTags: globalTags:
tag1: foobar name0: foobar
tag2: foobar name1: foobar
debug: true debug: true
prioritySampling: true prioritySampling: true
traceIDHeaderName: foobar traceIDHeaderName: foobar
@ -444,13 +450,13 @@ certificatesResolvers:
acme: acme:
email: foobar email: foobar
caServer: foobar caServer: foobar
certificatesDuration: 42
preferredChain: foobar preferredChain: foobar
storage: foobar storage: foobar
keyType: foobar keyType: foobar
eab: eab:
kid: foobar kid: foobar
hmacEncoded: foobar hmacEncoded: foobar
certificatesDuration: 42
dnsChallenge: dnsChallenge:
provider: foobar provider: foobar
delayBeforeCheck: 42s delayBeforeCheck: 42s
@ -465,13 +471,13 @@ certificatesResolvers:
acme: acme:
email: foobar email: foobar
caServer: foobar caServer: foobar
certificatesDuration: 42
preferredChain: foobar preferredChain: foobar
storage: foobar storage: foobar
keyType: foobar keyType: foobar
eab: eab:
kid: foobar kid: foobar
hmacEncoded: foobar hmacEncoded: foobar
certificatesDuration: 42
dnsChallenge: dnsChallenge:
provider: foobar provider: foobar
delayBeforeCheck: 42s delayBeforeCheck: 42s
@ -482,10 +488,10 @@ certificatesResolvers:
httpChallenge: httpChallenge:
entryPoint: foobar entryPoint: foobar
tlsChallenge: {} tlsChallenge: {}
pilot:
token: foobar
dashboard: true
experimental: experimental:
kubernetesGateway: true
http3: true
plugins: plugins:
Descriptor0: Descriptor0:
moduleName: foobar moduleName: foobar
@ -494,7 +500,9 @@ experimental:
moduleName: foobar moduleName: foobar
version: foobar version: foobar
localPlugins: localPlugins:
Descriptor0: LocalDescriptor0:
moduleName: foobar moduleName: foobar
Descriptor1: LocalDescriptor1:
moduleName: foobar moduleName: foobar
kubernetesGateway: true
http3: true

View file

@ -1,10 +1,13 @@
package main package main
import ( import (
"bytes"
"fmt" "fmt"
"io" "io"
"os" "os"
"path" "path"
"path/filepath"
"reflect"
"sort" "sort"
"strconv" "strconv"
"strings" "strings"
@ -15,10 +18,66 @@ import (
"github.com/traefik/paerser/generator" "github.com/traefik/paerser/generator"
"github.com/traefik/paerser/parser" "github.com/traefik/paerser/parser"
"github.com/traefik/traefik/v2/cmd" "github.com/traefik/traefik/v2/cmd"
"github.com/traefik/traefik/v2/pkg/collector/hydratation"
"github.com/traefik/traefik/v2/pkg/config/dynamic"
"github.com/traefik/traefik/v2/pkg/config/static"
"github.com/traefik/traefik/v2/pkg/log" "github.com/traefik/traefik/v2/pkg/log"
"gopkg.in/yaml.v3"
) )
var commentGenerated = `## CODE GENERATED AUTOMATICALLY
## THIS FILE MUST NOT BE EDITED BY HAND
`
func main() { func main() {
logger := log.WithoutContext()
dynConf := &dynamic.Configuration{}
err := hydratation.Hydrate(dynConf)
if err != nil {
logger.Fatal(err)
}
dynConf.HTTP.Models = map[string]*dynamic.Model{}
clean(dynConf.HTTP.Middlewares)
clean(dynConf.TCP.Middlewares)
clean(dynConf.HTTP.Services)
clean(dynConf.TCP.Services)
clean(dynConf.UDP.Services)
err = tomlWrite("./docs/content/reference/dynamic-configuration/file.toml", dynConf)
if err != nil {
logger.Fatal(err)
}
err = yamlWrite("./docs/content/reference/dynamic-configuration/file.yaml", dynConf)
if err != nil {
logger.Fatal(err)
}
err = labelsWrite("./docs/content/reference/dynamic-configuration", dynConf)
if err != nil {
logger.Fatal(err)
}
staticConf := &static.Configuration{}
err = hydratation.Hydrate(staticConf)
if err != nil {
logger.Fatal(err)
}
delete(staticConf.EntryPoints, "EntryPoint1")
err = tomlWrite("./docs/content/reference/static-configuration/file.toml", staticConf)
if err != nil {
logger.Fatal(err)
}
err = yamlWrite("./docs/content/reference/static-configuration/file.yaml", staticConf)
if err != nil {
logger.Fatal(err)
}
genStaticConfDoc("./docs/content/reference/static-configuration/env-ref.md", "", func(i interface{}) ([]parser.Flat, error) { genStaticConfDoc("./docs/content/reference/static-configuration/env-ref.md", "", func(i interface{}) ([]parser.Flat, error) {
return env.Encode(env.DefaultNamePrefix, i) return env.Encode(env.DefaultNamePrefix, i)
}) })
@ -26,6 +85,161 @@ func main() {
genKVDynConfDoc("./docs/content/reference/dynamic-configuration/kv-ref.md") genKVDynConfDoc("./docs/content/reference/dynamic-configuration/kv-ref.md")
} }
func labelsWrite(outputDir string, element *dynamic.Configuration) error {
cleanServers(element)
etnOpts := parser.EncoderToNodeOpts{OmitEmpty: true, TagName: parser.TagLabel, AllowSliceAsStruct: true}
node, err := parser.EncodeToNode(element, parser.DefaultRootName, etnOpts)
if err != nil {
return err
}
metaOpts := parser.MetadataOpts{TagName: parser.TagLabel, AllowSliceAsStruct: true}
err = parser.AddMetadata(element, node, metaOpts)
if err != nil {
return err
}
labels := make(map[string]string)
encodeNode(labels, node.Name, node)
var keys []string
for k := range labels {
keys = append(keys, k)
}
sort.Strings(keys)
dockerLabels, err := os.Create(filepath.Join(outputDir, "docker-labels.yml"))
if err != nil {
return err
}
defer dockerLabels.Close()
// Write the comment at the beginning of the file
if _, err := dockerLabels.WriteString(commentGenerated); err != nil {
return err
}
marathonLabels, err := os.Create(filepath.Join(outputDir, "marathon-labels.json"))
if err != nil {
return err
}
defer marathonLabels.Close()
// Write the comment at the beginning of the file
if _, err := marathonLabels.WriteString(strings.ReplaceAll(commentGenerated, "##", "//")); err != nil {
return err
}
for i, k := range keys {
v := labels[k]
if v != "" {
if v == "42000000000" {
v = "42s"
}
fmt.Fprintln(dockerLabels, `- "`+strings.ToLower(k)+`=`+v+`"`)
if i == len(keys)-1 {
fmt.Fprintln(marathonLabels, `"`+strings.ToLower(k)+`": "`+v+`"`)
} else {
fmt.Fprintln(marathonLabels, `"`+strings.ToLower(k)+`": "`+v+`",`)
}
}
}
return nil
}
func cleanServers(element *dynamic.Configuration) {
for _, svc := range element.HTTP.Services {
if svc.LoadBalancer != nil {
server := svc.LoadBalancer.Servers[0]
svc.LoadBalancer.Servers = nil
svc.LoadBalancer.Servers = append(svc.LoadBalancer.Servers, server)
}
}
for _, svc := range element.TCP.Services {
if svc.LoadBalancer != nil {
server := svc.LoadBalancer.Servers[0]
svc.LoadBalancer.Servers = nil
svc.LoadBalancer.Servers = append(svc.LoadBalancer.Servers, server)
}
}
for _, svc := range element.UDP.Services {
if svc.LoadBalancer != nil {
server := svc.LoadBalancer.Servers[0]
svc.LoadBalancer.Servers = nil
svc.LoadBalancer.Servers = append(svc.LoadBalancer.Servers, server)
}
}
}
func yamlWrite(outputFile string, element any) error {
file, err := os.OpenFile(outputFile, os.O_RDWR|os.O_CREATE|os.O_TRUNC, 0o666)
if err != nil {
return err
}
defer file.Close()
// Write the comment at the beginning of the file
if _, err := file.WriteString(commentGenerated); err != nil {
return err
}
buf := new(bytes.Buffer)
encoder := yaml.NewEncoder(buf)
encoder.SetIndent(2)
err = encoder.Encode(element)
if err != nil {
return err
}
_, err = file.Write(buf.Bytes())
return err
}
func tomlWrite(outputFile string, element any) error {
file, err := os.OpenFile(outputFile, os.O_RDWR|os.O_CREATE|os.O_TRUNC, 0o666)
if err != nil {
return err
}
defer file.Close()
// Write the comment at the beginning of the file
if _, err := file.WriteString(commentGenerated); err != nil {
return err
}
return toml.NewEncoder(file).Encode(element)
}
func clean(element any) {
valSvcs := reflect.ValueOf(element)
key := valSvcs.MapKeys()[0]
valueSvcRoot := valSvcs.MapIndex(key).Elem()
var svcFieldNames []string
for i := 0; i < valueSvcRoot.NumField(); i++ {
svcFieldNames = append(svcFieldNames, valueSvcRoot.Type().Field(i).Name)
}
sort.Strings(svcFieldNames)
for i, fieldName := range svcFieldNames {
v := reflect.New(valueSvcRoot.Type())
v.Elem().FieldByName(fieldName).Set(valueSvcRoot.FieldByName(fieldName))
valSvcs.SetMapIndex(reflect.ValueOf(fmt.Sprintf("%s%.2d", valueSvcRoot.Type().Name(), i+1)), v)
}
valSvcs.SetMapIndex(reflect.ValueOf(fmt.Sprintf("%s0", valueSvcRoot.Type().Name())), reflect.Value{})
valSvcs.SetMapIndex(reflect.ValueOf(fmt.Sprintf("%s1", valueSvcRoot.Type().Name())), reflect.Value{})
}
func genStaticConfDoc(outputFile, prefix string, encodeFn func(interface{}) ([]parser.Flat, error)) { func genStaticConfDoc(outputFile, prefix string, encodeFn func(interface{}) ([]parser.Flat, error)) {
logger := log.WithoutContext().WithField("file", outputFile) logger := log.WithoutContext().WithField("file", outputFile)
@ -117,6 +331,7 @@ func genKVDynConfDoc(outputFile string) {
} }
store := storeWriter{data: map[string]string{}} store := storeWriter{data: map[string]string{}}
c := client{store: store} c := client{store: store}
err = c.load("traefik", conf) err = c.load("traefik", conf)
if err != nil { if err != nil {
@ -130,6 +345,12 @@ func genKVDynConfDoc(outputFile string) {
sort.Strings(keys) sort.Strings(keys)
_, _ = fmt.Fprintf(file, `<!--
CODE GENERATED AUTOMATICALLY
THIS FILE MUST NOT BE EDITED BY HAND
-->
`)
for _, k := range keys { for _, k := range keys {
_, _ = fmt.Fprintf(file, "| `%s` | `%s` |\n", k, store.data[k]) _, _ = fmt.Fprintf(file, "| `%s` | `%s` |\n", k, store.data[k])
} }

66
internal/parser.go Normal file
View file

@ -0,0 +1,66 @@
package main
import (
"fmt"
"reflect"
"strings"
"github.com/traefik/paerser/parser"
)
func encodeNode(labels map[string]string, root string, node *parser.Node) {
for _, child := range node.Children {
if child.Disabled {
continue
}
var sep string
if child.Name[0] != '[' {
sep = "."
}
childName := root + sep + child.Name
if child.RawValue != nil {
encodeRawValue(labels, childName, child.RawValue)
continue
}
if strings.Contains(child.Tag.Get(parser.TagLabel), parser.TagLabelAllowEmpty) {
labels[childName] = "true"
}
if len(child.Children) > 0 {
encodeNode(labels, childName, child)
} else if len(child.Name) > 0 {
labels[childName] = child.Value
}
}
}
func encodeRawValue(labels map[string]string, root string, rawValue interface{}) {
if rawValue == nil {
return
}
tValue := reflect.TypeOf(rawValue)
if tValue.Kind() == reflect.Map && tValue.Elem().Kind() == reflect.Interface {
r := reflect.ValueOf(rawValue).
Convert(reflect.TypeOf((map[string]interface{})(nil))).
Interface().(map[string]interface{})
for k, v := range r {
switch tv := v.(type) {
case string:
labels[root+"."+k] = tv
case []interface{}:
for i, e := range tv {
encodeRawValue(labels, fmt.Sprintf("%s.%s[%d]", root, k, i), e)
}
default:
encodeRawValue(labels, root+"."+k, v)
}
}
}
}

View file

@ -5,13 +5,14 @@ import (
"github.com/stretchr/testify/assert" "github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require" "github.com/stretchr/testify/require"
"github.com/traefik/traefik/v2/pkg/collector/hydratation"
"github.com/traefik/traefik/v2/pkg/config/static" "github.com/traefik/traefik/v2/pkg/config/static"
) )
func Test_createBody(t *testing.T) { func Test_createBody(t *testing.T) {
var staticConfiguration static.Configuration var staticConfiguration static.Configuration
err := hydrate(&staticConfiguration) err := hydratation.Hydrate(&staticConfiguration)
require.NoError(t, err) require.NoError(t, err)
buffer, err := createBody(&staticConfiguration) buffer, err := createBody(&staticConfiguration)

View file

@ -1,4 +1,4 @@
package collector package hydratation
import ( import (
"fmt" "fmt"
@ -17,7 +17,8 @@ const (
defaultMapKeyPrefix = "name" defaultMapKeyPrefix = "name"
) )
func hydrate(element interface{}) error { // Hydrate hydrates a configuration.
func Hydrate(element interface{}) error {
field := reflect.ValueOf(element) field := reflect.ValueOf(element)
return fill(field) return fill(field)
} }
@ -41,9 +42,7 @@ func fill(field reflect.Value) error {
return err return err
} }
case reflect.Interface: case reflect.Interface:
if err := fill(field.Elem()); err != nil { setTyped(field, defaultString)
return err
}
case reflect.String: case reflect.String:
setTyped(field, defaultString) setTyped(field, defaultString)
case reflect.Int: case reflect.Int:
@ -118,7 +117,7 @@ func makeKeyName(typ reflect.Type) string {
case reflect.String, case reflect.String,
reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64, reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64,
reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64,
reflect.Bool, reflect.Float32, reflect.Float64: reflect.Bool, reflect.Float32, reflect.Float64, reflect.Interface:
return defaultMapKeyPrefix return defaultMapKeyPrefix
default: default:
return typ.Name() return typ.Name()

View file

@ -24,7 +24,7 @@ type Configuration struct {
HTTP *HTTPConfiguration `json:"http,omitempty" toml:"http,omitempty" yaml:"http,omitempty" export:"true"` HTTP *HTTPConfiguration `json:"http,omitempty" toml:"http,omitempty" yaml:"http,omitempty" export:"true"`
TCP *TCPConfiguration `json:"tcp,omitempty" toml:"tcp,omitempty" yaml:"tcp,omitempty" export:"true"` TCP *TCPConfiguration `json:"tcp,omitempty" toml:"tcp,omitempty" yaml:"tcp,omitempty" export:"true"`
UDP *UDPConfiguration `json:"udp,omitempty" toml:"udp,omitempty" yaml:"udp,omitempty" export:"true"` UDP *UDPConfiguration `json:"udp,omitempty" toml:"udp,omitempty" yaml:"udp,omitempty" export:"true"`
TLS *TLSConfiguration `json:"tls,omitempty" toml:"tls,omitempty" yaml:"tls,omitempty" export:"true"` TLS *TLSConfiguration `json:"tls,omitempty" toml:"tls,omitempty" yaml:"tls,omitempty" label:"-" export:"true"`
} }
// +k8s:deepcopy-gen=true // +k8s:deepcopy-gen=true