diff --git a/README.md b/README.md
index cebd033c2c..3656918cf1 100644
--- a/README.md
+++ b/README.md
@@ -108,134 +108,134 @@ Detailed documentation is available [here](https://go-acme.github.io/lego/dns).
Exoscale |
External program |
+ F5 XC |
freemyip.com |
G-Core |
- Gandi |
+ Gandi |
Gandi Live DNS (v5) |
Glesys |
Go Daddy |
- Google Cloud |
+ Google Cloud |
Google Domains |
Hetzner |
Hosting.de |
- Hosttech |
+ Hosttech |
HTTP request |
http.net |
Huawei Cloud |
- Hurricane Electric DNS |
+ Hurricane Electric DNS |
HyperOne |
IBM Cloud (SoftLayer) |
IIJ DNS Platform Service |
- Infoblox |
+ Infoblox |
Infomaniak |
Internet Initiative Japan |
Internet.bs |
- INWX |
+ INWX |
Ionos |
IPv64 |
iwantmyname |
- Joker |
+ Joker |
Joohoi's ACME-DNS |
Liara |
Lima-City |
- Linode (v4) |
+ Linode (v4) |
Liquid Web |
Loopia |
LuaDNS |
- Mail-in-a-Box |
+ Mail-in-a-Box |
ManageEngine CloudDNS |
Manual |
Metaname |
- mijn.host |
+ mijn.host |
Mittwald |
MyDNS.jp |
MythicBeasts |
- Name.com |
+ Name.com |
Namecheap |
Namesilo |
NearlyFreeSpeech.NET |
- Netcup |
+ Netcup |
Netlify |
Nicmanager |
NIFCloud |
- Njalla |
+ Njalla |
Nodion |
NS1 |
Open Telekom Cloud |
- Oracle Cloud |
+ Oracle Cloud |
OVH |
plesk.com |
Porkbun |
- PowerDNS |
+ PowerDNS |
Rackspace |
Rain Yun/雨云 |
RcodeZero |
- reg.ru |
+ reg.ru |
Regfish |
RFC2136 |
RimuHosting |
- Sakura Cloud |
+ Sakura Cloud |
Scaleway |
Selectel |
Selectel v2 |
- SelfHost.(de|eu) |
+ SelfHost.(de|eu) |
Servercow |
Shellrent |
Simply.com |
- Sonic |
+ Sonic |
Stackpath |
Technitium |
Tencent Cloud DNS |
- Timeweb Cloud |
+ Timeweb Cloud |
TransIP |
UKFast SafeDNS |
Ultradns |
- Variomedia |
+ Variomedia |
VegaDNS |
Vercel |
Versio.[nl|eu|uk] |
- VinylDNS |
+ VinylDNS |
VK Cloud |
Volcano Engine/火山引擎 |
Vscale |
- Vultr |
+ Vultr |
Webnames |
Websupport |
WEDOS |
- West.cn/西部数码 |
+ West.cn/西部数码 |
Yandex 360 |
Yandex Cloud |
Yandex PDD |
- Zone.ee |
+ Zone.ee |
Zonomi |
|
|
- |
diff --git a/cmd/zz_gen_cmd_dnshelp.go b/cmd/zz_gen_cmd_dnshelp.go
index 203cff36f6..6221751457 100644
--- a/cmd/zz_gen_cmd_dnshelp.go
+++ b/cmd/zz_gen_cmd_dnshelp.go
@@ -57,6 +57,7 @@ func allDNSCodes() string {
"epik",
"exec",
"exoscale",
+ "f5xc",
"freemyip",
"gandi",
"gandiv5",
@@ -1119,6 +1120,28 @@ func displayDNSHelp(w io.Writer, name string) error {
ew.writeln()
ew.writeln(`More information: https://go-acme.github.io/lego/dns/exoscale`)
+ case "f5xc":
+ // generated from: providers/dns/f5xc/f5xc.toml
+ ew.writeln(`Configuration for F5 XC.`)
+ ew.writeln(`Code: 'f5xc'`)
+ ew.writeln(`Since: 'v4.22.0'`)
+ ew.writeln()
+
+ ew.writeln(`Credentials:`)
+ ew.writeln(` - "F5XC_API_TOKEN": API token`)
+ ew.writeln(` - "F5XC_GROUP_NAME": Group name`)
+ ew.writeln(` - "F5XC_TENANT_NAME": XC Tenant shortname`)
+ ew.writeln()
+
+ ew.writeln(`Additional Configuration:`)
+ ew.writeln(` - "F5XC_HTTP_TIMEOUT": API request timeout in seconds (Default: 30)`)
+ ew.writeln(` - "F5XC_POLLING_INTERVAL": Time between DNS propagation check in seconds (Default: 2)`)
+ ew.writeln(` - "F5XC_PROPAGATION_TIMEOUT": Maximum waiting time for DNS propagation in seconds (Default: 60)`)
+ ew.writeln(` - "F5XC_TTL": The TTL of the TXT record used for the DNS challenge in seconds (Default: 120)`)
+
+ ew.writeln()
+ ew.writeln(`More information: https://go-acme.github.io/lego/dns/f5xc`)
+
case "freemyip":
// generated from: providers/dns/freemyip/freemyip.toml
ew.writeln(`Configuration for freemyip.com.`)
diff --git a/docs/content/dns/zz_gen_f5xc.md b/docs/content/dns/zz_gen_f5xc.md
new file mode 100644
index 0000000000..6deb30eab0
--- /dev/null
+++ b/docs/content/dns/zz_gen_f5xc.md
@@ -0,0 +1,71 @@
+---
+title: "F5 XC"
+date: 2019-03-03T16:39:46+01:00
+draft: false
+slug: f5xc
+dnsprovider:
+ since: "v4.22.0"
+ code: "f5xc"
+ url: "https://www.f5.com/products/distributed-cloud-services"
+---
+
+
+
+
+
+
+Configuration for [F5 XC](https://www.f5.com/products/distributed-cloud-services).
+
+
+
+
+- Code: `f5xc`
+- Since: v4.22.0
+
+
+Here is an example bash command using the F5 XC provider:
+
+```bash
+F5XC_API_TOKEN="xxx" \
+F5XC_TENANT_NAME="yyy" \
+F5XC_GROUP_NAME="zzz" \
+lego --email you@example.com --dns f5xc -d '*.example.com' -d example.com run
+```
+
+
+
+
+## Credentials
+
+| Environment Variable Name | Description |
+|-----------------------|-------------|
+| `F5XC_API_TOKEN` | API token |
+| `F5XC_GROUP_NAME` | Group name |
+| `F5XC_TENANT_NAME` | XC Tenant shortname |
+
+The environment variable names can be suffixed by `_FILE` to reference a file instead of a value.
+More information [here]({{% ref "dns#configuration-and-credentials" %}}).
+
+
+## Additional Configuration
+
+| Environment Variable Name | Description |
+|--------------------------------|-------------|
+| `F5XC_HTTP_TIMEOUT` | API request timeout in seconds (Default: 30) |
+| `F5XC_POLLING_INTERVAL` | Time between DNS propagation check in seconds (Default: 2) |
+| `F5XC_PROPAGATION_TIMEOUT` | Maximum waiting time for DNS propagation in seconds (Default: 60) |
+| `F5XC_TTL` | The TTL of the TXT record used for the DNS challenge in seconds (Default: 120) |
+
+The environment variable names can be suffixed by `_FILE` to reference a file instead of a value.
+More information [here]({{% ref "dns#configuration-and-credentials" %}}).
+
+
+
+
+## More information
+
+- [API documentation](https://docs.cloud.f5.com/docs-v2/api/dns-zone-rrset)
+
+
+
+
diff --git a/docs/data/zz_cli_help.toml b/docs/data/zz_cli_help.toml
index f6674e5e59..eb981cc843 100644
--- a/docs/data/zz_cli_help.toml
+++ b/docs/data/zz_cli_help.toml
@@ -22,7 +22,7 @@ GLOBAL OPTIONS:
--domains value, -d value [ --domains value, -d value ] Add a domain to the process. Can be specified multiple times.
--server value, -s value CA hostname (and optionally :port). The server certificate must be trusted in order to avoid further modifications to the client. (default: "https://acme-v02.api.letsencrypt.org/directory") [$LEGO_SERVER]
--accept-tos, -a By setting this flag to true you indicate that you accept the current Let's Encrypt terms of service. (default: false)
- --email value, -m value Email used for registration and recovery contact.
+ --email value, -m value Email used for registration and recovery contact. [$LEGO_EMAIL]
--csr value, -c value Certificate signing request filename, if an external CSR is to be used.
--eab Use External Account Binding for account registration. Requires --kid and --hmac. (default: false) [$LEGO_EAB]
--kid value Key identifier from External CA. Used for External Account Binding. [$LEGO_EAB_KID]
@@ -145,7 +145,7 @@ To display the documentation for a specific DNS provider, run:
$ lego dnshelp -c code
Supported DNS providers:
- acme-dns, alidns, allinkl, arvancloud, auroradns, autodns, azure, azuredns, bindman, bluecat, brandit, bunny, checkdomain, civo, clouddns, cloudflare, cloudns, cloudru, cloudxns, conoha, constellix, corenetworks, cpanel, derak, desec, designate, digitalocean, directadmin, dnshomede, dnsimple, dnsmadeeasy, dnspod, dode, domeneshop, dreamhost, duckdns, dyn, dynu, easydns, edgedns, efficientip, epik, exec, exoscale, freemyip, gandi, gandiv5, gcloud, gcore, glesys, godaddy, googledomains, hetzner, hostingde, hosttech, httpnet, httpreq, huaweicloud, hurricane, hyperone, ibmcloud, iij, iijdpf, infoblox, infomaniak, internetbs, inwx, ionos, ipv64, iwantmyname, joker, liara, lightsail, limacity, linode, liquidweb, loopia, luadns, mailinabox, manageengine, manual, metaname, mijnhost, mittwald, mydnsjp, mythicbeasts, namecheap, namedotcom, namesilo, nearlyfreespeech, netcup, netlify, nicmanager, nifcloud, njalla, nodion, ns1, oraclecloud, otc, ovh, pdns, plesk, porkbun, rackspace, rainyun, rcodezero, regfish, regru, rfc2136, rimuhosting, route53, safedns, sakuracloud, scaleway, selectel, selectelv2, selfhostde, servercow, shellrent, simply, sonic, stackpath, technitium, tencentcloud, timewebcloud, transip, ultradns, variomedia, vegadns, vercel, versio, vinyldns, vkcloud, volcengine, vscale, vultr, webnames, websupport, wedos, westcn, yandex, yandex360, yandexcloud, zoneee, zonomi
+ acme-dns, alidns, allinkl, arvancloud, auroradns, autodns, azure, azuredns, bindman, bluecat, brandit, bunny, checkdomain, civo, clouddns, cloudflare, cloudns, cloudru, cloudxns, conoha, constellix, corenetworks, cpanel, derak, desec, designate, digitalocean, directadmin, dnshomede, dnsimple, dnsmadeeasy, dnspod, dode, domeneshop, dreamhost, duckdns, dyn, dynu, easydns, edgedns, efficientip, epik, exec, exoscale, f5xc, freemyip, gandi, gandiv5, gcloud, gcore, glesys, godaddy, googledomains, hetzner, hostingde, hosttech, httpnet, httpreq, huaweicloud, hurricane, hyperone, ibmcloud, iij, iijdpf, infoblox, infomaniak, internetbs, inwx, ionos, ipv64, iwantmyname, joker, liara, lightsail, limacity, linode, liquidweb, loopia, luadns, mailinabox, manageengine, manual, metaname, mijnhost, mittwald, mydnsjp, mythicbeasts, namecheap, namedotcom, namesilo, nearlyfreespeech, netcup, netlify, nicmanager, nifcloud, njalla, nodion, ns1, oraclecloud, otc, ovh, pdns, plesk, porkbun, rackspace, rainyun, rcodezero, regfish, regru, rfc2136, rimuhosting, route53, safedns, sakuracloud, scaleway, selectel, selectelv2, selfhostde, servercow, shellrent, simply, sonic, stackpath, technitium, tencentcloud, timewebcloud, transip, ultradns, variomedia, vegadns, vercel, versio, vinyldns, vkcloud, volcengine, vscale, vultr, webnames, websupport, wedos, westcn, yandex, yandex360, yandexcloud, zoneee, zonomi
More information: https://go-acme.github.io/lego/dns
"""
diff --git a/providers/dns/zz_gen_dns_providers.go b/providers/dns/zz_gen_dns_providers.go
index 053c3c4e7b..c1c5d20354 100644
--- a/providers/dns/zz_gen_dns_providers.go
+++ b/providers/dns/zz_gen_dns_providers.go
@@ -51,6 +51,7 @@ import (
"github.com/go-acme/lego/v4/providers/dns/epik"
"github.com/go-acme/lego/v4/providers/dns/exec"
"github.com/go-acme/lego/v4/providers/dns/exoscale"
+ "github.com/go-acme/lego/v4/providers/dns/f5xc"
"github.com/go-acme/lego/v4/providers/dns/freemyip"
"github.com/go-acme/lego/v4/providers/dns/gandi"
"github.com/go-acme/lego/v4/providers/dns/gandiv5"
@@ -246,6 +247,8 @@ func NewDNSChallengeProviderByName(name string) (challenge.Provider, error) {
return exec.NewDNSProvider()
case "exoscale":
return exoscale.NewDNSProvider()
+ case "f5xc":
+ return f5xc.NewDNSProvider()
case "freemyip":
return freemyip.NewDNSProvider()
case "gandi":