No description
Find a file
Chris Smith 3ce1c8e912
Merge pull request #36 from csmith/dependabot/go_modules/golang.org/x/tools-0.38.0
Bump golang.org/x/tools from 0.37.0 to 0.38.0
2025-11-26 12:20:45 +00:00
.github Dependencies: switch to weekly with cooldown 2025-11-26 12:01:50 +00:00
cmd/generate Sort build tags in default.go 2022-02-08 19:35:32 +00:00
.gitignore Initial version 2021-10-15 23:48:29 +01:00
CHANGELOG.md Rewrok changelog 2025-11-15 12:52:53 +00:00
default.go Update lego to v4.28.1 2025-11-15 12:49:59 +00:00
go.mod Bump golang.org/x/tools from 0.37.0 to 0.38.0 2025-11-26 12:03:15 +00:00
go.sum Bump golang.org/x/tools from 0.37.0 to 0.38.0 2025-11-26 12:03:15 +00:00
LICENCE Initial version 2021-10-15 23:48:29 +01:00
plate_acmedns.go Initial version 2021-10-15 23:48:29 +01:00
plate_active24.go Update lego to v4.23.1 2025-05-18 22:05:59 +01:00
plate_alidns.go Initial version 2021-10-15 23:48:29 +01:00
plate_allinkl.go Initial version 2021-10-15 23:48:29 +01:00
plate_anexia.go Update lego to v4.28.1 2025-11-15 12:49:59 +00:00
plate_arvancloud.go Initial version 2021-10-15 23:48:29 +01:00
plate_auroradns.go Initial version 2021-10-15 23:48:29 +01:00
plate_autodns.go Initial version 2021-10-15 23:48:29 +01:00
plate_axelname.go Update lego to v4.23.1 2025-05-18 22:05:59 +01:00
plate_azion.go Update lego to v4.28.1 2025-11-15 12:49:59 +00:00
plate_azure.go Initial version 2021-10-15 23:48:29 +01:00
plate_azuredns.go Update plates 2023-07-25 20:38:51 +00:00
plate_baiducloud.go Update lego to v4.23.1 2025-05-18 22:05:59 +01:00
plate_beget.go Update lego to v4.28.1 2025-11-15 12:49:59 +00:00
plate_binarylane.go Update lego to v4.28.1 2025-11-15 12:49:59 +00:00
plate_bindman.go Initial version 2021-10-15 23:48:29 +01:00
plate_bluecat.go Initial version 2021-10-15 23:48:29 +01:00
plate_bookmyname.go Update lego to v4.23.1 2025-05-18 22:05:59 +01:00
plate_brandit.go Update to lego v4.12.0 2023-06-01 22:52:10 +01:00
plate_bunny.go Update to lego v4.12.0 2023-06-01 22:52:10 +01:00
plate_checkdomain.go Initial version 2021-10-15 23:48:29 +01:00
plate_civo.go Provider updates for lego 4.9.1 2022-11-30 12:19:59 +00:00
plate_clouddns.go Initial version 2021-10-15 23:48:29 +01:00
plate_cloudflare.go Initial version 2021-10-15 23:48:29 +01:00
plate_cloudns.go Initial version 2021-10-15 23:48:29 +01:00
plate_cloudru.go Update plates 2023-10-21 20:28:37 +00:00
plate_cloudxns.go Initial version 2021-10-15 23:48:29 +01:00
plate_conoha.go Initial version 2021-10-15 23:48:29 +01:00
plate_conohav3.go Update lego to v4.28.1 2025-11-15 12:49:59 +00:00
plate_constellix.go Initial version 2021-10-15 23:48:29 +01:00
plate_corenetworks.go Update lego to v4.23.1 2025-05-18 22:05:59 +01:00
plate_cpanel.go Update lego to v4.23.1 2025-05-18 22:05:59 +01:00
plate_derak.go Update to lego v4.12.0 2023-06-01 22:52:10 +01:00
plate_desec.go Initial version 2021-10-15 23:48:29 +01:00
plate_designate.go Initial version 2021-10-15 23:48:29 +01:00
plate_digitalocean.go Initial version 2021-10-15 23:48:29 +01:00
plate_directadmin.go Update lego to v4.23.1 2025-05-18 22:05:59 +01:00
plate_dnshomede.go Lego 4.10.0 2023-02-12 21:53:22 +00:00
plate_dnsimple.go Initial version 2021-10-15 23:48:29 +01:00
plate_dnsmadeeasy.go Initial version 2021-10-15 23:48:29 +01:00
plate_dnspod.go Initial version 2021-10-15 23:48:29 +01:00
plate_dode.go Initial version 2021-10-15 23:48:29 +01:00
plate_domeneshop.go Initial version 2021-10-15 23:48:29 +01:00
plate_dreamhost.go Initial version 2021-10-15 23:48:29 +01:00
plate_duckdns.go Initial version 2021-10-15 23:48:29 +01:00
plate_dyn.go Initial version 2021-10-15 23:48:29 +01:00
plate_dyndnsfree.go Update lego to v4.28.1 2025-11-15 12:49:59 +00:00
plate_dynu.go Initial version 2021-10-15 23:48:29 +01:00
plate_easydns.go Initial version 2021-10-15 23:48:29 +01:00
plate_edgedns.go Initial version 2021-10-15 23:48:29 +01:00
plate_edgeone.go Update lego to v4.28.1 2025-11-15 12:49:59 +00:00
plate_efficientip.go Update plates 2023-07-25 20:38:51 +00:00
plate_epik.go Initial version 2021-10-15 23:48:29 +01:00
plate_exec.go Initial version 2021-10-15 23:48:29 +01:00
plate_exoscale.go Initial version 2021-10-15 23:48:29 +01:00
plate_f5xc.go Update lego to v4.23.1 2025-05-18 22:05:59 +01:00
plate_freemyip.go Initial version 2021-10-15 23:48:29 +01:00
plate_gandi.go Initial version 2021-10-15 23:48:29 +01:00
plate_gandiv5.go Initial version 2021-10-15 23:48:29 +01:00
plate_gcloud.go Initial version 2021-10-15 23:48:29 +01:00
plate_gcore.go Initial version 2021-10-15 23:48:29 +01:00
plate_glesys.go Initial version 2021-10-15 23:48:29 +01:00
plate_godaddy.go Initial version 2021-10-15 23:48:29 +01:00
plate_googledomains.go Update to lego v4.12.0 2023-06-01 22:52:10 +01:00
plate_hetzner.go Initial version 2021-10-15 23:48:29 +01:00
plate_hostingde.go Initial version 2021-10-15 23:48:29 +01:00
plate_hostinger.go Update lego to v4.28.1 2025-11-15 12:49:59 +00:00
plate_hosttech.go Initial version 2021-10-15 23:48:29 +01:00
plate_httpnet.go Update lego to v4.23.1 2025-05-18 22:05:59 +01:00
plate_httpreq.go Initial version 2021-10-15 23:48:29 +01:00
plate_huaweicloud.go Update lego to v4.23.1 2025-05-18 22:05:59 +01:00
plate_hurricane.go Initial version 2021-10-15 23:48:29 +01:00
plate_hyperone.go Initial version 2021-10-15 23:48:29 +01:00
plate_ibmcloud.go Initial version 2021-10-15 23:48:29 +01:00
plate_iij.go Initial version 2021-10-15 23:48:29 +01:00
plate_iijdpf.go Update to lego 4.7.0 2022-05-31 11:14:21 +00:00
plate_infoblox.go Initial version 2021-10-15 23:48:29 +01:00
plate_infomaniak.go Initial version 2021-10-15 23:48:29 +01:00
plate_internetbs.go Initial version 2021-10-15 23:48:29 +01:00
plate_inwx.go Initial version 2021-10-15 23:48:29 +01:00
plate_ionos.go Initial version 2021-10-15 23:48:29 +01:00
plate_ipv64.go Update plates 2023-07-25 20:38:51 +00:00
plate_iwantmyname.go Update to lego 4.7.0 2022-05-31 11:14:21 +00:00
plate_joker.go Initial version 2021-10-15 23:48:29 +01:00
plate_keyhelp.go Update lego to v4.28.1 2025-11-15 12:49:59 +00:00
plate_liara.go Lego 4.10.0 2023-02-12 21:53:22 +00:00
plate_lightsail.go Initial version 2021-10-15 23:48:29 +01:00
plate_limacity.go Update lego to v4.23.1 2025-05-18 22:05:59 +01:00
plate_linode.go Initial version 2021-10-15 23:48:29 +01:00
plate_liquidweb.go Initial version 2021-10-15 23:48:29 +01:00
plate_loopia.go Initial version 2021-10-15 23:48:29 +01:00
plate_luadns.go Initial version 2021-10-15 23:48:29 +01:00
plate_mailinabox.go Update lego to v4.23.1 2025-05-18 22:05:59 +01:00
plate_manageengine.go Update lego to v4.23.1 2025-05-18 22:05:59 +01:00
plate_metaname.go Update plates 2023-07-25 20:38:51 +00:00
plate_metaregistrar.go Update lego to v4.23.1 2025-05-18 22:05:59 +01:00
plate_mijnhost.go Update lego to v4.23.1 2025-05-18 22:05:59 +01:00
plate_mittwald.go Update lego to v4.23.1 2025-05-18 22:05:59 +01:00
plate_myaddr.go Update lego to v4.23.1 2025-05-18 22:05:59 +01:00
plate_mydnsjp.go Initial version 2021-10-15 23:48:29 +01:00
plate_mythicbeasts.go Initial version 2021-10-15 23:48:29 +01:00
plate_namecheap.go Initial version 2021-10-15 23:48:29 +01:00
plate_namedotcom.go Initial version 2021-10-15 23:48:29 +01:00
plate_namesilo.go Initial version 2021-10-15 23:48:29 +01:00
plate_nearlyfreespeech.go Add new providers 2022-07-03 10:53:31 +01:00
plate_netcup.go Initial version 2021-10-15 23:48:29 +01:00
plate_netlify.go Initial version 2021-10-15 23:48:29 +01:00
plate_nicmanager.go Initial version 2021-10-15 23:48:29 +01:00
plate_nicru.go Update lego to v4.28.1 2025-11-15 12:49:59 +00:00
plate_nifcloud.go Initial version 2021-10-15 23:48:29 +01:00
plate_njalla.go Initial version 2021-10-15 23:48:29 +01:00
plate_nodion.go Update to lego v4.12.0 2023-06-01 22:52:10 +01:00
plate_ns1.go Initial version 2021-10-15 23:48:29 +01:00
plate_octenium.go Update lego to v4.28.1 2025-11-15 12:49:59 +00:00
plate_oraclecloud.go Initial version 2021-10-15 23:48:29 +01:00
plate_otc.go Initial version 2021-10-15 23:48:29 +01:00
plate_ovh.go Initial version 2021-10-15 23:48:29 +01:00
plate_pdns.go Initial version 2021-10-15 23:48:29 +01:00
plate_plesk.go Update to lego v4.12.0 2023-06-01 22:52:10 +01:00
plate_porkbun.go Initial version 2021-10-15 23:48:29 +01:00
plate_rackspace.go Initial version 2021-10-15 23:48:29 +01:00
plate_rainyun.go Update lego to v4.23.1 2025-05-18 22:05:59 +01:00
plate_rcodezero.go Update plates 2023-07-25 20:38:51 +00:00
plate_regfish.go Update lego to v4.23.1 2025-05-18 22:05:59 +01:00
plate_regru.go Initial version 2021-10-15 23:48:29 +01:00
plate_rfc2136.go Initial version 2021-10-15 23:48:29 +01:00
plate_rimuhosting.go Initial version 2021-10-15 23:48:29 +01:00
plate_route53.go Initial version 2021-10-15 23:48:29 +01:00
plate_safedns.go Update for lego v4.6.0 2022-02-08 19:33:48 +00:00
plate_sakuracloud.go Initial version 2021-10-15 23:48:29 +01:00
plate_scaleway.go Initial version 2021-10-15 23:48:29 +01:00
plate_selectel.go Initial version 2021-10-15 23:48:29 +01:00
plate_selectelv2.go Update lego to v4.23.1 2025-05-18 22:05:59 +01:00
plate_selfhostde.go Update lego to v4.23.1 2025-05-18 22:05:59 +01:00
plate_servercow.go Initial version 2021-10-15 23:48:29 +01:00
plate_shellrent.go Update lego to v4.23.1 2025-05-18 22:05:59 +01:00
plate_simply.go Initial version 2021-10-15 23:48:29 +01:00
plate_sonic.go Initial version 2021-10-15 23:48:29 +01:00
plate_spaceship.go Update lego to v4.23.1 2025-05-18 22:05:59 +01:00
plate_stackpath.go Initial version 2021-10-15 23:48:29 +01:00
plate_technitium.go Update lego to v4.23.1 2025-05-18 22:05:59 +01:00
plate_tencentcloud.go Update for lego v4.6.0 2022-02-08 19:33:48 +00:00
plate_timewebcloud.go Update lego to v4.23.1 2025-05-18 22:05:59 +01:00
plate_transip.go Initial version 2021-10-15 23:48:29 +01:00
plate_ultradns.go Lego 4.10.0 2023-02-12 21:53:22 +00:00
plate_variomedia.go Add new providers 2022-07-03 10:53:31 +01:00
plate_vegadns.go Initial version 2021-10-15 23:48:29 +01:00
plate_vercel.go Update to lego 4.7.0 2022-05-31 11:14:21 +00:00
plate_versio.go Initial version 2021-10-15 23:48:29 +01:00
plate_vinyldns.go Initial version 2021-10-15 23:48:29 +01:00
plate_vkcloud.go Provider updates for lego 4.9.1 2022-11-30 12:19:59 +00:00
plate_volcengine.go Update lego to v4.23.1 2025-05-18 22:05:59 +01:00
plate_vscale.go Initial version 2021-10-15 23:48:29 +01:00
plate_vultr.go Initial version 2021-10-15 23:48:29 +01:00
plate_webnames.go Update plates 2024-01-29 17:06:23 +00:00
plate_webnamesca.go Update lego to v4.28.1 2025-11-15 12:49:59 +00:00
plate_websupport.go Lego 4.10.0 2023-02-12 21:53:22 +00:00
plate_wedos.go Initial version 2021-10-15 23:48:29 +01:00
plate_westcn.go Update lego to v4.23.1 2025-05-18 22:05:59 +01:00
plate_yandex.go Initial version 2021-10-15 23:48:29 +01:00
plate_yandex360.go Update plates 2023-10-21 20:28:37 +00:00
plate_yandexcloud.go Provider updates for lego 4.9.1 2022-11-30 12:19:59 +00:00
plate_zoneedit.go Update lego to v4.28.1 2025-11-15 12:49:59 +00:00
plate_zoneee.go Initial version 2021-10-15 23:48:29 +01:00
plate_zonomi.go Initial version 2021-10-15 23:48:29 +01:00
README.md Initial version 2021-10-15 23:48:29 +01:00

