From c820d18ada0d2a2a459d6e613be340034677bc3a Mon Sep 17 00:00:00 2001
From: Ludovic Fernandez
Date: Mon, 11 Aug 2025 14:44:05 +0200
Subject: [PATCH 01/33] Bump github.com/go-acme/lego/v4 to v4.25.2
---
docs/content/https/acme.md | 15 +-
go.mod | 178 +++++------
go.sum | 470 +++++++++++++++++------------
pkg/config/static/static_config.go | 19 ++
4 files changed, 404 insertions(+), 278 deletions(-)
diff --git a/docs/content/https/acme.md b/docs/content/https/acme.md
index e0612e411..eb9245650 100644
--- a/docs/content/https/acme.md
+++ b/docs/content/https/acme.md
@@ -324,13 +324,14 @@ For complete details, refer to your provider's _Additional configuration_ link.
| [Auroradns](https://www.pcextreme.com/dns-health-checks) | `auroradns` | `AURORA_USER_ID`, `AURORA_KEY`, `AURORA_ENDPOINT` | [Additional configuration](https://go-acme.github.io/lego/dns/auroradns) |
| [Autodns](https://www.internetx.com/domains/autodns/) | `autodns` | `AUTODNS_API_USER`, `AUTODNS_API_PASSWORD` | [Additional configuration](https://go-acme.github.io/lego/dns/autodns) |
| [Axelname](https://axelname.ru) | `axelname` | `AXELNAME_NICKNAME`, `AXELNAME_TOKEN` | [Additional configuration](https://go-acme.github.io/lego/dns/axelname) |
-| [Azure](https://azure.microsoft.com/services/dns/) (DEPRECATED) | `azure` | `AZURE_CLIENT_ID`, `AZURE_CLIENT_SECRET`, `AZURE_SUBSCRIPTION_ID`, `AZURE_TENANT_ID`, `AZURE_RESOURCE_GROUP`, `[AZURE_METADATA_ENDPOINT]` | [Additional configuration](https://go-acme.github.io/lego/dns/azure) |
+| [Azion](https://www.azion.com/en/products/edge-dns/) | `azion` | `AZION_PERSONAL_TOKEN` | [Additional configuration](https://go-acme.github.io/lego/dns/azion) |
+| [Azure](https://azure.microsoft.com/services/dns/) (DEPRECATED) | `azure` | DEPRECATED use `azuredns` instead. | [Additional configuration](https://go-acme.github.io/lego/dns/azure) |
| [AzureDNS](https://azure.microsoft.com/services/dns/) | `azuredns` | `AZURE_CLIENT_ID`, `AZURE_CLIENT_SECRET`, `AZURE_TENANT_ID`, `AZURE_SUBSCRIPTION_ID`, `AZURE_RESOURCE_GROUP`, `[AZURE_ENVIRONMENT]`, `[AZURE_PRIVATE_ZONE]`, `[AZURE_ZONE_NAME]` | [Additional configuration](https://go-acme.github.io/lego/dns/azuredns) |
| [Baidu Cloud](https://cloud.baidu.com) | `baiducloud` | `BAIDUCLOUD_ACCESS_KEY_ID`, `BAIDUCLOUD_SECRET_ACCESS_KEY` | [Additional configuration](https://go-acme.github.io/lego/dns/baiducloud) |
| [Bindman](https://github.com/labbsr0x/bindman-dns-webhook) | `bindman` | `BINDMAN_MANAGER_ADDRESS` | [Additional configuration](https://go-acme.github.io/lego/dns/bindman) |
| [Blue Cat](https://www.bluecatnetworks.com/) | `bluecat` | `BLUECAT_SERVER_URL`, `BLUECAT_USER_NAME`, `BLUECAT_PASSWORD`, `BLUECAT_CONFIG_NAME`, `BLUECAT_DNS_VIEW` | [Additional configuration](https://go-acme.github.io/lego/dns/bluecat) |
| [BookMyName](https://www.bookmyname.com) | `bookmyname` | `BOOKMYNAME_USERNAME`, `BOOKMYNAME_PASSWORD` | [Additional configuration](https://go-acme.github.io/lego/dns/bookmyname) |
-| [Brandit](https://www.brandit.com) (DEPRECATED) | `brandit` | `BRANDIT_API_USERNAME`, `BRANDIT_API_KEY` | [Additional configuration](https://go-acme.github.io/lego/dns/brandit) |
+| [Brandit](https://www.brandit.com) (DEPRECATED) | `brandit` | DEPRECATED | [Additional configuration](https://go-acme.github.io/lego/dns/brandit) |
| [Bunny](https://bunny.net) | `bunny` | `BUNNY_API_KEY` | [Additional configuration](https://go-acme.github.io/lego/dns/bunny) |
| [Checkdomain](https://www.checkdomain.de/) | `checkdomain` | `CHECKDOMAIN_TOKEN`, | [Additional configuration](https://go-acme.github.io/lego/dns/checkdomain/) |
| [Civo](https://www.civo.com/) | `civo` | `CIVO_TOKEN` | [Additional configuration](https://go-acme.github.io/lego/dns/civo) |
@@ -338,7 +339,8 @@ For complete details, refer to your provider's _Additional configuration_ link.
| [CloudDNS](https://vshosting.eu/) | `clouddns` | `CLOUDDNS_CLIENT_ID`, `CLOUDDNS_EMAIL`, `CLOUDDNS_PASSWORD` | [Additional configuration](https://go-acme.github.io/lego/dns/clouddns) |
| [Cloudflare](https://www.cloudflare.com) | `cloudflare` | `CF_API_EMAIL`, `CF_API_KEY` [^5] or `CF_DNS_API_TOKEN`, `[CF_ZONE_API_TOKEN]` | [Additional configuration](https://go-acme.github.io/lego/dns/cloudflare) |
| [ClouDNS](https://www.cloudns.net/) | `cloudns` | `CLOUDNS_AUTH_ID`, `CLOUDNS_AUTH_PASSWORD` | [Additional configuration](https://go-acme.github.io/lego/dns/cloudns) |
-| [CloudXNS](https://www.cloudxns.net) (DEPRECATED) | `cloudxns` | `CLOUDXNS_API_KEY`, `CLOUDXNS_SECRET_KEY` | [Additional configuration](https://go-acme.github.io/lego/dns/cloudxns) |
+| [CloudXNS](https://www.cloudxns.net) (DEPRECATED) | `cloudxns` | DEPRECATED | [Additional configuration](https://go-acme.github.io/lego/dns/cloudxns) |
+| [ConoHa v3](https://www.conoha.jp/) | `conohav3` | `CONOHAV3_TENANT_ID`, `CONOHAV3_API_USER_ID`, `CONOHAV3_API_PASSWORD` | [Additional configuration](https://go-acme.github.io/lego/dns/conohav3) |
| [ConoHa](https://www.conoha.jp) | `conoha` | `CONOHA_TENANT_ID`, `CONOHA_API_USERNAME`, `CONOHA_API_PASSWORD` | [Additional configuration](https://go-acme.github.io/lego/dns/conoha) |
| [Constellix](https://constellix.com) | `constellix` | `CONSTELLIX_API_KEY`, `CONSTELLIX_SECRET_KEY` | [Additional configuration](https://go-acme.github.io/lego/dns/constellix) |
| [Core-Networks](https://www.core-networks.de) | `corenetworks` | `CORENETWORKS_LOGIN`, `CORENETWORKS_PASSWORD` | [Additional configuration](https://go-acme.github.io/lego/dns/corenetworks) |
@@ -350,12 +352,13 @@ For complete details, refer to your provider's _Additional configuration_ link.
| [DNS Made Easy](https://dnsmadeeasy.com) | `dnsmadeeasy` | `DNSMADEEASY_API_KEY`, `DNSMADEEASY_API_SECRET`, `DNSMADEEASY_SANDBOX` | [Additional configuration](https://go-acme.github.io/lego/dns/dnsmadeeasy) |
| [dnsHome.de](https://www.dnshome.de) | `dnsHomede` | `DNSHOMEDE_CREDENTIALS` | [Additional configuration](https://go-acme.github.io/lego/dns/dnshomede) |
| [DNSimple](https://dnsimple.com) | `dnsimple` | `DNSIMPLE_OAUTH_TOKEN`, `DNSIMPLE_BASE_URL` | [Additional configuration](https://go-acme.github.io/lego/dns/dnsimple) |
-| [DNSPod](https://www.dnspod.com/) | `dnspod` | `DNSPOD_API_KEY` | [Additional configuration](https://go-acme.github.io/lego/dns/dnspod) |
+| [DNSPod](https://www.dnspod.com/) (DEPRECATED) | `dnspod` | DEPRECATED use `tencentcloud` instead. | [Additional configuration](https://go-acme.github.io/lego/dns/dnspod) |
| [Domain Offensive (do.de)](https://www.do.de/) | `dode` | `DODE_TOKEN` | [Additional configuration](https://go-acme.github.io/lego/dns/dode) |
| [Domeneshop](https://domene.shop) | `domeneshop` | `DOMENESHOP_API_TOKEN`, `DOMENESHOP_API_SECRET` | [Additional configuration](https://go-acme.github.io/lego/dns/domeneshop) |
| [DreamHost](https://www.dreamhost.com/) | `dreamhost` | `DREAMHOST_API_KEY` | [Additional configuration](https://go-acme.github.io/lego/dns/dreamhost) |
| [Duck DNS](https://www.duckdns.org/) | `duckdns` | `DUCKDNS_TOKEN` | [Additional configuration](https://go-acme.github.io/lego/dns/duckdns) |
| [Dyn](https://dyn.com) | `dyn` | `DYN_CUSTOMER_NAME`, `DYN_USER_NAME`, `DYN_PASSWORD` | [Additional configuration](https://go-acme.github.io/lego/dns/dyn) |
+| [DynDnsFree.de](https://www.dyndnsfree.de) | `dyndnsfree` | `DYNDNSFREE_USERNAME`, `DYNDNSFREE_PASSWORD` | [Additional configuration](https://go-acme.github.io/lego/dns/dyndnsfree) |
| [Dynu](https://www.dynu.com) | `dynu` | `DYNU_API_KEY` | [Additional configuration](https://go-acme.github.io/lego/dns/dynu) |
| [EasyDNS](https://easydns.com/) | `easydns` | `EASYDNS_TOKEN`, `EASYDNS_KEY` | [Additional configuration](https://go-acme.github.io/lego/dns/easydns) |
| [EdgeDNS](https://www.akamai.com/) | `edgedns` | `AKAMAI_CLIENT_TOKEN`, `AKAMAI_CLIENT_SECRET`, `AKAMAI_ACCESS_TOKEN` | [Additional configuration](https://go-acme.github.io/lego/dns/edgedns) |
@@ -371,7 +374,7 @@ For complete details, refer to your provider's _Additional configuration_ link.
| [Glesys](https://glesys.com/) | `glesys` | `GLESYS_API_USER`, `GLESYS_API_KEY`, `GLESYS_DOMAIN` | [Additional configuration](https://go-acme.github.io/lego/dns/glesys) |
| [GoDaddy](https://www.godaddy.com) | `godaddy` | `GODADDY_API_KEY`, `GODADDY_API_SECRET` | [Additional configuration](https://go-acme.github.io/lego/dns/godaddy) |
| [Google Cloud DNS](https://cloud.google.com/dns/docs/) | `gcloud` | `GCE_PROJECT`, Application Default Credentials [^2] [^3], [`GCE_SERVICE_ACCOUNT_FILE`] | [Additional configuration](https://go-acme.github.io/lego/dns/gcloud) |
-| [Google Domains](https://domains.google) | `googledomains` | `GOOGLE_DOMAINS_ACCESS_TOKEN` | [Additional configuration](https://go-acme.github.io/lego/dns/googledomains) |
+| [Google Domains](https://domains.google) (DEPRECATED) | `googledomains` | DEPRECATED | [Additional configuration](https://go-acme.github.io/lego/dns/googledomains) |
| [Hetzner](https://hetzner.com) | `hetzner` | `HETZNER_API_KEY` | [Additional configuration](https://go-acme.github.io/lego/dns/hetzner) |
| [hosting.de](https://www.hosting.de) | `hostingde` | `HOSTINGDE_API_KEY`, `HOSTINGDE_ZONE_NAME` | [Additional configuration](https://go-acme.github.io/lego/dns/hostingde) |
| [Hosttech](https://www.hosttech.eu) | `hosttech` | `HOSTTECH_API_KEY` | [Additional configuration](https://go-acme.github.io/lego/dns/hosttech) |
@@ -432,6 +435,7 @@ For complete details, refer to your provider's _Additional configuration_ link.
| [RFC2136](https://tools.ietf.org/html/rfc2136) | `rfc2136` | `RFC2136_TSIG_KEY`, `RFC2136_TSIG_SECRET`, `RFC2136_TSIG_ALGORITHM`, `RFC2136_NAMESERVER` | [Additional configuration](https://go-acme.github.io/lego/dns/rfc2136) |
| [RimuHosting](https://rimuhosting.com) | `rimuhosting` | `RIMUHOSTING_API_KEY` | [Additional configuration](https://go-acme.github.io/lego/dns/rimuhosting) |
| [Route 53](https://aws.amazon.com/route53/) | `route53` | `AWS_ACCESS_KEY_ID`, `AWS_SECRET_ACCESS_KEY`, `[AWS_REGION]`, `[AWS_HOSTED_ZONE_ID]` or a configured user/instance IAM profile. | [Additional configuration](https://go-acme.github.io/lego/dns/route53) |
+| [RU Center](https://nic.ru/) | `nicru` | `NICRU_USER`, `NICRU_PASSWORD`, `NICRU_SERVICE_ID`, `NICRU_SECRET`, `NICRU_SERVICE_NAME` | [Additional configuration](https://go-acme.github.io/lego/dns/nicru) |
| [Sakura Cloud](https://cloud.sakura.ad.jp/) | `sakuracloud` | `SAKURACLOUD_ACCESS_TOKEN`, `SAKURACLOUD_ACCESS_TOKEN_SECRET` | [Additional configuration](https://go-acme.github.io/lego/dns/sakuracloud) |
| [Scaleway](https://www.scaleway.com) | `scaleway` | `SCW_API_TOKEN` | [Additional configuration](https://go-acme.github.io/lego/dns/scaleway) |
| [Selectel v2](https://selectel.ru/en/) | `selectelv2` | `SELECTELV2_ACCOUNT_ID`, `SELECTELV2_PASSWORD`, `SELECTELV2_PROJECT_ID`, `SELECTELV2_USERNAME` | [Additional configuration](https://go-acme.github.io/lego/dns/selectelv2) |
@@ -466,6 +470,7 @@ For complete details, refer to your provider's _Additional configuration_ link.
| [Yandex Cloud](https://cloud.yandex.com/en/) | `yandexcloud` | `YANDEX_CLOUD_FOLDER_ID`, `YANDEX_CLOUD_IAM_TOKEN` | [Additional configuration](https://go-acme.github.io/lego/dns/yandexcloud) |
| [Yandex](https://yandex.com) | `yandex` | `YANDEX_PDD_TOKEN` | [Additional configuration](https://go-acme.github.io/lego/dns/yandex) |
| [Zone.ee](https://www.zone.ee) | `zoneee` | `ZONEEE_API_USER`, `ZONEEE_API_KEY` | [Additional configuration](https://go-acme.github.io/lego/dns/zoneee) |
+| [ZoneEdit](https://www.zoneedit.com) | `zoneedit` | `ZONEEDIT_USER`, `ZONEEDIT_AUTH_TOKEN` | [Additional configuration](https://go-acme.github.io/lego/dns/zoneedit) |
| [Zonomi](https://zonomi.com) | `zonomi` | `ZONOMI_API_KEY` | [Additional configuration](https://go-acme.github.io/lego/dns/zonomi) |
| External Program | `exec` | `EXEC_PATH` | [Additional configuration](https://go-acme.github.io/lego/dns/exec) |
| HTTP request | `httpreq` | `HTTPREQ_ENDPOINT`, `HTTPREQ_MODE`, `HTTPREQ_USERNAME`, `HTTPREQ_PASSWORD` [^1] | [Additional configuration](https://go-acme.github.io/lego/dns/httpreq) |
diff --git a/go.mod b/go.mod
index ed26d8275..d5ad3505d 100644
--- a/go.mod
+++ b/go.mod
@@ -7,13 +7,13 @@ require (
github.com/ExpediaDotCom/haystack-client-go v0.0.0-20190315171017-e7edbdf53a61 // No tag on the repo.
github.com/Masterminds/sprig/v3 v3.2.3
github.com/abbot/go-http-auth v0.0.0-00010101000000-000000000000
- github.com/aws/aws-sdk-go-v2 v1.36.3
- github.com/aws/aws-sdk-go-v2/config v1.29.9
- github.com/aws/aws-sdk-go-v2/credentials v1.17.62
+ github.com/aws/aws-sdk-go-v2 v1.36.6
+ github.com/aws/aws-sdk-go-v2/config v1.29.18
+ github.com/aws/aws-sdk-go-v2/credentials v1.17.71
github.com/aws/aws-sdk-go-v2/service/ec2 v1.203.1
github.com/aws/aws-sdk-go-v2/service/ecs v1.53.15
github.com/aws/aws-sdk-go-v2/service/ssm v1.56.13
- github.com/aws/smithy-go v1.22.2
+ github.com/aws/smithy-go v1.22.4
github.com/cenkalti/backoff/v4 v4.3.0
github.com/containous/alice v0.0.0-20181107144136-d83ebdd94cbd // No tag on the repo.
github.com/coreos/go-systemd/v22 v22.5.0
@@ -21,9 +21,9 @@ require (
github.com/docker/docker v27.1.1+incompatible
github.com/docker/go-connections v0.5.0
github.com/fatih/structs v1.1.0
- github.com/fsnotify/fsnotify v1.8.0
+ github.com/fsnotify/fsnotify v1.9.0
github.com/gambol99/go-marathon v0.0.0-20180614232016-99a156b96fb2 // No tag on the repo.
- github.com/go-acme/lego/v4 v4.23.1
+ github.com/go-acme/lego/v4 v4.25.2
github.com/go-kit/kit v0.13.0
github.com/go-kit/log v0.2.1
github.com/golang/protobuf v1.5.4
@@ -45,7 +45,7 @@ require (
github.com/kvtools/valkeyrie v1.0.0
github.com/kvtools/zookeeper v1.0.2
github.com/mailgun/ttlmap v0.0.0-20170619185759-c1c17f74874f // No tag on the repo.
- github.com/miekg/dns v1.1.64
+ github.com/miekg/dns v1.1.67
github.com/mitchellh/copystructure v1.2.0
github.com/mitchellh/hashstructure v1.0.0
github.com/mitchellh/mapstructure v1.5.1-0.20231216201459-8508981c8b6c
@@ -73,12 +73,12 @@ require (
github.com/vulcand/predicate v1.2.0
go.elastic.co/apm/module/apmot/v2 v2.4.8
go.elastic.co/apm/v2 v2.4.8
- golang.org/x/mod v0.23.0
- golang.org/x/net v0.38.0
- golang.org/x/text v0.23.0
- golang.org/x/time v0.11.0
- golang.org/x/tools v0.30.0
- google.golang.org/grpc v1.71.0
+ golang.org/x/mod v0.25.0
+ golang.org/x/net v0.42.0
+ golang.org/x/text v0.27.0
+ golang.org/x/time v0.12.0
+ golang.org/x/tools v0.34.0
+ google.golang.org/grpc v1.73.0
gopkg.in/DataDog/dd-trace-go.v1 v1.72.2
gopkg.in/yaml.v3 v3.0.1
k8s.io/api v0.26.7
@@ -91,15 +91,15 @@ require (
)
require (
- cloud.google.com/go/auth v0.15.0 // indirect
- cloud.google.com/go/auth/oauth2adapt v0.2.7 // indirect
- cloud.google.com/go/compute/metadata v0.6.0 // indirect
+ cloud.google.com/go/auth v0.16.2 // indirect
+ cloud.google.com/go/auth/oauth2adapt v0.2.8 // indirect
+ cloud.google.com/go/compute/metadata v0.7.0 // indirect
dario.cat/mergo v1.0.0 // indirect
github.com/AdamSLevy/jsonrpc2/v14 v14.1.0 // indirect
github.com/Azure/azure-sdk-for-go v68.0.0+incompatible // indirect
- github.com/Azure/azure-sdk-for-go/sdk/azcore v1.17.1 // indirect
- github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.8.2 // indirect
- github.com/Azure/azure-sdk-for-go/sdk/internal v1.10.0 // indirect
+ github.com/Azure/azure-sdk-for-go/sdk/azcore v1.18.1 // indirect
+ github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.10.1 // indirect
+ github.com/Azure/azure-sdk-for-go/sdk/internal v1.11.1 // indirect
github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/dns/armdns v1.2.0 // indirect
github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/privatedns/armprivatedns v1.3.0 // indirect
github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/resourcegraph/armresourcegraph v0.9.0 // indirect
@@ -113,7 +113,7 @@ require (
github.com/Azure/go-autorest/autorest/to v0.4.1 // indirect
github.com/Azure/go-autorest/logger v0.2.1 // indirect
github.com/Azure/go-autorest/tracing v0.6.0 // indirect
- github.com/AzureAD/microsoft-authentication-library-for-go v1.3.3 // indirect
+ github.com/AzureAD/microsoft-authentication-library-for-go v1.4.2 // indirect
github.com/DataDog/appsec-internal-go v1.9.0 // indirect
github.com/DataDog/datadog-agent/pkg/obfuscate v0.58.0 // indirect
github.com/DataDog/datadog-agent/pkg/proto v0.58.0 // indirect
@@ -136,28 +136,35 @@ require (
github.com/OpenDNS/vegadns2client v0.0.0-20180418235048-a3fa4a771d87 // indirect
github.com/VividCortex/gohistogram v1.0.0 // indirect
github.com/akamai/AkamaiOPEN-edgegrid-golang v1.2.2 // indirect
- github.com/aliyun/alibaba-cloud-sdk-go v1.63.100 // indirect
+ github.com/alibabacloud-go/alibabacloud-gateway-spi v0.0.5 // indirect
+ github.com/alibabacloud-go/darabonba-openapi/v2 v2.1.8 // indirect
+ github.com/alibabacloud-go/debug v1.0.1 // indirect
+ github.com/alibabacloud-go/endpoint-util v1.1.0 // indirect
+ github.com/alibabacloud-go/openapi-util v0.1.1 // indirect
+ github.com/alibabacloud-go/tea v1.3.9 // indirect
+ github.com/alibabacloud-go/tea-utils/v2 v2.0.7 // indirect
+ github.com/aliyun/credentials-go v1.4.6 // indirect
github.com/armon/go-metrics v0.4.1 // indirect
github.com/armon/go-radix v1.0.1-0.20221118154546-54df44f2176c // indirect
- github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.30 // indirect
- github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.34 // indirect
- github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.34 // indirect
+ github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.33 // indirect
+ github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.37 // indirect
+ github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.37 // indirect
github.com/aws/aws-sdk-go-v2/internal/ini v1.8.3 // indirect
- github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.12.3 // indirect
- github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.12.15 // indirect
- github.com/aws/aws-sdk-go-v2/service/lightsail v1.43.1 // indirect
- github.com/aws/aws-sdk-go-v2/service/route53 v1.50.0 // indirect
- github.com/aws/aws-sdk-go-v2/service/sso v1.25.1 // indirect
- github.com/aws/aws-sdk-go-v2/service/ssooidc v1.29.1 // indirect
- github.com/aws/aws-sdk-go-v2/service/sts v1.33.17 // indirect
- github.com/baidubce/bce-sdk-go v0.9.223 // indirect
+ github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.12.4 // indirect
+ github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.12.18 // indirect
+ github.com/aws/aws-sdk-go-v2/service/lightsail v1.43.5 // indirect
+ github.com/aws/aws-sdk-go-v2/service/route53 v1.53.1 // indirect
+ github.com/aws/aws-sdk-go-v2/service/sso v1.25.6 // indirect
+ github.com/aws/aws-sdk-go-v2/service/ssooidc v1.30.4 // indirect
+ github.com/aws/aws-sdk-go-v2/service/sts v1.34.1 // indirect
+ github.com/aziontech/azionapi-go-sdk v0.142.0 // indirect
+ github.com/baidubce/bce-sdk-go v0.9.235 // indirect
github.com/benbjohnson/clock v1.3.0 // indirect
github.com/beorn7/perks v1.0.1 // indirect
github.com/boombuler/barcode v1.0.1-0.20190219062509-6c824513bacc // indirect
github.com/cespare/xxhash/v2 v2.3.0 // indirect
github.com/cihub/seelog v0.0.0-20170130134532-f561c5e57575 // indirect
- github.com/civo/civogo v0.3.11 // indirect
- github.com/cloudflare/cloudflare-go v0.115.0 // indirect
+ github.com/clbanning/mxj/v2 v2.7.0 // indirect
github.com/containerd/containerd v1.7.20 // indirect
github.com/containerd/log v0.1.0 // indirect
github.com/containerd/platforms v0.2.1 // indirect
@@ -168,7 +175,7 @@ require (
github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f // indirect
github.com/dimchansky/utfbom v1.1.1 // indirect
github.com/distribution/reference v0.6.0 // indirect
- github.com/dnsimple/dnsimple-go v1.7.0 // indirect
+ github.com/dnsimple/dnsimple-go/v4 v4.0.0 // indirect
github.com/docker/go-units v0.5.0 // indirect
github.com/donovanhide/eventsource v0.0.0-20170630084216-b8f31a59085e // indirect
github.com/dustin/go-humanize v1.0.1 // indirect
@@ -178,13 +185,15 @@ require (
github.com/elastic/go-windows v1.0.0 // indirect
github.com/emicklei/go-restful/v3 v3.11.0 // indirect
github.com/evanphx/json-patch v4.12.0+incompatible // indirect
- github.com/exoscale/egoscale/v3 v3.1.13 // indirect
+ github.com/exoscale/egoscale/v3 v3.1.24 // indirect
github.com/fatih/color v1.16.0 // indirect
github.com/felixge/httpsnoop v1.0.4 // indirect
- github.com/gabriel-vasile/mimetype v1.4.2 // indirect
+ github.com/gabriel-vasile/mimetype v1.4.3 // indirect
github.com/ghodss/yaml v1.0.0 // indirect
+ github.com/go-acme/alidns-20150109/v4 v4.5.10 // indirect
+ github.com/go-acme/tencentclouddnspod v1.0.1208 // indirect
github.com/go-errors/errors v1.0.1 // indirect
- github.com/go-jose/go-jose/v4 v4.0.5 // indirect
+ github.com/go-jose/go-jose/v4 v4.1.1 // indirect
github.com/go-logfmt/logfmt v0.5.1 // indirect
github.com/go-logr/logr v1.4.2 // indirect
github.com/go-logr/stdr v1.2.2 // indirect
@@ -194,12 +203,11 @@ require (
github.com/go-openapi/swag v0.19.14 // indirect
github.com/go-playground/locales v0.14.1 // indirect
github.com/go-playground/universal-translator v0.18.1 // indirect
- github.com/go-playground/validator/v10 v10.16.0 // indirect
+ github.com/go-playground/validator/v10 v10.23.0 // indirect
github.com/go-resty/resty/v2 v2.16.5 // indirect
github.com/go-task/slim-sprig/v3 v3.0.0 // indirect
- github.com/go-viper/mapstructure/v2 v2.3.0 // indirect
+ github.com/go-viper/mapstructure/v2 v2.4.0 // indirect
github.com/go-zookeeper/zk v1.0.3 // indirect
- github.com/goccy/go-json v0.10.5 // indirect
github.com/gofrs/flock v0.12.1 // indirect
github.com/gogo/protobuf v1.3.2 // indirect
github.com/golang-jwt/jwt/v4 v4.5.2 // indirect
@@ -212,7 +220,7 @@ require (
github.com/google/s2a-go v0.1.9 // indirect
github.com/google/uuid v1.6.0 // indirect
github.com/googleapis/enterprise-certificate-proxy v0.3.6 // indirect
- github.com/googleapis/gax-go/v2 v2.14.1 // indirect
+ github.com/googleapis/gax-go/v2 v2.14.2 // indirect
github.com/gophercloud/gophercloud v1.14.1 // indirect
github.com/gophercloud/utils v0.0.0-20231010081019-80377eca5d56 // indirect
github.com/gravitational/trace v1.1.16-0.20220114165159-14a9a7dd6aaf // indirect
@@ -220,7 +228,7 @@ require (
github.com/hashicorp/errwrap v1.1.0 // indirect
github.com/hashicorp/go-cleanhttp v0.5.2 // indirect
github.com/hashicorp/go-immutable-radix v1.3.1 // indirect
- github.com/hashicorp/go-retryablehttp v0.7.7 // indirect
+ github.com/hashicorp/go-retryablehttp v0.7.8 // indirect
github.com/hashicorp/go-rootcerts v1.0.2 // indirect
github.com/hashicorp/go-secure-stdlib/parseutil v0.1.7 // indirect
github.com/hashicorp/go-secure-stdlib/strutil v0.1.2 // indirect
@@ -230,12 +238,11 @@ require (
github.com/hashicorp/hcl v1.0.1-vault-5 // indirect
github.com/hashicorp/serf v0.10.1 // indirect
github.com/huandu/xstrings v1.5.0 // indirect
- github.com/huaweicloud/huaweicloud-sdk-go-v3 v0.1.141 // indirect
+ github.com/huaweicloud/huaweicloud-sdk-go-v3 v0.1.159 // indirect
github.com/iij/doapi v0.0.0-20190504054126-0bbf12d6d7df // indirect
github.com/imdario/mergo v0.3.16 // indirect
github.com/influxdata/line-protocol v0.0.0-20200327222509-2487e7298839 // indirect
- github.com/infobloxopen/infoblox-go-client/v2 v2.9.0 // indirect
- github.com/jmespath/go-jmespath v0.4.0 // indirect
+ github.com/infobloxopen/infoblox-go-client/v2 v2.10.0 // indirect
github.com/joeshaw/multierror v0.0.0-20140124173710-69b34d4ec901 // indirect
github.com/jonboulle/clockwork v0.4.0 // indirect
github.com/josharian/intern v1.0.0 // indirect
@@ -245,8 +252,8 @@ require (
github.com/kylelemons/godebug v1.1.0 // indirect
github.com/labbsr0x/bindman-dns-webhook v1.0.2 // indirect
github.com/labbsr0x/goh v1.0.1 // indirect
- github.com/leodido/go-urn v1.2.4 // indirect
- github.com/linode/linodego v1.48.1 // indirect
+ github.com/leodido/go-urn v1.4.0 // indirect
+ github.com/linode/linodego v1.53.0 // indirect
github.com/liquidweb/liquidweb-cli v0.6.9 // indirect
github.com/liquidweb/liquidweb-go v1.6.4 // indirect
github.com/looplab/fsm v0.1.0 // indirect
@@ -270,17 +277,19 @@ require (
github.com/modern-go/reflect2 v1.0.2 // indirect
github.com/morikuni/aec v1.0.0 // indirect
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect
- github.com/namedotcom/go v0.0.0-20180403034216-08470befbe04 // indirect
+ github.com/namedotcom/go/v4 v4.0.2 // indirect
github.com/nrdcg/auroradns v1.1.0 // indirect
- github.com/nrdcg/bunny-go v0.0.0-20240207213615-dde5bf4577a3 // indirect
- github.com/nrdcg/desec v0.10.0 // indirect
+ github.com/nrdcg/bunny-go v0.0.0-20250327222614-988a091fc7ea // indirect
+ github.com/nrdcg/desec v0.11.0 // indirect
github.com/nrdcg/dnspod-go v0.4.0 // indirect
github.com/nrdcg/freemyip v0.3.0 // indirect
github.com/nrdcg/goacmedns v0.2.0 // indirect
- github.com/nrdcg/goinwx v0.10.0 // indirect
+ github.com/nrdcg/goinwx v0.11.0 // indirect
github.com/nrdcg/mailinabox v0.2.0 // indirect
github.com/nrdcg/namesilo v0.2.1 // indirect
github.com/nrdcg/nodion v0.1.0 // indirect
+ github.com/nrdcg/oci-go-sdk/common/v1065 v1065.95.2 // indirect
+ github.com/nrdcg/oci-go-sdk/dns/v1065 v1065.95.2 // indirect
github.com/nrdcg/porkbun v0.4.0 // indirect
github.com/nzdjb/go-metaname v1.0.0 // indirect
github.com/onsi/ginkgo v1.16.5 // indirect
@@ -288,40 +297,39 @@ require (
github.com/opencontainers/go-digest v1.0.0 // indirect
github.com/opencontainers/image-spec v1.1.0 // indirect
github.com/opentracing-contrib/go-observer v0.0.0-20170622124052-a52f23424492 // indirect
- github.com/oracle/oci-go-sdk/v65 v65.87.0 // indirect
github.com/outcaste-io/ristretto v0.2.3 // indirect
- github.com/ovh/go-ovh v1.7.0 // indirect
+ github.com/ovh/go-ovh v1.9.0 // indirect
github.com/pelletier/go-toml/v2 v2.1.0 // indirect
github.com/peterhellberg/link v1.2.0 // indirect
github.com/philhofer/fwd v1.1.3-0.20240612014219-fbbf4953d986 // indirect
github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c // indirect
github.com/pkg/errors v0.9.1 // indirect
github.com/power-devops/perfstat v0.0.0-20220216144756-c35f1ee13d7c // indirect
- github.com/pquerna/otp v1.4.0 // indirect
+ github.com/pquerna/otp v1.5.0 // indirect
github.com/prometheus/common v0.54.0 // indirect
github.com/prometheus/procfs v0.15.1 // indirect
github.com/quic-go/qpack v0.5.1 // indirect
- github.com/redis/go-redis/v9 v9.7.3 // indirect
+ github.com/redis/go-redis/v9 v9.8.0 // indirect
github.com/regfish/regfish-dnsapi-go v0.1.1 // indirect
github.com/ryanuber/go-glob v1.0.0 // indirect
- github.com/sacloud/api-client-go v0.2.10 // indirect
- github.com/sacloud/go-http v0.1.8 // indirect
- github.com/sacloud/iaas-api-go v1.14.0 // indirect
- github.com/sacloud/packages-go v0.0.10 // indirect
+ github.com/sacloud/api-client-go v0.3.2 // indirect
+ github.com/sacloud/go-http v0.1.9 // indirect
+ github.com/sacloud/iaas-api-go v1.16.1 // indirect
+ github.com/sacloud/packages-go v0.0.11 // indirect
github.com/sagikazarmark/locafero v0.4.0 // indirect
github.com/sagikazarmark/slog-shim v0.1.0 // indirect
- github.com/scaleway/scaleway-sdk-go v1.0.0-beta.32 // indirect
+ github.com/scaleway/scaleway-sdk-go v1.0.0-beta.34 // indirect
github.com/secure-systems-lab/go-securesystemslib v0.7.0 // indirect
github.com/segmentio/fasthash v1.0.3 // indirect
github.com/selectel/domains-go v1.1.0 // indirect
- github.com/selectel/go-selvpcclient/v3 v3.2.1 // indirect
+ github.com/selectel/go-selvpcclient/v4 v4.1.0 // indirect
github.com/shirou/gopsutil/v3 v3.24.4 // indirect
github.com/shoenig/go-m1cpu v0.1.6 // indirect
github.com/shopspring/decimal v1.4.0 // indirect
github.com/smartystreets/go-aws-auth v0.0.0-20180515143844-0c1422d1fdb9 // indirect
github.com/softlayer/softlayer-go v1.1.7 // indirect
github.com/softlayer/xmlrpc v0.0.0-20200409220501-5f089df7cb7e // indirect
- github.com/sony/gobreaker v0.5.0 // indirect
+ github.com/sony/gobreaker v1.0.0 // indirect
github.com/sourcegraph/conc v0.3.0 // indirect
github.com/spf13/afero v1.11.0 // indirect
github.com/spf13/cast v1.7.0 // indirect
@@ -329,8 +337,7 @@ require (
github.com/spf13/viper v1.18.2 // indirect
github.com/stretchr/objx v0.5.2 // indirect
github.com/subosito/gotenv v1.6.0 // indirect
- github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1128 // indirect
- github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dnspod v1.0.1128 // indirect
+ github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1210 // indirect
github.com/tinylib/msgp v1.2.1 // indirect
github.com/tjfoc/gmsm v1.4.1 // indirect
github.com/tklauser/go-sysconf v0.3.12 // indirect
@@ -338,10 +345,12 @@ require (
github.com/transip/gotransip/v6 v6.26.0 // indirect
github.com/ultradns/ultradns-go-sdk v1.8.0-20241010134910-243eeec // indirect
github.com/vinyldns/go-vinyldns v0.9.16 // indirect
- github.com/volcengine/volc-sdk-golang v1.0.199 // indirect
- github.com/vultr/govultr/v3 v3.17.0 // indirect
- github.com/yandex-cloud/go-genproto v0.0.0-20250319153614-fb9d3e5eb01a // indirect
- github.com/yandex-cloud/go-sdk v0.0.0-20250320143332-9cbcfc5de4ae // indirect
+ github.com/volcengine/volc-sdk-golang v1.0.216 // indirect
+ github.com/vultr/govultr/v3 v3.21.1 // indirect
+ github.com/yandex-cloud/go-genproto v0.14.0 // indirect
+ github.com/yandex-cloud/go-sdk/services/dns v0.0.3 // indirect
+ github.com/yandex-cloud/go-sdk/v2 v2.0.8 // indirect
+ github.com/youmark/pkcs8 v0.0.0-20240726163527-a2c0da244d78 // indirect
github.com/yusufpapurcu/wmi v1.2.4 // indirect
go.elastic.co/apm/module/apmhttp/v2 v2.4.8 // indirect
go.elastic.co/fastjson v1.1.0 // indirect
@@ -355,30 +364,29 @@ require (
go.opentelemetry.io/collector/pdata v1.11.0 // indirect
go.opentelemetry.io/collector/pdata/pprofile v0.104.0 // indirect
go.opentelemetry.io/collector/semconv v0.104.0 // indirect
- go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.59.0 // indirect
- go.opentelemetry.io/otel v1.34.0 // indirect
- go.opentelemetry.io/otel/metric v1.34.0 // indirect
- go.opentelemetry.io/otel/trace v1.34.0 // indirect
+ go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.61.0 // indirect
+ go.opentelemetry.io/otel v1.36.0 // indirect
+ go.opentelemetry.io/otel/metric v1.36.0 // indirect
+ go.opentelemetry.io/otel/trace v1.36.0 // indirect
go.uber.org/atomic v1.11.0 // indirect
go.uber.org/mock v0.4.0 // indirect
go.uber.org/multierr v1.11.0 // indirect
- go.uber.org/ratelimit v0.3.0 // indirect
+ go.uber.org/ratelimit v0.3.1 // indirect
go.uber.org/zap v1.27.0 // indirect
- golang.org/x/crypto v0.36.0 // indirect
+ golang.org/x/crypto v0.40.0 // indirect
golang.org/x/exp v0.0.0-20241210194714-1829a127f884 // indirect
- golang.org/x/oauth2 v0.28.0 // indirect
- golang.org/x/sync v0.12.0 // indirect
- golang.org/x/sys v0.31.0 // indirect
- golang.org/x/term v0.30.0 // indirect
+ golang.org/x/oauth2 v0.30.0 // indirect
+ golang.org/x/sync v0.16.0 // indirect
+ golang.org/x/sys v0.34.0 // indirect
+ golang.org/x/term v0.33.0 // indirect
golang.org/x/xerrors v0.0.0-20231012003039-104605ab7028 // indirect
- google.golang.org/api v0.227.0 // indirect
- google.golang.org/genproto v0.0.0-20241021214115-324edc3d5d38 // indirect
- google.golang.org/genproto/googleapis/api v0.0.0-20250106144421-5f5ef82da422 // indirect
- google.golang.org/genproto/googleapis/rpc v0.0.0-20250313205543-e70fdf4c4cb4 // indirect
- google.golang.org/protobuf v1.36.5 // indirect
+ google.golang.org/api v0.242.0 // indirect
+ google.golang.org/genproto/googleapis/api v0.0.0-20250707201910-8d1bb00bc6a7 // indirect
+ google.golang.org/genproto/googleapis/rpc v0.0.0-20250707201910-8d1bb00bc6a7 // indirect
+ google.golang.org/protobuf v1.36.6 // indirect
gopkg.in/inf.v0 v0.9.1 // indirect
gopkg.in/ini.v1 v1.67.0 // indirect
- gopkg.in/ns1/ns1-go.v2 v2.13.0 // indirect
+ gopkg.in/ns1/ns1-go.v2 v2.14.4 // indirect
gopkg.in/yaml.v2 v2.4.0 // indirect
howett.net/plist v0.0.0-20181124034731-591f970eefbb // indirect
k8s.io/klog/v2 v2.90.1 // indirect
diff --git a/go.sum b/go.sum
index 336c3eca8..eea89914e 100644
--- a/go.sum
+++ b/go.sum
@@ -18,18 +18,18 @@ cloud.google.com/go v0.74.0/go.mod h1:VV1xSbzvo+9QJOxLDaJfTjx5e+MePCpCWwvftOeQmW
cloud.google.com/go v0.78.0/go.mod h1:QjdrLG0uq+YwhjoVOLsS1t7TW8fs36kLs4XO5R5ECHg=
cloud.google.com/go v0.79.0/go.mod h1:3bzgcEeQlzbuEAYu4mrWhKqWjmpprinYgKJLgKHnbb8=
cloud.google.com/go v0.81.0/go.mod h1:mk/AM35KwGk/Nm2YSeZbxXdrNK3KZOYHmLkOqC2V6E0=
-cloud.google.com/go/auth v0.15.0 h1:Ly0u4aA5vG/fsSsxu98qCQBemXtAtJf+95z9HK+cxps=
-cloud.google.com/go/auth v0.15.0/go.mod h1:WJDGqZ1o9E9wKIL+IwStfyn/+s59zl4Bi+1KQNVXLZ8=
-cloud.google.com/go/auth/oauth2adapt v0.2.7 h1:/Lc7xODdqcEw8IrZ9SvwnlLX6j9FHQM74z6cBk9Rw6M=
-cloud.google.com/go/auth/oauth2adapt v0.2.7/go.mod h1:NTbTTzfvPl1Y3V1nPpOgl2w6d/FjO7NNUQaWSox6ZMc=
+cloud.google.com/go/auth v0.16.2 h1:QvBAGFPLrDeoiNjyfVunhQ10HKNYuOwZ5noee0M5df4=
+cloud.google.com/go/auth v0.16.2/go.mod h1:sRBas2Y1fB1vZTdurouM0AzuYQBMZinrUYL8EufhtEA=
+cloud.google.com/go/auth/oauth2adapt v0.2.8 h1:keo8NaayQZ6wimpNSmW5OPc283g65QNIiLpZnkHRbnc=
+cloud.google.com/go/auth/oauth2adapt v0.2.8/go.mod h1:XQ9y31RkqZCcwJWNSx2Xvric3RrU88hAYYbjDWYDL+c=
cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o=
cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE=
cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc=
cloud.google.com/go/bigquery v1.5.0/go.mod h1:snEHRnqQbz117VIFhE8bmtwIDY80NLUZUMb4Nv6dBIg=
cloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4gLoIoXIAPc=
cloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ=
-cloud.google.com/go/compute/metadata v0.6.0 h1:A6hENjEsCDtC1k8byVsgwvVcioamEHvZ4j01OwKxG9I=
-cloud.google.com/go/compute/metadata v0.6.0/go.mod h1:FjyFAW1MW0C203CEOMDTu3Dk1FlqW3Rga40jzHL4hfg=
+cloud.google.com/go/compute/metadata v0.7.0 h1:PBWF+iiAerVNe8UCHxdOt6eHLVc3ydFeOCw78U8ytSU=
+cloud.google.com/go/compute/metadata v0.7.0/go.mod h1:j5MvL9PprKL39t166CoB1uVHfQMs4tFQZZcKwksXUjo=
cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE=
cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk=
cloud.google.com/go/firestore v1.1.0/go.mod h1:ulACoGHTpvq5r8rxGJ4ddJZBZqakUQqClKRT5SZwBmk=
@@ -51,14 +51,14 @@ github.com/AdamSLevy/jsonrpc2/v14 v14.1.0 h1:Dy3M9aegiI7d7PF1LUdjbVigJReo+QOceYs
github.com/AdamSLevy/jsonrpc2/v14 v14.1.0/go.mod h1:ZakZtbCXxCz82NJvq7MoREtiQesnDfrtF6RFUGzQfLo=
github.com/Azure/azure-sdk-for-go v68.0.0+incompatible h1:fcYLmCpyNYRnvJbPerq7U0hS+6+I79yEDJBqVNcqUzU=
github.com/Azure/azure-sdk-for-go v68.0.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc=
-github.com/Azure/azure-sdk-for-go/sdk/azcore v1.17.1 h1:DSDNVxqkoXJiko6x8a90zidoYqnYYa6c1MTzDKzKkTo=
-github.com/Azure/azure-sdk-for-go/sdk/azcore v1.17.1/go.mod h1:zGqV2R4Cr/k8Uye5w+dgQ06WJtEcbQG/8J7BB6hnCr4=
-github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.8.2 h1:F0gBpfdPLGsw+nsgk6aqqkZS1jiixa5WwFe3fk/T3Ys=
-github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.8.2/go.mod h1:SqINnQ9lVVdRlyC8cd1lCI0SdX4n2paeABd2K8ggfnE=
+github.com/Azure/azure-sdk-for-go/sdk/azcore v1.18.1 h1:Wc1ml6QlJs2BHQ/9Bqu1jiyggbsSjramq2oUmp5WeIo=
+github.com/Azure/azure-sdk-for-go/sdk/azcore v1.18.1/go.mod h1:Ot/6aikWnKWi4l9QB7qVSwa8iMphQNqkWALMoNT3rzM=
+github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.10.1 h1:B+blDbyVIG3WaikNxPnhPiJ1MThR03b3vKGtER95TP4=
+github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.10.1/go.mod h1:JdM5psgjfBf5fo2uWOZhflPWyDBZ/O/CNAH9CtsuZE4=
github.com/Azure/azure-sdk-for-go/sdk/azidentity/cache v0.3.2 h1:yz1bePFlP5Vws5+8ez6T3HWXPmwOK7Yvq8QxDBD3SKY=
github.com/Azure/azure-sdk-for-go/sdk/azidentity/cache v0.3.2/go.mod h1:Pa9ZNPuoNu/GztvBSKk9J1cDJW6vk/n0zLtV4mgd8N8=
-github.com/Azure/azure-sdk-for-go/sdk/internal v1.10.0 h1:ywEEhmNahHBihViHepv3xPBn1663uRv2t2q/ESv9seY=
-github.com/Azure/azure-sdk-for-go/sdk/internal v1.10.0/go.mod h1:iZDifYGJTIgIIkYRNWPENUnqx6bJ2xnSDFI2tjwZNuY=
+github.com/Azure/azure-sdk-for-go/sdk/internal v1.11.1 h1:FPKJS1T+clwv+OLGt13a8UjqeRuh0O4SJ3lUriThc+4=
+github.com/Azure/azure-sdk-for-go/sdk/internal v1.11.1/go.mod h1:j2chePtV91HrC22tGoRX3sGY42uF13WzmmV80/OdVAA=
github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/dns/armdns v1.2.0 h1:lpOxwrQ919lCZoNCd69rVt8u1eLZuMORrGXqy8sNf3c=
github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/dns/armdns v1.2.0/go.mod h1:fSvRkb8d26z9dbL40Uf/OO6Vo9iExtZK3D0ulRV+8M0=
github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/internal/v3 v3.1.0 h1:2qsIIvxVT+uE6yrNldntJKlLRgxGbZ85kgtz5SNBhMw=
@@ -102,10 +102,9 @@ github.com/Azure/go-autorest/tracing v0.6.0 h1:TYi4+3m5t6K48TGI9AUdb+IzbnSxvnvUM
github.com/Azure/go-autorest/tracing v0.6.0/go.mod h1:+vhtPC754Xsa23ID7GlGsrdKBpUA79WCAKPPZVC2DeU=
github.com/AzureAD/microsoft-authentication-extensions-for-go/cache v0.1.1 h1:WJTmL004Abzc5wDB5VtZG2PJk5ndYDgVacGqfirKxjM=
github.com/AzureAD/microsoft-authentication-extensions-for-go/cache v0.1.1/go.mod h1:tCcJZ0uHAmvjsVYzEFivsRTN00oz5BEsRgQHu5JZ9WE=
-github.com/AzureAD/microsoft-authentication-library-for-go v1.3.3 h1:H5xDQaE3XowWfhZRUpnfC+rGZMEVoSiji+b+/HFAPU4=
-github.com/AzureAD/microsoft-authentication-library-for-go v1.3.3/go.mod h1:wP83P5OoQ5p6ip3ScPr0BAq0BvuPAvacpEuSzyouqAI=
+github.com/AzureAD/microsoft-authentication-library-for-go v1.4.2 h1:oygO0locgZJe7PpYPXT5A29ZkwJaPqcva7BVeemZOZs=
+github.com/AzureAD/microsoft-authentication-library-for-go v1.4.2/go.mod h1:wP83P5OoQ5p6ip3ScPr0BAq0BvuPAvacpEuSzyouqAI=
github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
-github.com/BurntSushi/toml v1.1.0/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ=
github.com/BurntSushi/toml v1.5.0 h1:W5quZX/G/csjUnuI8SUYlsHs9M38FC7znL0lIO+DvMg=
github.com/BurntSushi/toml v1.5.0/go.mod h1:ukJfTF/6rtPPRCnwkur4qwRxa8vTRFBF0uk2lLoLwho=
github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo=
@@ -183,8 +182,54 @@ github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuy
github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0=
github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0=
github.com/alecthomas/units v0.0.0-20190924025748-f65c72e2690d/go.mod h1:rBZYJk541a8SKzHPHnH3zbiI+7dagKZ0cgpgrD7Fyho=
-github.com/aliyun/alibaba-cloud-sdk-go v1.63.100 h1:yUkCbrSM1cWtgBfRVKMQtdt22KhDvKY7g4V+92eG9wA=
-github.com/aliyun/alibaba-cloud-sdk-go v1.63.100/go.mod h1:SOSDHfe1kX91v3W5QiBsWSLqeLxImobbMX1mxrFHsVQ=
+github.com/alibabacloud-go/alibabacloud-gateway-pop v0.0.6 h1:eIf+iGJxdU4U9ypaUfbtOWCsZSbTb8AUHvyPrxu6mAA=
+github.com/alibabacloud-go/alibabacloud-gateway-pop v0.0.6/go.mod h1:4EUIoxs/do24zMOGGqYVWgw0s9NtiylnJglOeEB5UJo=
+github.com/alibabacloud-go/alibabacloud-gateway-spi v0.0.4/go.mod h1:sCavSAvdzOjul4cEqeVtvlSaSScfNsTQ+46HwlTL1hc=
+github.com/alibabacloud-go/alibabacloud-gateway-spi v0.0.5 h1:zE8vH9C7JiZLNJJQ5OwjU9mSi4T9ef9u3BURT6LCLC8=
+github.com/alibabacloud-go/alibabacloud-gateway-spi v0.0.5/go.mod h1:tWnyE9AjF8J8qqLk645oUmVUnFybApTQWklQmi5tY6g=
+github.com/alibabacloud-go/darabonba-array v0.1.0 h1:vR8s7b1fWAQIjEjWnuF0JiKsCvclSRTfDzZHTYqfufY=
+github.com/alibabacloud-go/darabonba-array v0.1.0/go.mod h1:BLKxr0brnggqOJPqT09DFJ8g3fsDshapUD3C3aOEFaI=
+github.com/alibabacloud-go/darabonba-encode-util v0.0.2 h1:1uJGrbsGEVqWcWxrS9MyC2NG0Ax+GpOM5gtupki31XE=
+github.com/alibabacloud-go/darabonba-encode-util v0.0.2/go.mod h1:JiW9higWHYXm7F4PKuMgEUETNZasrDM6vqVr/Can7H8=
+github.com/alibabacloud-go/darabonba-map v0.0.2 h1:qvPnGB4+dJbJIxOOfawxzF3hzMnIpjmafa0qOTp6udc=
+github.com/alibabacloud-go/darabonba-map v0.0.2/go.mod h1:28AJaX8FOE/ym8OUFWga+MtEzBunJwQGceGQlvaPGPc=
+github.com/alibabacloud-go/darabonba-openapi/v2 v2.0.11/go.mod h1:wHxkgZT1ClZdcwEVP/pDgYK/9HucsnCfMipmJgCz4xY=
+github.com/alibabacloud-go/darabonba-openapi/v2 v2.1.8 h1:AL+nH363NJFS1NXIjCdmj5MOElgKEqgFeoq7vjje350=
+github.com/alibabacloud-go/darabonba-openapi/v2 v2.1.8/go.mod h1:d+z3ScRqc7PFzg4h9oqE3h8yunRZvAvU7u+iuPYEhpU=
+github.com/alibabacloud-go/darabonba-signature-util v0.0.7 h1:UzCnKvsjPFzApvODDNEYqBHMFt1w98wC7FOo0InLyxg=
+github.com/alibabacloud-go/darabonba-signature-util v0.0.7/go.mod h1:oUzCYV2fcCH797xKdL6BDH8ADIHlzrtKVjeRtunBNTQ=
+github.com/alibabacloud-go/darabonba-string v1.0.2 h1:E714wms5ibdzCqGeYJ9JCFywE5nDyvIXIIQbZVFkkqo=
+github.com/alibabacloud-go/darabonba-string v1.0.2/go.mod h1:93cTfV3vuPhhEwGGpKKqhVW4jLe7tDpo3LUM0i0g6mA=
+github.com/alibabacloud-go/debug v0.0.0-20190504072949-9472017b5c68/go.mod h1:6pb/Qy8c+lqua8cFpEy7g39NRRqOWc3rOwAy8m5Y2BY=
+github.com/alibabacloud-go/debug v1.0.0/go.mod h1:8gfgZCCAC3+SCzjWtY053FrOcd4/qlH6IHTI4QyICOc=
+github.com/alibabacloud-go/debug v1.0.1 h1:MsW9SmUtbb1Fnt3ieC6NNZi6aEwrXfDksD4QA6GSbPg=
+github.com/alibabacloud-go/debug v1.0.1/go.mod h1:8gfgZCCAC3+SCzjWtY053FrOcd4/qlH6IHTI4QyICOc=
+github.com/alibabacloud-go/endpoint-util v1.1.0 h1:r/4D3VSw888XGaeNpP994zDUaxdgTSHBbVfZlzf6b5Q=
+github.com/alibabacloud-go/endpoint-util v1.1.0/go.mod h1:O5FuCALmCKs2Ff7JFJMudHs0I5EBgecXXxZRyswlEjE=
+github.com/alibabacloud-go/openapi-util v0.1.0/go.mod h1:sQuElr4ywwFRlCCberQwKRFhRzIyG4QTP/P4y1CJ6Ws=
+github.com/alibabacloud-go/openapi-util v0.1.1 h1:ujGErJjG8ncRW6XtBBMphzHTvCxn4DjrVw4m04HsS28=
+github.com/alibabacloud-go/openapi-util v0.1.1/go.mod h1:/UehBSE2cf1gYT43GV4E+RxTdLRzURImCYY0aRmlXpw=
+github.com/alibabacloud-go/tea v1.1.0/go.mod h1:IkGyUSX4Ba1V+k4pCtJUc6jDpZLFph9QMy2VUPTwukg=
+github.com/alibabacloud-go/tea v1.1.7/go.mod h1:/tmnEaQMyb4Ky1/5D+SE1BAsa5zj/KeGOFfwYm3N/p4=
+github.com/alibabacloud-go/tea v1.1.8/go.mod h1:/tmnEaQMyb4Ky1/5D+SE1BAsa5zj/KeGOFfwYm3N/p4=
+github.com/alibabacloud-go/tea v1.1.11/go.mod h1:/tmnEaQMyb4Ky1/5D+SE1BAsa5zj/KeGOFfwYm3N/p4=
+github.com/alibabacloud-go/tea v1.1.17/go.mod h1:nXxjm6CIFkBhwW4FQkNrolwbfon8Svy6cujmKFUq98A=
+github.com/alibabacloud-go/tea v1.1.20/go.mod h1:nXxjm6CIFkBhwW4FQkNrolwbfon8Svy6cujmKFUq98A=
+github.com/alibabacloud-go/tea v1.2.2/go.mod h1:CF3vOzEMAG+bR4WOql8gc2G9H3EkH3ZLAQdpmpXMgwk=
+github.com/alibabacloud-go/tea v1.3.9 h1:bjgt1bvdY780vz/17iWNNtbXl4A77HWntWMeaUF3So0=
+github.com/alibabacloud-go/tea v1.3.9/go.mod h1:A560v/JTQ1n5zklt2BEpurJzZTI8TUT+Psg2drWlxRg=
+github.com/alibabacloud-go/tea-utils v1.3.1/go.mod h1:EI/o33aBfj3hETm4RLiAxF/ThQdSngxrpF8rKUDJjPE=
+github.com/alibabacloud-go/tea-utils/v2 v2.0.5/go.mod h1:dL6vbUT35E4F4bFTHL845eUloqaerYBYPsdWR2/jhe4=
+github.com/alibabacloud-go/tea-utils/v2 v2.0.6/go.mod h1:qxn986l+q33J5VkialKMqT/TTs3E+U9MJpd001iWQ9I=
+github.com/alibabacloud-go/tea-utils/v2 v2.0.7 h1:WDx5qW3Xa5ZgJ1c8NfqJkF6w+AU5wB8835UdhPr6Ax0=
+github.com/alibabacloud-go/tea-utils/v2 v2.0.7/go.mod h1:qxn986l+q33J5VkialKMqT/TTs3E+U9MJpd001iWQ9I=
+github.com/alibabacloud-go/tea-xml v1.1.3/go.mod h1:Rq08vgCcCAjHyRi/M7xlHKUykZCEtyBy9+DPF6GgEu8=
+github.com/aliyun/credentials-go v1.1.2/go.mod h1:ozcZaMR5kLM7pwtCMEpVmQ242suV6qTJya2bDq4X1Tw=
+github.com/aliyun/credentials-go v1.3.1/go.mod h1:8jKYhQuDawt8x2+fusqa1Y6mPxemTsBEN04dgcAcYz0=
+github.com/aliyun/credentials-go v1.3.6/go.mod h1:1LxUuX7L5YrZUWzBrRyk0SwSdH4OmPrib8NVePL3fxM=
+github.com/aliyun/credentials-go v1.4.5/go.mod h1:Jm6d+xIgwJVLVWT561vy67ZRP4lPTQxMbEYRuT2Ti1U=
+github.com/aliyun/credentials-go v1.4.6 h1:CG8rc/nxCNKfXbZWpWDzI9GjF4Tuu3Es14qT8Y0ClOk=
+github.com/aliyun/credentials-go v1.4.6/go.mod h1:Jm6d+xIgwJVLVWT561vy67ZRP4lPTQxMbEYRuT2Ti1U=
github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY=
github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o=
github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY=
@@ -199,18 +244,18 @@ github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a/go.mod h1:l
github.com/avast/retry-go v3.0.0+incompatible/go.mod h1:XtSnn+n/sHqQIpZ10K1qAevBhOOCWBLXXy3hyiqqBrY=
github.com/aws/aws-sdk-go v1.40.45/go.mod h1:585smgzpB/KqRA+K3y/NL/oYRqQvpNJYvLm+LY1U59Q=
github.com/aws/aws-sdk-go-v2 v1.9.1/go.mod h1:cK/D0BBs0b/oWPIcX/Z/obahJK1TT7IPVjy53i/mX/4=
-github.com/aws/aws-sdk-go-v2 v1.36.3 h1:mJoei2CxPutQVxaATCzDUjcZEjVRdpsiiXi2o38yqWM=
-github.com/aws/aws-sdk-go-v2 v1.36.3/go.mod h1:LLXuLpgzEbD766Z5ECcRmi8AzSwfZItDtmABVkRLGzg=
-github.com/aws/aws-sdk-go-v2/config v1.29.9 h1:Kg+fAYNaJeGXp1vmjtidss8O2uXIsXwaRqsQJKXVr+0=
-github.com/aws/aws-sdk-go-v2/config v1.29.9/go.mod h1:oU3jj2O53kgOU4TXq/yipt6ryiooYjlkqqVaZk7gY/U=
-github.com/aws/aws-sdk-go-v2/credentials v1.17.62 h1:fvtQY3zFzYJ9CfixuAQ96IxDrBajbBWGqjNTCa79ocU=
-github.com/aws/aws-sdk-go-v2/credentials v1.17.62/go.mod h1:ElETBxIQqcxej++Cs8GyPBbgMys5DgQPTwo7cUPDKt8=
-github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.30 h1:x793wxmUWVDhshP8WW2mlnXuFrO4cOd3HLBroh1paFw=
-github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.30/go.mod h1:Jpne2tDnYiFascUEs2AWHJL9Yp7A5ZVy3TNyxaAjD6M=
-github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.34 h1:ZK5jHhnrioRkUNOc+hOgQKlUL5JeC3S6JgLxtQ+Rm0Q=
-github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.34/go.mod h1:p4VfIceZokChbA9FzMbRGz5OV+lekcVtHlPKEO0gSZY=
-github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.34 h1:SZwFm17ZUNNg5Np0ioo/gq8Mn6u9w19Mri8DnJ15Jf0=
-github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.34/go.mod h1:dFZsC0BLo346mvKQLWmoJxT+Sjp+qcVR1tRVHQGOH9Q=
+github.com/aws/aws-sdk-go-v2 v1.36.6 h1:zJqGjVbRdTPojeCGWn5IR5pbJwSQSBh5RWFTQcEQGdU=
+github.com/aws/aws-sdk-go-v2 v1.36.6/go.mod h1:EYrzvCCN9CMUTa5+6lf6MM4tq3Zjp8UhSGR/cBsjai0=
+github.com/aws/aws-sdk-go-v2/config v1.29.18 h1:x4T1GRPnqKV8HMJOMtNktbpQMl3bIsfx8KbqmveUO2I=
+github.com/aws/aws-sdk-go-v2/config v1.29.18/go.mod h1:bvz8oXugIsH8K7HLhBv06vDqnFv3NsGDt2Znpk7zmOU=
+github.com/aws/aws-sdk-go-v2/credentials v1.17.71 h1:r2w4mQWnrTMJjOyIsZtGp3R3XGY3nqHn8C26C2lQWgA=
+github.com/aws/aws-sdk-go-v2/credentials v1.17.71/go.mod h1:E7VF3acIup4GB5ckzbKFrCK0vTvEQxOxgdq4U3vcMCY=
+github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.33 h1:D9ixiWSG4lyUBL2DDNK924Px9V/NBVpML90MHqyTADY=
+github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.33/go.mod h1:caS/m4DI+cij2paz3rtProRBI4s/+TCiWoaWZuQ9010=
+github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.37 h1:osMWfm/sC/L4tvEdQ65Gri5ZZDCUpuYJZbTTDrsn4I0=
+github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.37/go.mod h1:ZV2/1fbjOPr4G4v38G3Ww5TBT4+hmsK45s/rxu1fGy0=
+github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.37 h1:v+X21AvTb2wZ+ycg1gx+orkB/9U6L7AOp93R7qYxsxM=
+github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.37/go.mod h1:G0uM1kyssELxmJ2VZEfG0q2npObR3BAkF3c1VsfVnfs=
github.com/aws/aws-sdk-go-v2/internal/ini v1.8.3 h1:bIqFDwgGXXN1Kpp99pDOdKMTTb5d2KyU5X/BZxjOkRo=
github.com/aws/aws-sdk-go-v2/internal/ini v1.8.3/go.mod h1:H5O/EsxDWyU+LP/V8i5sm8cxoZgc2fdNR9bxlOFrQTo=
github.com/aws/aws-sdk-go-v2/service/cloudwatch v1.8.1/go.mod h1:CM+19rL1+4dFWnOQKwDc7H1KwXTz+h61oUSHyhV0b3o=
@@ -218,27 +263,29 @@ github.com/aws/aws-sdk-go-v2/service/ec2 v1.203.1 h1:ZgY9zeVAe+54Qa7o1GXKRNTez79
github.com/aws/aws-sdk-go-v2/service/ec2 v1.203.1/go.mod h1:0naMk66LtdeTmE+1CWQTKwtzOQ2t8mavOhMhR0Pv1m0=
github.com/aws/aws-sdk-go-v2/service/ecs v1.53.15 h1:uH0DMwDjLGgjjYMk3M1MXHggk37trTiJIvwyJNP17Ig=
github.com/aws/aws-sdk-go-v2/service/ecs v1.53.15/go.mod h1:49tE5yYdlAHqZIO8u5+u9Xy9k8IaV0v5cstZrjnX5+c=
-github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.12.3 h1:eAh2A4b5IzM/lum78bZ590jy36+d/aFLgKF/4Vd1xPE=
-github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.12.3/go.mod h1:0yKJC/kb8sAnmlYa6Zs3QVYqaC8ug2AbnNChv5Ox3uA=
-github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.12.15 h1:dM9/92u2F1JbDaGooxTq18wmmFzbJRfXfVfy96/1CXM=
-github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.12.15/go.mod h1:SwFBy2vjtA0vZbjjaFtfN045boopadnoVPhu4Fv66vY=
-github.com/aws/aws-sdk-go-v2/service/lightsail v1.43.1 h1:0j58UseBtLuBcP6nY2z4SM1qZEvLF0ylyH6+ggnphLg=
-github.com/aws/aws-sdk-go-v2/service/lightsail v1.43.1/go.mod h1:Qy22QnQSdHbZwMZrarsWZBIuK51isPlkD+Z4sztxX0o=
-github.com/aws/aws-sdk-go-v2/service/route53 v1.50.0 h1:/nkJHXtJXJeelXHqG0898+fWKgvfaXBhGzbCsSmn9j8=
-github.com/aws/aws-sdk-go-v2/service/route53 v1.50.0/go.mod h1:kGYOjvTa0Vw0qxrqrOLut1vMnui6qLxqv/SX3vYeM8Y=
+github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.12.4 h1:CXV68E2dNqhuynZJPB80bhPQwAKqBWVer887figW6Jc=
+github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.12.4/go.mod h1:/xFi9KtvBXP97ppCz1TAEvU1Uf66qvid89rbem3wCzQ=
+github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.12.18 h1:vvbXsA2TVO80/KT7ZqCbx934dt6PY+vQ8hZpUZ/cpYg=
+github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.12.18/go.mod h1:m2JJHledjBGNMsLOF1g9gbAxprzq3KjC8e4lxtn+eWg=
+github.com/aws/aws-sdk-go-v2/service/lightsail v1.43.5 h1:DYQbfSAWcMwRM0LbCDyQkPB1AcaZcLzLoaFrYcpyMag=
+github.com/aws/aws-sdk-go-v2/service/lightsail v1.43.5/go.mod h1:Lav4KLgncVjjrwLWutOccjEgJ4T/RAdY+Ic0hmNIgI0=
+github.com/aws/aws-sdk-go-v2/service/route53 v1.53.1 h1:R3nSX1hguRy6MnknHiepSvqnnL8ansFwK2hidPesAYU=
+github.com/aws/aws-sdk-go-v2/service/route53 v1.53.1/go.mod h1:fmSiB4OAghn85lQgk7XN9l9bpFg5Bm1v3HuaXKytPEw=
github.com/aws/aws-sdk-go-v2/service/ssm v1.56.13 h1:JfPeW7F6Y+VqBg6p+8zQv4wlgceguYu5ZT0USEGZ89g=
github.com/aws/aws-sdk-go-v2/service/ssm v1.56.13/go.mod h1:EonGQFn66wZkJJrrKXrryrxoS3V30rcHvaWvc6oGHCI=
-github.com/aws/aws-sdk-go-v2/service/sso v1.25.1 h1:8JdC7Gr9NROg1Rusk25IcZeTO59zLxsKgE0gkh5O6h0=
-github.com/aws/aws-sdk-go-v2/service/sso v1.25.1/go.mod h1:qs4a9T5EMLl/Cajiw2TcbNt2UNo/Hqlyp+GiuG4CFDI=
-github.com/aws/aws-sdk-go-v2/service/ssooidc v1.29.1 h1:KwuLovgQPcdjNMfFt9OhUd9a2OwcOKhxfvF4glTzLuA=
-github.com/aws/aws-sdk-go-v2/service/ssooidc v1.29.1/go.mod h1:MlYRNmYu/fGPoxBQVvBYr9nyr948aY/WLUvwBMBJubs=
-github.com/aws/aws-sdk-go-v2/service/sts v1.33.17 h1:PZV5W8yk4OtH1JAuhV2PXwwO9v5G5Aoj+eMCn4T+1Kc=
-github.com/aws/aws-sdk-go-v2/service/sts v1.33.17/go.mod h1:cQnB8CUnxbMU82JvlqjKR2HBOm3fe9pWorWBza6MBJ4=
+github.com/aws/aws-sdk-go-v2/service/sso v1.25.6 h1:rGtWqkQbPk7Bkwuv3NzpE/scwwL9sC1Ul3tn9x83DUI=
+github.com/aws/aws-sdk-go-v2/service/sso v1.25.6/go.mod h1:u4ku9OLv4TO4bCPdxf4fA1upaMaJmP9ZijGk3AAOC6Q=
+github.com/aws/aws-sdk-go-v2/service/ssooidc v1.30.4 h1:OV/pxyXh+eMA0TExHEC4jyWdumLxNbzz1P0zJoezkJc=
+github.com/aws/aws-sdk-go-v2/service/ssooidc v1.30.4/go.mod h1:8Mm5VGYwtm+r305FfPSuc+aFkrypeylGYhFim6XEPoc=
+github.com/aws/aws-sdk-go-v2/service/sts v1.34.1 h1:aUrLQwJfZtwv3/ZNG2xRtEen+NqI3iesuacjP51Mv1s=
+github.com/aws/aws-sdk-go-v2/service/sts v1.34.1/go.mod h1:3wFBZKoWnX3r+Sm7in79i54fBmNfwhdNdQuscCw7QIk=
github.com/aws/smithy-go v1.8.0/go.mod h1:SObp3lf9smib00L/v3U2eAKG8FyQ7iLrJnQiAmR5n+E=
-github.com/aws/smithy-go v1.22.2 h1:6D9hW43xKFrRx/tXXfAlIZc4JI+yQe6snnWcQyxSyLQ=
-github.com/aws/smithy-go v1.22.2/go.mod h1:irrKGvNn1InZwb2d7fkIRNucdfwR8R+Ts3wxYa/cJHg=
-github.com/baidubce/bce-sdk-go v0.9.223 h1:vvDeIemf7ePPP59nLHCntQ/vS++ok2HKbRPgmz1VZKU=
-github.com/baidubce/bce-sdk-go v0.9.223/go.mod h1:zbYJMQwE4IZuyrJiFO8tO8NbtYiKTFTbwh4eIsqjVdg=
+github.com/aws/smithy-go v1.22.4 h1:uqXzVZNuNexwc/xrh6Tb56u89WDlJY6HS+KC0S4QSjw=
+github.com/aws/smithy-go v1.22.4/go.mod h1:t1ufH5HMublsJYulve2RKmHDC15xu1f26kHCp/HgceI=
+github.com/aziontech/azionapi-go-sdk v0.142.0 h1:1NOHXlC0/7VgbfbTIGVpsYn1THCugM4/SCOXVdUHQ+A=
+github.com/aziontech/azionapi-go-sdk v0.142.0/go.mod h1:cA5DY/VP4X5Eu11LpQNzNn83ziKjja7QVMIl4J45feA=
+github.com/baidubce/bce-sdk-go v0.9.235 h1:iAi+seH9w1Go2szFNzyGumahLGDsuYZ3i8hduX3qiM8=
+github.com/baidubce/bce-sdk-go v0.9.235/go.mod h1:zbYJMQwE4IZuyrJiFO8tO8NbtYiKTFTbwh4eIsqjVdg=
github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA=
github.com/benbjohnson/clock v1.3.0 h1:ip6w0uFQkncKQ979AypyG0ER7mqUSBdKLOgAle/AT8A=
github.com/benbjohnson/clock v1.3.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA=
@@ -275,12 +322,11 @@ github.com/cihub/seelog v0.0.0-20170130134532-f561c5e57575 h1:kHaBemcxl8o/pQ5VM1
github.com/cihub/seelog v0.0.0-20170130134532-f561c5e57575/go.mod h1:9d6lWj8KzO/fd/NrVaLscBKmPigpZpn5YawRPw+e3Yo=
github.com/circonus-labs/circonus-gometrics v2.3.1+incompatible/go.mod h1:nmEj6Dob7S7YxXgwXpfOuvO54S+tGdZdw9fuRZt25Ag=
github.com/circonus-labs/circonusllhist v0.1.3/go.mod h1:kMXHVDlOchFAehlya5ePtbp5jckzBHf4XRpQvBOLI+I=
-github.com/civo/civogo v0.3.11 h1:mON/fyrV946Sbk6paRtOSGsN+asCgCmHCgArf5xmGxM=
-github.com/civo/civogo v0.3.11/go.mod h1:7+GeeFwc4AYTULaEshpT2vIcl3Qq8HPoxA17viX3l6g=
github.com/clbanning/mxj v1.8.4/go.mod h1:BVjHeAH+rl9rs6f+QIpeRl0tfu10SXn1pUSa5PVGJng=
+github.com/clbanning/mxj/v2 v2.5.5/go.mod h1:hNiWqW14h+kc+MdF9C6/YoRfjEJoR3ou6tn/Qo+ve2s=
+github.com/clbanning/mxj/v2 v2.7.0 h1:WA/La7UGCanFe5NpHF0Q3DNtnCsVoxbPKuyBNHWRyME=
+github.com/clbanning/mxj/v2 v2.7.0/go.mod h1:hNiWqW14h+kc+MdF9C6/YoRfjEJoR3ou6tn/Qo+ve2s=
github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw=
-github.com/cloudflare/cloudflare-go v0.115.0 h1:84/dxeeXweCc0PN5Cto44iTA8AkG1fyT11yPO5ZB7sM=
-github.com/cloudflare/cloudflare-go v0.115.0/go.mod h1:Ds6urDwn/TF2uIU24mu7H91xkKP8gSAHxQ44DSZgVmU=
github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc=
github.com/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk=
github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk=
@@ -343,8 +389,8 @@ github.com/dimchansky/utfbom v1.1.1 h1:vV6w1AhK4VMnhBno/TPVCoK9U/LP0PkLCS9tbxHdi
github.com/dimchansky/utfbom v1.1.1/go.mod h1:SxdoEBH5qIqFocHMyGOXVAybYJdr71b1Q/j0mACtrfE=
github.com/distribution/reference v0.6.0 h1:0IXCQ5g4/QMHHkarYzh5l+u8T3t73zM5QvfrDyIgxBk=
github.com/distribution/reference v0.6.0/go.mod h1:BbU0aIcezP1/5jX/8MP0YiH4SdvB5Y4f/wlDRiLyi3E=
-github.com/dnsimple/dnsimple-go v1.7.0 h1:JKu9xJtZ3SqOC+BuYgAWeab7+EEx0sz422vu8j611ZY=
-github.com/dnsimple/dnsimple-go v1.7.0/go.mod h1:EKpuihlWizqYafSnQHGCd/gyvy3HkEQJ7ODB4KdV8T8=
+github.com/dnsimple/dnsimple-go/v4 v4.0.0 h1:nUCICZSyZDiiqimAAL+E8XL+0sKGks5VRki5S8XotRo=
+github.com/dnsimple/dnsimple-go/v4 v4.0.0/go.mod h1:AXT2yfAFOntJx6iMeo1J/zKBw0ggXFYBt4e97dqqPnc=
github.com/docker/cli v27.1.1+incompatible h1:goaZxOqs4QKxznZjjBWKONQci/MywhtRv2oNn0GkeZE=
github.com/docker/cli v27.1.1+incompatible/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8=
github.com/docker/docker v27.1.1+incompatible h1:hO/M4MtV36kzKldqnA37IWhebRA+LnqqcqDja6kVaKY=
@@ -399,8 +445,8 @@ github.com/evanphx/json-patch v4.9.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLi
github.com/evanphx/json-patch v4.11.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk=
github.com/evanphx/json-patch v4.12.0+incompatible h1:4onqiflcdA9EOZ4RxV643DvftH5pOlLGNtQ5lPWQu84=
github.com/evanphx/json-patch v4.12.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk=
-github.com/exoscale/egoscale/v3 v3.1.13 h1:CAGC7QRjp2AiGj01agsSD0VKCp4OZmW5f51vV2IguNQ=
-github.com/exoscale/egoscale/v3 v3.1.13/go.mod h1:t9+MpSEam94na48O/xgvvPFpQPRiwZ3kBN4/UuQtKco=
+github.com/exoscale/egoscale/v3 v3.1.24 h1:EUWmjw/JgMj1faX5ojosjrJE5eY0QEWP0KBmLyFU6aE=
+github.com/exoscale/egoscale/v3 v3.1.24/go.mod h1:A53enXfm8nhVMpIYw0QxiwQ2P6AdCF4F/nVYChNEzdE=
github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4=
github.com/fatih/color v1.9.0/go.mod h1:eQcE1qtQxscV5RaZvpXrrb8Drkc3/DdQ+uUYCNjL+zU=
github.com/fatih/color v1.12.0/go.mod h1:ELkj/draVOlAH/xkhN6mQ50Qd0MPOk5AAr3maGEBuJM=
@@ -423,10 +469,10 @@ github.com/frankban/quicktest v1.14.6/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7z
github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo=
github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ=
github.com/fsnotify/fsnotify v1.5.1/go.mod h1:T3375wBYaZdLLcVNkcVbzGHY7f1l/uK5T5Ai1i3InKU=
-github.com/fsnotify/fsnotify v1.8.0 h1:dAwr6QBTBZIkG8roQaJjGof0pp0EeF+tNV7YBP3F/8M=
-github.com/fsnotify/fsnotify v1.8.0/go.mod h1:8jBTzvmWwFyi3Pb8djgCCO5IBqzKJ/Jwo8TRcHyHii0=
-github.com/gabriel-vasile/mimetype v1.4.2 h1:w5qFW6JKBz9Y393Y4q372O9A7cUSequkh1Q7OhCmWKU=
-github.com/gabriel-vasile/mimetype v1.4.2/go.mod h1:zApsH/mKG4w07erKIaJPFiX0Tsq9BFQgN3qGY5GnNgA=
+github.com/fsnotify/fsnotify v1.9.0 h1:2Ml+OJNzbYCTzsxtv8vKSFD9PbJjmhYF14k/jKC7S9k=
+github.com/fsnotify/fsnotify v1.9.0/go.mod h1:8jBTzvmWwFyi3Pb8djgCCO5IBqzKJ/Jwo8TRcHyHii0=
+github.com/gabriel-vasile/mimetype v1.4.3 h1:in2uUcidCuFcDKtdcBxlR0rJ1+fsokWf+uqxgUFjbI0=
+github.com/gabriel-vasile/mimetype v1.4.3/go.mod h1:d8uq/6HKRL6CGdk+aubisF/M5GcPfT7nKyLpA0lbSSk=
github.com/gambol99/go-marathon v0.0.0-20180614232016-99a156b96fb2 h1:df6OFl8WNXk82xxP3R9ZPZ5seOA8XZkwLdbEzZF1/xI=
github.com/gambol99/go-marathon v0.0.0-20180614232016-99a156b96fb2/go.mod h1:GLyXJD41gBO/NPKVPGQbhyyC06eugGy15QEZyUkE2/s=
github.com/getkin/kin-openapi v0.61.0/go.mod h1:7Yn5whZr5kJi6t+kShccXS8ae1APpYTW6yheSwk8Yi4=
@@ -435,8 +481,12 @@ github.com/ghodss/yaml v1.0.0 h1:wQHKEahhL6wmXdzwWG11gIVCkOv05bNOh+Rxn0yngAk=
github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04=
github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI=
github.com/gin-gonic/gin v1.7.4/go.mod h1:jD2toBW3GZUr5UMcdrwQA10I7RuaFOl/SGeDjXkfUtY=
-github.com/go-acme/lego/v4 v4.23.1 h1:lZ5fGtGESA2L9FB8dNTvrQUq3/X4QOb8ExkKyY7LSV4=
-github.com/go-acme/lego/v4 v4.23.1/go.mod h1:7UMVR7oQbIYw6V7mTgGwi4Er7B6Ww0c+c8feiBM0EgI=
+github.com/go-acme/alidns-20150109/v4 v4.5.10 h1:epLD0VaHR5XUpiM6mjm4MzQFICrk+zpuqDz2aO1/R/k=
+github.com/go-acme/alidns-20150109/v4 v4.5.10/go.mod h1:qGRq8kD0xVgn82qRSQmhHwh/oWxKRjF4Db5OI4ScV5g=
+github.com/go-acme/lego/v4 v4.25.2 h1:+D1Q+VnZrD+WJdlkgUEGHFFTcDrwGlE7q24IFtMmHDI=
+github.com/go-acme/lego/v4 v4.25.2/go.mod h1:OORYyVNZPaNdIdVYCGSBNRNZDIjhQbPuFxwGDgWj/yM=
+github.com/go-acme/tencentclouddnspod v1.0.1208 h1:xAVy1lmg2KcKKeYmFSBQUttwc1o1S++9QTjAotGC+BM=
+github.com/go-acme/tencentclouddnspod v1.0.1208/go.mod h1:yxG02mkbbVd7lTb97nOn7oj09djhm7hAwxNQw4B9dpQ=
github.com/go-chi/chi/v5 v5.0.0/go.mod h1:BBug9lr0cqtdAhsu6R4AAdvufI0/XBzAQSsUqJpoZOs=
github.com/go-cmd/cmd v1.0.5/go.mod h1:y8q8qlK5wQibcw63djSl/ntiHUHXHGdCkPk0j4QeW4s=
github.com/go-errors/errors v1.0.1 h1:LUHzmkK3GUKUrL/1gfBUxAHzcev3apQlezX/+O7ma6w=
@@ -444,8 +494,8 @@ github.com/go-errors/errors v1.0.1/go.mod h1:f4zRHt4oKfwPJE5k8C9vpYG+aDHdBFUsgrm
github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU=
github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8=
github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8=
-github.com/go-jose/go-jose/v4 v4.0.5 h1:M6T8+mKZl/+fNNuFHvGIzDz7BTLQPIounk/b9dw3AaE=
-github.com/go-jose/go-jose/v4 v4.0.5/go.mod h1:s3P1lRrkT8igV8D9OjyL4WRyHvjB6a4JSllnOrmmBOA=
+github.com/go-jose/go-jose/v4 v4.1.1 h1:JYhSgy4mXXzAdF3nUx3ygx347LRXJRrpgyU3adRmkAI=
+github.com/go-jose/go-jose/v4 v4.1.1/go.mod h1:BdsZGqgdO3b6tTc6LSE56wcDbMMLuPsw5d4ZD5f94kA=
github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as=
github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as=
github.com/go-kit/kit v0.12.0/go.mod h1:lHd+EkCZPIwYItmGDDRdhinkzX2A1sj+M9biaEaizzs=
@@ -500,16 +550,16 @@ github.com/go-playground/universal-translator v0.18.1 h1:Bcnm0ZwsGyWbCzImXv+pAJn
github.com/go-playground/universal-translator v0.18.1/go.mod h1:xekY+UJKNuX9WP91TpwSH2VMlDf28Uj24BCp08ZFTUY=
github.com/go-playground/validator/v10 v10.4.1/go.mod h1:nlOn6nFhuKACm19sB/8EGNn9GlaMV7XkbRSipzJ0Ii4=
github.com/go-playground/validator/v10 v10.9.0/go.mod h1:74x4gJWsvQexRdW8Pn3dXSGrTK4nAUsbPlLADvpJkos=
-github.com/go-playground/validator/v10 v10.16.0 h1:x+plE831WK4vaKHO/jpgUGsvLKIqRRkz6M78GuJAfGE=
-github.com/go-playground/validator/v10 v10.16.0/go.mod h1:9iXMNT7sEkjXb0I+enO7QXmzG6QCsPWY4zveKFVRSyU=
+github.com/go-playground/validator/v10 v10.23.0 h1:/PwmTwZhS0dPkav3cdK9kV1FsAmrL8sThn8IHr/sO+o=
+github.com/go-playground/validator/v10 v10.23.0/go.mod h1:dbuPbCMFw/DrkbEynArYaCwl3amGuJotoKCe95atGMM=
github.com/go-resty/resty/v2 v2.16.5 h1:hBKqmWrr7uRc3euHVqmh1HTHcKn99Smr7o5spptdhTM=
github.com/go-resty/resty/v2 v2.16.5/go.mod h1:hkJtXbA2iKHzJheXYvQ8snQES5ZLGKMwQ07xAwp/fiA=
github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY=
github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0/go.mod h1:fyg7847qk6SyHyPtNmDHnmrv/HOrqktSC+C9fM+CJOE=
github.com/go-task/slim-sprig/v3 v3.0.0 h1:sUs3vkvUymDpBKi3qH1YSqBQk9+9D/8M2mN1vB6EwHI=
github.com/go-task/slim-sprig/v3 v3.0.0/go.mod h1:W848ghGpv3Qj3dhTPRyJypKRiqCdHZiAzKg9hl15HA8=
-github.com/go-viper/mapstructure/v2 v2.3.0 h1:27XbWsHIqhbdR5TIC911OfYvgSaW93HM+dX7970Q7jk=
-github.com/go-viper/mapstructure/v2 v2.3.0/go.mod h1:oJDH3BJKyqBA2TXFhDsKDGDTlndYOZ6rGS0BRZIxGhM=
+github.com/go-viper/mapstructure/v2 v2.4.0 h1:EBsztssimR/CONLSZZ04E8qAkxNYq4Qp9LvH92wZUgs=
+github.com/go-viper/mapstructure/v2 v2.4.0/go.mod h1:oJDH3BJKyqBA2TXFhDsKDGDTlndYOZ6rGS0BRZIxGhM=
github.com/go-zookeeper/zk v1.0.2/go.mod h1:nOB03cncLtlp4t+UAkGSV+9beXP/akpekBwL+UX1Qcw=
github.com/go-zookeeper/zk v1.0.3 h1:7M2kwOsc//9VeeFiPtf+uSJlVpU66x9Ba5+8XK7/TDg=
github.com/go-zookeeper/zk v1.0.3/go.mod h1:nOB03cncLtlp4t+UAkGSV+9beXP/akpekBwL+UX1Qcw=
@@ -517,10 +567,7 @@ github.com/gobs/pretty v0.0.0-20180724170744-09732c25a95b h1:/vQ+oYKu+JoyaMPDsv5
github.com/gobs/pretty v0.0.0-20180724170744-09732c25a95b/go.mod h1:Xo4aNUOrJnVruqWQJBtW6+bTBDTniY8yZum5rF3b5jw=
github.com/gobuffalo/flect v0.2.3/go.mod h1:vmkQwuZYhN5Pc4ljYQZzP+1sq+NEkK+lh20jmEmX3jc=
github.com/goccy/go-json v0.7.8/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I=
-github.com/goccy/go-json v0.10.5 h1:Fq85nIqj+gXn/S5ahsiTlK3TmC85qgirsdTP/+DeaC4=
-github.com/goccy/go-json v0.10.5/go.mod h1:oq7eo15ShAhp70Anwd5lgX2pLfOS3QCiwU/PULtXL6M=
github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA=
-github.com/gofrs/flock v0.8.1/go.mod h1:F1TvTiK9OcQqauNUHlbJvyl9Qa1QvF/gOUDKA14jxHU=
github.com/gofrs/flock v0.12.1 h1:MTLVXXHf8ekldpJk3AKicLij9MdwOWkZ+a/jHHZby9E=
github.com/gofrs/flock v0.12.1/go.mod h1:9zxTsyu5xtJ9DK+1tFZyibEV7y3uwDxPPfbxeeHCoD0=
github.com/gogo/googleapis v1.1.0/go.mod h1:gf4bu3Q80BeJ6H1S1vYPm8/ELATdvryBaNFGgqEef3s=
@@ -529,7 +576,6 @@ github.com/gogo/protobuf v1.2.0/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7a
github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4=
github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q=
github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q=
-github.com/goji/httpauth v0.0.0-20160601135302-2da839ab0f4d/go.mod h1:nnjvkQ9ptGaCkuDUx6wNykzzlUixGxvkme+H/lnzb+A=
github.com/golang-jwt/jwt v3.2.2+incompatible/go.mod h1:8pz2t5EyA70fFQQSrl6XZXzqecmYZeUEB8OUGHkxJ+I=
github.com/golang-jwt/jwt/v4 v4.0.0/go.mod h1:/xlHOz8bRuivTWchD4jCa+NbatV+wEUSzwAxVc6locg=
github.com/golang-jwt/jwt/v4 v4.2.0/go.mod h1:/xlHOz8bRuivTWchD4jCa+NbatV+wEUSzwAxVc6locg=
@@ -643,8 +689,8 @@ github.com/googleapis/enterprise-certificate-proxy v0.3.6 h1:GW/XbdyBFQ8Qe+YAmFU
github.com/googleapis/enterprise-certificate-proxy v0.3.6/go.mod h1:MkHOF77EYAE7qfSuSS9PU6g4Nt4e11cnsDUowfwewLA=
github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg=
github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk=
-github.com/googleapis/gax-go/v2 v2.14.1 h1:hb0FFeiPaQskmvakKu5EbCbpntQn48jyHuvrkurSS/Q=
-github.com/googleapis/gax-go/v2 v2.14.1/go.mod h1:Hb/NubMaVM88SrNkvl8X/o8XWwDJEPqouaLeN2IUxoA=
+github.com/googleapis/gax-go/v2 v2.14.2 h1:eBLnkZ9635krYIPD+ag1USrOAI0Nr0QYF3+/3GqO0k0=
+github.com/googleapis/gax-go/v2 v2.14.2/go.mod h1:ON64QhlJkhVtSqp4v1uaK92VyZ2gmvDQsweuyLV+8+w=
github.com/googleapis/gnostic v0.4.1/go.mod h1:LRhVm6pbyptWbWbuZ38d1eyptfvIytN3ir6b65WBswg=
github.com/googleapis/gnostic v0.5.1/go.mod h1:6U4PtQXGIEt/Z3h5MAT7FNofLnw9vXk2cUuW7uA/OeU=
github.com/googleapis/gnostic v0.5.5/go.mod h1:7+EbHbldMins07ALC74bsA81Ovc97DwqyJO1AENw9kA=
@@ -654,6 +700,7 @@ github.com/gophercloud/gophercloud v1.14.1/go.mod h1:aAVqcocTSXh2vYFZ1JTvx4EQmfg
github.com/gophercloud/utils v0.0.0-20231010081019-80377eca5d56 h1:sH7xkTfYzxIEgzq1tDHIMKRh1vThOEOGNsettdEeLbE=
github.com/gophercloud/utils v0.0.0-20231010081019-80377eca5d56/go.mod h1:VSalo4adEk+3sNkmVJLnhHoOyOYYS8sTWLG4mv5BKto=
github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY=
+github.com/gopherjs/gopherjs v0.0.0-20200217142428-fce0ec30dd00/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY=
github.com/gorilla/context v1.1.1/go.mod h1:kBGZzfjB9CEq2AlWe17Uuf7NDRt0dE0s8S51q0aT7Yg=
github.com/gorilla/securecookie v1.1.1/go.mod h1:ra0sb63/xPlUeL+yeDciTfxMRAA+MP+HVt/4epWDjd4=
github.com/gorilla/sessions v1.2.1/go.mod h1:dk2InVEVJ0sfLlnXv9EAgkf6ecYs/i80K/zI+bUmuGM=
@@ -707,8 +754,8 @@ github.com/hashicorp/go-multierror v1.1.0/go.mod h1:spPvp8C1qA32ftKqdAHm4hHTbPw+
github.com/hashicorp/go-multierror v1.1.1 h1:H5DkEtf6CXdFp0N0Em5UCwQpXMWke8IA0+lD48awMYo=
github.com/hashicorp/go-multierror v1.1.1/go.mod h1:iw975J/qwKPdAO1clOe2L8331t/9/fmwbPZ6JB6eMoM=
github.com/hashicorp/go-retryablehttp v0.5.3/go.mod h1:9B5zBasrRhHXnJnui7y6sL7es7NDiJgTc6Er0maI1Xs=
-github.com/hashicorp/go-retryablehttp v0.7.7 h1:C8hUCYzor8PIfXHa4UrZkU4VvK8o9ISHxT2Q8+VepXU=
-github.com/hashicorp/go-retryablehttp v0.7.7/go.mod h1:pkQpWZeYWskR+D1tR2O5OcBFOxfA7DoAO6xtkuQnHTk=
+github.com/hashicorp/go-retryablehttp v0.7.8 h1:ylXZWnqa7Lhqpk0L1P1LzDtGcCR0rPVUrx/c8Unxc48=
+github.com/hashicorp/go-retryablehttp v0.7.8/go.mod h1:rjiScheydd+CxvumBsIrFKlx3iS0jrZ7LvzFGFmuKbw=
github.com/hashicorp/go-rootcerts v1.0.0/go.mod h1:K6zTfqpRlCUIjkwsN4Z+hiSfzSTQa6eBIzfwKfwNnHU=
github.com/hashicorp/go-rootcerts v1.0.2 h1:jzhAVGtqPKbwpyCPELlgNWhE1znq+qwJtW5Oi2viEzc=
github.com/hashicorp/go-rootcerts v1.0.2/go.mod h1:pqUvnprVnM5bf7AOirdbb01K4ccR319Vf4pU3K5EGc8=
@@ -755,8 +802,8 @@ github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpO
github.com/huandu/xstrings v1.3.3/go.mod h1:y5/lhBue+AyNmUVz9RLU9xbLR0o4KIIExikq4ovT0aE=
github.com/huandu/xstrings v1.5.0 h1:2ag3IFq9ZDANvthTwTiqSSZLjDc+BedvHPAp5tJy2TI=
github.com/huandu/xstrings v1.5.0/go.mod h1:y5/lhBue+AyNmUVz9RLU9xbLR0o4KIIExikq4ovT0aE=
-github.com/huaweicloud/huaweicloud-sdk-go-v3 v0.1.141 h1:8i57QAi5u+iPAYze92bkIvZoHiS0J45ndul5glr/NE8=
-github.com/huaweicloud/huaweicloud-sdk-go-v3 v0.1.141/go.mod h1:Y/+YLCFCJtS29i2MbYPTUlNNfwXvkzEsZKR0imY/2aY=
+github.com/huaweicloud/huaweicloud-sdk-go-v3 v0.1.159 h1:6LZysc4iyO4cHB1aJsRklWfSEJr8CEhW7BmcM0SkYcU=
+github.com/huaweicloud/huaweicloud-sdk-go-v3 v0.1.159/go.mod h1:Y/+YLCFCJtS29i2MbYPTUlNNfwXvkzEsZKR0imY/2aY=
github.com/hudl/fargo v1.4.0/go.mod h1:9Ai6uvFy5fQNq6VPKtg+Ceq1+eTY4nKUlR2JElEOcDo=
github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc=
github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc=
@@ -774,15 +821,15 @@ github.com/influxdata/influxdb1-client v0.0.0-20200827194710-b269163b24ab h1:HqW
github.com/influxdata/influxdb1-client v0.0.0-20200827194710-b269163b24ab/go.mod h1:qj24IKcXYK6Iy9ceXlo3Tc+vtHo9lIhSX5JddghvEPo=
github.com/influxdata/line-protocol v0.0.0-20200327222509-2487e7298839 h1:W9WBk7wlPfJLvMCdtV4zPulc4uCPrlywQOmbFOhgQNU=
github.com/influxdata/line-protocol v0.0.0-20200327222509-2487e7298839/go.mod h1:xaLFMmpvUxqXtVkUJfg9QmT88cDaCJ3ZKgdZ78oO8Qo=
-github.com/infobloxopen/infoblox-go-client/v2 v2.9.0 h1:wS8kTlQVeVbrepeY83s9X+XdSa6Qah5KO+tdW+zRQXU=
-github.com/infobloxopen/infoblox-go-client/v2 v2.9.0/go.mod h1:NeNJpz09efw/edzqkVivGv1bWqBXTomqYBRFbP+XBqg=
+github.com/infobloxopen/infoblox-go-client/v2 v2.10.0 h1:AKsihjFT/t6Y0keEv3p59DACcOuh0inWXdUB0ZOzYH0=
+github.com/infobloxopen/infoblox-go-client/v2 v2.10.0/go.mod h1:NeNJpz09efw/edzqkVivGv1bWqBXTomqYBRFbP+XBqg=
github.com/instana/go-sensor v1.38.3 h1:/PdHEDveLmUCvK+O6REvSv8kKljX8vaj9JMjMeCHAWk=
github.com/instana/go-sensor v1.38.3/go.mod h1:E42MelHWFz11qqaLwvgt0j98v2s2O/bq22UDkGaG0Gg=
github.com/instana/testify v1.6.2-0.20200721153833-94b1851f4d65 h1:T25FL3WEzgmKB0m6XCJNZ65nw09/QIp3T1yXr487D+A=
github.com/instana/testify v1.6.2-0.20200721153833-94b1851f4d65/go.mod h1:nYhEREG/B7HUY7P+LKOrqy53TpIqmJ9JyUShcaEKtGw=
github.com/jarcoal/httpmock v1.0.8/go.mod h1:ATjnClrvW/3tijVmpL/va5Z3aAyGvqU3gCT8nX0Txik=
-github.com/jarcoal/httpmock v1.3.1 h1:iUx3whfZWVf3jT01hQTO/Eo5sAYtB2/rqaUuOtpInww=
-github.com/jarcoal/httpmock v1.3.1/go.mod h1:3yb8rc4BI7TCBhFY8ng0gjuLKJNquuDNiPaZjnENuYg=
+github.com/jarcoal/httpmock v1.4.0 h1:BvhqnH0JAYbNudL2GMJKgOHe2CtKlzJ/5rWKyp+hc2k=
+github.com/jarcoal/httpmock v1.4.0/go.mod h1:ftW1xULwo+j0R0JJkJIIi7UKigZUXCLLanykgjwBXL0=
github.com/jcmturner/aescts/v2 v2.0.0 h1:9YKLH6ey7H4eDBXW8khjYslgyqG2xZikXP0EQFKrle8=
github.com/jcmturner/aescts/v2 v2.0.0/go.mod h1:AiaICIRyfYg35RUkr8yESTqvSy7csK90qZ5xfvvsoNs=
github.com/jcmturner/dnsutils/v2 v2.0.0 h1:lltnkeZGL0wILNvrNiVCR6Ro5PGU/SeBvVO/8c/iPbo=
@@ -797,9 +844,7 @@ github.com/jcmturner/gokrb5/v8 v8.4.4/go.mod h1:1btQEpgT6k+unzCwX1KdWMEwPPkkgBtP
github.com/jcmturner/rpc/v2 v2.0.3 h1:7FXXj8Ti1IaVFpSAziCZWNzbNuZmnvw/i6CqLNdWfZY=
github.com/jcmturner/rpc/v2 v2.0.3/go.mod h1:VUJYCIDm3PVOEHw8sgt091/20OJjskO/YJki3ELg/Hc=
github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI=
-github.com/jmespath/go-jmespath v0.4.0 h1:BEgLn5cpjn8UN1mAw4NjwDrS35OdebyEtFe+9YPoQUg=
github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo=
-github.com/jmespath/go-jmespath/internal/testify v1.5.1 h1:shLQSRRSCCPj3f2gpwzGwWFoC7ycTf1rcQZHOlsJ6N8=
github.com/jmespath/go-jmespath/internal/testify v1.5.1/go.mod h1:L3OGu8Wl2/fWfCI6z80xFu9LTZmf1ZRjMHUOPmWr69U=
github.com/joeshaw/multierror v0.0.0-20140124173710-69b34d4ec901 h1:rp+c0RAYOWj8l6qbCUTSiRLG/iKnW3K3/QfPPuSsBt4=
github.com/joeshaw/multierror v0.0.0-20140124173710-69b34d4ec901/go.mod h1:Z86h9688Y0wesXCyonoVr47MasHilkuLMqGhRZ4Hpak=
@@ -829,14 +874,13 @@ github.com/k0kubun/go-ansi v0.0.0-20180517002512-3bf9e2903213 h1:qGQQKEcAR99REcM
github.com/k0kubun/go-ansi v0.0.0-20180517002512-3bf9e2903213/go.mod h1:vNUNkEQ1e29fT/6vq2aBdFsgNPmy8qMdSay1npru+Sw=
github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51 h1:Z9n2FFNUXsshfwJMBgNA0RU6/i7WVaAegv3PtuIHPMs=
github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51/go.mod h1:CzGEWj7cYgsdH8dAjBGEr58BoE7ScuLd+fwFZ44+/x8=
-github.com/keybase/go-keychain v0.0.0-20231219164618-57a3676c3af6 h1:IsMZxCuZqKuao2vNdfD82fjjgPLfyHLpR41Z88viRWs=
-github.com/keybase/go-keychain v0.0.0-20231219164618-57a3676c3af6/go.mod h1:3VeWNIJaW+O5xpRQbPp0Ybqu1vJd/pm7s2F473HRrkw=
+github.com/keybase/go-keychain v0.0.1 h1:way+bWYa6lDppZoZcgMbYsvC7GxljxrskdNInRtuthU=
+github.com/keybase/go-keychain v0.0.1/go.mod h1:PdEILRW3i9D8JcdM+FmY6RwkHGnhHxXwkPPMeUgOK1k=
github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q=
github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8=
github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck=
github.com/klauspost/compress v1.13.4/go.mod h1:8dP1Hq4DHOhN9w426knH3Rhby4rFm6D8eO+e+Dq5Gzg=
github.com/klauspost/compress v1.13.6/go.mod h1:/3/Vjq9QcHkK5uEr5lBEmyoZ1iFhe47etQ6QUkpK6sk=
-github.com/klauspost/compress v1.15.9/go.mod h1:PhcZ0MbTNciWF3rruxRgKxI5NkcHHrHUDtV4Yw2GlzU=
github.com/klauspost/compress v1.17.11-0.20241004063537-dbd6c381492a h1:cwHOqPB4H4iQq8177kf2SxpjNbcjJ2m3lNwKIe28Hqg=
github.com/klauspost/compress v1.17.11-0.20241004063537-dbd6c381492a/go.mod h1:pMDklpSncoRMuLFrf1W9Ss9KT+0rH90U12bZKk7uwG0=
github.com/kolo/xmlrpc v0.0.0-20220921171641-a4b6fa1dd06b h1:udzkj9S/zlT5X367kqJis0QP7YMxobob6zhzq6Yre00=
@@ -878,8 +922,8 @@ github.com/labstack/gommon v0.3.0/go.mod h1:MULnywXg0yavhxWKc+lOruYdAhDwPK9wf0OL
github.com/labstack/gommon v0.3.1/go.mod h1:uW6kP17uPlLJsD3ijUYn3/M5bAxtlZhMI6m3MFxTMTM=
github.com/leodido/go-urn v1.2.0/go.mod h1:+8+nEpDfqqsY+g338gtMEUOtuK+4dEMhiQEgxpxOKII=
github.com/leodido/go-urn v1.2.1/go.mod h1:zt4jvISO2HfUBqxjfIshjdMTYS56ZS/qv49ictyFfxY=
-github.com/leodido/go-urn v1.2.4 h1:XlAE/cm/ms7TE/VMVoduSpNBoyc2dOxHs5MZSwAN63Q=
-github.com/leodido/go-urn v1.2.4/go.mod h1:7ZrI8mTSeBSHl/UaRyKQW1qZeMgak41ANeCNaVckg+4=
+github.com/leodido/go-urn v1.4.0 h1:WT9HwE9SGECu3lg4d/dIA+jxlljEa1/ffXKmRjqdmIQ=
+github.com/leodido/go-urn v1.4.0/go.mod h1:bvxc+MVxLKB4z00jd1z+Dvzr47oO32F/QSNjSBOlFxI=
github.com/lestrrat-go/backoff/v2 v2.0.8/go.mod h1:rHP/q/r9aT27n24JQLa7JhSQZCKBBOiM/uP402WwN8Y=
github.com/lestrrat-go/blackmagic v1.0.0/go.mod h1:TNgH//0vYSs8VXDCfkZLgIrVTTXQELZffUV0tz3MtdQ=
github.com/lestrrat-go/codegen v1.0.2/go.mod h1:JhJw6OQAuPEfVKUCLItpaVLumDGWQznd1VaXrBk9TdM=
@@ -887,8 +931,8 @@ github.com/lestrrat-go/httpcc v1.0.0/go.mod h1:tGS/u00Vh5N6FHNkExqGGNId8e0Big+++
github.com/lestrrat-go/iter v1.0.1/go.mod h1:zIdgO1mRKhn8l9vrZJZz9TUMMFbQbLeTsbqPDrJ/OJc=
github.com/lestrrat-go/jwx v1.2.7/go.mod h1:bw24IXWbavc0R2RsOtpXL7RtMyP589yZ1+L7kd09ZGA=
github.com/lestrrat-go/option v1.0.0/go.mod h1:5ZHFbivi4xwXxhxY9XHDe2FHo6/Z7WWmtT7T5nBBp3I=
-github.com/linode/linodego v1.48.1 h1:Ojw1S+K5jJr1dggO8/H6r4FINxXnJbOU5GkbpaTfmhU=
-github.com/linode/linodego v1.48.1/go.mod h1:fc3t60If8X+yZTFAebhCnNDFrhwQhq9HDU92WnBousQ=
+github.com/linode/linodego v1.53.0 h1:UWr7bUUVMtcfsuapC+6blm6+jJLPd7Tf9MZUpdOERnI=
+github.com/linode/linodego v1.53.0/go.mod h1:bI949fZaVchjWyKIA08hNyvAcV6BAS+PM2op3p7PAWA=
github.com/liquidweb/go-lwApi v0.0.0-20190605172801-52a4864d2738/go.mod h1:0sYF9rMXb0vlG+4SzdiGMXHheCZxjguMq+Zb4S2BfBs=
github.com/liquidweb/liquidweb-cli v0.6.9 h1:acbIvdRauiwbxIsOCEMXGwF75aSJDbDiyAWPjVnwoYM=
github.com/liquidweb/liquidweb-cli v0.6.9/go.mod h1:cE1uvQ+x24NGUL75D0QagOFCG8Wdvmwu8aL9TLmA/eQ=
@@ -954,8 +998,8 @@ github.com/miekg/dns v1.1.26/go.mod h1:bPDLeHnStXmXAq1m/Ch/hvfNHr14JKNPMBo3VZKju
github.com/miekg/dns v1.1.41/go.mod h1:p6aan82bvRIyn+zDIv9xYNUpwa73JcSh9BKwknJysuI=
github.com/miekg/dns v1.1.43/go.mod h1:+evo5L0630/F6ca/Z9+GAqzhjGyn8/c+TBaOyfEl0V4=
github.com/miekg/dns v1.1.47/go.mod h1:e3IlAVfNqAllflbibAZEWOXOQ+Ynzk/dDozDxY7XnME=
-github.com/miekg/dns v1.1.64 h1:wuZgD9wwCE6XMT05UU/mlSko71eRSXEAm2EbjQXLKnQ=
-github.com/miekg/dns v1.1.64/go.mod h1:Dzw9769uoKVaLuODMDZz9M6ynFU6Em65csPuoi8G0ck=
+github.com/miekg/dns v1.1.67 h1:kg0EHj0G4bfT5/oOys6HhZw4vmMlnoZ+gDu8tJ/AlI0=
+github.com/miekg/dns v1.1.67/go.mod h1:fujopn7TB3Pu3JM69XaawiU0wqjpL9/8xGop5UrTPps=
github.com/mimuret/golang-iij-dpf v0.9.1 h1:Gj6EhHJkOhr+q2RnvRPJsPMcjuVnWPSccEHyoEehU34=
github.com/mimuret/golang-iij-dpf v0.9.1/go.mod h1:sl9KyOkESib9+KRD3HaGpgi1xk7eoN2+d96LCLsME2M=
github.com/minio/highwayhash v1.0.1/go.mod h1:BQskDq+xkJ12lmlUUi7U0M5Swg3EWR+dLTk+kldvVxY=
@@ -1014,8 +1058,8 @@ github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8m
github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U=
github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U=
github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f/go.mod h1:ZdcZmHo+o7JKHSa8/e818NopupXU1YMK5fe1lsApnBw=
-github.com/namedotcom/go v0.0.0-20180403034216-08470befbe04 h1:o6uBwrhM5C8Ll3MAAxrQxRHEu7FkapwTuI2WmL1rw4g=
-github.com/namedotcom/go v0.0.0-20180403034216-08470befbe04/go.mod h1:5sN+Lt1CaY4wsPvgQH/jsuJi4XO2ssZbdsIizr4CVC8=
+github.com/namedotcom/go/v4 v4.0.2 h1:4gNkPaPRG/2tqFNUUof7jAVsA6vDutFutEOd7ivnDwA=
+github.com/namedotcom/go/v4 v4.0.2/go.mod h1:J6sVueHMb0qbarPgdhrzEVhEaYp+R1SCaTGl2s6/J1Q=
github.com/nats-io/jwt v1.2.2/go.mod h1:/xX356yQA6LuXI9xWW7mZNpxgF2mBmGecH+Fj34sP5Q=
github.com/nats-io/jwt/v2 v2.0.3/go.mod h1:VRP+deawSXyhNjXmxPCHskrR6Mq50BqpEI5SEcNiGlY=
github.com/nats-io/nats-server/v2 v2.5.0/go.mod h1:Kj86UtrXAL6LwYRA6H4RqzkHhK0Vcv2ZnKD5WbQ1t3g=
@@ -1027,24 +1071,28 @@ github.com/nbio/st v0.0.0-20140626010706-e9e8d9816f32/go.mod h1:9wM+0iRr9ahx58uY
github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno=
github.com/nrdcg/auroradns v1.1.0 h1:KekGh8kmf2MNwqZVVYo/fw/ZONt8QMEmbMFOeljteWo=
github.com/nrdcg/auroradns v1.1.0/go.mod h1:O7tViUZbAcnykVnrGkXzIJTHoQCHcgalgAe6X1mzHfk=
-github.com/nrdcg/bunny-go v0.0.0-20240207213615-dde5bf4577a3 h1:ouZ2JWDl8IW5k1qugYbmpbmW8hn85Ig6buSMBRlz3KI=
-github.com/nrdcg/bunny-go v0.0.0-20240207213615-dde5bf4577a3/go.mod h1:ZwadWt7mVhMHMbAQ1w8IhDqtWO3eWqWq72W7trnaiE8=
-github.com/nrdcg/desec v0.10.0 h1:qrEDiqnsvNU9QE7lXIXi/tIHAfyaFXKxF2/8/52O8uM=
-github.com/nrdcg/desec v0.10.0/go.mod h1:5+4vyhMRTs49V9CNoODF/HwT8Mwxv9DJ6j+7NekUnBs=
+github.com/nrdcg/bunny-go v0.0.0-20250327222614-988a091fc7ea h1:OSgRS4kqOs/WuxuFOObP2gwrenL4/qiKXQbQugr/Two=
+github.com/nrdcg/bunny-go v0.0.0-20250327222614-988a091fc7ea/go.mod h1:IDRRngAngb2eTEaWgpO0hukQFI/vJId46fT1KErMytA=
+github.com/nrdcg/desec v0.11.0 h1:XZVHy07sg12y8FozMp+l7XvzPsdzog0AYXuQMaHBsfs=
+github.com/nrdcg/desec v0.11.0/go.mod h1:5+4vyhMRTs49V9CNoODF/HwT8Mwxv9DJ6j+7NekUnBs=
github.com/nrdcg/dnspod-go v0.4.0 h1:c/jn1mLZNKF3/osJ6mz3QPxTudvPArXTjpkmYj0uK6U=
github.com/nrdcg/dnspod-go v0.4.0/go.mod h1:vZSoFSFeQVm2gWLMkyX61LZ8HI3BaqtHZWgPTGKr6KQ=
github.com/nrdcg/freemyip v0.3.0 h1:0D2rXgvLwe2RRaVIjyUcQ4S26+cIS2iFwnhzDsEuuwc=
github.com/nrdcg/freemyip v0.3.0/go.mod h1:c1PscDvA0ukBF0dwelU/IwOakNKnVxetpAQ863RMJoM=
github.com/nrdcg/goacmedns v0.2.0 h1:ADMbThobzEMnr6kg2ohs4KGa3LFqmgiBA22/6jUWJR0=
github.com/nrdcg/goacmedns v0.2.0/go.mod h1:T5o6+xvSLrQpugmwHvrSNkzWht0UGAwj2ACBMhh73Cg=
-github.com/nrdcg/goinwx v0.10.0 h1:6W630bjDxQD6OuXKqrFRYVpTt0G/9GXXm3CeOrN0zJM=
-github.com/nrdcg/goinwx v0.10.0/go.mod h1:mnMSTi7CXBu2io4DzdOBoGFA1XclD0sEPWJaDhNgkA4=
+github.com/nrdcg/goinwx v0.11.0 h1:GER0SE3POub7rxARt3Y3jRy1OON1hwF1LRxHz5xsFBw=
+github.com/nrdcg/goinwx v0.11.0/go.mod h1:0BXSC0FxVtU4aTjX0Zw3x0DK32tjugLzeNIAGtwXvPQ=
github.com/nrdcg/mailinabox v0.2.0 h1:IKq8mfKiVwNW2hQii/ng1dJ4yYMMv3HAP3fMFIq2CFk=
github.com/nrdcg/mailinabox v0.2.0/go.mod h1:0yxqeYOiGyxAu7Sb94eMxHPIOsPYXAjTeA9ZhePhGnc=
github.com/nrdcg/namesilo v0.2.1 h1:kLjCjsufdW/IlC+iSfAqj0iQGgKjlbUUeDJio5Y6eMg=
github.com/nrdcg/namesilo v0.2.1/go.mod h1:lwMvfQTyYq+BbjJd30ylEG4GPSS6PII0Tia4rRpRiyw=
github.com/nrdcg/nodion v0.1.0 h1:zLKaqTn2X0aDuBHHfyA1zFgeZfiCpmu/O9DM73okavw=
github.com/nrdcg/nodion v0.1.0/go.mod h1:inbuh3neCtIWlMPZHtEpe43TmRXxHV6+hk97iCZicms=
+github.com/nrdcg/oci-go-sdk/common/v1065 v1065.95.2 h1:a7QUZD5c+NkrFrdkdyJUO9cOUo8VQJyRkcIzk9Wh+DI=
+github.com/nrdcg/oci-go-sdk/common/v1065 v1065.95.2/go.mod h1:O6osg9dPzXq7H2ib/1qzimzG5oXSJFgccR7iawg7SwA=
+github.com/nrdcg/oci-go-sdk/dns/v1065 v1065.95.2 h1:yflYnbQu4ciWH/GEztqlAccLPw4k5mp11uhW++al5ow=
+github.com/nrdcg/oci-go-sdk/dns/v1065 v1065.95.2/go.mod h1:atPDu37gu8HT7TtPpovrkgNmDAgOGM6TVEJ7ANTblMs=
github.com/nrdcg/porkbun v0.4.0 h1:rWweKlwo1PToQ3H+tEO9gPRW0wzzgmI/Ob3n2Guticw=
github.com/nrdcg/porkbun v0.4.0/go.mod h1:/QMskrHEIM0IhC/wY7iTCUgINsxdT2WcOphktJ9+Q54=
github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A=
@@ -1077,7 +1125,6 @@ github.com/onsi/gomega v1.13.0/go.mod h1:lRk9szgn8TxENtWd0Tp4c3wjlRfMTMH27I+3Je4
github.com/onsi/gomega v1.14.0/go.mod h1:cIuvLEne0aoVhAgh/O6ac0Op8WWw9H6eYCriF+tEHG0=
github.com/onsi/gomega v1.17.0/go.mod h1:HnhC7FXeEQY45zxNK3PPoIUhzk/80Xly9PcubAlGdZY=
github.com/onsi/gomega v1.18.1/go.mod h1:0q+aL8jAiMXy9hbwj2mr5GziHiwhAIQpFmmtT5hitRs=
-github.com/onsi/gomega v1.19.0/go.mod h1:LY+I3pBVzYsTBU1AnDwOSxaYi9WoWiqgwooUqq9yPro=
github.com/onsi/gomega v1.34.1 h1:EUMJIKUjM8sKjYbtxQI9A4z2o+rruxnzNvpknOXie6k=
github.com/onsi/gomega v1.34.1/go.mod h1:kU1QgUvBDLXBJq618Xvm2LUX6rSAfRaFRTcdOeDLwwY=
github.com/op/go-logging v0.0.0-20160315200505-970db520ece7/go.mod h1:HzydrMdWErDVzsI23lYNej1Htcns9BCg93Dk0bBINWk=
@@ -1096,12 +1143,10 @@ github.com/openzipkin-contrib/zipkin-go-opentracing v0.4.5/go.mod h1:/wsWhb9smxS
github.com/openzipkin/zipkin-go v0.2.1/go.mod h1:NaW6tEwdmWMaCDZzg8sh+IBNOxHMPnhQw8ySjnjRyN4=
github.com/openzipkin/zipkin-go v0.2.5 h1:UwtQQx2pyPIgWYHRg+epgdx1/HnBQTgN3/oIYEJTQzU=
github.com/openzipkin/zipkin-go v0.2.5/go.mod h1:KpXfKdgRDnnhsxw4pNIH9Md5lyFqKUa4YDFlwRYAMyE=
-github.com/oracle/oci-go-sdk/v65 v65.87.0 h1:CeVuK8t0dYODGT3P9IDhz4vyXF8poYE1ijoiO5vrKl0=
-github.com/oracle/oci-go-sdk/v65 v65.87.0/go.mod h1:IBEV9l1qBzUpo7zgGaRUhbB05BVfcDGYRFBCPlTcPp0=
github.com/outcaste-io/ristretto v0.2.3 h1:AK4zt/fJ76kjlYObOeNwh4T3asEuaCmp26pOvUOL9w0=
github.com/outcaste-io/ristretto v0.2.3/go.mod h1:W8HywhmtlopSB1jeMg3JtdIhf+DYkLAr0VN/s4+MHac=
-github.com/ovh/go-ovh v1.7.0 h1:V14nF7FwDjQrZt9g7jzcvAAQ3HN6DNShRFRMC3jLoPw=
-github.com/ovh/go-ovh v1.7.0/go.mod h1:cTVDnl94z4tl8pP1uZ/8jlVxntjSIf09bNcQ5TJSC7c=
+github.com/ovh/go-ovh v1.9.0 h1:6K8VoL3BYjVV3In9tPJUdT7qMx9h0GExN9EXx1r2kKE=
+github.com/ovh/go-ovh v1.9.0/go.mod h1:cTVDnl94z4tl8pP1uZ/8jlVxntjSIf09bNcQ5TJSC7c=
github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc=
github.com/pascaldekloe/goe v0.1.0 h1:cBOtyMzM9HTpWjXfbbunk26uA6nG3a8n06Wieeh0MwY=
github.com/pascaldekloe/goe v0.1.0/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc=
@@ -1144,8 +1189,8 @@ github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c/go.mod h1:Om
github.com/power-devops/perfstat v0.0.0-20220216144756-c35f1ee13d7c h1:NRoLoZvkBTKvR5gQLgA3e0hqjkY9u1wm+iOL45VN/qI=
github.com/power-devops/perfstat v0.0.0-20220216144756-c35f1ee13d7c/go.mod h1:OmDBASR4679mdNQnz2pUhc2G8CO2JrUAVFDRBDP/hJE=
github.com/pquerna/cachecontrol v0.0.0-20171018203845-0dec1b30a021/go.mod h1:prYjPmNq4d1NPVmpShWobRqXY3q7Vp+80DqgxxUrUIA=
-github.com/pquerna/otp v1.4.0 h1:wZvl1TIVxKRThZIBiwOOHOGP/1+nZyWBil9Y2XNEDzg=
-github.com/pquerna/otp v1.4.0/go.mod h1:dkJfzwRKNiegxyNb54X/3fLwhCynbMspSyWKnvi1AEg=
+github.com/pquerna/otp v1.5.0 h1:NMMR+WrmaqXU4EzdGJEE1aUUI0AMRzsp96fFFWNPwxs=
+github.com/pquerna/otp v1.5.0/go.mod h1:dkJfzwRKNiegxyNb54X/3fLwhCynbMspSyWKnvi1AEg=
github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw=
github.com/prometheus/client_golang v0.9.3/go.mod h1:/TN21ttK/J9q6uSwhBd54HahCDft0ttaMvbicHlPoso=
github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo=
@@ -1193,8 +1238,8 @@ github.com/rancher/go-rancher-metadata v0.0.0-20200311180630-7f4c936a06ac/go.mod
github.com/rcrowley/go-metrics v0.0.0-20181016184325-3113b8401b8a/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4=
github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 h1:N/ElC8H3+5XpJzTSTfLsJV/mx9Q9g7kxmchpfZyxgzM=
github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4=
-github.com/redis/go-redis/v9 v9.7.3 h1:YpPyAayJV+XErNsatSElgRZZVCwXX9QzkKYNvO7x0wM=
-github.com/redis/go-redis/v9 v9.7.3/go.mod h1:bGUrSggJ9X9GUmZpZNEOQKaANxSGgOEBRltRTZHSvrA=
+github.com/redis/go-redis/v9 v9.8.0 h1:q3nRvjrlge/6UD7eTu/DSg2uYiU2mCL0G/uzBWqhicI=
+github.com/redis/go-redis/v9 v9.8.0/go.mod h1:huWgSWd8mW6+m0VPhJjSSQ+d6Nh1VICQ6Q5lHuCH/Iw=
github.com/regfish/regfish-dnsapi-go v0.1.1 h1:TJFtbePHkd47q5GZwYl1h3DIYXmoxdLjW/SBsPtB5IE=
github.com/regfish/regfish-dnsapi-go v0.1.1/go.mod h1:ubIgXSfqarSnl3XHSn8hIFwFF3h0yrq0ZiWD93Y2VjY=
github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec h1:W09IVJc94icq4NjY3clb7Lk8O1qJ8BdBEF8z0ibU0rE=
@@ -1214,20 +1259,20 @@ github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb
github.com/ryanuber/columnize v2.1.0+incompatible/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts=
github.com/ryanuber/go-glob v1.0.0 h1:iQh3xXAumdQ+4Ufa5b25cRpC5TYKlno6hsv6Cb3pkBk=
github.com/ryanuber/go-glob v1.0.0/go.mod h1:807d1WSdnB0XRJzKNil9Om6lcp/3a0v4qIHxIXzX/Yc=
-github.com/sacloud/api-client-go v0.2.10 h1:+rv3jDohD+pkdYwOTBiB+jZsM0xK3AxadXRzhp3q66c=
-github.com/sacloud/api-client-go v0.2.10/go.mod h1:Jj3CTy2+O4bcMedVDXlbHuqqche85HEPuVXoQFhLaRc=
-github.com/sacloud/go-http v0.1.8 h1:ynreWA/vnM8G2ksbMlmefBHsXURKPz49qlPRqQ9IQdw=
-github.com/sacloud/go-http v0.1.8/go.mod h1:7TL7TN1fnPKHsMifIqURDkGujnKViCgEz5Ei/LQdFK8=
-github.com/sacloud/iaas-api-go v1.14.0 h1:xjkFWqdo4ilTrKPNNYBNWR/CZ/kVRsJrdAHAad6J/AQ=
-github.com/sacloud/iaas-api-go v1.14.0/go.mod h1:C8os2Mnj0TOmMdSllwhaDWKMVG2ysFnpe69kyA4M3V0=
-github.com/sacloud/packages-go v0.0.10 h1:UiQGjy8LretewkRhsuna1TBM9Vz/l9FoYpQx+D+AOck=
-github.com/sacloud/packages-go v0.0.10/go.mod h1:f8QITBh9z4IZc4yE9j21Q8b0sXEMwRlRmhhjWeDVTYs=
+github.com/sacloud/api-client-go v0.3.2 h1:INbdSpQbyGN9Ai4hQ+Gbv3UQcgtRPG2tJrOmqT7HGl0=
+github.com/sacloud/api-client-go v0.3.2/go.mod h1:0p3ukcWYXRCc2AUWTl1aA+3sXLvurvvDqhRaLZRLBwo=
+github.com/sacloud/go-http v0.1.9 h1:Xa5PY8/pb7XWhwG9nAeXSrYXPbtfBWqawgzxD5co3VE=
+github.com/sacloud/go-http v0.1.9/go.mod h1:DpDG+MSyxYaBwPJ7l3aKLMzwYdTVtC5Bo63HActcgoE=
+github.com/sacloud/iaas-api-go v1.16.1 h1:B5Lec9WyZkrOCjtGkVuPn5RxDm/zCzazVsHh7BQIjYQ=
+github.com/sacloud/iaas-api-go v1.16.1/go.mod h1:QVPHLwYzpECMsuml55I3FWAggsb4XSuzYGE9re/SkrQ=
+github.com/sacloud/packages-go v0.0.11 h1:hrRWLmfPM9w7GBs6xb5/ue6pEMl8t1UuDKyR/KfteHo=
+github.com/sacloud/packages-go v0.0.11/go.mod h1:XNF5MCTWcHo9NiqWnYctVbASSSZR3ZOmmQORIzcurJ8=
github.com/sagikazarmark/locafero v0.4.0 h1:HApY1R9zGo4DBgr7dqsTH/JJxLTTsOt7u6keLGt6kNQ=
github.com/sagikazarmark/locafero v0.4.0/go.mod h1:Pe1W6UlPYUk/+wc/6KFhbORCfqzgYEpgQ3O5fPuL3H4=
github.com/sagikazarmark/slog-shim v0.1.0 h1:diDBnUNK9N/354PgrxMywXnAwEr1QZcOr6gto+ugjYE=
github.com/sagikazarmark/slog-shim v0.1.0/go.mod h1:SrcSrq8aKtyuqEI1uvTDTK1arOWRIczQRv+GVI1AkeQ=
-github.com/scaleway/scaleway-sdk-go v1.0.0-beta.32 h1:4+LP7qmsLSGbmc66m1s5dKRMBwztRppfxFKlYqYte/c=
-github.com/scaleway/scaleway-sdk-go v1.0.0-beta.32/go.mod h1:kzh+BSAvpoyHHdHBCDhmSWtBc1NbLMZ2lWHqnBoxFks=
+github.com/scaleway/scaleway-sdk-go v1.0.0-beta.34 h1:48+VFHsyVcAHIN2v1Ao9v1/RkjJS5AwctFucBrfYNIA=
+github.com/scaleway/scaleway-sdk-go v1.0.0-beta.34/go.mod h1:zFWiHphneiey3s8HOtAEnGrRlWivNaxW5T6d5Xfco7g=
github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529 h1:nn5Wsu0esKSJiIVhscUtVbo7ada43DJhG55ua/hjS5I=
github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc=
github.com/secure-systems-lab/go-securesystemslib v0.7.0 h1:OwvJ5jQf9LnIAS83waAjPbcMsODrTQUpJ02eNLUoxBg=
@@ -1236,8 +1281,8 @@ github.com/segmentio/fasthash v1.0.3 h1:EI9+KE1EwvMLBWwjpRDc+fEM+prwxDYbslddQGtr
github.com/segmentio/fasthash v1.0.3/go.mod h1:waKX8l2N8yckOgmSsXJi7x1ZfdKZ4x7KRMzBtS3oedY=
github.com/selectel/domains-go v1.1.0 h1:futG50J43ALLKQAnZk9H9yOtLGnSUh7c5hSvuC5gSHo=
github.com/selectel/domains-go v1.1.0/go.mod h1:SugRKfq4sTpnOHquslCpzda72wV8u0cMBHx0C0l+bzA=
-github.com/selectel/go-selvpcclient/v3 v3.2.1 h1:ny6WIAMiHzKxOgOEnwcWE79wIQij1AHHylzPA41MXCw=
-github.com/selectel/go-selvpcclient/v3 v3.2.1/go.mod h1:3EfSf8aEWyhspOGbvZ6mvnFg7JN5uckxNyBFPGWsXNQ=
+github.com/selectel/go-selvpcclient/v4 v4.1.0 h1:22lBp+rzg9g2MP4iiGhpVAcCt0kMv7I7uV1W3taLSvQ=
+github.com/selectel/go-selvpcclient/v4 v4.1.0/go.mod h1:eFhL1KUW159KOJVeGO7k/Uxl0TYd/sBkWXjuF5WxmYk=
github.com/shirou/gopsutil/v3 v3.24.4 h1:dEHgzZXt4LMNm+oYELpzl9YCqV65Yr/6SfrvgRBtXeU=
github.com/shirou/gopsutil/v3 v3.24.4/go.mod h1:lTd2mdiOspcqLgAnr9/nGi71NkeMpWKdmhuxm9GusH8=
github.com/shoenig/go-m1cpu v0.1.6 h1:nxdKQNcEB6vzgA2E2bvzKIYRuNj7XNJ4S/aRSwKzFtM=
@@ -1257,8 +1302,8 @@ github.com/sirupsen/logrus v1.8.1/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic
github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ=
github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ=
github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc=
-github.com/smartystreets/assertions v1.0.1 h1:voD4ITNjPL5jjBfgR/r8fPIIBrliWrWHeiJApdr3r4w=
-github.com/smartystreets/assertions v1.0.1/go.mod h1:kHHU4qYBaI3q23Pp3VPrmWhuIUrLW/7eUrw0BU5VaoM=
+github.com/smartystreets/assertions v1.1.0 h1:MkTeG1DMwsrdH7QtLXy5W+fUxWq+vmb6cLmyJ7aRtF0=
+github.com/smartystreets/assertions v1.1.0/go.mod h1:tcbTF8ujkAEcZ8TElKY+i30BzYlVhC/LOxJk7iOWnoo=
github.com/smartystreets/go-aws-auth v0.0.0-20180515143844-0c1422d1fdb9 h1:hp2CYQUINdZMHdvTdXtPOY2ainKl4IoMcpAXEf2xj3Q=
github.com/smartystreets/go-aws-auth v0.0.0-20180515143844-0c1422d1fdb9/go.mod h1:SnhjPscd9TpLiy1LpzGSKh3bXCfxxXuqd9xmQJy3slM=
github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA=
@@ -1270,8 +1315,8 @@ github.com/softlayer/xmlrpc v0.0.0-20200409220501-5f089df7cb7e h1:3OgWYFw7jxCZPc
github.com/softlayer/xmlrpc v0.0.0-20200409220501-5f089df7cb7e/go.mod h1:fKZCUVdirrxrBpwd9wb+lSoVixvpwAu8eHzbQB2tums=
github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM=
github.com/sony/gobreaker v0.4.1/go.mod h1:ZKptC7FHNvhBz7dN2LGjPVBz2sZJmc0/PkyDJOjmxWY=
-github.com/sony/gobreaker v0.5.0 h1:dRCvqm0P490vZPmy7ppEk2qCnCieBooFJ+YoXGYB+yg=
-github.com/sony/gobreaker v0.5.0/go.mod h1:ZKptC7FHNvhBz7dN2LGjPVBz2sZJmc0/PkyDJOjmxWY=
+github.com/sony/gobreaker v1.0.0 h1:feX5fGGXSl3dYd4aHZItw+FpHLvvoaqkawKjVNiFMNQ=
+github.com/sony/gobreaker v1.0.0/go.mod h1:ZKptC7FHNvhBz7dN2LGjPVBz2sZJmc0/PkyDJOjmxWY=
github.com/sourcegraph/conc v0.3.0 h1:OQTbbt6P72L20UqAkXXuLOj79LfEanQ+YQFNpLA9ySo=
github.com/sourcegraph/conc v0.3.0/go.mod h1:Sdozi7LEKbFPqYX2/J+iBAM6HpqSLTASQIKqDmF7Mt0=
github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA=
@@ -1324,7 +1369,6 @@ github.com/stretchr/testify v1.7.2/go.mod h1:R6va5+xMeoiuVRoj+gSkQ7d3FALtqAAGI1F
github.com/stretchr/testify v1.7.5/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=
github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=
github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4=
-github.com/stretchr/testify v1.8.2/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4=
github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo=
github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA=
@@ -1334,14 +1378,14 @@ github.com/stvp/go-udp-testing v0.0.0-20191102171040-06b61409b154/go.mod h1:7jxm
github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw=
github.com/subosito/gotenv v1.6.0 h1:9NlTDc1FTs4qu0DDq7AEtTPNw6SVm7uBMsUCUjABIf8=
github.com/subosito/gotenv v1.6.0/go.mod h1:Dk4QP5c2W3ibzajGcXpNraDfq2IrhjMIvMSWPKKo0FU=
-github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1128 h1:NGnqDc8FQL0YdiCHgTO4Wkso6ToD8rE3JW9VOzoPBNA=
-github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1128/go.mod h1:r5r4xbfxSaeR04b166HGsBa/R4U3SueirEUpXGuw+Q0=
-github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dnspod v1.0.1128 h1:mrJ5Fbkd7sZIJ5F6oRfh5zebPQaudPH9Y0+GUmFytYU=
-github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dnspod v1.0.1128/go.mod h1:zbsYIBT+VTX4z4ocjTAdLBIWyNYj3z0BRqd0iPdnjsk=
+github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1208/go.mod h1:r5r4xbfxSaeR04b166HGsBa/R4U3SueirEUpXGuw+Q0=
+github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1210 h1:waSk2KyI2VvXtR+XQJm0v1lWfgbJg51iSWJh4hWnyeo=
+github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1210/go.mod h1:r5r4xbfxSaeR04b166HGsBa/R4U3SueirEUpXGuw+Q0=
github.com/testcontainers/testcontainers-go v0.32.0 h1:ug1aK08L3gCHdhknlTTwWjPHPS+/alvLJU/DRxTD/ME=
github.com/testcontainers/testcontainers-go v0.32.0/go.mod h1:CRHrzHLQhlXUsa5gXjTOfqIEJcrK5+xMDmBr/WMI88E=
github.com/tinylib/msgp v1.2.1 h1:6ypy2qcCznxpP4hpORzhtXyTqrBs7cfM9MCCWY8zsmU=
github.com/tinylib/msgp v1.2.1/go.mod h1:2vIGs3lcUo8izAATNobrCHevYZC/LMsJtw4JPiYPHro=
+github.com/tjfoc/gmsm v1.3.2/go.mod h1:HaUcFuY0auTiaHB9MHFGCPx5IaLhTUd2atbCFBQXn9w=
github.com/tjfoc/gmsm v1.4.1 h1:aMe1GlZb+0bLjn+cKTPEvvn9oUEBlJitaZiiBwsbgho=
github.com/tjfoc/gmsm v1.4.1/go.mod h1:j4INPkHWMrhJb38G+J6W4Tw0AbuN8Thu3PbdVYhVcTE=
github.com/tklauser/go-sysconf v0.3.12 h1:0QaGUFOdQaIVdPgfITYzaTegZvdCjmYO52cSFAEVmqU=
@@ -1384,14 +1428,14 @@ github.com/vmihailenco/msgpack/v4 v4.3.12 h1:07s4sz9IReOgdikxLTKNbBdqDMLsjPKXwvC
github.com/vmihailenco/msgpack/v4 v4.3.12/go.mod h1:gborTTJjAo/GWTqqRjrLCn9pgNN+NXzzngzBKDPIqw4=
github.com/vmihailenco/tagparser v0.1.2 h1:gnjoVuB/kljJ5wICEEOpx98oXMWPLj22G67Vbd1qPqc=
github.com/vmihailenco/tagparser v0.1.2/go.mod h1:OeAg3pn3UbLjkWt+rN9oFYB6u/cQgqMEUPoW2WPyhdI=
-github.com/volcengine/volc-sdk-golang v1.0.199 h1:zv9QOqTl/IsLwtfC37GlJtcz6vMAHi+pjq8ILWjLYUc=
-github.com/volcengine/volc-sdk-golang v1.0.199/go.mod h1:stZX+EPgv1vF4nZwOlEe8iGcriUPRBKX8zA19gXycOQ=
+github.com/volcengine/volc-sdk-golang v1.0.216 h1:+wAq8RvxpGECveRJaAXZFpzrZoQ33WjMuRyd9iY2Oc0=
+github.com/volcengine/volc-sdk-golang v1.0.216/go.mod h1:zHJlaqiMbIB+0mcrsZPTwOb3FB7S/0MCfqlnO8R7hlM=
github.com/vulcand/oxy/v2 v2.0.3 h1:CPWVPfW4hVZXzwwiQzpFidbnJKpahjPHezM+7TkZRNw=
github.com/vulcand/oxy/v2 v2.0.3/go.mod h1:k3t+xjyqmXVh88FdFDbYmUKMEvNpaejvBW14es6H70A=
github.com/vulcand/predicate v1.2.0 h1:uFsW1gcnnR7R+QTID+FVcs0sSYlIGntoGOTb3rQJt50=
github.com/vulcand/predicate v1.2.0/go.mod h1:VipoNYXny6c8N381zGUWkjuuNHiRbeAZhE7Qm9c+2GA=
-github.com/vultr/govultr/v3 v3.17.0 h1:His5Jh5N8KKqaJxfy3uG6jQbLXy0TmQhNxOiRvkKk00=
-github.com/vultr/govultr/v3 v3.17.0/go.mod h1:q34Wd76upKmf+vxFMgaNMH3A8BbsPBmSYZUGC8oZa5w=
+github.com/vultr/govultr/v3 v3.21.1 h1:0cnA8fXiqayPGbAlNHaW+5oCQjpDNkkAm3Nt3LOHplM=
+github.com/vultr/govultr/v3 v3.21.1/go.mod h1:9WwnWGCKnwDlNjHjtt+j+nP+0QWq6hQXzaHgddqrLWY=
github.com/xdg-go/pbkdf2 v1.0.0/go.mod h1:jrpuAogTd400dnrH08LKmI/xc1MbPOebTwRqcT5RDeI=
github.com/xdg-go/scram v1.0.2/go.mod h1:1WAq6h33pAW+iRreB34OORO2Nf7qel3VV3fjBj+hCSs=
github.com/xdg-go/scram v1.1.2/go.mod h1:RT/sEzTbU5y00aCK8UOx6R7YryM0iF1N2MOmC3kKLN4=
@@ -1401,13 +1445,18 @@ github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f/go.mod h1:N2
github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415/go.mod h1:GwrjFmJcFw6At/Gs6z4yjiIwzuJ1/+UwLxMQDVQXShQ=
github.com/xeipuuv/gojsonschema v1.2.0/go.mod h1:anYRn/JVcOK2ZgGU+IjEV4nwlhoK5sQluxsYJ78Id3Y=
github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU=
-github.com/yandex-cloud/go-genproto v0.0.0-20250319153614-fb9d3e5eb01a h1:YO8gGyAV4N5SR3NzloZ1128IahSpXWr78oU7aEe7f04=
-github.com/yandex-cloud/go-genproto v0.0.0-20250319153614-fb9d3e5eb01a/go.mod h1:0LDD/IZLIUIV4iPH+YcF+jysO3jkSvADFGm4dCAuwQo=
-github.com/yandex-cloud/go-sdk v0.0.0-20250320143332-9cbcfc5de4ae h1:x+uGuST05LVlgCxF5TsP8kQCCTW7uIeAQJ1dKtSmWqE=
-github.com/yandex-cloud/go-sdk v0.0.0-20250320143332-9cbcfc5de4ae/go.mod h1:V71iJlJnS/NtNNdg/B7SwccBS19aXxwY3fv/wut9D74=
+github.com/yandex-cloud/go-genproto v0.14.0 h1:yDqD260mICkjodXyAaDhESfrLr6gIGwwRc9MYE0jvW0=
+github.com/yandex-cloud/go-genproto v0.14.0/go.mod h1:0LDD/IZLIUIV4iPH+YcF+jysO3jkSvADFGm4dCAuwQo=
+github.com/yandex-cloud/go-sdk/services/dns v0.0.3 h1:erphTBXKSpm/tETa6FXrw4niSHjhySzAKHUc2/BZKx0=
+github.com/yandex-cloud/go-sdk/services/dns v0.0.3/go.mod h1:lbBaFJVouETfVnd3YzNF5vW6vgYR2FVfGLUzLexyGlI=
+github.com/yandex-cloud/go-sdk/v2 v2.0.8 h1:wQNIzEZYnClSQyo2fjEgnGEErWjJNBpSAinaKcP+VSg=
+github.com/yandex-cloud/go-sdk/v2 v2.0.8/go.mod h1:9Gqpq7d0EUAS+H2OunILtMi3hmMPav+fYoy9rmydM4s=
github.com/youmark/pkcs8 v0.0.0-20181117223130-1be2e3e5546d/go.mod h1:rHwXgn7JulP+udvsHwJoVG1YGAP6VLg4y9I5dyZdqmA=
+github.com/youmark/pkcs8 v0.0.0-20240726163527-a2c0da244d78 h1:ilQV1hzziu+LLM3zUTJ0trRztfwgjqKnBWNtSRkbmwM=
+github.com/youmark/pkcs8 v0.0.0-20240726163527-a2c0da244d78/go.mod h1:aL8wCCfTfSfmXjznFBSZNN13rSJjlIOI1fUNAtF7rmI=
github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
+github.com/yuin/goldmark v1.1.30/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k=
@@ -1457,24 +1506,26 @@ go.opentelemetry.io/collector/pdata/pprofile v0.104.0 h1:MYOIHvPlKEJbWLiBKFQWGD0
go.opentelemetry.io/collector/pdata/pprofile v0.104.0/go.mod h1:7WpyHk2wJZRx70CGkBio8klrYTTXASbyIhf+rH4FKnA=
go.opentelemetry.io/collector/semconv v0.104.0 h1:dUvajnh+AYJLEW/XOPk0T0BlwltSdi3vrjO7nSOos3k=
go.opentelemetry.io/collector/semconv v0.104.0/go.mod h1:yMVUCNoQPZVq/IPfrHrnntZTWsLf5YGZ7qwKulIl5hw=
-go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.59.0 h1:CV7UdSGJt/Ao6Gp4CXckLxVRRsRgDHoI8XjbL3PDl8s=
-go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.59.0/go.mod h1:FRmFuRJfag1IZ2dPkHnEoSFVgTVPUd2qf5Vi69hLb8I=
-go.opentelemetry.io/otel v1.34.0 h1:zRLXxLCgL1WyKsPVrgbSdMN4c0FMkDAskSTQP+0hdUY=
-go.opentelemetry.io/otel v1.34.0/go.mod h1:OWFPOQ+h4G8xpyjgqo4SxJYdDQ/qmRH+wivy7zzx9oI=
+go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.61.0 h1:q4XOmH/0opmeuJtPsbFNivyl7bCt7yRBbeEm2sC/XtQ=
+go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.61.0/go.mod h1:snMWehoOh2wsEwnvvwtDyFCxVeDAODenXHtn5vzrKjo=
+go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.61.0 h1:F7Jx+6hwnZ41NSFTO5q4LYDtJRXBf2PD0rNBkeB/lus=
+go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.61.0/go.mod h1:UHB22Z8QsdRDrnAtX4PntOl36ajSxcdUMt1sF7Y6E7Q=
+go.opentelemetry.io/otel v1.36.0 h1:UumtzIklRBY6cI/lllNZlALOF5nNIzJVb16APdvgTXg=
+go.opentelemetry.io/otel v1.36.0/go.mod h1:/TcFMXYjyRNh8khOAO9ybYkqaDBb/70aVwkNML4pP8E=
go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.19.0 h1:Mne5On7VWdx7omSrSSZvM4Kw7cS7NQkOOmLcgscI51U=
go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.19.0/go.mod h1:IPtUMKL4O3tH5y+iXVyAXqpAwMuzC1IrxVS81rummfE=
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.19.0 h1:IeMeyr1aBvBiPVYihXIaeIZba6b8E1bYp7lbdxK8CQg=
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.19.0/go.mod h1:oVdCUtjq9MK9BlS7TtucsQwUcXcymNiEDjgDD2jMtZU=
go.opentelemetry.io/otel/exporters/prometheus v0.49.0 h1:Er5I1g/YhfYv9Affk9nJLfH/+qCCVVg1f2R9AbJfqDQ=
go.opentelemetry.io/otel/exporters/prometheus v0.49.0/go.mod h1:KfQ1wpjf3zsHjzP149P4LyAwWRupc6c7t1ZJ9eXpKQM=
-go.opentelemetry.io/otel/metric v1.34.0 h1:+eTR3U0MyfWjRDhmFMxe2SsW64QrZ84AOhvqS7Y+PoQ=
-go.opentelemetry.io/otel/metric v1.34.0/go.mod h1:CEDrp0fy2D0MvkXE+dPV7cMi8tWZwX3dmaIhwPOaqHE=
-go.opentelemetry.io/otel/sdk v1.34.0 h1:95zS4k/2GOy069d321O8jWgYsW3MzVV+KuSPKp7Wr1A=
-go.opentelemetry.io/otel/sdk v1.34.0/go.mod h1:0e/pNiaMAqaykJGKbi+tSjWfNNHMTxoC9qANsCzbyxU=
-go.opentelemetry.io/otel/sdk/metric v1.34.0 h1:5CeK9ujjbFVL5c1PhLuStg1wxA7vQv7ce1EK0Gyvahk=
-go.opentelemetry.io/otel/sdk/metric v1.34.0/go.mod h1:jQ/r8Ze28zRKoNRdkjCZxfs6YvBTG1+YIqyFVFYec5w=
-go.opentelemetry.io/otel/trace v1.34.0 h1:+ouXS2V8Rd4hp4580a8q23bg0azF2nI8cqLYnC8mh/k=
-go.opentelemetry.io/otel/trace v1.34.0/go.mod h1:Svm7lSjQD7kG7KJ/MUHPVXSDGz2OX4h0M2jHBhmSfRE=
+go.opentelemetry.io/otel/metric v1.36.0 h1:MoWPKVhQvJ+eeXWHFBOPoBOi20jh6Iq2CcCREuTYufE=
+go.opentelemetry.io/otel/metric v1.36.0/go.mod h1:zC7Ks+yeyJt4xig9DEw9kuUFe5C3zLbVjV2PzT6qzbs=
+go.opentelemetry.io/otel/sdk v1.36.0 h1:b6SYIuLRs88ztox4EyrvRti80uXIFy+Sqzoh9kFULbs=
+go.opentelemetry.io/otel/sdk v1.36.0/go.mod h1:+lC+mTgD+MUWfjJubi2vvXWcVxyr9rmlshZni72pXeY=
+go.opentelemetry.io/otel/sdk/metric v1.36.0 h1:r0ntwwGosWGaa0CrSt8cuNuTcccMXERFwHX4dThiPis=
+go.opentelemetry.io/otel/sdk/metric v1.36.0/go.mod h1:qTNOhFDfKRwX0yXOqJYegL5WRaW376QbB7P4Pb0qva4=
+go.opentelemetry.io/otel/trace v1.36.0 h1:ahxWNuqZjpdiFAyrIoQ4GIiAIhxAunQR6MUoKrsNd4w=
+go.opentelemetry.io/otel/trace v1.36.0/go.mod h1:gQ+OnDZzrybY4k4seLzPAWNwVBBVlF2szhehOBB/tGA=
go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI=
go.opentelemetry.io/proto/otlp v1.0.0 h1:T0TX0tmXU8a3CbNXzEKGeU5mIVOdf0oykP+u2lIVU/I=
go.opentelemetry.io/proto/otlp v1.0.0/go.mod h1:Sy6pihPLfYHkr3NkUbEhGHFhINUSI/v80hjKIs5JXpM=
@@ -1495,8 +1546,8 @@ go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9i
go.uber.org/multierr v1.7.0/go.mod h1:7EAYxJLBy9rStEaz58O2t4Uvip6FSURkq8/ppBp95ak=
go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0=
go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y=
-go.uber.org/ratelimit v0.3.0 h1:IdZd9wqvFXnvLvSEBo0KPcGfkoBGNkpTHlrE3Rcjkjw=
-go.uber.org/ratelimit v0.3.0/go.mod h1:So5LG7CV1zWpY1sHe+DXTJqQvOx+FFPFaAs2SnoyBaI=
+go.uber.org/ratelimit v0.3.1 h1:K4qVE+byfv/B3tC+4nYWP7v/6SimcO7HzHekoMNBma0=
+go.uber.org/ratelimit v0.3.1/go.mod h1:6euWsTB6U/Nb3X++xEUXA8ciPJvr19Q/0h1+oDcJhRk=
go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q=
go.uber.org/zap v1.17.0/go.mod h1:MXVU+bhUf/A7Xi2HNOnopQOrmycQ5Ih87HtOu4q5SSo=
go.uber.org/zap v1.18.1/go.mod h1:xg/QME4nWcxGxrpdeYfq7UvYrLh66cuVKdrbD1XF/NI=
@@ -1512,8 +1563,10 @@ golang.org/x/crypto v0.0.0-20190611184440-5c40567a22f8/go.mod h1:yigFU9vqHzYiE8U
golang.org/x/crypto v0.0.0-20190820162420-60c769a6c586/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
golang.org/x/crypto v0.0.0-20190923035154-9ee001bba392/go.mod h1:/lpIB1dKB+9EgE3H3cr1v9wB50oz8l4C4h62xy7jSTY=
golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
+golang.org/x/crypto v0.0.0-20191219195013-becbf705a915/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
golang.org/x/crypto v0.0.0-20200317142112-1b76d66859c6/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
golang.org/x/crypto v0.0.0-20200323165209-0ec3e9974c59/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
+golang.org/x/crypto v0.0.0-20200510223506-06a226fb4e37/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
golang.org/x/crypto v0.0.0-20200820211705-5c72a883971a/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
golang.org/x/crypto v0.0.0-20201002170205-7f63de1d35b0/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
@@ -1535,9 +1588,16 @@ golang.org/x/crypto v0.0.0-20220722155217-630584e8d5aa/go.mod h1:IxCIyHEi3zRg3s0
golang.org/x/crypto v0.0.0-20220829220503-c86fa9a7ed90/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
golang.org/x/crypto v0.3.0/go.mod h1:hebNnKkNXi2UzZN1eVRvBB7co0a+JxK6XbPiWVs/3J4=
golang.org/x/crypto v0.11.0/go.mod h1:xgJhtzW8F9jGdVFWZESrid1U1bjeNy4zgy5cRr/CIio=
+golang.org/x/crypto v0.13.0/go.mod h1:y6Z2r+Rw4iayiXXAIxJIDAJ1zMW4yaTpebo8fPOliYc=
+golang.org/x/crypto v0.14.0/go.mod h1:MVFd36DqK4CsrnJYDkBA3VC4m2GkXAM0PvzMCn4JQf4=
golang.org/x/crypto v0.17.0/go.mod h1:gCAAfMLgwOJRpTjQ2zCCt2OcSfYMTeZVSRtQlPC7Nq4=
-golang.org/x/crypto v0.36.0 h1:AnAEvhDddvBdpY+uR+MyHmuZzzNqXSe/GvuDeob5L34=
-golang.org/x/crypto v0.36.0/go.mod h1:Y4J0ReaxCR1IMaabaSMugxJES1EpwhBHhv2bDHklZvc=
+golang.org/x/crypto v0.18.0/go.mod h1:R0j02AL6hcrfOiy9T4ZYp/rcWeMxM3L6QYxlOuEG1mg=
+golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU=
+golang.org/x/crypto v0.21.0/go.mod h1:0BP7YvVV9gBbVKyeTG0Gyn+gZm94bibOW5BjDEYAOMs=
+golang.org/x/crypto v0.23.0/go.mod h1:CKFgDieR+mRhux2Lsu27y0fO304Db0wZe70UKqHu0v8=
+golang.org/x/crypto v0.24.0/go.mod h1:Z1PMYSOR5nyMcyAVAIQSKCDwalqy85Aqn1x3Ws4L5DM=
+golang.org/x/crypto v0.40.0 h1:r4x+VvoG5Fm+eJcxMaY8CQM7Lb0l1lsmjGBQ6s8BfKM=
+golang.org/x/crypto v0.40.0/go.mod h1:Qr1vMER5WyS2dfPHAlsOj01wgLbsyWtFn/aY+5+ZdxY=
golang.org/x/exp v0.0.0-20180321215751-8460e604b9de/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
golang.org/x/exp v0.0.0-20180807140117-3d87b88a115f/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
@@ -1582,8 +1642,11 @@ golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4=
golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
-golang.org/x/mod v0.23.0 h1:Zb7khfcRGKk+kqfxFaP5tZqCnDZMjC5VtUBs87Hr6QM=
-golang.org/x/mod v0.23.0/go.mod h1:6SkKJ3Xj0I0BrPOZoBy3bdMptDDU9oJrpohJ3eWZ1fY=
+golang.org/x/mod v0.12.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
+golang.org/x/mod v0.15.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c=
+golang.org/x/mod v0.17.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c=
+golang.org/x/mod v0.25.0 h1:n7a+ZbQKQA/Ysbyb0/6IbB1H/X41mKgbhfv7AfG/44w=
+golang.org/x/mod v0.25.0/go.mod h1:IXM97Txy2VM4PJ3gI61r1YEk/gAj6zAHN3AdZt6S9Ww=
golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
@@ -1639,14 +1702,21 @@ golang.org/x/net v0.0.0-20210726213435-c6fcb2dbf985/go.mod h1:9nx3DQGgdP8bBQD5qx
golang.org/x/net v0.0.0-20210913180222-943fd674d43e/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
golang.org/x/net v0.0.0-20210917221730-978cfadd31cf/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
-golang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk=
golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
golang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY=
golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs=
+golang.org/x/net v0.7.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs=
golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg=
golang.org/x/net v0.12.0/go.mod h1:zEVYFnQC7m/vmpQFELhcD1EWkZlX69l4oqgmer6hfKA=
-golang.org/x/net v0.38.0 h1:vRMAPTMaeGqVhG5QyLJHqNDwecKTomGeqbnfZyKlBI8=
-golang.org/x/net v0.38.0/go.mod h1:ivrbrMbzFq5J41QOQh0siUuly180yBYtLp+CKbEaFx8=
+golang.org/x/net v0.15.0/go.mod h1:idbUs1IY1+zTqbi8yxTbhexhEEk5ur9LInksu6HrEpk=
+golang.org/x/net v0.17.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE=
+golang.org/x/net v0.20.0/go.mod h1:z8BVo6PvndSri0LbOE3hAn0apkU+1YvI6E70E9jsnvY=
+golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44=
+golang.org/x/net v0.23.0/go.mod h1:JKghWKKOSdJwpW2GEx0Ja7fmaKnMsbu+MWVZTokSYmg=
+golang.org/x/net v0.25.0/go.mod h1:JkAGAh7GEvH74S6FOH42FLoXpXbE/aqXSrIQjXgsiwM=
+golang.org/x/net v0.26.0/go.mod h1:5YKkiSynbBIh3p6iOc/vibscux0x38BZDkn8sCUPxHE=
+golang.org/x/net v0.42.0 h1:jzkYrhi3YQWD6MLBJcsklgQsoAcw89EcZbJw8Z614hs=
+golang.org/x/net v0.42.0/go.mod h1:FF1RA5d3u7nAYA4z2TkclSCKh68eSXtiFwcWQpPXdt8=
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
@@ -1660,8 +1730,8 @@ golang.org/x/oauth2 v0.0.0-20210220000619-9bb904979d93/go.mod h1:KelEdhl1UZF7XfJ
golang.org/x/oauth2 v0.0.0-20210313182246-cd4f82c27b84/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=
golang.org/x/oauth2 v0.0.0-20210402161424-2e8d93401602/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=
golang.org/x/oauth2 v0.0.0-20210514164344-f6687ab2804c/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=
-golang.org/x/oauth2 v0.28.0 h1:CrgCKl8PPAVtLnU3c+EDw6x11699EWlsDeWNWKdIOkc=
-golang.org/x/oauth2 v0.28.0/go.mod h1:onh5ek6nERTohokkhCD/y2cV4Do3fxFHFuAejCkRWT8=
+golang.org/x/oauth2 v0.30.0 h1:dnDm7JmhM45NNpd8FDDeLhK6FwqbOf4MLCM9zb1BOHI=
+golang.org/x/oauth2 v0.30.0/go.mod h1:B++QgG3ZKulg6sRPGD/mqlHQs5rB3Ml9erfeDY7xKlU=
golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
@@ -1675,8 +1745,11 @@ golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJ
golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
-golang.org/x/sync v0.12.0 h1:MHc5BpPuC30uJk597Ri8TV3CNZcTLu6B6z4lJy+g6Jw=
-golang.org/x/sync v0.12.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA=
+golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y=
+golang.org/x/sync v0.6.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
+golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
+golang.org/x/sync v0.16.0 h1:ycBJEhp9p4vXvUZNszeOq0kGTPghopOL8q0fq3vstxw=
+golang.org/x/sync v0.16.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA=
golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
@@ -1723,6 +1796,7 @@ golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527/go.mod h1:h1NjWce9XRLGQEsW7w
golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200331124033-c3d80250170d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200501052902-10377860bb8e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20200509044756-6aff5f38e54f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200511232937-7e40ca221e25/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200515095857-1151b9dac4a9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200519105757-fe76b779f299/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
@@ -1778,10 +1852,18 @@ golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.10.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.13.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.15.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
+golang.org/x/sys v0.16.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
+golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
+golang.org/x/sys v0.18.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/sys v0.19.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
-golang.org/x/sys v0.31.0 h1:ioabZlmFYtWhL+TRYpcnNlLwhyxaM9kWTDEmfnprqik=
-golang.org/x/sys v0.31.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k=
+golang.org/x/sys v0.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
+golang.org/x/sys v0.21.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
+golang.org/x/sys v0.34.0 h1:H5Y5sJ2L2JRdyv7ROF1he/lPdvFsd0mJHFw2ThKHxLA=
+golang.org/x/sys v0.34.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k=
+golang.org/x/telemetry v0.0.0-20240228155512-f48c80bd79b2/go.mod h1:TeRTkGYfJXctD9OcfyVLyj2J3IxLnKwHJR8f4D8a3YE=
golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw=
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
golang.org/x/term v0.0.0-20210220032956-6a3ed077a48d/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
@@ -1790,9 +1872,16 @@ golang.org/x/term v0.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc=
golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k=
golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo=
golang.org/x/term v0.10.0/go.mod h1:lpqdcUyK/oCiQxvxVrppt5ggO2KCZ5QblwqPnfZ6d5o=
+golang.org/x/term v0.12.0/go.mod h1:owVbMEjm3cBLCHdkQu9b1opXd4ETQWc3BhuQGKgXgvU=
+golang.org/x/term v0.13.0/go.mod h1:LTmsnFJwVN6bCy1rVCoS+qHT1HhALEFxKncY3WNNh4U=
golang.org/x/term v0.15.0/go.mod h1:BDl952bC7+uMoWR75FIrCDx79TPU9oHkTZ9yRbYOrX0=
-golang.org/x/term v0.30.0 h1:PQ39fJZ+mfadBm0y5WlL4vlM7Sx1Hgf13sMIY2+QS9Y=
-golang.org/x/term v0.30.0/go.mod h1:NYYFdzHoI5wRh/h5tDMdMqCqPJZEuNqVR5xJLd/n67g=
+golang.org/x/term v0.16.0/go.mod h1:yn7UURbUtPyrVJPGPq404EukNFxcm/foM+bV/bfcDsY=
+golang.org/x/term v0.17.0/go.mod h1:lLRBjIVuehSbZlaOtGMbcMncT+aqLLLmKrsjNrUguwk=
+golang.org/x/term v0.18.0/go.mod h1:ILwASektA3OnRv7amZ1xhE/KTR+u50pbXfZ03+6Nx58=
+golang.org/x/term v0.20.0/go.mod h1:8UkIAJTvZgivsXaD6/pH6U9ecQzZ45awqEOzuCvwpFY=
+golang.org/x/term v0.21.0/go.mod h1:ooXLefLobQVslOqselCNF4SxFAaoS6KujMbsGzSDmX0=
+golang.org/x/term v0.33.0 h1:NuFncQrRcaRvVmgRkvM3j/F00gWIAlcmlB8ACEKmGIg=
+golang.org/x/term v0.33.0/go.mod h1:s18+ql9tYWp1IfpV9DmCtQDDSRBUjKaw9M1eAv5UeF0=
golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
@@ -1807,9 +1896,12 @@ golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8=
golang.org/x/text v0.11.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE=
+golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE=
golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU=
-golang.org/x/text v0.23.0 h1:D71I7dUrlY+VX0gQShAThNGHFxZ13dGLBHQLVl1mJlY=
-golang.org/x/text v0.23.0/go.mod h1:/BLNzu4aZCJ1+kcD0DNRotWKage4q2rGVAg4o22unh4=
+golang.org/x/text v0.15.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU=
+golang.org/x/text v0.16.0/go.mod h1:GhwF1Be+LQoKShO3cGOHzqOgRrGaYc9AvblQOmPVHnI=
+golang.org/x/text v0.27.0 h1:4fGWRpyh641NLlecmyl4LOe6yDdfaYNrGb2zdfo4JV4=
+golang.org/x/text v0.27.0/go.mod h1:1D28KMCvyooCX9hBiosv5Tz/+YLxj0j7XhWjpSUF7CU=
golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
@@ -1819,8 +1911,8 @@ golang.org/x/time v0.0.0-20201208040808-7e3f01d25324/go.mod h1:tRJNPiyCQ0inRvYxb
golang.org/x/time v0.0.0-20210220033141-f8bda1e9f3ba/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
golang.org/x/time v0.0.0-20210723032227-1f47c861a9ac/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
golang.org/x/time v0.3.0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
-golang.org/x/time v0.11.0 h1:/bpjEDfN9tkoN/ryeYHnv5hcMlc8ncjMcM4XBk5NWV0=
-golang.org/x/time v0.11.0/go.mod h1:CDIdPxbZBQxdj6cxyCIdrNogrJKMJ7pr37NYpMcMDSg=
+golang.org/x/time v0.12.0 h1:ScB/8o8olJvc+CQPWrK3fPZNfh7qgwCrY0zJmoEQLSE=
+golang.org/x/time v0.12.0/go.mod h1:CDIdPxbZBQxdj6cxyCIdrNogrJKMJ7pr37NYpMcMDSg=
golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
golang.org/x/tools v0.0.0-20180525024113-a5b4c53f6e8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
@@ -1889,8 +1981,10 @@ golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk=
golang.org/x/tools v0.1.6-0.20210726203631-07bc1bf47fb2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk=
golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc=
golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU=
-golang.org/x/tools v0.30.0 h1:BgcpHewrV5AUp2G9MebG4XPFI1E2W41zU1SaqVA9vJY=
-golang.org/x/tools v0.30.0/go.mod h1:c347cR/OJfw5TI+GfX7RUPNMdDRRbjvYTS0jPyvsVtY=
+golang.org/x/tools v0.13.0/go.mod h1:HvlwmtVNQAhOuCjW7xxvovg8wbNq7LwfXh/k7wXUl58=
+golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d/go.mod h1:aiJjzUbINMkxbQROHiO6hDPo2LHcIPhhQsa9DLh0yGk=
+golang.org/x/tools v0.34.0 h1:qIpSLOxeCYGg9TrcJokLBG4KFA6d795g0xkBkiESGlo=
+golang.org/x/tools v0.34.0/go.mod h1:pAP9OwEaY1CAW3HOmg3hLZC5Z0CCmzjAF2UQMSqNARg=
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
@@ -1925,8 +2019,8 @@ google.golang.org/api v0.40.0/go.mod h1:fYKFpnQN0DsDSKRVRcQSDQNtqWPfM9i+zNPxepjR
google.golang.org/api v0.41.0/go.mod h1:RkxM5lITDfTzmyKFPt+wGrCJbVfniCr2ool8kTBzRTU=
google.golang.org/api v0.43.0/go.mod h1:nQsDGjRXMo4lvh5hP0TKqF244gqhGcr/YSIykhUk/94=
google.golang.org/api v0.44.0/go.mod h1:EBOGZqzyhtvMDoxwS97ctnh0zUmYY6CxqXsc1AvkYD8=
-google.golang.org/api v0.227.0 h1:QvIHF9IuyG6d6ReE+BNd11kIB8hZvjN8Z5xY5t21zYc=
-google.golang.org/api v0.227.0/go.mod h1:EIpaG6MbTgQarWF5xJvX0eOJPK9n/5D4Bynb9j2HXvQ=
+google.golang.org/api v0.242.0 h1:7Lnb1nfnpvbkCiZek6IXKdJ0MFuAZNAJKQfA1ws62xg=
+google.golang.org/api v0.242.0/go.mod h1:cOVEm2TpdAGHL2z+UwyS+kmlGr3bVWQQ6sYEqkKje50=
google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM=
google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
@@ -1980,12 +2074,12 @@ google.golang.org/genproto v0.0.0-20210319143718-93e7006c17a6/go.mod h1:FWY/as6D
google.golang.org/genproto v0.0.0-20210402141018-6c239bbf2bb1/go.mod h1:9lPAdzaEmUacj36I+k7YKbEc5CXzPIeORRgDAUOu28A=
google.golang.org/genproto v0.0.0-20210602131652-f16073e35f0c/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0=
google.golang.org/genproto v0.0.0-20210917145530-b395a37504d4/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY=
-google.golang.org/genproto v0.0.0-20241021214115-324edc3d5d38 h1:Q3nlH8iSQSRUwOskjbcSMcF2jiYMNiQYZ0c2KEJLKKU=
-google.golang.org/genproto v0.0.0-20241021214115-324edc3d5d38/go.mod h1:xBI+tzfqGGN2JBeSebfKXFSdBpWVQ7sLW40PTupVRm4=
-google.golang.org/genproto/googleapis/api v0.0.0-20250106144421-5f5ef82da422 h1:GVIKPyP/kLIyVOgOnTwFOrvQaQUzOzGMCxgFUOEmm24=
-google.golang.org/genproto/googleapis/api v0.0.0-20250106144421-5f5ef82da422/go.mod h1:b6h1vNKhxaSoEI+5jc3PJUCustfli/mRab7295pY7rw=
-google.golang.org/genproto/googleapis/rpc v0.0.0-20250313205543-e70fdf4c4cb4 h1:iK2jbkWL86DXjEx0qiHcRE9dE4/Ahua5k6V8OWFb//c=
-google.golang.org/genproto/googleapis/rpc v0.0.0-20250313205543-e70fdf4c4cb4/go.mod h1:LuRYeWDFV6WOn90g357N17oMCaxpgCnbi/44qJvDn2I=
+google.golang.org/genproto v0.0.0-20250505200425-f936aa4a68b2 h1:1tXaIXCracvtsRxSBsYDiSBN0cuJvM7QYW+MrpIRY78=
+google.golang.org/genproto v0.0.0-20250505200425-f936aa4a68b2/go.mod h1:49MsLSx0oWMOZqcpB3uL8ZOkAh1+TndpJ8ONoCBWiZk=
+google.golang.org/genproto/googleapis/api v0.0.0-20250707201910-8d1bb00bc6a7 h1:FiusG7LWj+4byqhbvmB+Q93B/mOxJLN2DTozDuZm4EU=
+google.golang.org/genproto/googleapis/api v0.0.0-20250707201910-8d1bb00bc6a7/go.mod h1:kXqgZtrWaf6qS3jZOCnCH7WYfrvFjkC51bM8fz3RsCA=
+google.golang.org/genproto/googleapis/rpc v0.0.0-20250707201910-8d1bb00bc6a7 h1:pFyd6EwwL2TqFf8emdthzeX+gZE1ElRq3iM8pui4KBY=
+google.golang.org/genproto/googleapis/rpc v0.0.0-20250707201910-8d1bb00bc6a7/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A=
google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c=
google.golang.org/grpc v1.20.0/go.mod h1:chYK+tFQF0nDUGJgXMSgLCQk3phJEuONr2DCgLDdAQM=
google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38=
@@ -2009,8 +2103,8 @@ google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAG
google.golang.org/grpc v1.36.1/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU=
google.golang.org/grpc v1.38.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM=
google.golang.org/grpc v1.40.0/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34=
-google.golang.org/grpc v1.71.0 h1:kF77BGdPTQ4/JZWMlb9VpJ5pa25aqvVqogsxNHHdeBg=
-google.golang.org/grpc v1.71.0/go.mod h1:H0GRtasmQOh9LkFoCPDu3ZrwUtD1YGE+b2vYBYd/8Ec=
+google.golang.org/grpc v1.73.0 h1:VIWSmpI2MegBtTuFt5/JWy2oXxtjJ/e89Z70ImfD2ok=
+google.golang.org/grpc v1.73.0/go.mod h1:50sbHOUqWoCQGI8V2HQLJM0B+LMlIUjNSZmow7EVBQc=
google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8=
google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0=
google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM=
@@ -2025,8 +2119,8 @@ google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp0
google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
-google.golang.org/protobuf v1.36.5 h1:tPhr+woSbjfYvY6/GPufUoYizxw1cF/yFoxJ2fmpwlM=
-google.golang.org/protobuf v1.36.5/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE=
+google.golang.org/protobuf v1.36.6 h1:z1NpPI8ku2WgiWnf+t9wTPsn6eP1L7ksHUlkfLvd9xY=
+google.golang.org/protobuf v1.36.6/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY=
gopkg.in/DataDog/dd-trace-go.v1 v1.72.2 h1:SLcih9LB+I1l76Wd7aUSpzISemewzjq6djntMnBnzkA=
gopkg.in/DataDog/dd-trace-go.v1 v1.72.2/go.mod h1:XqDhDqsLpThFnJc4z0FvAEItISIAUka+RHwmQ6EfN1U=
gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw=
@@ -2046,12 +2140,13 @@ gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc=
gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw=
gopkg.in/ini.v1 v1.51.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k=
gopkg.in/ini.v1 v1.51.1/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k=
+gopkg.in/ini.v1 v1.56.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k=
gopkg.in/ini.v1 v1.62.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k=
gopkg.in/ini.v1 v1.67.0 h1:Dgnx+6+nfE+IfzjUEISNeydPJh9AXNNsWbGP9KzCsOA=
gopkg.in/ini.v1 v1.67.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k=
gopkg.in/natefinch/lumberjack.v2 v2.0.0/go.mod h1:l0ndWWf7gzL7RNwBG7wST/UCcT4T24xpD6X8LsfU/+k=
-gopkg.in/ns1/ns1-go.v2 v2.13.0 h1:I5NNqI9Bi1SGK92TVkOvLTwux5LNrix/99H2datVh48=
-gopkg.in/ns1/ns1-go.v2 v2.13.0/go.mod h1:pfaU0vECVP7DIOr453z03HXS6dFJpXdNRwOyRzwmPSc=
+gopkg.in/ns1/ns1-go.v2 v2.14.4 h1:77eP71rZ24I+9k1gITgjJXRyJzzmflA9oPUkYPB/wyc=
+gopkg.in/ns1/ns1-go.v2 v2.14.4/go.mod h1:pfaU0vECVP7DIOr453z03HXS6dFJpXdNRwOyRzwmPSc=
gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo=
gopkg.in/square/go-jose.v2 v2.2.2/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI=
gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ=
@@ -2070,7 +2165,6 @@ gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ=
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
-gopkg.in/yaml.v3 v3.0.0/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
gotest.tools/v3 v3.0.2/go.mod h1:3SzNCllyD9/Y+b5r9JIKQ474KzkZyqLqEfYqMsX94Bk=
diff --git a/pkg/config/static/static_config.go b/pkg/config/static/static_config.go
index 50a6dbdb5..30af400cb 100644
--- a/pkg/config/static/static_config.go
+++ b/pkg/config/static/static_config.go
@@ -273,6 +273,25 @@ func (c *Configuration) SetEffectiveConfiguration() {
c.Providers.KubernetesGateway.EntryPoints = entryPoints
}
+ for _, resolver := range c.CertificatesResolvers {
+ if resolver.ACME == nil {
+ continue
+ }
+
+ if resolver.ACME.DNSChallenge == nil {
+ continue
+ }
+
+ switch resolver.ACME.DNSChallenge.Provider {
+ case "googledomains", "cloudxns", "brandit":
+ log.WithoutContext().Warnf("%s DNS provider is deprecated.", resolver.ACME.DNSChallenge.Provider)
+ case "dnspod":
+ log.WithoutContext().Warnf("%s provider is deprecated, please use 'tencentcloud' provider instead.", resolver.ACME.DNSChallenge.Provider)
+ case "azure":
+ log.WithoutContext().Warnf("%s provider is deprecated, please use 'azuredns' provider instead.", resolver.ACME.DNSChallenge.Provider)
+ }
+ }
+
c.initACMEProvider()
}
From c450306c5a61e097b103234658d383ba01ae30c5 Mon Sep 17 00:00:00 2001
From: Romain
Date: Mon, 11 Aug 2025 17:28:04 +0200
Subject: [PATCH 02/33] Bump to github.com/pires/go-proxyproto v0.8.1
---
go.mod | 2 +-
go.sum | 4 ++--
2 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/go.mod b/go.mod
index 6123fffca..e952f109a 100644
--- a/go.mod
+++ b/go.mod
@@ -51,7 +51,7 @@ require (
github.com/mitchellh/hashstructure v1.0.0
github.com/mitchellh/mapstructure v1.5.0
github.com/patrickmn/go-cache v2.1.0+incompatible
- github.com/pires/go-proxyproto v0.6.1
+ github.com/pires/go-proxyproto v0.8.1
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // No tag on the repo.
github.com/prometheus/client_golang v1.19.1
github.com/prometheus/client_model v0.6.1
diff --git a/go.sum b/go.sum
index 048bc93d7..b9081bc9a 100644
--- a/go.sum
+++ b/go.sum
@@ -1019,8 +1019,8 @@ github.com/peterhellberg/link v1.2.0 h1:UA5pg3Gp/E0F2WdX7GERiNrPQrM1K6CVJUUWfHa4
github.com/peterhellberg/link v1.2.0/go.mod h1:gYfAh+oJgQu2SrZHg5hROVRQe1ICoK0/HHJTcE0edxc=
github.com/pierrec/lz4 v1.0.2-0.20190131084431-473cd7ce01a1/go.mod h1:3/3N9NVKO0jef7pBehbT1qWhCMrIgbYNnFAZCqQ5LRc=
github.com/pierrec/lz4 v2.6.1+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY=
-github.com/pires/go-proxyproto v0.6.1 h1:EBupykFmo22SDjv4fQVQd2J9NOoLPmyZA/15ldOGkPw=
-github.com/pires/go-proxyproto v0.6.1/go.mod h1:Odh9VFOZJCf9G8cLW5o435Xf1J95Jw9Gw5rnCjcwzAY=
+github.com/pires/go-proxyproto v0.8.1 h1:9KEixbdJfhrbtjpz/ZwCdWDD2Xem0NZ38qMYaASJgp0=
+github.com/pires/go-proxyproto v0.8.1/go.mod h1:ZKAAyp3cgy5Y5Mo4n9AlScrkCZwUy0g3Jf+slqQVcuU=
github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c h1:+mdjkGKdHQG3305AYmdv1U2eRNDiU2ErMBj1gwrq8eQ=
github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c/go.mod h1:7rwL4CYBLnjLxUqIJNnCWiEdr3bn6IUYi15bNlnbCCU=
github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA=
From aac3d70fa15467964ec011f89d7b45c51e8700be Mon Sep 17 00:00:00 2001
From: Michel Loiseleur <97035654+mloiseleur@users.noreply.github.com>
Date: Tue, 12 Aug 2025 15:38:05 +0200
Subject: [PATCH 03/33] Fix invalid links in documentation
---
docs/content/https/tls.md | 2 +-
docs/content/migrate/v3.md | 6 +++---
docs/content/operations/api.md | 2 +-
docs/content/reference/install-configuration/tls/ocsp.md | 2 +-
docs/content/routing/overview.md | 2 +-
docs/content/routing/providers/kubernetes-crd.md | 2 +-
docs/content/user-guides/cert-manager.md | 4 ++--
docs/content/user-guides/docker-compose/acme-http/index.md | 2 +-
8 files changed, 11 insertions(+), 11 deletions(-)
diff --git a/docs/content/https/tls.md b/docs/content/https/tls.md
index 35a866ed5..d8e1a0add 100644
--- a/docs/content/https/tls.md
+++ b/docs/content/https/tls.md
@@ -503,7 +503,7 @@ Traefik supports mutual authentication, through the `clientAuth` section.
For authentication policies that require verification of the client certificate, the certificate authority for the certificates should be set in `clientAuth.caFiles`.
-In Kubernetes environment, CA certificate can be set in `clientAuth.secretNames`. See [TLSOption resource](../../routing/providers/kubernetes-crd#kind-tlsoption) for more details.
+In Kubernetes environment, CA certificate can be set in `clientAuth.secretNames`. See [TLSOption resource](../../routing/providers/kubernetes-crd/#kind-tlsoption) for more details.
The `clientAuth.clientAuthType` option governs the behaviour as follows:
diff --git a/docs/content/migrate/v3.md b/docs/content/migrate/v3.md
index 256445ec2..c973311c9 100644
--- a/docs/content/migrate/v3.md
+++ b/docs/content/migrate/v3.md
@@ -113,9 +113,9 @@ kubectl apply -f https://raw.githubusercontent.com/traefik/traefik/v3.3/docs/con
**Updated Resources:**
-- [TraefikService](../../routing/services#mirroring-service) ([PR #11032](https://github.com/traefik/traefik/pull/11032))
-- [RateLimit](../../middlewares/http/ratelimit) & [InFlightReq](../../middlewares/http/inflightreq) middlewares ([PR #9747](https://github.com/traefik/traefik/pull/9747))
-- [Compress](../../middlewares/http/compress) middleware ([PR #10943](https://github.com/traefik/traefik/pull/10943))
+- [TraefikService](../../routing/services/#mirroring-service) ([PR #11032](https://github.com/traefik/traefik/pull/11032))
+- [RateLimit](../../middlewares/http/ratelimit/) & [InFlightReq](../../middlewares/http/inflightreq/) middlewares ([PR #9747](https://github.com/traefik/traefik/pull/9747))
+- [Compress](../../middlewares/http/compress/) middleware ([PR #10943](https://github.com/traefik/traefik/pull/10943))
### Kubernetes Gateway Provider Standard Channel
diff --git a/docs/content/operations/api.md b/docs/content/operations/api.md
index 416d885fd..b2779ad74 100644
--- a/docs/content/operations/api.md
+++ b/docs/content/operations/api.md
@@ -109,7 +109,7 @@ api:
--api.dashboard=true
```
-!!! warning "With Dashboard enabled, the router [rule](../../routing/routers#rule) must catch requests for both `/api` and `/dashboard`"
+!!! warning "With Dashboard enabled, the router [rule](../../routing/routers/#rule) must catch requests for both `/api` and `/dashboard`"
Please check the [Dashboard documentation](./dashboard.md#dashboard-router-rule) to learn more about this and to get examples.
### `debug`
diff --git a/docs/content/reference/install-configuration/tls/ocsp.md b/docs/content/reference/install-configuration/tls/ocsp.md
index a960d88d0..0148f658e 100644
--- a/docs/content/reference/install-configuration/tls/ocsp.md
+++ b/docs/content/reference/install-configuration/tls/ocsp.md
@@ -28,7 +28,7 @@ The OCSP response is cached in memory and is not persisted between Traefik resta
### General
-Enabling OCSP is part of the [static configuration](../getting-started/configuration-overview.md#the-static-configuration).
+Enabling OCSP is part of the [static configuration](../../../getting-started/configuration-overview.md#the-static-configuration).
It can be defined by using a file (YAML or TOML) or CLI arguments:
```yaml tab="File (YAML)"
diff --git a/docs/content/routing/overview.md b/docs/content/routing/overview.md
index 39efaf485..dd1d0342f 100644
--- a/docs/content/routing/overview.md
+++ b/docs/content/routing/overview.md
@@ -246,7 +246,7 @@ http:
Most of what happens to the connection between the clients and Traefik,
and then between Traefik and the backend servers, is configured through the
-[entrypoints](../entrypoints) and the [routers](../routers).
+[entrypoints](../entrypoints/) and the [routers](../routers/).
In addition, a few parameters are dedicated to configuring globally
what happens with the connections between Traefik and the backends.
diff --git a/docs/content/routing/providers/kubernetes-crd.md b/docs/content/routing/providers/kubernetes-crd.md
index 66da0fae3..095691e14 100644
--- a/docs/content/routing/providers/kubernetes-crd.md
+++ b/docs/content/routing/providers/kubernetes-crd.md
@@ -392,7 +392,7 @@ Register the `IngressRoute` [kind](../../reference/dynamic-configuration/kuberne
| [13] | `services[n].port` | Defines the port of a [Kubernetes service](https://kubernetes.io/docs/concepts/services-networking/service/). This can be a reference to a named port. |
| [14] | `services[n].serversTransport` | Defines the reference to a [ServersTransport](#kind-serverstransport). The ServersTransport namespace is assumed to be the [Kubernetes service](https://kubernetes.io/docs/concepts/services-networking/service/) namespace (see [ServersTransport reference](#serverstransport-reference)). |
| [15] | `services[n].healthCheck` | Defines the HealthCheck when service references a [Kubernetes service](https://kubernetes.io/docs/concepts/services-networking/service/) of type ExternalName. |
-| [16] | `services[n].strategy` | Defines the load-balancing strategy for the load-balancer. Supported values are `wrr` and `p2c`, please refer to the [Load Balancing documentation](../routing/services/#load-balancing-strategy) for more information. |
+| [16] | `services[n].strategy` | Defines the load-balancing strategy for the load-balancer. Supported values are `wrr` and `p2c`, please refer to the [Load Balancing documentation](../../services/#load-balancing-strategy) for more information. |
| [17] | `services[n].nativeLB` | Controls, when creating the load-balancer, whether the LB's children are directly the pods IPs or if the only child is the Kubernetes Service clusterIP. |
| [18] | `services[n].nodePortLB` | Controls, when creating the load-balancer, whether the LB's children are directly the nodes internal IPs using the nodePort when the service type is NodePort. |
| [19] | `tls` | Defines [TLS](../routers/index.md#tls) certificate configuration |
diff --git a/docs/content/user-guides/cert-manager.md b/docs/content/user-guides/cert-manager.md
index f776ea0fa..e0b248003 100644
--- a/docs/content/user-guides/cert-manager.md
+++ b/docs/content/user-guides/cert-manager.md
@@ -94,7 +94,7 @@ To use this certificate with an Ingress, the [Kubernetes Ingress](../../provider
### With an IngressRoute
-To use this certificate with an IngressRoute, the [Kubernetes CRD](../../providers/kubernetes-crd) provider has to be enabled.
+To use this certificate with an IngressRoute, the [Kubernetes CRD](../../providers/kubernetes-crd/) provider has to be enabled.
!!! info Traefik Helm Chart
@@ -124,7 +124,7 @@ To use this certificate with an IngressRoute, the [Kubernetes CRD](../../provide
### With an HTTPRoute
-To use this certificate with an HTTPRoute, the [Kubernetes Gateway](../../routing/providers/kubernetes-gateway) provider has to be enabled.
+To use this certificate with an HTTPRoute, the [Kubernetes Gateway](../../routing/providers/kubernetes-gateway/) provider has to be enabled.
!!! info Traefik Helm Chart
diff --git a/docs/content/user-guides/docker-compose/acme-http/index.md b/docs/content/user-guides/docker-compose/acme-http/index.md
index 5f9b90565..5f60c077f 100644
--- a/docs/content/user-guides/docker-compose/acme-http/index.md
+++ b/docs/content/user-guides/docker-compose/acme-http/index.md
@@ -6,7 +6,7 @@ description: "Learn how to create a certificate with the Let's Encrypt HTTP chal
# Docker-compose with Let's Encrypt : HTTP Challenge
This guide aims to demonstrate how to create a certificate with the Let's Encrypt HTTP challenge to use https on a simple service exposed with Traefik.
-Please also read the [basic example](../basic-example) for details on how to expose such a service.
+Please also read the [basic example](../basic-example/) for details on how to expose such a service.
## Prerequisite
From c60815ed084a358c94481ba5f6a00a9677f6603f Mon Sep 17 00:00:00 2001
From: ignyx
Date: Wed, 13 Aug 2025 09:20:04 +0200
Subject: [PATCH 04/33] Fix typo in index
---
docs/content/index.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/docs/content/index.md b/docs/content/index.md
index 738746c37..6e3bb8ca1 100644
--- a/docs/content/index.md
+++ b/docs/content/index.md
@@ -11,7 +11,7 @@ Traefik is an [open-source](https://github.com/traefik/traefik) Application Prox
If you start with Traefik for service discovery and routing, you can seamlessly add [API management](https://traefik.io/solutions/api-management/), [API gateway](https://traefik.io/solutions/api-gateway/), [AI gateway](https://traefik.io/solutions/ai-gateway/), and [API mocking](https://traefik.io/solutions/api-mocking/) capabilities as needed.
-With 3.3 billion downloads and over 55k stars on GitHub, Traefik is used globally across hybrid cloud, multi-cloud, on prem, and bare metal environments running Kuberentes, Docker Swarm, AWS, [the list goes on](https://doc.traefik.io/traefik/reference/install-configuration/providers/overview/).
+With 3.3 billion downloads and over 55k stars on GitHub, Traefik is used globally across hybrid cloud, multi-cloud, on prem, and bare metal environments running Kubernetes, Docker Swarm, AWS, [the list goes on](https://doc.traefik.io/traefik/reference/install-configuration/providers/overview/).
Here’s how it works—Traefik receives requests on behalf of your system, identifies which components are responsible for handling them, and routes them securely. It automatically discovers the right configuration for your services by inspecting your infrastructure to identify relevant information and which service serves which request.
From c5d448fba9cd477999c6350cc6091c784c674d84 Mon Sep 17 00:00:00 2001
From: Michael
Date: Wed, 13 Aug 2025 09:22:04 +0200
Subject: [PATCH 05/33] chore: upgrade actions/checkout to v5
---
.github/workflows/build.yaml | 2 +-
.github/workflows/check_doc.yml | 2 +-
.github/workflows/codeql.yml | 2 +-
.github/workflows/documentation.yml | 2 +-
.github/workflows/experimental.yaml | 2 +-
.github/workflows/release.yaml | 4 ++--
.github/workflows/template-webui.yaml | 2 +-
.github/workflows/test-integration.yaml | 4 ++--
.github/workflows/test-unit.yaml | 6 +++---
.github/workflows/validate.yaml | 6 +++---
10 files changed, 16 insertions(+), 16 deletions(-)
diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml
index 5d392a685..a6e2e15e3 100644
--- a/.github/workflows/build.yaml
+++ b/.github/workflows/build.yaml
@@ -51,7 +51,7 @@ jobs:
steps:
- name: Check out code
- uses: actions/checkout@v4
+ uses: actions/checkout@v5
with:
fetch-depth: 0
diff --git a/.github/workflows/check_doc.yml b/.github/workflows/check_doc.yml
index c5fbddcec..48afa3298 100644
--- a/.github/workflows/check_doc.yml
+++ b/.github/workflows/check_doc.yml
@@ -13,7 +13,7 @@ jobs:
steps:
- name: Check out code
- uses: actions/checkout@v4
+ uses: actions/checkout@v5
with:
fetch-depth: 0
diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml
index f921d7789..30ab2221b 100644
--- a/.github/workflows/codeql.yml
+++ b/.github/workflows/codeql.yml
@@ -28,7 +28,7 @@ jobs:
steps:
- name: Checkout repository
- uses: actions/checkout@v4
+ uses: actions/checkout@v5
- name: setup go
uses: actions/setup-go@v5
diff --git a/.github/workflows/documentation.yml b/.github/workflows/documentation.yml
index 42e1be651..53d5579bc 100644
--- a/.github/workflows/documentation.yml
+++ b/.github/workflows/documentation.yml
@@ -20,7 +20,7 @@ jobs:
steps:
- name: Check out code
- uses: actions/checkout@v4
+ uses: actions/checkout@v5
with:
fetch-depth: 0
diff --git a/.github/workflows/experimental.yaml b/.github/workflows/experimental.yaml
index fd0b76e4c..a56928fff 100644
--- a/.github/workflows/experimental.yaml
+++ b/.github/workflows/experimental.yaml
@@ -23,7 +23,7 @@ jobs:
steps:
- name: Check out code
- uses: actions/checkout@v4
+ uses: actions/checkout@v5
with:
fetch-depth: 0
diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml
index ba544eb5b..7744af1f2 100644
--- a/.github/workflows/release.yaml
+++ b/.github/workflows/release.yaml
@@ -30,7 +30,7 @@ jobs:
steps:
- name: Check out code
- uses: actions/checkout@v4
+ uses: actions/checkout@v5
with:
fetch-depth: 0
@@ -89,7 +89,7 @@ jobs:
steps:
- name: Check out code
- uses: actions/checkout@v4
+ uses: actions/checkout@v5
with:
fetch-depth: 0
diff --git a/.github/workflows/template-webui.yaml b/.github/workflows/template-webui.yaml
index df52d75c1..e8ad44dda 100644
--- a/.github/workflows/template-webui.yaml
+++ b/.github/workflows/template-webui.yaml
@@ -8,7 +8,7 @@ jobs:
steps:
- name: Check out code
- uses: actions/checkout@v4
+ uses: actions/checkout@v5
with:
fetch-depth: 0
diff --git a/.github/workflows/test-integration.yaml b/.github/workflows/test-integration.yaml
index 9eaa2880a..3d05f81d4 100644
--- a/.github/workflows/test-integration.yaml
+++ b/.github/workflows/test-integration.yaml
@@ -20,7 +20,7 @@ jobs:
steps:
- name: Check out code
- uses: actions/checkout@v4
+ uses: actions/checkout@v5
with:
fetch-depth: 0
@@ -62,7 +62,7 @@ jobs:
steps:
- name: Check out code
- uses: actions/checkout@v4
+ uses: actions/checkout@v5
with:
fetch-depth: 0
diff --git a/.github/workflows/test-unit.yaml b/.github/workflows/test-unit.yaml
index 33e9459df..1a8b1941d 100644
--- a/.github/workflows/test-unit.yaml
+++ b/.github/workflows/test-unit.yaml
@@ -21,7 +21,7 @@ jobs:
matrix: ${{ steps.set-matrix.outputs.matrix }}
steps:
- name: Check out code
- uses: actions/checkout@v4
+ uses: actions/checkout@v5
with:
fetch-depth: 0
@@ -47,7 +47,7 @@ jobs:
steps:
- name: Check out code
- uses: actions/checkout@v4
+ uses: actions/checkout@v5
with:
fetch-depth: 0
@@ -69,7 +69,7 @@ jobs:
steps:
- name: Check out code
- uses: actions/checkout@v4
+ uses: actions/checkout@v5
with:
fetch-depth: 0
diff --git a/.github/workflows/validate.yaml b/.github/workflows/validate.yaml
index 8f9b0f643..60c212d3c 100644
--- a/.github/workflows/validate.yaml
+++ b/.github/workflows/validate.yaml
@@ -17,7 +17,7 @@ jobs:
steps:
- name: Check out code
- uses: actions/checkout@v4
+ uses: actions/checkout@v5
with:
fetch-depth: 0
@@ -37,7 +37,7 @@ jobs:
steps:
- name: Check out code
- uses: actions/checkout@v4
+ uses: actions/checkout@v5
with:
fetch-depth: 0
@@ -61,7 +61,7 @@ jobs:
steps:
- name: Check out code
- uses: actions/checkout@v4
+ uses: actions/checkout@v5
with:
fetch-depth: 0
From fc5359b6f60bcd21a0fe23e81bbb193015aeeb68 Mon Sep 17 00:00:00 2001
From: Michael
Date: Wed, 13 Aug 2025 10:30:06 +0200
Subject: [PATCH 06/33] Remove Semaphore CI
---
.github/workflows/release.yaml | 2 --
.semaphore/semaphore.yml | 13 -------------
Makefile | 5 -----
README.md | 1 -
script/release-packages.sh | 28 ----------------------------
5 files changed, 49 deletions(-)
delete mode 100644 .semaphore/semaphore.yml
delete mode 100755 script/release-packages.sh
diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml
index 7744af1f2..c05cad0de 100644
--- a/.github/workflows/release.yaml
+++ b/.github/workflows/release.yaml
@@ -126,8 +126,6 @@ jobs:
tar cfz "dist/traefik-${VERSION}.src.tar.gz" \
--exclude-vcs \
--exclude .idea \
- --exclude .travis \
- --exclude .semaphoreci \
--exclude .github \
--exclude dist .
diff --git a/.semaphore/semaphore.yml b/.semaphore/semaphore.yml
deleted file mode 100644
index 32f22b2b8..000000000
--- a/.semaphore/semaphore.yml
+++ /dev/null
@@ -1,13 +0,0 @@
-version: v1.0
-name: Traefik Release - deprecated
-agent:
- machine:
- type: f1-standard-2
- os_image: ubuntu2204
-blocks:
- - name: 'Do nothing'
- task:
- jobs:
- - name: 'Do nothing'
- commands:
- - echo "Do nothing"
diff --git a/Makefile b/Makefile
index b3a7f58b5..518bcde92 100644
--- a/Makefile
+++ b/Makefile
@@ -177,11 +177,6 @@ generate-crd:
generate-genconf:
go run ./cmd/internal/gen/
-.PHONY: release-packages
-#? release-packages: Create packages for the release
-release-packages: generate-webui
- $(CURDIR)/script/release-packages.sh
-
.PHONY: fmt
#? fmt: Format the Code
fmt:
diff --git a/README.md b/README.md
index 95cc252a3..1912d1772 100644
--- a/README.md
+++ b/README.md
@@ -7,7 +7,6 @@
-[](https://traefik-oss.semaphoreci.com/projects/traefik)
[](https://doc.traefik.io/traefik)
[](https://goreportcard.com/report/traefik/traefik)
[](https://github.com/traefik/traefik/blob/master/LICENSE.md)
diff --git a/script/release-packages.sh b/script/release-packages.sh
deleted file mode 100755
index 18ed92d3b..000000000
--- a/script/release-packages.sh
+++ /dev/null
@@ -1,28 +0,0 @@
-#!/usr/bin/env bash
-set -e
-
-if [ -n "${SEMAPHORE_GIT_TAG_NAME}" ]; then
- echo "Releasing packages..."
-else
- echo "Skipping release"
- exit 0
-fi
-
-rm -rf dist
-
-for os in linux darwin windows freebsd openbsd; do
- goreleaser release --skip=publish -p 2 --timeout="90m" --config "$(go run ./internal/release "$os")"
- go clean -cache
-done
-
-cat dist/**/*_checksums.txt >> "dist/traefik_${VERSION}_checksums.txt"
-rm dist/**/*_checksums.txt
-tar cfz "dist/traefik-${VERSION}.src.tar.gz" \
- --exclude-vcs \
- --exclude .idea \
- --exclude .travis \
- --exclude .semaphoreci \
- --exclude .github \
- --exclude dist .
-
-chown -R "$(id -u)":"$(id -g)" dist/
From 5cc2a8344c7525afd979d7d722a6c185f4ca22e8 Mon Sep 17 00:00:00 2001
From: Kevin Pollet
Date: Wed, 20 Aug 2025 15:52:06 +0200
Subject: [PATCH 07/33] Bump github.com/docker/docker to v28.3.3
---
.golangci.yml | 2 -
go.mod | 45 +++++----
go.sum | 98 ++++++++++---------
pkg/provider/docker/builder_test.go | 49 +++++-----
pkg/provider/docker/config.go | 4 +-
pkg/provider/docker/config_test.go | 37 ++++----
pkg/provider/docker/docker.go | 32 +++++--
pkg/provider/docker/swarm_test.go | 141 ++++++++++++++++++----------
8 files changed, 239 insertions(+), 169 deletions(-)
diff --git a/.golangci.yml b/.golangci.yml
index dea9f5f13..605a27512 100644
--- a/.golangci.yml
+++ b/.golangci.yml
@@ -305,8 +305,6 @@ linters:
text: 'SA1019: cfg.(SSLRedirect|SSLTemporaryRedirect|SSLHost|SSLForceHost|FeaturePolicy) is deprecated'
- path: (.+)\.go$
text: 'SA1019: c.Providers.(ConsulCatalog|Consul|Nomad).Namespace is deprecated'
- - path: (.+)\.go$
- text: 'SA1019: dockertypes.ContainerNode is deprecated'
paths:
- pkg/provider/kubernetes/crd/generated/
diff --git a/go.mod b/go.mod
index d5ad3505d..6fe16975f 100644
--- a/go.mod
+++ b/go.mod
@@ -17,8 +17,8 @@ require (
github.com/cenkalti/backoff/v4 v4.3.0
github.com/containous/alice v0.0.0-20181107144136-d83ebdd94cbd // No tag on the repo.
github.com/coreos/go-systemd/v22 v22.5.0
- github.com/docker/cli v27.1.1+incompatible
- github.com/docker/docker v27.1.1+incompatible
+ github.com/docker/cli v28.3.3+incompatible
+ github.com/docker/docker v28.3.3+incompatible
github.com/docker/go-connections v0.5.0
github.com/fatih/structs v1.1.0
github.com/fsnotify/fsnotify v1.9.0
@@ -38,7 +38,7 @@ require (
github.com/influxdata/influxdb-client-go/v2 v2.7.0
github.com/influxdata/influxdb1-client v0.0.0-20200827194710-b269163b24ab // No tag on the repo.
github.com/instana/go-sensor v1.38.3
- github.com/klauspost/compress v1.17.11-0.20241004063537-dbd6c381492a // Required to have the content-type fix: https://github.com/klauspost/compress/pull/1013
+ github.com/klauspost/compress v1.18.0
github.com/kvtools/consul v1.0.2
github.com/kvtools/etcdv3 v1.0.2
github.com/kvtools/redis v1.1.0
@@ -55,7 +55,7 @@ require (
github.com/patrickmn/go-cache v2.1.0+incompatible
github.com/pires/go-proxyproto v0.6.1
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // No tag on the repo.
- github.com/prometheus/client_golang v1.19.1
+ github.com/prometheus/client_golang v1.22.0
github.com/prometheus/client_model v0.6.1
github.com/quic-go/quic-go v0.48.2
github.com/rancher/go-rancher-metadata v0.0.0-20200311180630-7f4c936a06ac // No tag on the repo.
@@ -94,7 +94,7 @@ require (
cloud.google.com/go/auth v0.16.2 // indirect
cloud.google.com/go/auth/oauth2adapt v0.2.8 // indirect
cloud.google.com/go/compute/metadata v0.7.0 // indirect
- dario.cat/mergo v1.0.0 // indirect
+ dario.cat/mergo v1.0.1 // indirect
github.com/AdamSLevy/jsonrpc2/v14 v14.1.0 // indirect
github.com/Azure/azure-sdk-for-go v68.0.0+incompatible // indirect
github.com/Azure/azure-sdk-for-go/sdk/azcore v1.18.1 // indirect
@@ -103,7 +103,7 @@ require (
github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/dns/armdns v1.2.0 // indirect
github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/privatedns/armprivatedns v1.3.0 // indirect
github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/resourcegraph/armresourcegraph v0.9.0 // indirect
- github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1 // indirect
+ github.com/Azure/go-ansiterm v0.0.0-20250102033503-faa5f7b0171c // indirect
github.com/Azure/go-autorest v14.2.0+incompatible // indirect
github.com/Azure/go-autorest/autorest v0.11.30 // indirect
github.com/Azure/go-autorest/autorest/adal v0.9.22 // indirect
@@ -132,7 +132,7 @@ require (
github.com/Masterminds/goutils v1.1.1 // indirect
github.com/Masterminds/semver/v3 v3.2.1 // indirect
github.com/Microsoft/go-winio v0.6.2 // indirect
- github.com/Microsoft/hcsshim v0.11.7 // indirect
+ github.com/Microsoft/hcsshim v0.13.0 // indirect
github.com/OpenDNS/vegadns2client v0.0.0-20180418235048-a3fa4a771d87 // indirect
github.com/VividCortex/gohistogram v1.0.0 // indirect
github.com/akamai/AkamaiOPEN-edgegrid-golang v1.2.2 // indirect
@@ -165,9 +165,11 @@ require (
github.com/cespare/xxhash/v2 v2.3.0 // indirect
github.com/cihub/seelog v0.0.0-20170130134532-f561c5e57575 // indirect
github.com/clbanning/mxj/v2 v2.7.0 // indirect
- github.com/containerd/containerd v1.7.20 // indirect
+ github.com/containerd/containerd v1.7.23 // indirect
+ github.com/containerd/errdefs v1.0.0 // indirect
+ github.com/containerd/errdefs/pkg v0.3.0 // indirect
github.com/containerd/log v0.1.0 // indirect
- github.com/containerd/platforms v0.2.1 // indirect
+ github.com/containerd/platforms v1.0.0-rc.1 // indirect
github.com/coreos/go-semver v0.3.0 // indirect
github.com/cpuguy83/dockercfg v0.3.1 // indirect
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect
@@ -269,10 +271,13 @@ require (
github.com/mitchellh/go-homedir v1.1.0 // indirect
github.com/mitchellh/reflectwalk v1.0.2 // indirect
github.com/moby/docker-image-spec v1.3.1 // indirect
+ github.com/moby/go-archive v0.1.0 // indirect
github.com/moby/patternmatcher v0.6.0 // indirect
- github.com/moby/sys/sequential v0.5.0 // indirect
- github.com/moby/sys/user v0.2.0 // indirect
- github.com/moby/term v0.5.0 // indirect
+ github.com/moby/sys/atomicwriter v0.1.0 // indirect
+ github.com/moby/sys/sequential v0.6.0 // indirect
+ github.com/moby/sys/user v0.4.0 // indirect
+ github.com/moby/sys/userns v0.1.0 // indirect
+ github.com/moby/term v0.5.2 // indirect
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
github.com/modern-go/reflect2 v1.0.2 // indirect
github.com/morikuni/aec v1.0.0 // indirect
@@ -295,18 +300,18 @@ require (
github.com/onsi/ginkgo v1.16.5 // indirect
github.com/onsi/ginkgo/v2 v2.20.2 // indirect
github.com/opencontainers/go-digest v1.0.0 // indirect
- github.com/opencontainers/image-spec v1.1.0 // indirect
+ github.com/opencontainers/image-spec v1.1.1 // indirect
github.com/opentracing-contrib/go-observer v0.0.0-20170622124052-a52f23424492 // indirect
github.com/outcaste-io/ristretto v0.2.3 // indirect
github.com/ovh/go-ovh v1.9.0 // indirect
- github.com/pelletier/go-toml/v2 v2.1.0 // indirect
+ github.com/pelletier/go-toml/v2 v2.2.4 // indirect
github.com/peterhellberg/link v1.2.0 // indirect
github.com/philhofer/fwd v1.1.3-0.20240612014219-fbbf4953d986 // indirect
github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c // indirect
github.com/pkg/errors v0.9.1 // indirect
github.com/power-devops/perfstat v0.0.0-20220216144756-c35f1ee13d7c // indirect
github.com/pquerna/otp v1.5.0 // indirect
- github.com/prometheus/common v0.54.0 // indirect
+ github.com/prometheus/common v0.62.0 // indirect
github.com/prometheus/procfs v0.15.1 // indirect
github.com/quic-go/qpack v0.5.1 // indirect
github.com/redis/go-redis/v9 v9.8.0 // indirect
@@ -333,7 +338,7 @@ require (
github.com/sourcegraph/conc v0.3.0 // indirect
github.com/spf13/afero v1.11.0 // indirect
github.com/spf13/cast v1.7.0 // indirect
- github.com/spf13/pflag v1.0.5 // indirect
+ github.com/spf13/pflag v1.0.6 // indirect
github.com/spf13/viper v1.18.2 // indirect
github.com/stretchr/objx v0.5.2 // indirect
github.com/subosito/gotenv v1.6.0 // indirect
@@ -355,7 +360,7 @@ require (
go.elastic.co/apm/module/apmhttp/v2 v2.4.8 // indirect
go.elastic.co/fastjson v1.1.0 // indirect
go.etcd.io/etcd/api/v3 v3.5.10 // indirect
- go.etcd.io/etcd/client/pkg/v3 v3.5.10 // indirect
+ go.etcd.io/etcd/client/pkg/v3 v3.5.16 // indirect
go.etcd.io/etcd/client/v3 v3.5.10 // indirect
go.mongodb.org/mongo-driver v1.13.1 // indirect
go.opentelemetry.io/auto/sdk v1.1.0 // indirect
@@ -369,7 +374,7 @@ require (
go.opentelemetry.io/otel/metric v1.36.0 // indirect
go.opentelemetry.io/otel/trace v1.36.0 // indirect
go.uber.org/atomic v1.11.0 // indirect
- go.uber.org/mock v0.4.0 // indirect
+ go.uber.org/mock v0.5.0 // indirect
go.uber.org/multierr v1.11.0 // indirect
go.uber.org/ratelimit v0.3.1 // indirect
go.uber.org/zap v1.27.0 // indirect
@@ -389,11 +394,11 @@ require (
gopkg.in/ns1/ns1-go.v2 v2.14.4 // indirect
gopkg.in/yaml.v2 v2.4.0 // indirect
howett.net/plist v0.0.0-20181124034731-591f970eefbb // indirect
- k8s.io/klog/v2 v2.90.1 // indirect
+ k8s.io/klog/v2 v2.130.1 // indirect
k8s.io/kube-openapi v0.0.0-20221012153701-172d655c2280 // indirect
sigs.k8s.io/json v0.0.0-20220713155537-f223a00ba0e2 // indirect
sigs.k8s.io/structured-merge-diff/v4 v4.2.3 // indirect
- sigs.k8s.io/yaml v1.3.0 // indirect
+ sigs.k8s.io/yaml v1.4.0 // indirect
)
// Containous forks
diff --git a/go.sum b/go.sum
index eea89914e..bc45b5f4b 100644
--- a/go.sum
+++ b/go.sum
@@ -42,11 +42,11 @@ cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0Zeo
cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohlUTyfDhBk=
cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs=
cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0=
-dario.cat/mergo v1.0.0 h1:AGCNq9Evsj31mOgNPcLyXc+4PNABt905YmuqPYYpBWk=
-dario.cat/mergo v1.0.0/go.mod h1:uNxQE+84aUszobStD9th8a29P2fMDhsBdgRYvZOxGmk=
+dario.cat/mergo v1.0.1 h1:Ra4+bf83h2ztPIQYNP99R6m+Y7KfnARDfID+a+vLl4s=
+dario.cat/mergo v1.0.1/go.mod h1:uNxQE+84aUszobStD9th8a29P2fMDhsBdgRYvZOxGmk=
dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU=
-github.com/AdaLogics/go-fuzz-headers v0.0.0-20230811130428-ced1acdcaa24 h1:bvDV9vkmnHYOMsOr4WLk+Vo07yKIzd94sVoIqshQ4bU=
-github.com/AdaLogics/go-fuzz-headers v0.0.0-20230811130428-ced1acdcaa24/go.mod h1:8o94RPi1/7XTJvwPpRSzSUedZrtlirdB3r9Z20bi2f8=
+github.com/AdaLogics/go-fuzz-headers v0.0.0-20240806141605-e8a1dd7889d6 h1:He8afgbRMd7mFxO99hRNu+6tazq8nFF9lIwo9JFroBk=
+github.com/AdaLogics/go-fuzz-headers v0.0.0-20240806141605-e8a1dd7889d6/go.mod h1:8o94RPi1/7XTJvwPpRSzSUedZrtlirdB3r9Z20bi2f8=
github.com/AdamSLevy/jsonrpc2/v14 v14.1.0 h1:Dy3M9aegiI7d7PF1LUdjbVigJReo+QOceYsMyFh9qoE=
github.com/AdamSLevy/jsonrpc2/v14 v14.1.0/go.mod h1:ZakZtbCXxCz82NJvq7MoREtiQesnDfrtF6RFUGzQfLo=
github.com/Azure/azure-sdk-for-go v68.0.0+incompatible h1:fcYLmCpyNYRnvJbPerq7U0hS+6+I79yEDJBqVNcqUzU=
@@ -70,8 +70,8 @@ github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/resourcegraph/armresourceg
github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/resources/armresources v1.2.0 h1:Dd+RhdJn0OTtVGaeDLZpcumkIVCtA/3/Fo42+eoYvVM=
github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/resources/armresources v1.2.0/go.mod h1:5kakwfW5CjC9KK+Q4wjXAg+ShuIm2mBMua0ZFj2C8PE=
github.com/Azure/go-ansiterm v0.0.0-20170929234023-d6e3b3328b78/go.mod h1:LmzpDX56iTiv29bbRTIsUNlaFfuhWRQBWjQdVyAevI8=
-github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1 h1:UQHMgLO+TxOElx5B5HZ4hJQsoJ/PvUvKRhJHDQXO8P8=
-github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1/go.mod h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E=
+github.com/Azure/go-ansiterm v0.0.0-20250102033503-faa5f7b0171c h1:udKWzYgxTojEKWjV8V+WSxDXJ4NFATAsZjh8iIbsQIg=
+github.com/Azure/go-ansiterm v0.0.0-20250102033503-faa5f7b0171c/go.mod h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E=
github.com/Azure/go-autorest v14.2.0+incompatible h1:V5VMDjClD3GiElqLWO7mz2MxNAK/vTfRHdAubSIPRgs=
github.com/Azure/go-autorest v14.2.0+incompatible/go.mod h1:r+4oMnoxhatjLLJ6zxSWATqVooLgysK6ZNox3g/xq24=
github.com/Azure/go-autorest/autorest v0.11.12/go.mod h1:eipySxLmqSyC5s5k1CLupqet0PSENBEDP93LQ9a8QYw=
@@ -155,8 +155,8 @@ github.com/Masterminds/sprig/v3 v3.2.3/go.mod h1:rXcFaZ2zZbLRJv/xSysmlgIM1u11eBa
github.com/Microsoft/go-winio v0.5.0/go.mod h1:JPGBdM1cNvN/6ISo+n8V5iA4v8pBzdOpzfwIujj1a84=
github.com/Microsoft/go-winio v0.6.2 h1:F2VQgta7ecxGYO8k3ZZz3RS8fVIXVxONVUPlNERoyfY=
github.com/Microsoft/go-winio v0.6.2/go.mod h1:yd8OoFMLzJbo9gZq8j5qaps8bJ9aShtEA8Ipt1oGCvU=
-github.com/Microsoft/hcsshim v0.11.7 h1:vl/nj3Bar/CvJSYo7gIQPyRWc9f3c6IeSNavBTSZNZQ=
-github.com/Microsoft/hcsshim v0.11.7/go.mod h1:MV8xMfmECjl5HdO7U/3/hFVnkmSBjAjmA09d4bExKcU=
+github.com/Microsoft/hcsshim v0.13.0 h1:/BcXOiS6Qi7N9XqUcv27vkIuVOkBEcWstd2pMlWSeaA=
+github.com/Microsoft/hcsshim v0.13.0/go.mod h1:9KWJ/8DgU+QzYGupX4tzMhRQE8h6w90lH6HAaclpEok=
github.com/NYTimes/gziphandler v0.0.0-20170623195520-56545f4a5d46/go.mod h1:3wb06e3pkSAbeQ52E9H9iFoQsEEwGN64994WTCIhntQ=
github.com/NYTimes/gziphandler v1.1.1/go.mod h1:n/CVRwUEOgIxrgPvAQhUUr9oeUtvrhMomdKFjzJNB0c=
github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU=
@@ -332,12 +332,16 @@ github.com/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354/go.mod h1:WmhPx2Nbnht
github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk=
github.com/cncf/xds/go v0.0.0-20210312221358-fbca930ec8ed/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs=
github.com/cockroachdb/datadriven v0.0.0-20190809214429-80d97fb3cbaa/go.mod h1:zn76sxSg3SzpJ0PPJaLDCu+Bu0Lg3sKTORVIj19EIF8=
-github.com/containerd/containerd v1.7.20 h1:Sl6jQYk3TRavaU83h66QMbI2Nqg9Jm6qzwX57Vsn1SQ=
-github.com/containerd/containerd v1.7.20/go.mod h1:52GsS5CwquuqPuLncsXwG0t2CiUce+KsNHJZQJvAgR0=
+github.com/containerd/containerd v1.7.23 h1:H2CClyUkmpKAGlhQp95g2WXHfLYc7whAuvZGBNYOOwQ=
+github.com/containerd/containerd v1.7.23/go.mod h1:7QUzfURqZWCZV7RLNEn1XjUCQLEf0bkaK4GjUaZehxw=
+github.com/containerd/errdefs v1.0.0 h1:tg5yIfIlQIrxYtu9ajqY42W3lpS19XqdxRQeEwYG8PI=
+github.com/containerd/errdefs v1.0.0/go.mod h1:+YBYIdtsnF4Iw6nWZhJcqGSg/dwvV7tyJ/kCkyJ2k+M=
+github.com/containerd/errdefs/pkg v0.3.0 h1:9IKJ06FvyNlexW690DXuQNx2KA2cUJXx151Xdx3ZPPE=
+github.com/containerd/errdefs/pkg v0.3.0/go.mod h1:NJw6s9HwNuRhnjJhM7pylWwMyAkmCQvQ4GpJHEqRLVk=
github.com/containerd/log v0.1.0 h1:TCJt7ioM2cr/tfR8GPbGf9/VRAX8D2B4PjzCpfX540I=
github.com/containerd/log v0.1.0/go.mod h1:VRRf09a7mHDIRezVKTRCrOq78v577GXq3bSa3EhrzVo=
-github.com/containerd/platforms v0.2.1 h1:zvwtM3rz2YHPQsF2CHYM8+KtB5dvhISiXh5ZpSBQv6A=
-github.com/containerd/platforms v0.2.1/go.mod h1:XHCb+2/hzowdiut9rkudds9bE5yJ7npe7dG/wG+uFPw=
+github.com/containerd/platforms v1.0.0-rc.1 h1:83KIq4yy1erSRgOVHNk1HYdPvzdJ5CnsWaRoJX4C41E=
+github.com/containerd/platforms v1.0.0-rc.1/go.mod h1:J71L7B+aiM5SdIEqmd9wp6THLVRzJGXfNuWCZCllLA4=
github.com/containous/alice v0.0.0-20181107144136-d83ebdd94cbd h1:0n+lFLh5zU0l6KSk3KpnDwfbPGAR44aRLgTbCnhRBHU=
github.com/containous/alice v0.0.0-20181107144136-d83ebdd94cbd/go.mod h1:BbQgeDS5i0tNvypwEoF1oNjOJw8knRAE1DnVvjDstcQ=
github.com/containous/go-http-auth v0.4.1-0.20200324110947-a37a7636d23e h1:D+uTEzDZc1Fhmd0Pq06c+O9+KkAyExw0eVmu/NOqaHU=
@@ -391,10 +395,10 @@ github.com/distribution/reference v0.6.0 h1:0IXCQ5g4/QMHHkarYzh5l+u8T3t73zM5Qvfr
github.com/distribution/reference v0.6.0/go.mod h1:BbU0aIcezP1/5jX/8MP0YiH4SdvB5Y4f/wlDRiLyi3E=
github.com/dnsimple/dnsimple-go/v4 v4.0.0 h1:nUCICZSyZDiiqimAAL+E8XL+0sKGks5VRki5S8XotRo=
github.com/dnsimple/dnsimple-go/v4 v4.0.0/go.mod h1:AXT2yfAFOntJx6iMeo1J/zKBw0ggXFYBt4e97dqqPnc=
-github.com/docker/cli v27.1.1+incompatible h1:goaZxOqs4QKxznZjjBWKONQci/MywhtRv2oNn0GkeZE=
-github.com/docker/cli v27.1.1+incompatible/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8=
-github.com/docker/docker v27.1.1+incompatible h1:hO/M4MtV36kzKldqnA37IWhebRA+LnqqcqDja6kVaKY=
-github.com/docker/docker v27.1.1+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk=
+github.com/docker/cli v28.3.3+incompatible h1:fp9ZHAr1WWPGdIWBM1b3zLtgCF+83gRdVMTJsUeiyAo=
+github.com/docker/cli v28.3.3+incompatible/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8=
+github.com/docker/docker v28.3.3+incompatible h1:Dypm25kh4rmk49v1eiVbsAtpAsYURjYkaKubwuBdxEI=
+github.com/docker/docker v28.3.3+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk=
github.com/docker/go-connections v0.5.0 h1:USnMq7hx7gwdVZq1L49hLXaFtUdTADjXGp+uj1Br63c=
github.com/docker/go-connections v0.5.0/go.mod h1:ov60Kzw0kKElRwhNs9UlUHAE/F9Fe6GLaXnqyDdmEXc=
github.com/docker/go-units v0.5.0 h1:69rxXcBk27SvSaaxTtLh/8llcHD8vYHT7WSdRZ/jvr4=
@@ -513,7 +517,6 @@ github.com/go-logfmt/logfmt v0.5.1/go.mod h1:WYhtIu8zTZfxdn5+rREduYbwxfcBr/Vr6KE
github.com/go-logr/logr v0.1.0/go.mod h1:ixOQHD9gLJUVQQ2ZOR7zLEifBX6tGkNJF4QyIY7sIas=
github.com/go-logr/logr v0.2.0/go.mod h1:z6/tIYblkpsD+a4lm/fGIIU9mZ+XfAiaFtq7xTgseGU=
github.com/go-logr/logr v0.4.0/go.mod h1:z6/tIYblkpsD+a4lm/fGIIU9mZ+XfAiaFtq7xTgseGU=
-github.com/go-logr/logr v1.2.0/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A=
github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A=
github.com/go-logr/logr v1.4.2 h1:6pFjapn8bFcIbiKo3XT4j/BhANplGihG6tvd+8rYgrY=
github.com/go-logr/logr v1.4.2/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=
@@ -881,8 +884,8 @@ github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI
github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck=
github.com/klauspost/compress v1.13.4/go.mod h1:8dP1Hq4DHOhN9w426knH3Rhby4rFm6D8eO+e+Dq5Gzg=
github.com/klauspost/compress v1.13.6/go.mod h1:/3/Vjq9QcHkK5uEr5lBEmyoZ1iFhe47etQ6QUkpK6sk=
-github.com/klauspost/compress v1.17.11-0.20241004063537-dbd6c381492a h1:cwHOqPB4H4iQq8177kf2SxpjNbcjJ2m3lNwKIe28Hqg=
-github.com/klauspost/compress v1.17.11-0.20241004063537-dbd6c381492a/go.mod h1:pMDklpSncoRMuLFrf1W9Ss9KT+0rH90U12bZKk7uwG0=
+github.com/klauspost/compress v1.18.0 h1:c/Cqfb0r+Yi+JtIEq73FWXVkRonBlf0CRNYc8Zttxdo=
+github.com/klauspost/compress v1.18.0/go.mod h1:2Pp+KzxcywXVXMr50+X0Q/Lsb43OQHYWRCY2AiWywWQ=
github.com/kolo/xmlrpc v0.0.0-20220921171641-a4b6fa1dd06b h1:udzkj9S/zlT5X367kqJis0QP7YMxobob6zhzq6Yre00=
github.com/kolo/xmlrpc v0.0.0-20220921171641-a4b6fa1dd06b/go.mod h1:pcaDhQK0/NJZEvtCO0qQPPropqV0sJOJ6YW7X+9kRwM=
github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
@@ -1032,16 +1035,22 @@ github.com/mitchellh/reflectwalk v1.0.2 h1:G2LzWKi524PWgd3mLHV8Y5k7s6XUvT0Gef6zx
github.com/mitchellh/reflectwalk v1.0.2/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw=
github.com/moby/docker-image-spec v1.3.1 h1:jMKff3w6PgbfSa69GfNg+zN/XLhfXJGnEx3Nl2EsFP0=
github.com/moby/docker-image-spec v1.3.1/go.mod h1:eKmb5VW8vQEh/BAr2yvVNvuiJuY6UIocYsFu/DxxRpo=
+github.com/moby/go-archive v0.1.0 h1:Kk/5rdW/g+H8NHdJW2gsXyZ7UnzvJNOy6VKJqueWdcQ=
+github.com/moby/go-archive v0.1.0/go.mod h1:G9B+YoujNohJmrIYFBpSd54GTUB4lt9S+xVQvsJyFuo=
github.com/moby/patternmatcher v0.6.0 h1:GmP9lR19aU5GqSSFko+5pRqHi+Ohk1O69aFiKkVGiPk=
github.com/moby/patternmatcher v0.6.0/go.mod h1:hDPoyOpDY7OrrMDLaYoY3hf52gNCR/YOUYxkhApJIxc=
github.com/moby/spdystream v0.2.0/go.mod h1:f7i0iNDQJ059oMTcWxx8MA/zKFIuD/lY+0GqbN2Wy8c=
-github.com/moby/sys/sequential v0.5.0 h1:OPvI35Lzn9K04PBbCLW0g4LcFAJgHsvXsRyewg5lXtc=
-github.com/moby/sys/sequential v0.5.0/go.mod h1:tH2cOOs5V9MlPiXcQzRC+eEyab644PWKGRYaaV5ZZlo=
-github.com/moby/sys/user v0.2.0 h1:OnpapJsRp25vkhw8TFG6OLJODNh/3rEwRWtJ3kakwRM=
-github.com/moby/sys/user v0.2.0/go.mod h1:RYstrcWOJpVh+6qzUqp2bU3eaRpdiQeKGlKitaH0PM8=
+github.com/moby/sys/atomicwriter v0.1.0 h1:kw5D/EqkBwsBFi0ss9v1VG3wIkVhzGvLklJ+w3A14Sw=
+github.com/moby/sys/atomicwriter v0.1.0/go.mod h1:Ul8oqv2ZMNHOceF643P6FKPXeCmYtlQMvpizfsSoaWs=
+github.com/moby/sys/sequential v0.6.0 h1:qrx7XFUd/5DxtqcoH1h438hF5TmOvzC/lspjy7zgvCU=
+github.com/moby/sys/sequential v0.6.0/go.mod h1:uyv8EUTrca5PnDsdMGXhZe6CCe8U/UiTWd+lL+7b/Ko=
+github.com/moby/sys/user v0.4.0 h1:jhcMKit7SA80hivmFJcbB1vqmw//wU61Zdui2eQXuMs=
+github.com/moby/sys/user v0.4.0/go.mod h1:bG+tYYYJgaMtRKgEmuueC0hJEAZWwtIbZTB+85uoHjs=
+github.com/moby/sys/userns v0.1.0 h1:tVLXkFOxVu9A64/yh59slHVv9ahO9UIev4JZusOLG/g=
+github.com/moby/sys/userns v0.1.0/go.mod h1:IHUYgu/kao6N8YZlp9Cf444ySSvCmDlmzUcYfDHOl28=
github.com/moby/term v0.0.0-20201216013528-df9cb8a40635/go.mod h1:FBS0z0QWA44HXygs7VXDUOGoN/1TV3RuWkLO04am3wc=
-github.com/moby/term v0.5.0 h1:xt8Q1nalod/v7BqbG21f8mQPqH+xAaC9C3N3wfWbVP0=
-github.com/moby/term v0.5.0/go.mod h1:8FzsFHVUBGZdbDsJw/ot+X+d5HLUbvklYLJ9uGfcI3Y=
+github.com/moby/term v0.5.2 h1:6qk3FJAFDs6i/q3W/pQ97SX192qKfZgGjCQqfCJkgzQ=
+github.com/moby/term v0.5.2/go.mod h1:d3djjFCrjnB+fl8NJux+EJzu0msscUP+f8it8hPkFLc=
github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg=
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
@@ -1130,8 +1139,8 @@ github.com/onsi/gomega v1.34.1/go.mod h1:kU1QgUvBDLXBJq618Xvm2LUX6rSAfRaFRTcdOeD
github.com/op/go-logging v0.0.0-20160315200505-970db520ece7/go.mod h1:HzydrMdWErDVzsI23lYNej1Htcns9BCg93Dk0bBINWk=
github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U=
github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM=
-github.com/opencontainers/image-spec v1.1.0 h1:8SG7/vwALn54lVB/0yZ/MMwhFrPYtpEHQb2IpWsCzug=
-github.com/opencontainers/image-spec v1.1.0/go.mod h1:W4s4sFTMaBeK1BQLXbG4AdM2szdn85PY75RI83NrTrM=
+github.com/opencontainers/image-spec v1.1.1 h1:y0fUlFfIZhPF1W537XOLg0/fcx6zcHCJwooC2xJA040=
+github.com/opencontainers/image-spec v1.1.1/go.mod h1:qpqAh3Dmcf36wStyyWU+kCeDgrGnAve2nCC8+7h8Q0M=
github.com/opentracing-contrib/go-observer v0.0.0-20170622124052-a52f23424492 h1:lM6RxxfUMrYL/f8bWEUqdXrANWtrL7Nndbm9iFN0DlU=
github.com/opentracing-contrib/go-observer v0.0.0-20170622124052-a52f23424492/go.mod h1:Ngi6UdF0k5OKD5t5wlmGhe/EDKPoUM3BXZSSfIuJbis=
github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o=
@@ -1155,8 +1164,8 @@ github.com/patrickmn/go-cache v2.1.0+incompatible/go.mod h1:3Qf8kWWT7OJRJbdiICTK
github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic=
github.com/pelletier/go-toml v1.8.1/go.mod h1:T2/BmBdy8dvIRq1a/8aqjN41wvWlN4lrapLU/GW4pbc=
github.com/pelletier/go-toml v1.9.3/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c=
-github.com/pelletier/go-toml/v2 v2.1.0 h1:FnwAJ4oYMvbT/34k9zzHuZNrhlz48GB3/s6at6/MHO4=
-github.com/pelletier/go-toml/v2 v2.1.0/go.mod h1:tJU2Z3ZkXwnxa4DPO899bsyIoywizdUvyaeZurnPPDc=
+github.com/pelletier/go-toml/v2 v2.2.4 h1:mye9XuhQ6gvn5h28+VilKrrPoQVanw5PMw/TB0t5Ec4=
+github.com/pelletier/go-toml/v2 v2.2.4/go.mod h1:2gIqNv+qfxSVS7cM2xJQKtLSTLUE9V8t9Stt+h56mCY=
github.com/performancecopilot/speed/v4 v4.0.0/go.mod h1:qxrSyuDGrTOWfV+uKRFhfxw6h/4HXRGUiZiufxo49BM=
github.com/peterbourgon/diskv v2.0.1+incompatible/go.mod h1:uqqh8zWWbv1HBMNONnaR/tNboyR3/BZd58JJSHlUSCU=
github.com/peterhellberg/link v1.2.0 h1:UA5pg3Gp/E0F2WdX7GERiNrPQrM1K6CVJUUWfHa4t6c=
@@ -1198,8 +1207,8 @@ github.com/prometheus/client_golang v1.1.0/go.mod h1:I1FGZT9+L76gKKOs5djB6ezCbFQ
github.com/prometheus/client_golang v1.4.0/go.mod h1:e9GMxYsXl05ICDXkRhurwBS4Q3OK1iX/F2sw+iXX5zU=
github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M=
github.com/prometheus/client_golang v1.11.0/go.mod h1:Z6t4BnS23TR94PD6BsDNk8yVqroYurpAkEiz0P2BEV0=
-github.com/prometheus/client_golang v1.19.1 h1:wZWJDwK+NameRJuPGDhlnFgx8e8HN3XHQeLaYJFJBOE=
-github.com/prometheus/client_golang v1.19.1/go.mod h1:mP78NwGzrVks5S2H6ab8+ZZGJLZUq1hoULYBAYBw1Ho=
+github.com/prometheus/client_golang v1.22.0 h1:rb93p9lokFEsctTys46VnV1kLCDpVZ0a/Y92Vm0Zc6Q=
+github.com/prometheus/client_golang v1.22.0/go.mod h1:R7ljNsLXhuQXYZYtw6GAE9AZg8Y7vEW5scdCXrWRXC0=
github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo=
github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
@@ -1214,8 +1223,8 @@ github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8b
github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo=
github.com/prometheus/common v0.26.0/go.mod h1:M7rCNAaPfAosfx8veZJCuw84e35h3Cfd9VFqTh1DIvc=
github.com/prometheus/common v0.30.0/go.mod h1:vu+V0TpY+O6vW9J44gczi3Ap/oXXR10b+M/gUGO4Hls=
-github.com/prometheus/common v0.54.0 h1:ZlZy0BgJhTwVZUn7dLOkwCZHUkrAqd3WYtcFCWnM1D8=
-github.com/prometheus/common v0.54.0/go.mod h1:/TQgMJP5CuVYveyT7n/0Ix8yLNNXy9yRSkhnLTHPDIQ=
+github.com/prometheus/common v0.62.0 h1:xasJaQlnWAeyHdUBeGjXmutelfJHWMRr+Fg4QszZ2Io=
+github.com/prometheus/common v0.62.0/go.mod h1:vyBcEuLSvWos9B1+CyL7JZ2up+uFzXhkqml0W5zIY1I=
github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk=
github.com/prometheus/procfs v0.0.0-20190425082905-87a4384529e0/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA=
github.com/prometheus/procfs v0.0.0-20190507164030-5867b95ac084/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA=
@@ -1340,8 +1349,9 @@ github.com/spf13/jwalterweatherman v1.1.0/go.mod h1:aNWZUN0dPAAO/Ljvb5BEdw96iTZ0
github.com/spf13/pflag v0.0.0-20170130214245-9ff6c6923cff/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4=
github.com/spf13/pflag v1.0.1/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4=
github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4=
-github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA=
github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
+github.com/spf13/pflag v1.0.6 h1:jFzHGLGAlb3ruxLB8MhbI6A8+AQX/2eW4qeyNZXNp2o=
+github.com/spf13/pflag v1.0.6/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
github.com/spf13/viper v1.7.0/go.mod h1:8WkrPz2fc9jxqZNCJI/76HCieCp4Q8HaLFoCha5qpdg=
github.com/spf13/viper v1.7.1/go.mod h1:8WkrPz2fc9jxqZNCJI/76HCieCp4Q8HaLFoCha5qpdg=
github.com/spf13/viper v1.8.1/go.mod h1:o0Pch8wJ9BVSWGQMbra6iw0oQ5oktSIBaujf1rJH9Ns=
@@ -1479,8 +1489,8 @@ go.etcd.io/etcd/api/v3 v3.5.0/go.mod h1:cbVKeC6lCfl7j/8jBhAK6aIYO9XOjdptoxU/nLQc
go.etcd.io/etcd/api/v3 v3.5.10 h1:szRajuUUbLyppkhs9K6BRtjY37l66XQQmw7oZRANE4k=
go.etcd.io/etcd/api/v3 v3.5.10/go.mod h1:TidfmT4Uycad3NM/o25fG3J07odo4GBB9hoxaodFCtI=
go.etcd.io/etcd/client/pkg/v3 v3.5.0/go.mod h1:IJHfcCEKxYu1Os13ZdwCwIUTUVGYTSAM3YSwc9/Ac1g=
-go.etcd.io/etcd/client/pkg/v3 v3.5.10 h1:kfYIdQftBnbAq8pUWFXfpuuxFSKzlmM5cSn76JByiT0=
-go.etcd.io/etcd/client/pkg/v3 v3.5.10/go.mod h1:DYivfIviIuQ8+/lCq4vcxuseg2P2XbHygkKwFo9fc8U=
+go.etcd.io/etcd/client/pkg/v3 v3.5.16 h1:ZgY48uH6UvB+/7R9Yf4x574uCO3jIx0TRDyetSfId3Q=
+go.etcd.io/etcd/client/pkg/v3 v3.5.16/go.mod h1:V8acl8pcEK0Y2g19YlOV9m9ssUe6MgiDSobSoaBAM0E=
go.etcd.io/etcd/client/v2 v2.305.0/go.mod h1:h9puh54ZTgAKtEbut2oe9P4L/oqKCVB6xsXlzd7alYQ=
go.etcd.io/etcd/client/v3 v3.5.0/go.mod h1:AIKXXVX/DQXtfTEqBryiLTUXwON+GuvO6Z7lLS/oTh0=
go.etcd.io/etcd/client/v3 v3.5.10 h1:W9TXNZ+oB3MCd/8UjxHTWK5J9Nquw9fQBLJd5ne5/Ao=
@@ -1539,8 +1549,8 @@ go.uber.org/goleak v1.1.10/go.mod h1:8a7PlsEVH3e/a/GLqe5IIrQx6GzcnRmZEufDUTk4A7A
go.uber.org/goleak v1.1.11-0.20210813005559-691160354723/go.mod h1:cwTWslyiVhfpKIDGSZEM2HlOvcqm+tG4zioyIeLoqMQ=
go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto=
go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE=
-go.uber.org/mock v0.4.0 h1:VcM4ZOtdbR4f6VXfiOpwpVJDL6lCReaZ6mw31wqh7KU=
-go.uber.org/mock v0.4.0/go.mod h1:a6FSlNadKUHUa9IP5Vyt1zh4fC7uAwxMutEAscFbkZc=
+go.uber.org/mock v0.5.0 h1:KAMbZvZPyBPWgD14IrIQ38QCyjwpvVVV6K/bHl1IwQU=
+go.uber.org/mock v0.5.0/go.mod h1:ge71pBPLYDk7QIi1LupWxdAykm7KIEFchiOqd6z7qMM=
go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0=
go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU=
go.uber.org/multierr v1.7.0/go.mod h1:7EAYxJLBy9rStEaz58O2t4Uvip6FSURkq8/ppBp95ak=
@@ -2169,8 +2179,8 @@ gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
gotest.tools/v3 v3.0.2/go.mod h1:3SzNCllyD9/Y+b5r9JIKQ474KzkZyqLqEfYqMsX94Bk=
gotest.tools/v3 v3.0.3/go.mod h1:Z7Lb0S5l+klDB31fvDQX8ss/FlKDxtlFlw3Oa8Ymbl8=
-gotest.tools/v3 v3.5.1 h1:EENdUnS3pdur5nybKYIh2Vfgc8IUNBjxDPSjtiJcOzU=
-gotest.tools/v3 v3.5.1/go.mod h1:isy3WKz7GK6uNw/sbHzfKBLvlvXwUyV06n6brMxxopU=
+gotest.tools/v3 v3.5.2 h1:7koQfIKdy+I8UTetycgUqXWSDwpgv193Ka+qRsmBY8Q=
+gotest.tools/v3 v3.5.2/go.mod h1:LtdLGcnqToBH83WByAAi/wiwSFCArdFIUV/xxN4pcjA=
honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
@@ -2208,8 +2218,8 @@ k8s.io/klog/v2 v2.2.0/go.mod h1:Od+F08eJP+W3HUb4pSrPpgp9DGU4GzlpG/TmITuYh/Y=
k8s.io/klog/v2 v2.8.0/go.mod h1:hy9LJ/NvuK+iVyP4Ehqva4HxZG/oXyIS3n3Jmire4Ec=
k8s.io/klog/v2 v2.9.0/go.mod h1:hy9LJ/NvuK+iVyP4Ehqva4HxZG/oXyIS3n3Jmire4Ec=
k8s.io/klog/v2 v2.10.0/go.mod h1:hy9LJ/NvuK+iVyP4Ehqva4HxZG/oXyIS3n3Jmire4Ec=
-k8s.io/klog/v2 v2.90.1 h1:m4bYOKall2MmOiRaR1J+We67Do7vm9KiQVlT96lnHUw=
-k8s.io/klog/v2 v2.90.1/go.mod h1:y1WjHnz7Dj687irZUWR/WLkLc5N1YHtjLdmgWjndZn0=
+k8s.io/klog/v2 v2.130.1 h1:n9Xl7H1Xvksem4KFG4PYbdQCQxqc/tTUyrgXaOhHSzk=
+k8s.io/klog/v2 v2.130.1/go.mod h1:3Jpz1GvMt720eyJH1ckRHK1EDfpxISzJ7I9OYgaDtPE=
k8s.io/kube-openapi v0.0.0-20210305001622-591a79e4bda7/go.mod h1:wXW5VT87nVfh/iLV8FpR2uDvrFyomxbtb1KivDbvPTE=
k8s.io/kube-openapi v0.0.0-20210421082810-95288971da7e/go.mod h1:vHXdDvt9+2spS2Rx9ql3I8tycm3H9FDfdUoIuKCefvw=
k8s.io/kube-openapi v0.0.0-20221012153701-172d655c2280 h1:+70TFaan3hfJzs+7VK2o+OGxg8HsuBr/5f6tVAjDu6E=
@@ -2259,5 +2269,5 @@ sigs.k8s.io/structured-merge-diff/v4 v4.2.3 h1:PRbqxJClWWYMNV1dhaG4NsibJbArud9kF
sigs.k8s.io/structured-merge-diff/v4 v4.2.3/go.mod h1:qjx8mGObPmV2aSZepjQjbmb2ihdVs8cGKBraizNC69E=
sigs.k8s.io/yaml v1.1.0/go.mod h1:UJmg0vDUVViEyp3mgSv9WPwZCDxu4rQW1olrI1uml+o=
sigs.k8s.io/yaml v1.2.0/go.mod h1:yfXDCHCao9+ENCvLSE62v9VSji2MKu5jeNfTrofGhJc=
-sigs.k8s.io/yaml v1.3.0 h1:a2VclLzOGrwOHDiV8EfBGhvjHvP46CtW5j6POvhYGGo=
-sigs.k8s.io/yaml v1.3.0/go.mod h1:GeOyir5tyXNByN85N/dRIT9es5UQNerPYEKK56eTBm8=
+sigs.k8s.io/yaml v1.4.0 h1:Mk1wCc2gy/F0THH0TAp1QYyJNzRm2KCLy3o5ASXVI5E=
+sigs.k8s.io/yaml v1.4.0/go.mod h1:Ejl7/uTz7PSA4eKMyQCUTnhZYNmLIl+5c2lQPGR2BPY=
diff --git a/pkg/provider/docker/builder_test.go b/pkg/provider/docker/builder_test.go
index 1213b7c01..c7ec5bb69 100644
--- a/pkg/provider/docker/builder_test.go
+++ b/pkg/provider/docker/builder_test.go
@@ -1,22 +1,21 @@
package docker
import (
- dockertypes "github.com/docker/docker/api/types"
- "github.com/docker/docker/api/types/container"
+ dockercontainertypes "github.com/docker/docker/api/types/container"
"github.com/docker/docker/api/types/network"
"github.com/docker/docker/api/types/swarm"
"github.com/docker/go-connections/nat"
)
-func containerJSON(ops ...func(*dockertypes.ContainerJSON)) dockertypes.ContainerJSON {
- c := &dockertypes.ContainerJSON{
- ContainerJSONBase: &dockertypes.ContainerJSONBase{
+func containerJSON(ops ...func(*dockercontainertypes.InspectResponse)) dockercontainertypes.InspectResponse {
+ c := &dockercontainertypes.InspectResponse{
+ ContainerJSONBase: &dockercontainertypes.ContainerJSONBase{
Name: "fake",
- HostConfig: &container.HostConfig{},
+ HostConfig: &dockercontainertypes.HostConfig{},
},
- Config: &container.Config{},
- NetworkSettings: &dockertypes.NetworkSettings{
- NetworkSettingsBase: dockertypes.NetworkSettingsBase{},
+ Config: &dockercontainertypes.Config{},
+ NetworkSettings: &dockercontainertypes.NetworkSettings{
+ NetworkSettingsBase: dockercontainertypes.NetworkSettingsBase{},
},
}
@@ -27,34 +26,26 @@ func containerJSON(ops ...func(*dockertypes.ContainerJSON)) dockertypes.Containe
return *c
}
-func name(name string) func(*dockertypes.ContainerJSON) {
- return func(c *dockertypes.ContainerJSON) {
+func name(name string) func(*dockercontainertypes.InspectResponse) {
+ return func(c *dockercontainertypes.InspectResponse) {
c.ContainerJSONBase.Name = name
}
}
-func networkMode(mode string) func(*dockertypes.ContainerJSON) {
- return func(c *dockertypes.ContainerJSON) {
- c.ContainerJSONBase.HostConfig.NetworkMode = container.NetworkMode(mode)
+func networkMode(mode string) func(*dockercontainertypes.InspectResponse) {
+ return func(c *dockercontainertypes.InspectResponse) {
+ c.ContainerJSONBase.HostConfig.NetworkMode = dockercontainertypes.NetworkMode(mode)
}
}
-func nodeIP(ip string) func(*dockertypes.ContainerJSON) {
- return func(c *dockertypes.ContainerJSON) {
- c.ContainerJSONBase.Node = &dockertypes.ContainerNode{
- IPAddress: ip,
- }
- }
-}
-
-func ports(portMap nat.PortMap) func(*dockertypes.ContainerJSON) {
- return func(c *dockertypes.ContainerJSON) {
+func ports(portMap nat.PortMap) func(*dockercontainertypes.InspectResponse) {
+ return func(c *dockercontainertypes.InspectResponse) {
c.NetworkSettings.NetworkSettingsBase.Ports = portMap
}
}
-func withNetwork(name string, ops ...func(*network.EndpointSettings)) func(*dockertypes.ContainerJSON) {
- return func(c *dockertypes.ContainerJSON) {
+func withNetwork(name string, ops ...func(*network.EndpointSettings)) func(*dockercontainertypes.InspectResponse) {
+ return func(c *dockercontainertypes.InspectResponse) {
if c.NetworkSettings.Networks == nil {
c.NetworkSettings.Networks = map[string]*network.EndpointSettings{}
}
@@ -95,6 +86,12 @@ func taskSlot(slot int) func(*swarm.Task) {
}
}
+func taskNodeID(id string) func(*swarm.Task) {
+ return func(task *swarm.Task) {
+ task.NodeID = id
+ }
+}
+
func taskNetworkAttachment(id, name, driver string, addresses []string) func(*swarm.Task) {
return func(task *swarm.Task) {
task.NetworksAttachments = append(task.NetworksAttachments, swarm.NetworkAttachment{
diff --git a/pkg/provider/docker/config.go b/pkg/provider/docker/config.go
index 6ce921e3e..b159df92c 100644
--- a/pkg/provider/docker/config.go
+++ b/pkg/provider/docker/config.go
@@ -325,8 +325,8 @@ func (p *Provider) getIPAddress(ctx context.Context, container dockerData) strin
}
if container.NetworkSettings.NetworkMode.IsHost() {
- if container.Node != nil && container.Node.IPAddress != "" {
- return container.Node.IPAddress
+ if container.NodeIP != "" {
+ return container.NodeIP
}
if host, err := net.LookupHost("host.docker.internal"); err == nil {
return host[0]
diff --git a/pkg/provider/docker/config_test.go b/pkg/provider/docker/config_test.go
index b6b3dc538..831f565a2 100644
--- a/pkg/provider/docker/config_test.go
+++ b/pkg/provider/docker/config_test.go
@@ -5,8 +5,9 @@ import (
"testing"
docker "github.com/docker/docker/api/types"
- "github.com/docker/docker/api/types/network"
- "github.com/docker/docker/api/types/swarm"
+ dockercontainertypes "github.com/docker/docker/api/types/container"
+ networktypes "github.com/docker/docker/api/types/network"
+ swarmtypes "github.com/docker/docker/api/types/swarm"
"github.com/docker/go-connections/nat"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
@@ -3519,7 +3520,7 @@ func TestDockerGetIPPort(t *testing.T) {
testCases := []struct {
desc string
- container docker.ContainerJSON
+ container dockercontainertypes.InspectResponse
serverPort string
expected expected
}{
@@ -3690,7 +3691,7 @@ func TestDockerGetIPPort(t *testing.T) {
func TestDockerGetPort(t *testing.T) {
testCases := []struct {
desc string
- container docker.ContainerJSON
+ container dockercontainertypes.InspectResponse
serverPort string
expected string
}{
@@ -3755,8 +3756,9 @@ func TestDockerGetPort(t *testing.T) {
func TestDockerGetIPAddress(t *testing.T) {
testCases := []struct {
desc string
- container docker.ContainerJSON
+ container dockercontainertypes.InspectResponse
network string
+ nodeIP string
expected string
}{
{
@@ -3832,10 +3834,10 @@ func TestDockerGetIPAddress(t *testing.T) {
expected: "127.0.0.1",
},
{
- desc: "no network, no network label, mode host, node IP",
+ desc: "no network, no network label, mode host, node IP",
+ nodeIP: "10.0.0.5",
container: containerJSON(
networkMode("host"),
- nodeIP("10.0.0.5"),
),
expected: "10.0.0.5",
},
@@ -3850,9 +3852,12 @@ func TestDockerGetIPAddress(t *testing.T) {
}
dData := parseContainer(test.container)
+ if test.nodeIP != "" {
+ dData.NodeIP = test.nodeIP
+ }
dData.ExtraConf.Docker.Network = provider.Network
- if len(test.network) > 0 {
+ if test.network != "" {
dData.ExtraConf.Docker.Network = test.network
}
@@ -3864,14 +3869,14 @@ func TestDockerGetIPAddress(t *testing.T) {
func TestSwarmGetIPAddress(t *testing.T) {
testCases := []struct {
- service swarm.Service
+ service swarmtypes.Service
expected string
- networks map[string]*network.Summary
+ networks map[string]*networktypes.Summary
}{
{
service: swarmService(withEndpointSpec(modeDNSRR)),
expected: "",
- networks: map[string]*network.Summary{},
+ networks: map[string]*networktypes.Summary{},
},
{
service: swarmService(
@@ -3879,7 +3884,7 @@ func TestSwarmGetIPAddress(t *testing.T) {
withEndpoint(virtualIP("1", "10.11.12.13/24")),
),
expected: "10.11.12.13",
- networks: map[string]*network.Summary{
+ networks: map[string]*networktypes.Summary{
"1": {
Name: "foo",
},
@@ -3897,7 +3902,7 @@ func TestSwarmGetIPAddress(t *testing.T) {
),
),
expected: "10.11.12.99",
- networks: map[string]*network.Summary{
+ networks: map[string]*networktypes.Summary{
"1": {
Name: "foonet",
},
@@ -3927,16 +3932,16 @@ func TestSwarmGetIPAddress(t *testing.T) {
func TestSwarmGetPort(t *testing.T) {
testCases := []struct {
- service swarm.Service
+ service swarmtypes.Service
serverPort string
- networks map[string]*network.Summary
+ networks map[string]*networktypes.Summary
expected string
}{
{
service: swarmService(
withEndpointSpec(modeDNSRR),
),
- networks: map[string]*network.Summary{},
+ networks: map[string]*networktypes.Summary{},
serverPort: "8080",
expected: "8080",
},
diff --git a/pkg/provider/docker/docker.go b/pkg/provider/docker/docker.go
index 69780aadc..c0a49ca95 100644
--- a/pkg/provider/docker/docker.go
+++ b/pkg/provider/docker/docker.go
@@ -14,7 +14,6 @@ import (
"github.com/cenkalti/backoff/v4"
"github.com/docker/cli/cli/connhelper"
- dockertypes "github.com/docker/docker/api/types"
dockercontainertypes "github.com/docker/docker/api/types/container"
eventtypes "github.com/docker/docker/api/types/events"
"github.com/docker/docker/api/types/filters"
@@ -93,7 +92,7 @@ type dockerData struct {
Labels map[string]string // List of labels set to container or service
NetworkSettings networkSettings
Health string
- Node *dockertypes.ContainerNode
+ NodeIP string // Only filled in Swarm mode.
ExtraConf configuration
}
@@ -381,7 +380,7 @@ func inspectContainers(ctx context.Context, dockerClient client.ContainerAPIClie
return dockerData{}
}
-func parseContainer(container dockertypes.ContainerJSON) dockerData {
+func parseContainer(container dockercontainertypes.InspectResponse) dockerData {
dData := dockerData{
NetworkSettings: networkSettings{},
}
@@ -390,7 +389,6 @@ func parseContainer(container dockertypes.ContainerJSON) dockerData {
dData.ID = container.ContainerJSONBase.ID
dData.Name = container.ContainerJSONBase.Name
dData.ServiceName = dData.Name // Default ServiceName to be the container's Name.
- dData.Node = container.ContainerJSONBase.Node
if container.ContainerJSONBase.HostConfig != nil {
dData.NetworkSettings.NetworkMode = container.ContainerJSONBase.HostConfig.NetworkMode
@@ -431,7 +429,7 @@ func parseContainer(container dockertypes.ContainerJSON) dockerData {
func (p *Provider) listServices(ctx context.Context, dockerClient client.APIClient) ([]dockerData, error) {
logger := log.FromContext(ctx)
- serviceList, err := dockerClient.ServiceList(ctx, dockertypes.ServiceListOptions{})
+ serviceList, err := dockerClient.ServiceList(ctx, swarmtypes.ServiceListOptions{})
if err != nil {
return nil, err
}
@@ -542,7 +540,7 @@ func listTasks(ctx context.Context, dockerClient client.APIClient, serviceID str
serviceIDFilter.Add("service", serviceID)
serviceIDFilter.Add("desired-state", "running")
- taskList, err := dockerClient.TaskList(ctx, dockertypes.TaskListOptions{Filters: serviceIDFilter})
+ taskList, err := dockerClient.TaskList(ctx, swarmtypes.TaskListOptions{Filters: serviceIDFilter})
if err != nil {
return nil, err
}
@@ -552,7 +550,13 @@ func listTasks(ctx context.Context, dockerClient client.APIClient, serviceID str
if task.Status.State != swarmtypes.TaskStateRunning {
continue
}
- dData := parseTasks(ctx, task, serviceDockerData, networkMap, isGlobalSvc)
+
+ dData, err := parseTasks(ctx, dockerClient, task, serviceDockerData, networkMap, isGlobalSvc)
+ if err != nil {
+ log.FromContext(ctx).Warn(err)
+ continue
+ }
+
if len(dData.NetworkSettings.Networks) > 0 {
dockerDataList = append(dockerDataList, dData)
}
@@ -560,9 +564,9 @@ func listTasks(ctx context.Context, dockerClient client.APIClient, serviceID str
return dockerDataList, err
}
-func parseTasks(ctx context.Context, task swarmtypes.Task, serviceDockerData dockerData,
+func parseTasks(ctx context.Context, dockerClient client.APIClient, task swarmtypes.Task, serviceDockerData dockerData,
networkMap map[string]*networktypes.Summary, isGlobalSvc bool,
-) dockerData {
+) (dockerData, error) {
dData := dockerData{
ID: task.ID,
ServiceName: serviceDockerData.Name,
@@ -576,6 +580,14 @@ func parseTasks(ctx context.Context, task swarmtypes.Task, serviceDockerData doc
dData.Name = serviceDockerData.Name + "." + task.ID
}
+ if task.NodeID != "" {
+ node, _, err := dockerClient.NodeInspectWithRaw(ctx, task.NodeID)
+ if err != nil {
+ return dockerData{}, fmt.Errorf("inspecting node %s: %w", task.NodeID, err)
+ }
+ dData.NodeIP = node.Status.Addr
+ }
+
if task.NetworksAttachments != nil {
dData.NetworkSettings.Networks = make(map[string]*networkData)
for _, virtualIP := range task.NetworksAttachments {
@@ -597,5 +609,5 @@ func parseTasks(ctx context.Context, task swarmtypes.Task, serviceDockerData doc
}
}
}
- return dData
+ return dData, nil
}
diff --git a/pkg/provider/docker/swarm_test.go b/pkg/provider/docker/swarm_test.go
index a70c9488e..c62d9c79e 100644
--- a/pkg/provider/docker/swarm_test.go
+++ b/pkg/provider/docker/swarm_test.go
@@ -7,8 +7,9 @@ import (
"time"
dockertypes "github.com/docker/docker/api/types"
- "github.com/docker/docker/api/types/network"
- "github.com/docker/docker/api/types/swarm"
+ dockercontainertypes "github.com/docker/docker/api/types/container"
+ networktypes "github.com/docker/docker/api/types/network"
+ swarmtypes "github.com/docker/docker/api/types/swarm"
dockerclient "github.com/docker/docker/client"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
@@ -16,39 +17,39 @@ import (
type fakeTasksClient struct {
dockerclient.APIClient
- tasks []swarm.Task
- container dockertypes.ContainerJSON
+ tasks []swarmtypes.Task
+ container dockercontainertypes.InspectResponse
err error
}
-func (c *fakeTasksClient) TaskList(ctx context.Context, options dockertypes.TaskListOptions) ([]swarm.Task, error) {
+func (c *fakeTasksClient) TaskList(ctx context.Context, options swarmtypes.TaskListOptions) ([]swarmtypes.Task, error) {
return c.tasks, c.err
}
-func (c *fakeTasksClient) ContainerInspect(ctx context.Context, container string) (dockertypes.ContainerJSON, error) {
+func (c *fakeTasksClient) ContainerInspect(ctx context.Context, container string) (dockercontainertypes.InspectResponse, error) {
return c.container, c.err
}
func TestListTasks(t *testing.T) {
testCases := []struct {
- service swarm.Service
- tasks []swarm.Task
+ service swarmtypes.Service
+ tasks []swarmtypes.Task
isGlobalSVC bool
expectedTasks []string
- networks map[string]*network.Summary
+ networks map[string]*networktypes.Summary
}{
{
service: swarmService(serviceName("container")),
- tasks: []swarm.Task{
+ tasks: []swarmtypes.Task{
swarmTask("id1",
taskSlot(1),
taskNetworkAttachment("1", "network1", "overlay", []string{"127.0.0.1"}),
- taskStatus(taskState(swarm.TaskStateRunning)),
+ taskStatus(taskState(swarmtypes.TaskStateRunning)),
),
swarmTask("id2",
taskSlot(2),
taskNetworkAttachment("1", "network1", "overlay", []string{"127.0.0.2"}),
- taskStatus(taskState(swarm.TaskStatePending)),
+ taskStatus(taskState(swarmtypes.TaskStatePending)),
),
swarmTask("id3",
taskSlot(3),
@@ -57,12 +58,12 @@ func TestListTasks(t *testing.T) {
swarmTask("id4",
taskSlot(4),
taskNetworkAttachment("1", "network1", "overlay", []string{"127.0.0.4"}),
- taskStatus(taskState(swarm.TaskStateRunning)),
+ taskStatus(taskState(swarmtypes.TaskStateRunning)),
),
swarmTask("id5",
taskSlot(5),
taskNetworkAttachment("1", "network1", "overlay", []string{"127.0.0.5"}),
- taskStatus(taskState(swarm.TaskStateFailed)),
+ taskStatus(taskState(swarmtypes.TaskStateFailed)),
),
},
isGlobalSVC: false,
@@ -70,7 +71,7 @@ func TestListTasks(t *testing.T) {
"container.1",
"container.4",
},
- networks: map[string]*network.Summary{
+ networks: map[string]*networktypes.Summary{
"1": {
Name: "foo",
},
@@ -105,13 +106,23 @@ func TestListTasks(t *testing.T) {
type fakeServicesClient struct {
dockerclient.APIClient
dockerVersion string
- networks []network.Summary
- services []swarm.Service
- tasks []swarm.Task
+ networks []networktypes.Summary
+ nodes []swarmtypes.Node
+ services []swarmtypes.Service
+ tasks []swarmtypes.Task
err error
}
-func (c *fakeServicesClient) ServiceList(ctx context.Context, options dockertypes.ServiceListOptions) ([]swarm.Service, error) {
+func (c *fakeServicesClient) NodeInspectWithRaw(ctx context.Context, nodeID string) (swarmtypes.Node, []byte, error) {
+ for _, node := range c.nodes {
+ if node.ID == nodeID {
+ return node, nil, nil
+ }
+ }
+ return swarmtypes.Node{}, nil, c.err
+}
+
+func (c *fakeServicesClient) ServiceList(ctx context.Context, options swarmtypes.ServiceListOptions) ([]swarmtypes.Service, error) {
return c.services, c.err
}
@@ -119,26 +130,26 @@ func (c *fakeServicesClient) ServerVersion(ctx context.Context) (dockertypes.Ver
return dockertypes.Version{APIVersion: c.dockerVersion}, c.err
}
-func (c *fakeServicesClient) NetworkList(ctx context.Context, options network.ListOptions) ([]network.Summary, error) {
+func (c *fakeServicesClient) NetworkList(ctx context.Context, options networktypes.ListOptions) ([]networktypes.Summary, error) {
return c.networks, c.err
}
-func (c *fakeServicesClient) TaskList(ctx context.Context, options dockertypes.TaskListOptions) ([]swarm.Task, error) {
+func (c *fakeServicesClient) TaskList(ctx context.Context, options swarmtypes.TaskListOptions) ([]swarmtypes.Task, error) {
return c.tasks, c.err
}
func TestListServices(t *testing.T) {
testCases := []struct {
desc string
- services []swarm.Service
- tasks []swarm.Task
+ services []swarmtypes.Service
+ tasks []swarmtypes.Task
dockerVersion string
- networks []network.Summary
+ networks []networktypes.Summary
expectedServices []string
}{
{
desc: "Should return no service due to no networks defined",
- services: []swarm.Service{
+ services: []swarmtypes.Service{
swarmService(
serviceName("service1"),
serviceLabels(map[string]string{
@@ -159,12 +170,12 @@ func TestListServices(t *testing.T) {
withEndpointSpec(modeDNSRR)),
},
dockerVersion: "1.30",
- networks: []network.Summary{},
+ networks: []networktypes.Summary{},
expectedServices: []string{},
},
{
desc: "Should return only service1",
- services: []swarm.Service{
+ services: []swarmtypes.Service{
swarmService(
serviceName("service1"),
serviceLabels(map[string]string{
@@ -185,7 +196,7 @@ func TestListServices(t *testing.T) {
withEndpointSpec(modeDNSRR)),
},
dockerVersion: "1.30",
- networks: []network.Summary{
+ networks: []networktypes.Summary{
{
Name: "network_name",
ID: "yk6l57rfwizjzxxzftn4amaot",
@@ -197,8 +208,8 @@ func TestListServices(t *testing.T) {
Ingress: false,
ConfigOnly: false,
Options: map[string]string{
- "com.docker.network.driver.overlay.vxlanid_list": "4098",
- "com.docker.network.enable_ipv6": "false",
+ "com.docker.networktypes.driver.overlay.vxlanid_list": "4098",
+ "com.docker.networktypes.enable_ipv6": "false",
},
Labels: map[string]string{
"com.docker.stack.namespace": "test",
@@ -211,7 +222,7 @@ func TestListServices(t *testing.T) {
},
{
desc: "Should return service1 and service2",
- services: []swarm.Service{
+ services: []swarmtypes.Service{
swarmService(
serviceName("service1"),
serviceLabels(map[string]string{
@@ -229,18 +240,18 @@ func TestListServices(t *testing.T) {
}),
withEndpointSpec(modeDNSRR)),
},
- tasks: []swarm.Task{
+ tasks: []swarmtypes.Task{
swarmTask("id1",
taskNetworkAttachment("yk6l57rfwizjzxxzftn4amaot", "network_name", "overlay", []string{"127.0.0.1"}),
- taskStatus(taskState(swarm.TaskStateRunning)),
+ taskStatus(taskState(swarmtypes.TaskStateRunning)),
),
swarmTask("id2",
taskNetworkAttachment("yk6l57rfwizjzxxzftn4amaot", "network_name", "overlay", []string{"127.0.0.1"}),
- taskStatus(taskState(swarm.TaskStateRunning)),
+ taskStatus(taskState(swarmtypes.TaskStateRunning)),
),
},
dockerVersion: "1.30",
- networks: []network.Summary{
+ networks: []networktypes.Summary{
{
Name: "network_name",
ID: "yk6l57rfwizjzxxzftn4amaot",
@@ -252,8 +263,8 @@ func TestListServices(t *testing.T) {
Ingress: false,
ConfigOnly: false,
Options: map[string]string{
- "com.docker.network.driver.overlay.vxlanid_list": "4098",
- "com.docker.network.enable_ipv6": "false",
+ "com.docker.networktypes.driver.overlay.vxlanid_list": "4098",
+ "com.docker.networktypes.enable_ipv6": "false",
},
Labels: map[string]string{
"com.docker.stack.namespace": "test",
@@ -293,15 +304,16 @@ func TestListServices(t *testing.T) {
func TestSwarmTaskParsing(t *testing.T) {
testCases := []struct {
- service swarm.Service
- tasks []swarm.Task
+ service swarmtypes.Service
+ tasks []swarmtypes.Task
+ nodes []swarmtypes.Node
isGlobalSVC bool
expected map[string]dockerData
- networks map[string]*network.Summary
+ networks map[string]*networktypes.Summary
}{
{
service: swarmService(serviceName("container")),
- tasks: []swarm.Task{
+ tasks: []swarmtypes.Task{
swarmTask("id1", taskSlot(1)),
swarmTask("id2", taskSlot(2)),
swarmTask("id3", taskSlot(3)),
@@ -318,7 +330,7 @@ func TestSwarmTaskParsing(t *testing.T) {
Name: "container.3",
},
},
- networks: map[string]*network.Summary{
+ networks: map[string]*networktypes.Summary{
"1": {
Name: "foo",
},
@@ -326,7 +338,7 @@ func TestSwarmTaskParsing(t *testing.T) {
},
{
service: swarmService(serviceName("container")),
- tasks: []swarm.Task{
+ tasks: []swarmtypes.Task{
swarmTask("id1"),
swarmTask("id2"),
swarmTask("id3"),
@@ -343,7 +355,7 @@ func TestSwarmTaskParsing(t *testing.T) {
Name: "container.id3",
},
},
- networks: map[string]*network.Summary{
+ networks: map[string]*networktypes.Summary{
"1": {
Name: "foo",
},
@@ -357,12 +369,12 @@ func TestSwarmTaskParsing(t *testing.T) {
virtualIP("1", ""),
),
),
- tasks: []swarm.Task{
+ tasks: []swarmtypes.Task{
swarmTask(
"id1",
taskNetworkAttachment("1", "vlan", "macvlan", []string{"127.0.0.1"}),
taskStatus(
- taskState(swarm.TaskStateRunning),
+ taskState(swarmtypes.TaskStateRunning),
taskContainerStatus("c1"),
),
),
@@ -381,25 +393,56 @@ func TestSwarmTaskParsing(t *testing.T) {
},
},
},
- networks: map[string]*network.Summary{
+ networks: map[string]*networktypes.Summary{
"1": {
Name: "vlan",
},
},
},
+ {
+ service: swarmService(serviceName("container")),
+ tasks: []swarmtypes.Task{
+ swarmTask("id1",
+ taskSlot(1),
+ taskNodeID("id1"),
+ ),
+ },
+ nodes: []swarmtypes.Node{
+ {
+ Status: swarmtypes.NodeStatus{
+ Addr: "10.11.12.13",
+ },
+ },
+ },
+ expected: map[string]dockerData{
+ "id1": {
+ Name: "container.1",
+ NodeIP: "10.11.12.13",
+ },
+ },
+ networks: map[string]*networktypes.Summary{
+ "1": {
+ Name: "foo",
+ },
+ },
+ },
}
for caseID, test := range testCases {
t.Run(strconv.Itoa(caseID), func(t *testing.T) {
t.Parallel()
- p := Provider{}
+ var p Provider
dData, err := p.parseService(t.Context(), test.service, test.networks)
require.NoError(t, err)
+ dockerClient := &fakeServicesClient{tasks: test.tasks}
+
for _, task := range test.tasks {
- taskDockerData := parseTasks(t.Context(), task, dData, test.networks, test.isGlobalSVC)
+ taskDockerData, err := parseTasks(t.Context(), dockerClient, task, dData, test.networks, test.isGlobalSVC)
+ require.NoError(t, err)
+
expected := test.expected[task.ID]
assert.Equal(t, expected.Name, taskDockerData.Name)
}
From 3b33ffa245a9c200a471c29b740d9d6007a51cc2 Mon Sep 17 00:00:00 2001
From: shreealt
Date: Wed, 20 Aug 2025 19:30:08 +0530
Subject: [PATCH 08/33] Make app protocol case insensitive
---
.../httproute/with_app_protocol_service.yml | 10 +++
.../kubernetes/gateway/fixtures/services.yml | 74 +++++++++++++++++++
pkg/provider/kubernetes/gateway/grpcroute.go | 2 +-
pkg/provider/kubernetes/gateway/httproute.go | 2 +-
.../kubernetes/gateway/kubernetes_test.go | 36 +++++++++
5 files changed, 122 insertions(+), 2 deletions(-)
diff --git a/pkg/provider/kubernetes/gateway/fixtures/httproute/with_app_protocol_service.yml b/pkg/provider/kubernetes/gateway/fixtures/httproute/with_app_protocol_service.yml
index c364c8f52..4f51360a0 100644
--- a/pkg/provider/kubernetes/gateway/fixtures/httproute/with_app_protocol_service.yml
+++ b/pkg/provider/kubernetes/gateway/fixtures/httproute/with_app_protocol_service.yml
@@ -59,3 +59,13 @@ spec:
weight: 1
kind: Service
group: ""
+ - name: whoami-HTTP
+ port: 80
+ weight: 1
+ kind: Service
+ group: ""
+ - name: whoami-HTTPS
+ port: 443
+ weight: 1
+ kind: Service
+ group: ""
diff --git a/pkg/provider/kubernetes/gateway/fixtures/services.yml b/pkg/provider/kubernetes/gateway/fixtures/services.yml
index 2f864c2f5..143dc8656 100644
--- a/pkg/provider/kubernetes/gateway/fixtures/services.yml
+++ b/pkg/provider/kubernetes/gateway/fixtures/services.yml
@@ -430,6 +430,80 @@ spec:
name: wss
appProtocol: kubernetes.io/wss
+---
+kind: EndpointSlice
+apiVersion: discovery.k8s.io/v1
+metadata:
+ name: whoami-HTTPS-abc
+ namespace: default
+ labels:
+ kubernetes.io/service-name: whoami-HTTPS
+
+addressType: IPv4
+ports:
+ - name: websecure
+ port: 8443
+endpoints:
+ - addresses:
+ - 10.10.0.16
+ conditions:
+ ready: true
+
+---
+apiVersion: v1
+kind: Service
+metadata:
+ name: whoami-HTTPS
+ namespace: default
+
+spec:
+ ports:
+ - name: websecure
+ protocol: TCP
+ appProtocol: HTTPS
+ port: 443
+ targetPort: websecure
+ selector:
+ app: containous
+ task: whoami-HTTPS
+
+---
+kind: EndpointSlice
+apiVersion: discovery.k8s.io/v1
+metadata:
+ name: whoami-HTTP-abc
+ namespace: default
+ labels:
+ kubernetes.io/service-name: whoami-HTTP
+
+addressType: IPv4
+ports:
+ - name: web
+ port: 8080
+endpoints:
+ - addresses:
+ - 10.10.0.17
+ conditions:
+ ready: true
+
+---
+apiVersion: v1
+kind: Service
+metadata:
+ name: whoami-HTTP
+ namespace: default
+
+spec:
+ ports:
+ - name: web
+ protocol: TCP
+ port: 80
+ appProtocol: HTTP
+ targetPort: web
+ selector:
+ app: containous
+ task: whoami-HTTP
+
---
apiVersion: v1
kind: Service
diff --git a/pkg/provider/kubernetes/gateway/grpcroute.go b/pkg/provider/kubernetes/gateway/grpcroute.go
index ecf208568..39b84181a 100644
--- a/pkg/provider/kubernetes/gateway/grpcroute.go
+++ b/pkg/provider/kubernetes/gateway/grpcroute.go
@@ -430,7 +430,7 @@ func getGRPCServiceProtocol(portSpec corev1.ServicePort) (string, error) {
return schemeH2C, nil
}
- switch ap := *portSpec.AppProtocol; ap {
+ switch ap := strings.ToLower(*portSpec.AppProtocol); ap {
case appProtocolH2C:
return schemeH2C, nil
case appProtocolHTTPS:
diff --git a/pkg/provider/kubernetes/gateway/httproute.go b/pkg/provider/kubernetes/gateway/httproute.go
index 8af4cadd4..ebee5fd1f 100644
--- a/pkg/provider/kubernetes/gateway/httproute.go
+++ b/pkg/provider/kubernetes/gateway/httproute.go
@@ -817,7 +817,7 @@ func getHTTPServiceProtocol(portSpec corev1.ServicePort) (string, error) {
return protocol, nil
}
- switch ap := *portSpec.AppProtocol; ap {
+ switch ap := strings.ToLower(*portSpec.AppProtocol); ap {
case appProtocolH2C:
return schemeH2C, nil
case appProtocolHTTP, appProtocolWS:
diff --git a/pkg/provider/kubernetes/gateway/kubernetes_test.go b/pkg/provider/kubernetes/gateway/kubernetes_test.go
index f16051051..90e93f64f 100644
--- a/pkg/provider/kubernetes/gateway/kubernetes_test.go
+++ b/pkg/provider/kubernetes/gateway/kubernetes_test.go
@@ -2959,6 +2959,14 @@ func TestLoadHTTPRoutes_backendExtensionRef(t *testing.T) {
Name: "default-whoami-wss-http-80",
Weight: ptr.To(1),
},
+ {
+ Name: "default-whoami-HTTP-http-80",
+ Weight: ptr.To(1),
+ },
+ {
+ Name: "default-whoami-HTTPS-http-443",
+ Weight: ptr.To(1),
+ },
},
},
},
@@ -3004,6 +3012,34 @@ func TestLoadHTTPRoutes_backendExtensionRef(t *testing.T) {
},
},
},
+ "default-whoami-HTTPS-http-443": {
+ LoadBalancer: &dynamic.ServersLoadBalancer{
+ Strategy: dynamic.BalancerStrategyWRR,
+ Servers: []dynamic.Server{
+ {
+ URL: "https://10.10.0.16:8443",
+ },
+ },
+ PassHostHeader: ptr.To(true),
+ ResponseForwarding: &dynamic.ResponseForwarding{
+ FlushInterval: ptypes.Duration(100 * time.Millisecond),
+ },
+ },
+ },
+ "default-whoami-HTTP-http-80": {
+ LoadBalancer: &dynamic.ServersLoadBalancer{
+ Strategy: dynamic.BalancerStrategyWRR,
+ Servers: []dynamic.Server{
+ {
+ URL: "http://10.10.0.17:8080",
+ },
+ },
+ PassHostHeader: ptr.To(true),
+ ResponseForwarding: &dynamic.ResponseForwarding{
+ FlushInterval: ptypes.Duration(100 * time.Millisecond),
+ },
+ },
+ },
},
ServersTransports: map[string]*dynamic.ServersTransport{},
},
From 50f95dd9096c585dd9e2a594e3857c5f6977f65e Mon Sep 17 00:00:00 2001
From: Firespray-31 <147506444+Firespray-31@users.noreply.github.com>
Date: Thu, 21 Aug 2025 23:30:07 +1000
Subject: [PATCH 09/33] Fix documentation to match new gateway-api selector
syntax
---
docs/content/expose/kubernetes.md | 6 ++++--
docs/content/getting-started/kubernetes.md | 7 +++++--
docs/content/setup/kubernetes.md | 6 ++++--
3 files changed, 13 insertions(+), 6 deletions(-)
diff --git a/docs/content/expose/kubernetes.md b/docs/content/expose/kubernetes.md
index 6b5bca03c..5a4c17c66 100644
--- a/docs/content/expose/kubernetes.md
+++ b/docs/content/expose/kubernetes.md
@@ -325,11 +325,13 @@ kubectl create secret tls whoami-tls --cert=tls.crt --key=tls.key
web:
port: 80
protocol: HTTP
- namespacePolicy: All
+ namespacePolicy:
+ from: All
websecure:
port: 443
protocol: HTTPS
- namespacePolicy: All
+ namespacePolicy:
+ from: All
mode: Terminate
certificateRefs:
- kind: Secret
diff --git a/docs/content/getting-started/kubernetes.md b/docs/content/getting-started/kubernetes.md
index 2ff2382a7..1c85e6d12 100644
--- a/docs/content/getting-started/kubernetes.md
+++ b/docs/content/getting-started/kubernetes.md
@@ -79,7 +79,10 @@ providers:
kubernetesGateway:
enabled: true
gateway:
- namespacePolicy: All
+ listeners:
+ web:
+ namespacePolicy:
+ from: All
```
!!! info
@@ -106,7 +109,7 @@ helm install traefik traefik/traefik --wait \
--set ingressRoute.dashboard.matchRule='Host(`dashboard.localhost`)' \
--set ingressRoute.dashboard.entryPoints={web} \
--set providers.kubernetesGateway.enabled=true \
- --set gateway.namespacePolicy=All
+ --set gateway.listeners.web.namespacePolicy.from=All
```
!!! info
diff --git a/docs/content/setup/kubernetes.md b/docs/content/setup/kubernetes.md
index eda680271..c54853e8c 100644
--- a/docs/content/setup/kubernetes.md
+++ b/docs/content/setup/kubernetes.md
@@ -162,12 +162,14 @@ gateway:
web: # HTTP listener that matches entryPoint `web`
port: 80
protocol: HTTP
- namespacePolicy: All
+ namespacePolicy:
+ from: All
websecure: # HTTPS listener that matches entryPoint `websecure`
port: 443
protocol: HTTPS # TLS terminates inside Traefik
- namespacePolicy: All
+ namespacePolicy:
+ from: All
mode: Terminate
certificateRefs:
- kind: Secret
From 86422af988555404d3339b7ff83105f4becf1131 Mon Sep 17 00:00:00 2001
From: cui <523516579@qq.com>
Date: Thu, 21 Aug 2025 22:10:07 +0800
Subject: [PATCH 10/33] Refactor to use reflect.TypeFor
---
internal/parser.go | 2 +-
pkg/api/handler.go | 2 +-
pkg/api/handler_overview.go | 2 +-
pkg/collector/hydratation/hydration.go | 2 +-
pkg/redactor/redactor.go | 4 ++--
5 files changed, 6 insertions(+), 6 deletions(-)
diff --git a/internal/parser.go b/internal/parser.go
index 3fa85617e..b9e474130 100644
--- a/internal/parser.go
+++ b/internal/parser.go
@@ -47,7 +47,7 @@ func encodeRawValue(labels map[string]string, root string, rawValue interface{})
if tValue.Kind() == reflect.Map && tValue.Elem().Kind() == reflect.Interface {
r := reflect.ValueOf(rawValue).
- Convert(reflect.TypeOf((map[string]interface{})(nil))).
+ Convert(reflect.TypeFor[map[string]interface{}]()).
Interface().(map[string]interface{})
for k, v := range r {
diff --git a/pkg/api/handler.go b/pkg/api/handler.go
index 922779e61..6c99ca12e 100644
--- a/pkg/api/handler.go
+++ b/pkg/api/handler.go
@@ -156,7 +156,7 @@ func extractType(element interface{}) string {
for i := range v.NumField() {
field := v.Field(i)
- if field.Kind() == reflect.Map && field.Type().Elem() == reflect.TypeOf(dynamic.PluginConf{}) {
+ if field.Kind() == reflect.Map && field.Type().Elem() == reflect.TypeFor[dynamic.PluginConf]() {
if keys := field.MapKeys(); len(keys) == 1 {
return keys[0].String()
}
diff --git a/pkg/api/handler_overview.go b/pkg/api/handler_overview.go
index 7b15d513e..9279370a6 100644
--- a/pkg/api/handler_overview.go
+++ b/pkg/api/handler_overview.go
@@ -232,7 +232,7 @@ func getProviders(conf static.Configuration) []string {
if !field.IsNil() {
providers = append(providers, v.Type().Field(i).Name)
}
- } else if field.Kind() == reflect.Map && field.Type().Elem() == reflect.TypeOf(static.PluginConf{}) {
+ } else if field.Kind() == reflect.Map && field.Type().Elem() == reflect.TypeFor[static.PluginConf]() {
for _, value := range field.MapKeys() {
providers = append(providers, "plugin-"+value.String())
}
diff --git a/pkg/collector/hydratation/hydration.go b/pkg/collector/hydratation/hydration.go
index c45cfcfbb..74009817a 100644
--- a/pkg/collector/hydratation/hydration.go
+++ b/pkg/collector/hydratation/hydration.go
@@ -55,7 +55,7 @@ func fill(field reflect.Value) error {
setTyped(field, int32(defaultNumber))
case reflect.Int64:
switch field.Type() {
- case reflect.TypeOf(types.Duration(time.Second)):
+ case reflect.TypeFor[types.Duration]():
setTyped(field, types.Duration(defaultNumber*time.Second))
default:
setTyped(field, int64(defaultNumber))
diff --git a/pkg/redactor/redactor.go b/pkg/redactor/redactor.go
index c28feaa1a..cbe4a6c5c 100644
--- a/pkg/redactor/redactor.go
+++ b/pkg/redactor/redactor.go
@@ -70,7 +70,7 @@ func doOnJSON(input string) string {
}
func doOnStruct(field reflect.Value, tag string, redactByDefault bool) error {
- if field.Type().AssignableTo(reflect.TypeOf(dynamic.PluginConf{})) {
+ if field.Type().AssignableTo(reflect.TypeFor[dynamic.PluginConf]()) {
resetPlugin(field)
return nil
}
@@ -164,7 +164,7 @@ func reset(field reflect.Value, name string) error {
}
case reflect.String:
if field.String() != "" {
- if field.Type().AssignableTo(reflect.TypeOf(types.FileOrContent(""))) {
+ if field.Type().AssignableTo(reflect.TypeFor[types.FileOrContent]()) {
field.Set(reflect.ValueOf(types.FileOrContent(maskShort)))
} else {
field.Set(reflect.ValueOf(maskShort))
From fd8a64ca95fd19a2ce67949205860a5cf46b7bfb Mon Sep 17 00:00:00 2001
From: Nicolas <49951018+Kwuray@users.noreply.github.com>
Date: Fri, 22 Aug 2025 11:30:09 +0200
Subject: [PATCH 11/33] Errors on receving sigterm
---
pkg/server/server_entrypoint_tcp.go | 69 ++++++++++++++++++------
pkg/server/server_entrypoint_tcp_test.go | 6 +--
2 files changed, 55 insertions(+), 20 deletions(-)
diff --git a/pkg/server/server_entrypoint_tcp.go b/pkg/server/server_entrypoint_tcp.go
index 0642fa7fb..eb68714d2 100644
--- a/pkg/server/server_entrypoint_tcp.go
+++ b/pkg/server/server_entrypoint_tcp.go
@@ -12,6 +12,7 @@ import (
"os"
"strings"
"sync"
+ "sync/atomic"
"syscall"
"time"
@@ -56,15 +57,19 @@ type connState struct {
type httpForwarder struct {
net.Listener
- connChan chan net.Conn
- errChan chan error
+
+ connChan chan net.Conn
+ errChan chan error
+ closeChan chan struct{}
+ closeOnce sync.Once
}
func newHTTPForwarder(ln net.Listener) *httpForwarder {
return &httpForwarder{
- Listener: ln,
- connChan: make(chan net.Conn),
- errChan: make(chan error),
+ Listener: ln,
+ connChan: make(chan net.Conn),
+ errChan: make(chan error),
+ closeChan: make(chan struct{}),
}
}
@@ -76,6 +81,8 @@ func (h *httpForwarder) ServeTCP(conn tcp.WriteCloser) {
// Accept retrieves a served connection in ServeTCP.
func (h *httpForwarder) Accept() (net.Conn, error) {
select {
+ case <-h.closeChan:
+ return nil, errors.New("listener closed")
case conn := <-h.connChan:
return conn, nil
case err := <-h.errChan:
@@ -83,6 +90,14 @@ func (h *httpForwarder) Accept() (net.Conn, error) {
}
}
+// Close closes the wrapped listener and unblocks Accept.
+func (h *httpForwarder) Close() error {
+ h.closeOnce.Do(func() {
+ close(h.closeChan)
+ })
+ return h.Listener.Close()
+}
+
// TCPEntryPoints holds a map of TCPEntryPoint (the entrypoint names being the keys).
type TCPEntryPoints map[string]*TCPEntryPoint
@@ -162,8 +177,9 @@ type TCPEntryPoint struct {
tracker *connectionTracker
httpServer *httpServer
httpsServer *httpServer
-
- http3Server *http3server
+ http3Server *http3server
+ // inShutdown reports whether the Shutdown method has been called.
+ inShutdown atomic.Bool
}
// NewTCPEntryPoint creates a new TCPEntryPoint.
@@ -172,31 +188,31 @@ func NewTCPEntryPoint(ctx context.Context, name string, config *static.EntryPoin
listener, err := buildListener(ctx, name, config)
if err != nil {
- return nil, fmt.Errorf("error preparing server: %w", err)
+ return nil, fmt.Errorf("building listener: %w", err)
}
rt, err := tcprouter.NewRouter()
if err != nil {
- return nil, fmt.Errorf("error preparing tcp router: %w", err)
+ return nil, fmt.Errorf("creating TCP router: %w", err)
}
reqDecorator := requestdecorator.New(hostResolverConfig)
- httpServer, err := createHTTPServer(ctx, listener, config, true, reqDecorator)
+ httpServer, err := newHTTPServer(ctx, listener, config, true, reqDecorator)
if err != nil {
- return nil, fmt.Errorf("error preparing http server: %w", err)
+ return nil, fmt.Errorf("creating HTTP server: %w", err)
}
rt.SetHTTPForwarder(httpServer.Forwarder)
- httpsServer, err := createHTTPServer(ctx, listener, config, false, reqDecorator)
+ httpsServer, err := newHTTPServer(ctx, listener, config, false, reqDecorator)
if err != nil {
- return nil, fmt.Errorf("error preparing https server: %w", err)
+ return nil, fmt.Errorf("creating HTTPS server: %w", err)
}
h3Server, err := newHTTP3Server(ctx, name, config, httpsServer)
if err != nil {
- return nil, fmt.Errorf("error preparing http3 server: %w", err)
+ return nil, fmt.Errorf("creating HTTP3 server: %w", err)
}
rt.SetHTTPSForwarder(httpsServer.Forwarder)
@@ -226,6 +242,11 @@ func (e *TCPEntryPoint) Start(ctx context.Context) {
for {
conn, err := e.listener.Accept()
+ // As the Shutdown method has been called, an error is expected.
+ // Thus, it is not necessary to log it.
+ if err != nil && e.inShutdown.Load() {
+ return
+ }
if err != nil {
logger.Error().Err(err).Send()
@@ -277,6 +298,8 @@ func (e *TCPEntryPoint) Start(ctx context.Context) {
func (e *TCPEntryPoint) Shutdown(ctx context.Context) {
logger := log.Ctx(ctx)
+ e.inShutdown.Store(true)
+
reqAcceptGraceTimeOut := time.Duration(e.transportConfiguration.LifeCycle.RequestAcceptGraceTimeout)
if reqAcceptGraceTimeOut > 0 {
logger.Info().Msgf("Waiting %s for incoming requests to cease", reqAcceptGraceTimeOut)
@@ -461,6 +484,18 @@ func buildProxyProtocolListener(ctx context.Context, entryPoint *static.EntryPoi
return proxyListener, nil
}
+type onceCloseListener struct {
+ net.Listener
+
+ once sync.Once
+ closeErr error
+}
+
+func (oc *onceCloseListener) Close() error {
+ oc.once.Do(func() { oc.closeErr = oc.Listener.Close() })
+ return oc.closeErr
+}
+
func buildListener(ctx context.Context, name string, config *static.EntryPoint) (net.Listener, error) {
var listener net.Listener
var err error
@@ -496,7 +531,7 @@ func buildListener(ctx context.Context, name string, config *static.EntryPoint)
return nil, fmt.Errorf("error creating proxy protocol listener: %w", err)
}
}
- return listener, nil
+ return &onceCloseListener{Listener: listener}, nil
}
func newConnectionTracker(openConnectionsGauge gokitmetrics.Gauge) *connectionTracker {
@@ -592,7 +627,7 @@ type httpServer struct {
Switcher *middlewares.HTTPHandlerSwitcher
}
-func createHTTPServer(ctx context.Context, ln net.Listener, configuration *static.EntryPoint, withH2c bool, reqDecorator *requestdecorator.RequestDecorator) (*httpServer, error) {
+func newHTTPServer(ctx context.Context, ln net.Listener, configuration *static.EntryPoint, withH2c bool, reqDecorator *requestdecorator.RequestDecorator) (*httpServer, error) {
if configuration.HTTP2.MaxConcurrentStreams < 0 {
return nil, errors.New("max concurrent streams value must be greater than or equal to zero")
}
@@ -692,7 +727,7 @@ func createHTTPServer(ctx context.Context, ln net.Listener, configuration *stati
go func() {
err := serverHTTP.Serve(listener)
if err != nil && !errors.Is(err, http.ErrServerClosed) {
- log.Ctx(ctx).Error().Err(err).Msg("Error while starting server")
+ log.Ctx(ctx).Error().Err(err).Msg("Error while running HTTP server")
}
}()
return &httpServer{
diff --git a/pkg/server/server_entrypoint_tcp_test.go b/pkg/server/server_entrypoint_tcp_test.go
index 392f7c0a3..8170234a7 100644
--- a/pkg/server/server_entrypoint_tcp_test.go
+++ b/pkg/server/server_entrypoint_tcp_test.go
@@ -511,7 +511,7 @@ func TestNormalizePath_malformedPercentEncoding(t *testing.T) {
}
}
-// TestPathOperations tests the whole behavior of normalizePath, and sanitizePath combined through the use of the createHTTPServer func.
+// TestPathOperations tests the whole behavior of normalizePath, and sanitizePath combined through the use of the newHTTPServer func.
// It aims to guarantee the server entrypoint handler is secure regarding a large variety of cases that could lead to path traversal attacks.
func TestPathOperations(t *testing.T) {
// Create a listener for the server.
@@ -525,8 +525,8 @@ func TestPathOperations(t *testing.T) {
configuration := &static.EntryPoint{}
configuration.SetDefaults()
- // Create the HTTP server using createHTTPServer.
- server, err := createHTTPServer(t.Context(), ln, configuration, false, requestdecorator.New(nil))
+ // Create the HTTP server using newHTTPServer.
+ server, err := newHTTPServer(t.Context(), ln, configuration, false, requestdecorator.New(nil))
require.NoError(t, err)
server.Switcher.UpdateHandler(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
From fcae39bf1369e980120cb621df84ec185cc2e73d Mon Sep 17 00:00:00 2001
From: Alex Waring <4205264+Alex-Waring@users.noreply.github.com>
Date: Fri, 22 Aug 2025 15:45:04 +0100
Subject: [PATCH 12/33] Follow OTel semantic conventions for root span naming
---
integration/tracing_test.go | 18 +++----
pkg/middlewares/observability/entrypoint.go | 5 +-
.../observability/entrypoint_test.go | 48 ++++++++++++++++---
.../observability/mock_tracing_test.go | 2 +-
pkg/middlewares/observability/router_test.go | 4 +-
pkg/middlewares/observability/service_test.go | 4 +-
6 files changed, 59 insertions(+), 22 deletions(-)
diff --git a/integration/tracing_test.go b/integration/tracing_test.go
index 9b9fa0faf..71e0b1b36 100644
--- a/integration/tracing_test.go
+++ b/integration/tracing_test.go
@@ -110,7 +110,7 @@ func (s *TracingSuite) TestOpenTelemetryBasic_HTTP_router_minimalVerbosity() {
"batches.0.scopeSpans.0.spans.0.attributes.#(key=\"server.port\").value.intValue": "80",
"batches.0.scopeSpans.0.spans.0.attributes.#(key=\"http.response.status_code\").value.intValue": "200",
- "batches.0.scopeSpans.0.spans.1.name": "EntryPoint",
+ "batches.0.scopeSpans.0.spans.1.name": "GET",
"batches.0.scopeSpans.0.spans.1.kind": "SPAN_KIND_SERVER",
"batches.0.scopeSpans.0.spans.1.attributes.#(key=\"entry_point\").value.stringValue": "web",
"batches.0.scopeSpans.0.spans.1.attributes.#(key=\"http.request.method\").value.stringValue": "GET",
@@ -159,7 +159,7 @@ func (s *TracingSuite) TestOpenTelemetryBasic_HTTP_entrypoint_minimalVerbosity()
"batches.0.scopeSpans.0.spans.0.attributes.#(key=\"server.port\").value.intValue": "80",
"batches.0.scopeSpans.0.spans.0.attributes.#(key=\"http.response.status_code\").value.intValue": "200",
- "batches.0.scopeSpans.0.spans.1.name": "EntryPoint",
+ "batches.0.scopeSpans.0.spans.1.name": "GET",
"batches.0.scopeSpans.0.spans.1.kind": "SPAN_KIND_SERVER",
"batches.0.scopeSpans.0.spans.1.attributes.#(key=\"entry_point\").value.stringValue": "web-minimal",
"batches.0.scopeSpans.0.spans.1.attributes.#(key=\"http.request.method\").value.stringValue": "GET",
@@ -226,7 +226,7 @@ func (s *TracingSuite) TestOpenTelemetryBasic_HTTP() {
"batches.0.scopeSpans.0.spans.4.kind": "SPAN_KIND_INTERNAL",
"batches.0.scopeSpans.0.spans.4.attributes.#(key=\"traefik.middleware.name\").value.stringValue": "metrics-entrypoint",
- "batches.0.scopeSpans.0.spans.5.name": "EntryPoint",
+ "batches.0.scopeSpans.0.spans.5.name": "GET",
"batches.0.scopeSpans.0.spans.5.kind": "SPAN_KIND_SERVER",
"batches.0.scopeSpans.0.spans.5.attributes.#(key=\"entry_point\").value.stringValue": "web",
"batches.0.scopeSpans.0.spans.5.attributes.#(key=\"http.request.method\").value.stringValue": "GET",
@@ -356,7 +356,7 @@ func (s *TracingSuite) TestOpenTelemetryRateLimit() {
"batches.0.scopeSpans.0.spans.2.kind": "SPAN_KIND_INTERNAL",
"batches.0.scopeSpans.0.spans.2.attributes.#(key=\"traefik.middleware.name\").value.stringValue": "metrics-entrypoint",
- "batches.0.scopeSpans.0.spans.3.name": "EntryPoint",
+ "batches.0.scopeSpans.0.spans.3.name": "GET",
"batches.0.scopeSpans.0.spans.3.kind": "SPAN_KIND_SERVER",
"batches.0.scopeSpans.0.spans.3.attributes.#(key=\"entry_point\").value.stringValue": "web",
"batches.0.scopeSpans.0.spans.3.attributes.#(key=\"http.request.method\").value.stringValue": "GET",
@@ -404,7 +404,7 @@ func (s *TracingSuite) TestOpenTelemetryRateLimit() {
"batches.0.scopeSpans.0.spans.5.kind": "SPAN_KIND_INTERNAL",
"batches.0.scopeSpans.0.spans.5.attributes.#(key=\"traefik.middleware.name\").value.stringValue": "metrics-entrypoint",
- "batches.0.scopeSpans.0.spans.6.name": "EntryPoint",
+ "batches.0.scopeSpans.0.spans.6.name": "GET",
"batches.0.scopeSpans.0.spans.6.kind": "SPAN_KIND_SERVER",
"batches.0.scopeSpans.0.spans.6.attributes.#(key=\"entry_point\").value.stringValue": "web",
"batches.0.scopeSpans.0.spans.6.attributes.#(key=\"http.request.method\").value.stringValue": "GET",
@@ -527,7 +527,7 @@ func (s *TracingSuite) TestOpenTelemetryRetry() {
"batches.0.scopeSpans.0.spans.13.kind": "SPAN_KIND_INTERNAL",
"batches.0.scopeSpans.0.spans.13.attributes.#(key=\"traefik.middleware.name\").value.stringValue": "metrics-entrypoint",
- "batches.0.scopeSpans.0.spans.14.name": "EntryPoint",
+ "batches.0.scopeSpans.0.spans.14.name": "GET",
"batches.0.scopeSpans.0.spans.14.kind": "SPAN_KIND_SERVER",
"batches.0.scopeSpans.0.spans.14.attributes.#(key=\"entry_point\").value.stringValue": "web",
"batches.0.scopeSpans.0.spans.14.attributes.#(key=\"http.request.method\").value.stringValue": "GET",
@@ -580,7 +580,7 @@ func (s *TracingSuite) TestOpenTelemetryAuth() {
"batches.0.scopeSpans.0.spans.2.kind": "SPAN_KIND_INTERNAL",
"batches.0.scopeSpans.0.spans.2.attributes.#(key=\"traefik.middleware.name\").value.stringValue": "metrics-entrypoint",
- "batches.0.scopeSpans.0.spans.3.name": "EntryPoint",
+ "batches.0.scopeSpans.0.spans.3.name": "GET",
"batches.0.scopeSpans.0.spans.3.kind": "SPAN_KIND_SERVER",
"batches.0.scopeSpans.0.spans.3.attributes.#(key=\"entry_point\").value.stringValue": "web",
"batches.0.scopeSpans.0.spans.3.attributes.#(key=\"http.request.method\").value.stringValue": "GET",
@@ -637,7 +637,7 @@ func (s *TracingSuite) TestOpenTelemetryAuthWithRetry() {
"batches.0.scopeSpans.0.spans.3.kind": "SPAN_KIND_INTERNAL",
"batches.0.scopeSpans.0.spans.3.attributes.#(key=\"traefik.middleware.name\").value.stringValue": "metrics-entrypoint",
- "batches.0.scopeSpans.0.spans.4.name": "EntryPoint",
+ "batches.0.scopeSpans.0.spans.4.name": "GET",
"batches.0.scopeSpans.0.spans.4.kind": "SPAN_KIND_SERVER",
"batches.0.scopeSpans.0.spans.4.attributes.#(key=\"entry_point\").value.stringValue": "web",
"batches.0.scopeSpans.0.spans.4.attributes.#(key=\"http.request.method\").value.stringValue": "GET",
@@ -706,7 +706,7 @@ func (s *TracingSuite) TestOpenTelemetrySafeURL() {
"batches.0.scopeSpans.0.spans.5.kind": "SPAN_KIND_INTERNAL",
"batches.0.scopeSpans.0.spans.5.attributes.#(key=\"traefik.middleware.name\").value.stringValue": "metrics-entrypoint",
- "batches.0.scopeSpans.0.spans.6.name": "EntryPoint",
+ "batches.0.scopeSpans.0.spans.6.name": "GET",
"batches.0.scopeSpans.0.spans.6.kind": "SPAN_KIND_SERVER",
"batches.0.scopeSpans.0.spans.6.attributes.#(key=\"entry_point\").value.stringValue": "web",
"batches.0.scopeSpans.0.spans.6.attributes.#(key=\"http.request.method\").value.stringValue": "GET",
diff --git a/pkg/middlewares/observability/entrypoint.go b/pkg/middlewares/observability/entrypoint.go
index e9c77c160..fead7ec43 100644
--- a/pkg/middlewares/observability/entrypoint.go
+++ b/pkg/middlewares/observability/entrypoint.go
@@ -55,7 +55,10 @@ func (e *entryPointTracing) ServeHTTP(rw http.ResponseWriter, req *http.Request)
tracingCtx := tracing.ExtractCarrierIntoContext(req.Context(), req.Header)
start := time.Now()
- tracingCtx, span := e.tracer.Start(tracingCtx, "EntryPoint", trace.WithSpanKind(trace.SpanKindServer), trace.WithTimestamp(start))
+
+ // Follow semantic conventions defined by OTEL: https://opentelemetry.io/docs/specs/semconv/http/http-spans/#name
+ // At the moment this implementation only gets the {method} as there is no guarantee {target} is low cardinality.
+ tracingCtx, span := e.tracer.Start(tracingCtx, req.Method, trace.WithSpanKind(trace.SpanKindServer), trace.WithTimestamp(start))
// Associate the request context with the logger.
// This allows the logger to be aware of the tracing context and log accordingly (TraceID, SpanID, etc.).
diff --git a/pkg/middlewares/observability/entrypoint_test.go b/pkg/middlewares/observability/entrypoint_test.go
index bbcd57f98..384d11a4c 100644
--- a/pkg/middlewares/observability/entrypoint_test.go
+++ b/pkg/middlewares/observability/entrypoint_test.go
@@ -6,6 +6,7 @@ import (
"testing"
"github.com/stretchr/testify/assert"
+ "github.com/stretchr/testify/require"
"github.com/traefik/traefik/v3/pkg/tracing"
"go.opentelemetry.io/otel/attribute"
)
@@ -19,13 +20,15 @@ func TestEntryPointMiddleware_tracing(t *testing.T) {
testCases := []struct {
desc string
entryPoint string
+ method string
expected expected
}{
{
- desc: "basic test",
+ desc: "GET",
entryPoint: "test",
+ method: http.MethodGet,
expected: expected{
- name: "EntryPoint",
+ name: "GET",
attributes: []attribute.KeyValue{
attribute.String("span.kind", "server"),
attribute.String("entry_point", "test"),
@@ -47,11 +50,38 @@ func TestEntryPointMiddleware_tracing(t *testing.T) {
},
},
},
+ {
+ desc: "POST",
+ entryPoint: "test",
+ method: http.MethodPost,
+ expected: expected{
+ name: "POST",
+ attributes: []attribute.KeyValue{
+ attribute.String("span.kind", "server"),
+ attribute.String("entry_point", "test"),
+ attribute.String("http.request.method", "POST"),
+ attribute.String("network.protocol.version", "1.1"),
+ attribute.Int64("http.request.body.size", int64(0)),
+ attribute.String("url.path", "/search"),
+ attribute.String("url.query", "q=Opentelemetry&token=REDACTED"),
+ attribute.String("url.scheme", "http"),
+ attribute.String("user_agent.original", "entrypoint-test"),
+ attribute.String("server.address", "www.test.com"),
+ attribute.String("network.peer.address", "10.0.0.1"),
+ attribute.String("client.address", "10.0.0.1"),
+ attribute.Int64("client.port", int64(1234)),
+ attribute.Int64("network.peer.port", int64(1234)),
+ attribute.StringSlice("http.request.header.x-foo", []string{"foo", "bar"}),
+ attribute.Int64("http.response.status_code", int64(404)),
+ attribute.StringSlice("http.response.header.x-bar", []string{"foo", "bar"}),
+ },
+ },
+ },
}
for _, test := range testCases {
t.Run(test.desc, func(t *testing.T) {
- req := httptest.NewRequest(http.MethodGet, "http://www.test.com/search?q=Opentelemetry&token=123", nil)
+ req := httptest.NewRequest(test.method, "http://www.test.com/search?q=Opentelemetry&token=123", nil)
rw := httptest.NewRecorder()
req.RemoteAddr = "10.0.0.1:1234"
req.Header.Set("User-Agent", "entrypoint-test")
@@ -67,13 +97,17 @@ func TestEntryPointMiddleware_tracing(t *testing.T) {
tracer := &mockTracer{}
+ // Injection of the observability variables in the request context.
+ req = req.WithContext(WithObservability(req.Context(), Observability{
+ TracingEnabled: true,
+ }))
+
handler := newEntryPoint(t.Context(), tracing.NewTracer(tracer, []string{"X-Foo"}, []string{"X-Bar"}, []string{"q"}), test.entryPoint, next)
handler.ServeHTTP(rw, req)
- for _, span := range tracer.spans {
- assert.Equal(t, test.expected.name, span.name)
- assert.Equal(t, test.expected.attributes, span.attributes)
- }
+ require.Len(t, tracer.spans, 1)
+ assert.Equal(t, test.expected.name, tracer.spans[0].name)
+ assert.Equal(t, test.expected.attributes, tracer.spans[0].attributes)
})
}
}
diff --git a/pkg/middlewares/observability/mock_tracing_test.go b/pkg/middlewares/observability/mock_tracing_test.go
index 4a70b77bc..3a2ffd520 100644
--- a/pkg/middlewares/observability/mock_tracing_test.go
+++ b/pkg/middlewares/observability/mock_tracing_test.go
@@ -37,7 +37,7 @@ func (t *mockTracer) Start(ctx context.Context, name string, opts ...trace.SpanS
return trace.ContextWithSpan(ctx, span), span
}
-// mockSpan is an implementation of Span that preforms no operations.
+// mockSpan is an implementation of Span that performs no operations.
type mockSpan struct {
embedded.Span
diff --git a/pkg/middlewares/observability/router_test.go b/pkg/middlewares/observability/router_test.go
index 0ee0835cb..b519e6172 100644
--- a/pkg/middlewares/observability/router_test.go
+++ b/pkg/middlewares/observability/router_test.go
@@ -30,7 +30,7 @@ func TestNewRouter(t *testing.T) {
routerRule: "Path(`/`)",
expected: []expected{
{
- name: "EntryPoint",
+ name: "GET",
attributes: []attribute.KeyValue{
attribute.String("span.kind", "server"),
},
@@ -63,7 +63,7 @@ func TestNewRouter(t *testing.T) {
req.Header.Set("User-Agent", "router-test")
tracer := &mockTracer{}
- tracingCtx, entryPointSpan := tracer.Start(req.Context(), "EntryPoint", trace.WithSpanKind(trace.SpanKindServer))
+ tracingCtx, entryPointSpan := tracer.Start(req.Context(), http.MethodGet, trace.WithSpanKind(trace.SpanKindServer))
defer entryPointSpan.End()
req = req.WithContext(tracingCtx)
diff --git a/pkg/middlewares/observability/service_test.go b/pkg/middlewares/observability/service_test.go
index 623ed214c..99197ed9b 100644
--- a/pkg/middlewares/observability/service_test.go
+++ b/pkg/middlewares/observability/service_test.go
@@ -26,7 +26,7 @@ func TestNewService(t *testing.T) {
service: "myService",
expected: []expected{
{
- name: "EntryPoint",
+ name: "GET",
attributes: []attribute.KeyValue{
attribute.String("span.kind", "server"),
},
@@ -57,7 +57,7 @@ func TestNewService(t *testing.T) {
req.Header.Set("User-Agent", "service-test")
tracer := &mockTracer{}
- tracingCtx, entryPointSpan := tracer.Start(req.Context(), "EntryPoint", trace.WithSpanKind(trace.SpanKindServer))
+ tracingCtx, entryPointSpan := tracer.Start(req.Context(), http.MethodGet, trace.WithSpanKind(trace.SpanKindServer))
defer entryPointSpan.End()
req = req.WithContext(tracingCtx)
From 8ac8473554d758459ae4e99dab4be7dcbb167a07 Mon Sep 17 00:00:00 2001
From: Copilot <198982749+Copilot@users.noreply.github.com>
Date: Fri, 22 Aug 2025 17:20:04 +0200
Subject: [PATCH 13/33] Fix missing middleware application for whoami service
in docker guide
---
docs/content/expose/docker.md | 3 +++
1 file changed, 3 insertions(+)
diff --git a/docs/content/expose/docker.md b/docs/content/expose/docker.md
index 045c64277..9465fcf62 100644
--- a/docs/content/expose/docker.md
+++ b/docs/content/expose/docker.md
@@ -258,6 +258,9 @@ labels:
# IP Allowlist Middleware
- "traefik.http.middlewares.ip-allowlist.ipallowlist.sourceRange=127.0.0.1/32,192.168.0.0/16,10.0.0.0/8"
+
+ # Apply middlewares to whoami router
+ - "traefik.http.routers.whoami.middlewares=secure-headers,ip-allowlist"
```
Add the same middleware to your whoami-api service:
From 1997bc74320087b8c1512c2bbf57d7ce3257ce82 Mon Sep 17 00:00:00 2001
From: Nicolas Mengin
Date: Mon, 25 Aug 2025 14:35:04 +0200
Subject: [PATCH 14/33] Clean Documentation
---
.../assets/img/middleware/addprefix.png | Bin 43396 -> 0 bytes
.../assets/img/middleware/authforward.png | Bin 94076 -> 0 bytes
.../assets/img/middleware/basicauth.png | Bin 72316 -> 0 bytes
.../assets/img/middleware/buffering.png | Bin 72238 -> 0 bytes
docs/content/assets/img/middleware/chain.png | Bin 74948 -> 0 bytes
.../assets/img/middleware/circuitbreaker.png | Bin 65199 -> 0 bytes
.../assets/img/middleware/compress.png | Bin 63573 -> 0 bytes
.../assets/img/middleware/digestauth.png | Bin 72161 -> 0 bytes
.../assets/img/middleware/errorpages.png | Bin 123442 -> 0 bytes
.../content/assets/img/middleware/headers.png | Bin 68183 -> 0 bytes
.../assets/img/middleware/inflightreq.png | Bin 64236 -> 0 bytes
.../assets/img/middleware/ipwhitelist.png | Bin 59469 -> 0 bytes
.../assets/img/middleware/overview.png | Bin 314487 -> 0 bytes
.../getting-started/configuration-overview.md | 14 +-
docs/content/middlewares/http/addprefix.md | 2 -
docs/content/middlewares/http/basicauth.md | 2 -
docs/content/middlewares/http/buffering.md | 2 -
docs/content/middlewares/http/chain.md | 2 -
.../middlewares/http/circuitbreaker.md | 2 -
docs/content/middlewares/http/compress.md | 2 -
docs/content/middlewares/http/digestauth.md | 2 -
docs/content/middlewares/http/errorpages.md | 2 -
docs/content/middlewares/http/forwardauth.md | 2 -
docs/content/middlewares/http/headers.md | 2 -
docs/content/middlewares/http/inflightreq.md | 2 -
docs/content/middlewares/http/ipwhitelist.md | 2 -
docs/content/middlewares/http/overview.md | 2 -
docs/content/middlewares/overview.md | 2 -
docs/content/middlewares/tcp/overview.md | 2 -
docs/content/migration/v3.md | 2 +-
docs/content/operations/cli.md | 2 +-
docs/content/providers/file.md | 2 +-
.../dynamic-configuration/consul-catalog.md | 16 -
.../dynamic-configuration/consul-catalog.yml | 2 -
.../reference/dynamic-configuration/docker.md | 17 -
.../dynamic-configuration/docker.yml | 2 -
.../reference/dynamic-configuration/ecs.md | 16 -
.../reference/dynamic-configuration/ecs.yml | 1 -
.../reference/dynamic-configuration/file.md | 17 -
.../reference/dynamic-configuration/kv.md | 11 -
.../reference/dynamic-configuration/nomad.md | 16 -
.../reference/dynamic-configuration/nomad.yml | 1 -
.../dynamic-configuration/rancher.md | 0
.../reference/dynamic-configuration/swarm.md | 17 -
.../reference/dynamic-configuration/swarm.yml | 3 -
.../install-configuration/boot-environment.md | 18 +-
.../configuration-options.md | 481 ++++++++++++
.../observability/healthcheck/cli.md | 28 +
.../observability/healthcheck/ping.md | 66 ++
.../install-configuration/tls/ocsp.md | 2 +-
.../http/load-balancing/service.md | 193 ++++-
.../http/middlewares/addprefix.md | 2 -
.../http/middlewares/basicauth.md | 2 -
.../http/middlewares/buffering.md | 2 -
.../http/middlewares/circuitbreaker.md | 2 -
.../http/middlewares/digestauth.md | 2 -
.../http/middlewares/errorpages.md | 2 -
.../http/middlewares/forwardauth.md | 2 -
.../http/middlewares/headers.md | 2 -
.../other-providers/file.md | 120 +++
.../other-providers/file.toml | 611 +++++++++++++++
.../other-providers/file.yaml | 694 ++++++++++++++++
.../other-providers/kv.md | 738 +++++-------------
.../reference/static-configuration/cli.md | 9 -
.../reference/static-configuration/env.md | 27 -
.../reference/static-configuration/file.md | 14 -
.../static-configuration/overview.md | 10 -
.../routing/providers/consul-catalog.md | 2 +-
docs/content/routing/providers/docker.md | 2 +-
docs/content/routing/providers/ecs.md | 2 +-
docs/content/routing/providers/kv.md | 2 +-
docs/content/routing/providers/nomad.md | 2 +-
docs/content/routing/providers/swarm.md | 2 +-
docs/mkdocs.yml | 277 ++++---
docs/requirements.txt | 1 +
internal/gendoc.go | 256 +-----
internal/parser.go | 66 --
77 files changed, 2561 insertions(+), 1247 deletions(-)
delete mode 100644 docs/content/assets/img/middleware/addprefix.png
delete mode 100644 docs/content/assets/img/middleware/authforward.png
delete mode 100644 docs/content/assets/img/middleware/basicauth.png
delete mode 100644 docs/content/assets/img/middleware/buffering.png
delete mode 100644 docs/content/assets/img/middleware/chain.png
delete mode 100644 docs/content/assets/img/middleware/circuitbreaker.png
delete mode 100644 docs/content/assets/img/middleware/compress.png
delete mode 100644 docs/content/assets/img/middleware/digestauth.png
delete mode 100644 docs/content/assets/img/middleware/errorpages.png
delete mode 100644 docs/content/assets/img/middleware/headers.png
delete mode 100644 docs/content/assets/img/middleware/inflightreq.png
delete mode 100644 docs/content/assets/img/middleware/ipwhitelist.png
delete mode 100644 docs/content/assets/img/middleware/overview.png
delete mode 100644 docs/content/reference/dynamic-configuration/consul-catalog.md
delete mode 100644 docs/content/reference/dynamic-configuration/consul-catalog.yml
delete mode 100644 docs/content/reference/dynamic-configuration/docker.md
delete mode 100644 docs/content/reference/dynamic-configuration/docker.yml
delete mode 100644 docs/content/reference/dynamic-configuration/ecs.md
delete mode 100644 docs/content/reference/dynamic-configuration/ecs.yml
delete mode 100644 docs/content/reference/dynamic-configuration/file.md
delete mode 100644 docs/content/reference/dynamic-configuration/kv.md
delete mode 100644 docs/content/reference/dynamic-configuration/nomad.md
delete mode 100644 docs/content/reference/dynamic-configuration/nomad.yml
delete mode 100644 docs/content/reference/dynamic-configuration/rancher.md
delete mode 100644 docs/content/reference/dynamic-configuration/swarm.md
delete mode 100644 docs/content/reference/dynamic-configuration/swarm.yml
create mode 100644 docs/content/reference/install-configuration/configuration-options.md
create mode 100644 docs/content/reference/install-configuration/observability/healthcheck/cli.md
create mode 100644 docs/content/reference/install-configuration/observability/healthcheck/ping.md
create mode 100644 docs/content/reference/routing-configuration/other-providers/file.md
create mode 100644 docs/content/reference/routing-configuration/other-providers/file.toml
create mode 100644 docs/content/reference/routing-configuration/other-providers/file.yaml
delete mode 100644 docs/content/reference/static-configuration/cli.md
delete mode 100644 docs/content/reference/static-configuration/env.md
delete mode 100644 docs/content/reference/static-configuration/file.md
delete mode 100644 docs/content/reference/static-configuration/overview.md
delete mode 100644 internal/parser.go
diff --git a/docs/content/assets/img/middleware/addprefix.png b/docs/content/assets/img/middleware/addprefix.png
deleted file mode 100644
index 5899a8bfafa9f6a74bc35a6dad42cf5a501aef23..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 43396
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
diff --git a/docs/content/assets/img/middleware/authforward.png b/docs/content/assets/img/middleware/authforward.png
deleted file mode 100644
index 149a915c395d2cc3fcdb37d5e3bcade9e8364407..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 94076
zcmYg&1yojHv-Lp<2|+@-q`Rd{rMskCLXhqTK|#8OS6WgKkZzD}5RmTf?*1SA?sxBh
z)>2%&?>SG+?Afztj=@R_l21_xQ6LCF!Nji-d184F
zp9!K`jd)aks)UQ3EvI%flTC)@$mUC*Q%)KP(2BWp^oM_l+2>)im3^zJ{lRl?nGLEYfIZ-zo5c8usfXd#`x2E
z-FRL1w4k5>P4sS!v&7k8WVl>%v^?mX4b1<)ms-*1_|2VG)6LO0@JdzO |