diff --git a/README.md b/README.md
index 105ea53aa..7e015e70f 100644
--- a/README.md
+++ b/README.md
@@ -73,228 +73,228 @@ If your DNS provider is not supported, please open an [issue](https://github.com
| Amazon Route 53 |
Anexia CloudDNS |
+ ArtFiles |
ArvanCloud |
- Aurora DNS |
+ | Aurora DNS |
Autodns |
Axelname |
Azion |
- Azure (deprecated) |
+ | Azure (deprecated) |
Azure DNS |
Baidu Cloud |
Beget.com |
- Binary Lane |
+ | Binary Lane |
Bindman |
Bluecat |
Bluecat v2 |
- BookMyName |
+ | BookMyName |
Brandit (deprecated) |
Bunny |
Checkdomain |
- Civo |
+ | Civo |
Cloud.ru |
CloudDNS |
Cloudflare |
- ClouDNS |
+ | ClouDNS |
CloudXNS (Deprecated) |
ConoHa v2 |
ConoHa v3 |
- Constellix |
+ | Constellix |
Core-Networks |
CPanel/WHM |
DDnss (DynDNS Service) |
- Derak Cloud |
+ | Derak Cloud |
deSEC.io |
Designate DNSaaS for Openstack |
Digital Ocean |
- DirectAdmin |
+ | DirectAdmin |
DNS Made Easy |
DNSExit |
dnsHome.de |
- DNSimple |
+ | DNSimple |
DNSPod (deprecated) |
Domain Offensive (do.de) |
Domeneshop |
- DreamHost |
+ | DreamHost |
Duck DNS |
Dyn |
DynDnsFree.de |
- Dynu |
+ | Dynu |
EasyDNS |
EdgeCenter |
Efficient IP |
- Epik |
+ | Epik |
Exoscale |
External program |
F5 XC |
- freemyip.com |
+ | freemyip.com |
FusionLayer NameSurfer |
G-Core |
Gandi |
- Gandi Live DNS (v5) |
+ | Gandi Live DNS (v5) |
Gigahost.no |
Glesys |
Go Daddy |
- Google Cloud |
+ | Google Cloud |
Google Domains |
Gravity |
Hetzner |
- Hosting.de |
+ | Hosting.de |
Hosting.nl |
Hostinger |
Hosttech |
- HTTP request |
+ | HTTP request |
http.net |
Huawei Cloud |
Hurricane Electric DNS |
- HyperOne |
+ | HyperOne |
IBM Cloud (SoftLayer) |
IIJ DNS Platform Service |
Infoblox |
- Infomaniak |
+ | Infomaniak |
Internet Initiative Japan |
Internet.bs |
INWX |
- Ionos |
+ | Ionos |
Ionos Cloud |
IPv64 |
ISPConfig 3 |
- ISPConfig 3 - Dynamic DNS (DDNS) Module |
+ | ISPConfig 3 - Dynamic DNS (DDNS) Module |
iwantmyname (Deprecated) |
JD Cloud |
Joker |
- Joohoi's ACME-DNS |
+ | Joohoi's ACME-DNS |
KeyHelp |
Liara |
Lima-City |
- Linode (v4) |
+ | Linode (v4) |
Liquid Web |
Loopia |
LuaDNS |
- Mail-in-a-Box |
+ | Mail-in-a-Box |
ManageEngine CloudDNS |
Manual |
Metaname |
- Metaregistrar |
+ | Metaregistrar |
mijn.host |
Mittwald |
myaddr.{tools,dev,io} |
- MyDNS.jp |
+ | MyDNS.jp |
MythicBeasts |
Name.com |
Namecheap |
- Namesilo |
+ | Namesilo |
NearlyFreeSpeech.NET |
Neodigit |
Netcup |
- Netlify |
+ | Netlify |
Nicmanager |
NIFCloud |
Njalla |
- Nodion |
+ | Nodion |
NS1 |
Octenium |
Open Telekom Cloud |
- Oracle Cloud |
+ | Oracle Cloud |
OVH |
plesk.com |
Porkbun |
- PowerDNS |
+ | PowerDNS |
Rackspace |
Rain Yun/雨云 |
RcodeZero |
- reg.ru |
+ | reg.ru |
Regfish |
RFC2136 |
RimuHosting |
- RU CENTER |
+ | RU CENTER |
Sakura Cloud |
Scaleway |
Selectel |
- Selectel v2 |
+ | Selectel v2 |
SelfHost.(de|eu) |
Servercow |
Shellrent |
- Simply.com |
+ | Simply.com |
Sonic |
Spaceship |
Stackpath |
- Syse |
+ | Syse |
Technitium |
Tencent Cloud DNS |
Tencent EdgeOne |
- Timeweb Cloud |
+ | Timeweb Cloud |
TodayNIC/时代互联 |
TransIP |
UKFast SafeDNS |
- Ultradns |
+ | Ultradns |
United-Domains |
Variomedia |
VegaDNS |
- Vercel |
+ | Vercel |
Versio.[nl|eu|uk] |
VinylDNS |
Virtualname |
- VK Cloud |
+ | VK Cloud |
Volcano Engine/火山引擎 |
Vscale |
Vultr |
- webnames.ca |
+ | webnames.ca |
webnames.ru |
Websupport |
WEDOS |
- West.cn/西部数码 |
+ | West.cn/西部数码 |
Yandex 360 |
Yandex Cloud |
Yandex PDD |
- Zone.ee |
+ | Zone.ee |
ZoneEdit |
Zonomi |
|
- |
diff --git a/cmd/zz_gen_cmd_dnshelp.go b/cmd/zz_gen_cmd_dnshelp.go
index cdee65371..43aeb47dd 100644
--- a/cmd/zz_gen_cmd_dnshelp.go
+++ b/cmd/zz_gen_cmd_dnshelp.go
@@ -19,6 +19,7 @@ func allDNSCodes() string {
"allinkl",
"alwaysdata",
"anexia",
+ "artfiles",
"arvancloud",
"auroradns",
"autodns",
@@ -358,6 +359,27 @@ func displayDNSHelp(w io.Writer, name string) error {
ew.writeln()
ew.writeln(`More information: https://go-acme.github.io/lego/dns/anexia`)
+ case "artfiles":
+ // generated from: providers/dns/artfiles/artfiles.toml
+ ew.writeln(`Configuration for ArtFiles.`)
+ ew.writeln(`Code: 'artfiles'`)
+ ew.writeln(`Since: 'v4.32.0'`)
+ ew.writeln()
+
+ ew.writeln(`Credentials:`)
+ ew.writeln(` - "ARTFILES_PASSWORD": API password`)
+ ew.writeln(` - "ARTFILES_USERNAME": API username`)
+ ew.writeln()
+
+ ew.writeln(`Additional Configuration:`)
+ ew.writeln(` - "ARTFILES_HTTP_TIMEOUT": API request timeout in seconds (Default: 30)`)
+ ew.writeln(` - "ARTFILES_POLLING_INTERVAL": Time between DNS propagation check in seconds (Default: 2)`)
+ ew.writeln(` - "ARTFILES_PROPAGATION_TIMEOUT": Maximum waiting time for DNS propagation in seconds (Default: 300)`)
+ ew.writeln(` - "ARTFILES_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/artfiles`)
+
case "arvancloud":
// generated from: providers/dns/arvancloud/arvancloud.toml
ew.writeln(`Configuration for ArvanCloud.`)
diff --git a/docs/content/dns/zz_gen_artfiles.md b/docs/content/dns/zz_gen_artfiles.md
new file mode 100644
index 000000000..8ca33addd
--- /dev/null
+++ b/docs/content/dns/zz_gen_artfiles.md
@@ -0,0 +1,69 @@
+---
+title: "ArtFiles"
+date: 2019-03-03T16:39:46+01:00
+draft: false
+slug: artfiles
+dnsprovider:
+ since: "v4.32.0"
+ code: "artfiles"
+ url: "https://www.artfiles.de/extras/domains/"
+---
+
+
+
+
+
+
+Configuration for [ArtFiles](https://www.artfiles.de/extras/domains/).
+
+
+
+
+- Code: `artfiles`
+- Since: v4.32.0
+
+
+Here is an example bash command using the ArtFiles provider:
+
+```bash
+ARTFILES_USERNAME="xxx" \
+ARTFILES_PASSWORD="yyy" \
+lego --dns artfiles -d '*.example.com' -d example.com run
+```
+
+
+
+
+## Credentials
+
+| Environment Variable Name | Description |
+|-----------------------|-------------|
+| `ARTFILES_PASSWORD` | API password |
+| `ARTFILES_USERNAME` | API username |
+
+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 |
+|--------------------------------|-------------|
+| `ARTFILES_HTTP_TIMEOUT` | API request timeout in seconds (Default: 30) |
+| `ARTFILES_POLLING_INTERVAL` | Time between DNS propagation check in seconds (Default: 2) |
+| `ARTFILES_PROPAGATION_TIMEOUT` | Maximum waiting time for DNS propagation in seconds (Default: 300) |
+| `ARTFILES_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://support.artfiles.de/DCP-API#dns)
+
+
+
+
diff --git a/docs/data/zz_cli_help.toml b/docs/data/zz_cli_help.toml
index 759b8e84f..c6d845bf2 100644
--- a/docs/data/zz_cli_help.toml
+++ b/docs/data/zz_cli_help.toml
@@ -152,7 +152,7 @@ To display the documentation for a specific DNS provider, run:
$ lego dnshelp -c code
Supported DNS providers:
- acme-dns, active24, alidns, aliesa, allinkl, alwaysdata, anexia, arvancloud, auroradns, autodns, axelname, azion, azure, azuredns, baiducloud, beget, binarylane, bindman, bluecat, bluecatv2, bookmyname, brandit, bunny, checkdomain, civo, clouddns, cloudflare, cloudns, cloudru, cloudxns, com35, conoha, conohav3, constellix, corenetworks, cpanel, ddnss, derak, desec, designate, digitalocean, directadmin, dnsexit, dnshomede, dnsimple, dnsmadeeasy, dnspod, dode, domeneshop, dreamhost, duckdns, dyn, dyndnsfree, dynu, easydns, edgecenter, edgedns, edgeone, efficientip, epik, exec, exoscale, f5xc, freemyip, gandi, gandiv5, gcloud, gcore, gigahostno, glesys, godaddy, googledomains, gravity, hetzner, hostingde, hostinger, hostingnl, hosttech, httpnet, httpreq, huaweicloud, hurricane, hyperone, ibmcloud, iij, iijdpf, infoblox, infomaniak, internetbs, inwx, ionos, ionoscloud, ipv64, ispconfig, ispconfigddns, iwantmyname, jdcloud, joker, keyhelp, liara, lightsail, limacity, linode, liquidweb, loopia, luadns, mailinabox, manageengine, manual, metaname, metaregistrar, mijnhost, mittwald, myaddr, mydnsjp, mythicbeasts, namecheap, namedotcom, namesilo, namesurfer, nearlyfreespeech, neodigit, netcup, netlify, nicmanager, nicru, nifcloud, njalla, nodion, ns1, octenium, oraclecloud, otc, ovh, pdns, plesk, porkbun, rackspace, rainyun, rcodezero, regfish, regru, rfc2136, rimuhosting, route53, safedns, sakuracloud, scaleway, selectel, selectelv2, selfhostde, servercow, shellrent, simply, sonic, spaceship, stackpath, syse, technitium, tencentcloud, timewebcloud, todaynic, transip, ultradns, uniteddomains, variomedia, vegadns, vercel, versio, vinyldns, virtualname, vkcloud, volcengine, vscale, vultr, webnames, webnamesca, websupport, wedos, westcn, yandex, yandex360, yandexcloud, zoneedit, zoneee, zonomi
+ acme-dns, active24, alidns, aliesa, allinkl, alwaysdata, anexia, artfiles, arvancloud, auroradns, autodns, axelname, azion, azure, azuredns, baiducloud, beget, binarylane, bindman, bluecat, bluecatv2, bookmyname, brandit, bunny, checkdomain, civo, clouddns, cloudflare, cloudns, cloudru, cloudxns, com35, conoha, conohav3, constellix, corenetworks, cpanel, ddnss, derak, desec, designate, digitalocean, directadmin, dnsexit, dnshomede, dnsimple, dnsmadeeasy, dnspod, dode, domeneshop, dreamhost, duckdns, dyn, dyndnsfree, dynu, easydns, edgecenter, edgedns, edgeone, efficientip, epik, exec, exoscale, f5xc, freemyip, gandi, gandiv5, gcloud, gcore, gigahostno, glesys, godaddy, googledomains, gravity, hetzner, hostingde, hostinger, hostingnl, hosttech, httpnet, httpreq, huaweicloud, hurricane, hyperone, ibmcloud, iij, iijdpf, infoblox, infomaniak, internetbs, inwx, ionos, ionoscloud, ipv64, ispconfig, ispconfigddns, iwantmyname, jdcloud, joker, keyhelp, liara, lightsail, limacity, linode, liquidweb, loopia, luadns, mailinabox, manageengine, manual, metaname, metaregistrar, mijnhost, mittwald, myaddr, mydnsjp, mythicbeasts, namecheap, namedotcom, namesilo, namesurfer, nearlyfreespeech, neodigit, netcup, netlify, nicmanager, nicru, nifcloud, njalla, nodion, ns1, octenium, oraclecloud, otc, ovh, pdns, plesk, porkbun, rackspace, rainyun, rcodezero, regfish, regru, rfc2136, rimuhosting, route53, safedns, sakuracloud, scaleway, selectel, selectelv2, selfhostde, servercow, shellrent, simply, sonic, spaceship, stackpath, syse, technitium, tencentcloud, timewebcloud, todaynic, transip, ultradns, uniteddomains, variomedia, vegadns, vercel, versio, vinyldns, virtualname, vkcloud, volcengine, vscale, vultr, webnames, webnamesca, websupport, wedos, westcn, yandex, yandex360, yandexcloud, zoneedit, 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 10fda2df1..24474cf2f 100644
--- a/providers/dns/zz_gen_dns_providers.go
+++ b/providers/dns/zz_gen_dns_providers.go
@@ -13,6 +13,7 @@ import (
"github.com/go-acme/lego/v4/providers/dns/allinkl"
"github.com/go-acme/lego/v4/providers/dns/alwaysdata"
"github.com/go-acme/lego/v4/providers/dns/anexia"
+ "github.com/go-acme/lego/v4/providers/dns/artfiles"
"github.com/go-acme/lego/v4/providers/dns/arvancloud"
"github.com/go-acme/lego/v4/providers/dns/auroradns"
"github.com/go-acme/lego/v4/providers/dns/autodns"
@@ -211,6 +212,8 @@ func NewDNSChallengeProviderByName(name string) (challenge.Provider, error) {
return alwaysdata.NewDNSProvider()
case "anexia":
return anexia.NewDNSProvider()
+ case "artfiles":
+ return artfiles.NewDNSProvider()
case "arvancloud":
return arvancloud.NewDNSProvider()
case "auroradns":