Lego Tapas

Provides build constraints for the DNS providers found in lego.

How to use

Normally when using lego you'd call dns.NewDNSChallengeProviderByName(providerName string) to get an instance of the DNS provider. To use legotapas replace this with a call to legotapas.CreateProvider(providerName string). It has the same signature, so shouldn't take more than a couple of seconds. If you don't specify any build constraints then this will function exactly as it did before.

Now you can use build constraints to select a single provider to compile with, instead of pulling in every single provider and all of their dependencies. For example to support only the httpreq provider you would build with:

go build -tags lego_httpreq example.com/your/project

With this build constraint, your binary will only pull in the httpreq provider and not the much larger providers such as GCP and AWS. In this particular case the binary is 30MB smaller.

FAQ

What's the point?

I compile most things I run in production. It upsets me that I'm compiling in support for a million and one DNS providers that I'll never use, and otherwise very simple tools get ballooned by 30MB or so because they're pulling in really complicated libraries for other DNS providers.

Obviously if you're building a general purpose release to be used in multiple environments then letting the user select which one is probably the best way to go, but using legotapas allows for advanced users to customise the build to their need while still maintaining the general compatibility.

Can I enable more than one provider?

No. I don't think this is possible with the way I'm using build constraints (without an exponential explosion covering every possible combinations). I'm open to suggestions for better ways to do this - please raise an issue or submit a PR!

How to update when new providers are added

The application under ./cmd/generate finds all available packages and executes templates for each detected provider. Simply update the lego dependency with go get and then run the generate command to refresh the templates.