Merge pull request #3053 from fraenki/acme_312

security/acme-client: release 3.12
This commit is contained in:
Frank Wall
2022-08-01 10:46:37 +02:00
committed by GitHub
7 changed files with 259 additions and 142 deletions
+1 -1
View File
@@ -1,5 +1,5 @@
PLUGIN_NAME= acme-client
PLUGIN_VERSION= 3.11
PLUGIN_VERSION= 3.12
PLUGIN_COMMENT= ACME Client
PLUGIN_MAINTAINER= opnsense@moov.de
PLUGIN_DEPENDS= acme.sh py${PLUGIN_PYTHON}-dns-lexicon
+15
View File
@@ -8,6 +8,21 @@ WWW: https://github.com/acmesh-official/acme.sh
Plugin Changelog
================
3.12
Added:
* add Simply.com DNS API (#2888)
* add Active24 challenge type (#3049)
* add support for Zone ID in Cloudflare challenge type (#2973)
* new automation: upload certificate to Vault (#2796)
Fixed:
* Re-order function parameters due to PHP8 deprecation notice (#3043)
Changed:
* simplyfi DNS service names
* relax port number restriction in SSH/SFTP automations (#3005)
3.11
Fixed:
@@ -274,4 +274,27 @@
<type>text</type>
<help>Path to the Unifi keystore file in the local filesystem, i.e. /usr/local/share/java/unifi/data/keystore.</help>
</field>
<field>
<label>Required Parameters</label>
<type>header</type>
<style>method_table method_table_acme_vault</style>
</field>
<field>
<id>action.acme_vault_url</id>
<label>Vault URL</label>
<type>text</type>
<help>URL of the Vault, i.e. http://vault.example.com:8200.</help>
</field>
<field>
<id>action.acme_vault_prefix</id>
<label>Vault Prefix</label>
<type>text</type>
<help>This specifies the prefix path in Vault.</help>
</field>
<field>
<id>action.acme_vault_kvv2</id>
<label>Use KV v2</label>
<type>checkbox</type>
<help>If checked version 2 of the kv store will be used, otherwise version 1.</help>
</field>
</form>
@@ -263,6 +263,12 @@
<type>password</type>
<help>The token needs "Read" access to Zone.Zone and "Edit" access to Zone.DNS across all zones from an account.</help>
</field>
<field>
<id>validation.dns_cf_zone_id</id>
<label>CF Zone ID (Optional)</label>
<type>text</type>
<help>Note that specifying a Zone ID will limit this configuration to a single domain.</help>
</field>
<field>
<label>ClouDNS</label>
<type>header</type>
@@ -0,0 +1,51 @@
<?php
/*
* Copyright (C) 2022 Frank Wall
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
* AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
* AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
* OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*/
namespace OPNsense\AcmeClient\LeAutomation;
use OPNsense\AcmeClient\LeAutomationInterface;
/**
* Run acme.sh deploy hook vault
* @package OPNsense\AcmeClient
*/
class AcmeVault extends Base implements LeAutomationInterface
{
public function prepare()
{
$this->acme_env['VAULT_ADDR'] = (string)$this->config->acme_vault_url;
if (!empty((string)$this->config->acme_vault_prefix)) {
$this->acme_env['VAULT_PREFIX'] = (string)$this->config->acme_vault_prefix;
}
if ((string)$this->config->acme_vault_kvv2 == 1) {
$this->acme_env['VAULT_KV_V2'] = 1;
}
$this->acme_args[] = '--deploy-hook vault';
return true;
}
}
@@ -45,5 +45,9 @@ class DnsCf extends Base implements LeValidationInterface
// Restricted API token (recommended)
$this->acme_env['CF_Token'] = (string)$this->config->dns_cf_token;
$this->acme_env['CF_Account_ID'] = (string)$this->config->dns_cf_account_id;
// Optional Zone ID
if (!empty((string)$this->config->dns_cf_zone_id)) {
$this->acme_env['CF_Zone_ID'] = (string)$this->config->dns_cf_zone_id;
}
}
}
@@ -416,90 +416,90 @@
<Required>Y</Required>
<default>dns_freedns</default>
<OptionValues>
<dns_1984hosting>1984Hosting API</dns_1984hosting>
<dns_acmedns>ACME DNS API</dns_acmedns>
<dns_acmeproxy>Acmeproxy API</dns_acmeproxy>
<dns_active24>Active24 API</dns_active24>
<dns_ad>Alwaysdata.com API</dns_ad>
<dns_ali>aliyun.com API</dns_ali>
<dns_kas>All-Inkl.com domain API</dns_kas>
<dns_arvan>ArvanCloud API</dns_arvan>
<dns_autodns>AutoDNS (InterNetX) API</dns_autodns>
<dns_1984hosting>1984Hosting</dns_1984hosting>
<dns_acmedns>ACME DNS</dns_acmedns>
<dns_acmeproxy>Acmeproxy</dns_acmeproxy>
<dns_active24>Active24</dns_active24>
<dns_ad>Alwaysdata.com</dns_ad>
<dns_ali>aliyun.com</dns_ali>
<dns_kas>All-Inkl.com</dns_kas>
<dns_arvan>ArvanCloud</dns_arvan>
<dns_autodns>AutoDNS (InterNetX)</dns_autodns>
<dns_aws>AWS Route 53</dns_aws>
<dns_azure>Azure DNS API</dns_azure>
<dns_cloudns>ClouDNS API</dns_cloudns>
<dns_cf>CloudFlare.com API</dns_cf>
<dns_cx>CloudXNS.com API</dns_cx>
<dns_cn>Core-Networks API</dns_cn>
<dns_cpanel>cPanel API</dns_cpanel>
<dns_cyon>cyon.ch API</dns_cyon>
<dns_ddnss>DDNSS API</dns_ddnss>
<dns_desec>deSEC.io API</dns_desec>
<dns_dgon>DigitalOcean API</dns_dgon>
<dns_da>DirectAdmin API</dns_da>
<dns_dnsimple>DNSimple API</dns_dnsimple>
<dns_domeneshop>Domeneshop API</dns_domeneshop>
<dns_me>DNSMadeEasy.com API</dns_me>
<dns_dp>DNSPod.cn API</dns_dp>
<dns_doapi>Domain-Offensive LetsEncrypt API</dns_doapi>
<dns_do>Domain-Offensive Resellerinterface/Domainrobot API</dns_do>
<dns_dreamhost>DreamHost DNS API</dns_dreamhost>
<dns_duckdns>DuckDNS API</dns_duckdns>
<dns_dyn>Dyn Managed DNS API</dns_dyn>
<dns_dynu>Dynu API</dns_dynu>
<dns_dynv6>dynv6 HTTP API</dns_dynv6>
<dns_azure>Azure DNS</dns_azure>
<dns_cloudns>ClouDNS</dns_cloudns>
<dns_cf>CloudFlare.com</dns_cf>
<dns_cx>CloudXNS.com</dns_cx>
<dns_cn>Core-Networks</dns_cn>
<dns_cpanel>cPanel</dns_cpanel>
<dns_cyon>cyon.ch</dns_cyon>
<dns_ddnss>DDNSS</dns_ddnss>
<dns_desec>deSEC.io</dns_desec>
<dns_dgon>DigitalOcean</dns_dgon>
<dns_da>DirectAdmin</dns_da>
<dns_dnsimple>DNSimple</dns_dnsimple>
<dns_domeneshop>Domeneshop</dns_domeneshop>
<dns_me>DNSMadeEasy.com</dns_me>
<dns_dp>DNSPod.cn</dns_dp>
<dns_doapi>Domain-Offensive LetsEncrypt</dns_doapi>
<dns_do>Domain-Offensive Resellerinterface/Domainrobot</dns_do>
<dns_dreamhost>DreamHost</dns_dreamhost>
<dns_duckdns>DuckDNS</dns_duckdns>
<dns_dyn>Dyn Managed</dns_dyn>
<dns_dynu>Dynu</dns_dynu>
<dns_dynv6>dynv6</dns_dynv6>
<dns_euserv>EUserv</dns_euserv>
<dns_freedns>FreeDNS API</dns_freedns>
<dns_gandi_livedns>Gandi LiveDNS API</dns_gandi_livedns>
<dns_gd>GoDaddy.com API</dns_gd>
<dns_gcloud>Google Cloud DNS API</dns_gcloud>
<dns_freedns>FreeDNS</dns_freedns>
<dns_gandi_livedns>Gandi LiveDNS</dns_gandi_livedns>
<dns_gd>GoDaddy.com</dns_gd>
<dns_gcloud>Google Cloud DNS</dns_gcloud>
<dns_gdnsdk>GratisDNS.dk</dns_gdnsdk>
<dns_hetzner>Hetzner DNS API</dns_hetzner>
<dns_hexonet>hexonet.com DNS API</dns_hexonet>
<dns_hostingde>hosting.de API</dns_hostingde>
<dns_hetzner>Hetzner</dns_hetzner>
<dns_hexonet>hexonet.com</dns_hexonet>
<dns_hostingde>hosting.de</dns_hostingde>
<dns_he>Hurricane Electric</dns_he>
<dns_infoblox>Infoblox API</dns_infoblox>
<dns_infomaniak>Infomaniak API</dns_infomaniak>
<dns_inwx>INWX XMLRPC API</dns_inwx>
<dns_ionos>IONOS domain API</dns_ionos>
<dns_ispconfig>ISPConfig 3.1+ API</dns_ispconfig>
<dns_joker>Joker API</dns_joker>
<dns_kinghost>KingHost DNS API</dns_kinghost>
<dns_knot>Knot (knsupdate) DNS API</dns_knot>
<dns_leaseweb>LeaseWeb API</dns_leaseweb>
<dns_lexicon>lexicon DNS API</dns_lexicon>
<dns_linode>Linode API (v3 / Deprecated)</dns_linode>
<dns_linode_v4>Linode API (v4)</dns_linode_v4>
<dns_loopia>Loopia API</dns_loopia>
<dns_lua>LuaDNS.com API</dns_lua>
<dns_miab>MailinaBox API</dns_miab>
<dns_namecom>Name.com API</dns_namecom>
<dns_namecheap>Namecheap API</dns_namecheap>
<dns_namesilo>Namesilo.com API</dns_namesilo>
<dns_nederhost>Nederhost API</dns_nederhost>
<dns_netcup>netcup DNS API</dns_netcup>
<dns_njalla>Njalla API</dns_njalla>
<dns_nsone>NS1.com API</dns_nsone>
<dns_infoblox>Infoblox</dns_infoblox>
<dns_infomaniak>Infomaniak</dns_infomaniak>
<dns_inwx>INWX XMLRPC</dns_inwx>
<dns_ionos>IONOS domain</dns_ionos>
<dns_ispconfig>ISPConfig 3.1+</dns_ispconfig>
<dns_joker>Joker</dns_joker>
<dns_kinghost>KingHost</dns_kinghost>
<dns_knot>Knot (knsupdate)</dns_knot>
<dns_leaseweb>LeaseWeb</dns_leaseweb>
<dns_lexicon>lexicon</dns_lexicon>
<dns_linode>Linode (v3 / Deprecated)</dns_linode>
<dns_linode_v4>Linode (v4)</dns_linode_v4>
<dns_loopia>Loopia</dns_loopia>
<dns_lua>LuaDNS.com</dns_lua>
<dns_miab>MailinaBox</dns_miab>
<dns_namecom>Name.com</dns_namecom>
<dns_namecheap>Namecheap</dns_namecheap>
<dns_namesilo>Namesilo.com</dns_namesilo>
<dns_nederhost>Nederhost</dns_nederhost>
<dns_netcup>netcup</dns_netcup>
<dns_njalla>Njalla</dns_njalla>
<dns_nsone>NS1.com</dns_nsone>
<dns_nsupdate>nsupdate (RFC 2136)</dns_nsupdate>
<dns_opnsense>OPNsense BIND Plugin</dns_opnsense>
<dns_ovh>OVH, kimsufi, soyoustart and runabove API</dns_ovh>
<dns_pdns>PowerDNS.com API</dns_pdns>
<dns_pleskxml>Plesk XML API</dns_pleskxml>
<dns_porkbun>Porkbun API</dns_porkbun>
<dns_ovh>OVH, kimsufi, soyoustart and runabove</dns_ovh>
<dns_pdns>PowerDNS.com</dns_pdns>
<dns_pleskxml>Plesk</dns_pleskxml>
<dns_porkbun>Porkbun</dns_porkbun>
<dns_schlundtech>SchlundTech</dns_schlundtech>
<dns_selectel>selectel.com / selectel.ru domain API</dns_selectel>
<dns_selfhost>Selfhost API</dns_selfhost>
<dns_servercow>Servercow API v1</dns_servercow>
<dns_simply>Simply.com API</dns_simply>
<dns_transip>Transip API</dns_transip>
<dns_unoeuro>UnoEuro API</dns_unoeuro>
<dns_variomedia>Variomedia.de API</dns_variomedia>
<dns_vscale>Vscale API</dns_vscale>
<dns_vultr>Vultr API</dns_vultr>
<dns_yandex>Yandex PDD API</dns_yandex>
<dns_zilore>Zilore DNS API</dns_zilore>
<dns_zone>Zone.eu API</dns_zone>
<dns_zonomi>zonomi.com domain API</dns_zonomi>
<dns_selectel>selectel.com / selectel.ru</dns_selectel>
<dns_selfhost>Selfhost</dns_selfhost>
<dns_servercow>Servercow</dns_servercow>
<dns_simply>Simply.com</dns_simply>
<dns_transip>Transip</dns_transip>
<dns_unoeuro>UnoEuro</dns_unoeuro>
<dns_variomedia>Variomedia.de</dns_variomedia>
<dns_vscale>Vscale</dns_vscale>
<dns_vultr>Vultr</dns_vultr>
<dns_yandex>Yandex PDD</dns_yandex>
<dns_zilore>Zilore</dns_zilore>
<dns_zone>Zone.eu</dns_zone>
<dns_zonomi>zonomi.com</dns_zonomi>
</OptionValues>
</dns_service>
<dns_sleep type="IntegerField">
@@ -560,6 +560,9 @@
<dns_cf_account_id type="TextField">
<Required>N</Required>
</dns_cf_account_id>
<dns_cf_zone_id type="TextField">
<Required>N</Required>
</dns_cf_zone_id>
<dns_cloudns_auth_id type="TextField">
<Required>N</Required>
</dns_cloudns_auth_id>
@@ -722,67 +725,67 @@
<Required>N</Required>
<default>cloudflare</default>
<OptionValues>
<aliyun>Aliyun.com API</aliyun>
<aurora>AuroraDNS API</aurora>
<aliyun>Aliyun.com</aliyun>
<aurora>AuroraDNS</aurora>
<auto>Auto API</auto>
<azure>Azure DNS API</azure>
<cloudflare>CloudFlare API</cloudflare>
<cloudns>ClouDNS API</cloudns>
<cloudxns>CloudXNS API</cloudxns>
<conoha>ConoHa API</conoha>
<constellix>Constellix API</constellix>
<digitalocean>DigitalOcean API</digitalocean>
<dinahosting>Dinahosting API</dinahosting>
<directadmin>DirectAdmin API</directadmin>
<dnsimple>DNSimple API</dnsimple>
<dnsmadeeasy>DnsMadeEasy API</dnsmadeeasy>
<dnspark>DNSPark API</dnspark>
<dnspod>DNSPod API</dnspod>
<dreamhost>Dreamhost API</dreamhost>
<easydns>EasyDNS API</easydns>
<easyname>Easyname API</easyname>
<exoscale>ExoScale API</exoscale>
<gandi>Gandi API</gandi>
<gehirn>Gehirn API</gehirn>
<glesys>Glesys API</glesys>
<godaddy>GoDaddy API</godaddy>
<googleclouddns>Google Cloud DNS API</googleclouddns>
<gratisdns>GratisDNS API</gratisdns>
<henet>Hurricane Electric DNS API</henet>
<hetzner>Hetzner API</hetzner>
<hover>Hover API</hover>
<infoblox>Infoblox API</infoblox>
<internetbs>Internet.bs API</internetbs>
<inwx>INWX API</inwx>
<linode>Linode API</linode>
<linode4>Linode v4 API</linode4>
<localzone>Localzone API</localzone>
<luadns>LuaDNS API</luadns>
<memset>Memset API</memset>
<namecheap>Namecheap API</namecheap>
<namesilo>Namesilo API</namesilo>
<netcup>Netcup API</netcup>
<nfsn>NFSN API</nfsn>
<nsone>NS1 API</nsone>
<onapp>OnApp API</onapp>
<online>Online API</online>
<ovh>OVH API</ovh>
<plesk>Plesk API</plesk>
<pointhq>PointHQ API</pointhq>
<powerdns>PowerDNS API</powerdns>
<rackspace>Rackspace API</rackspace>
<rage4>Rage4 API</rage4>
<route53>Route 53 API</route53>
<safedns>SafeDNS API</safedns>
<sakuracloud>SakuraCloud API</sakuracloud>
<softlayer>Softlayer API</softlayer>
<subreg>Subreg API</subreg>
<transip>Transip API</transip>
<vultr>Vultr API</vultr>
<yandex>Yandex API</yandex>
<zeit>Zeit API</zeit>
<zilore>Zilore API</zilore>
<zonomi>Zonomi API</zonomi>
<azure>Azure</azure>
<cloudflare>CloudFlare</cloudflare>
<cloudns>ClouDNS</cloudns>
<cloudxns>CloudXNS</cloudxns>
<conoha>ConoHa</conoha>
<constellix>Constellix</constellix>
<digitalocean>DigitalOcean</digitalocean>
<dinahosting>Dinahosting</dinahosting>
<directadmin>DirectAdmin</directadmin>
<dnsimple>DNSimple</dnsimple>
<dnsmadeeasy>DnsMadeEasy</dnsmadeeasy>
<dnspark>DNSPark</dnspark>
<dnspod>DNSPod</dnspod>
<dreamhost>Dreamhost</dreamhost>
<easydns>EasyDNS</easydns>
<easyname>Easyname</easyname>
<exoscale>ExoScale</exoscale>
<gandi>Gandi</gandi>
<gehirn>Gehirn</gehirn>
<glesys>Glesys</glesys>
<godaddy>GoDaddy</godaddy>
<googleclouddns>Google Cloud</googleclouddns>
<gratisdns>GratisDNS</gratisdns>
<henet>Hurricane Electric</henet>
<hetzner>Hetzner</hetzner>
<hover>Hover</hover>
<infoblox>Infoblox</infoblox>
<internetbs>Internet.bs</internetbs>
<inwx>INWX</inwx>
<linode>Linode (v3 / Deprecated)</linode>
<linode4>Linode (v4)</linode4>
<localzone>Localzone</localzone>
<luadns>LuaDNS</luadns>
<memset>Memset</memset>
<namecheap>Namecheap</namecheap>
<namesilo>Namesilo</namesilo>
<netcup>Netcup</netcup>
<nfsn>NFSN</nfsn>
<nsone>NS1</nsone>
<onapp>OnApp</onapp>
<online>Online</online>
<ovh>OVH</ovh>
<plesk>Plesk</plesk>
<pointhq>PointHQ</pointhq>
<powerdns>PowerDNS</powerdns>
<rackspace>Rackspace</rackspace>
<rage4>Rage4</rage4>
<route53>Route 53</route53>
<safedns>SafeDNS</safedns>
<sakuracloud>SakuraCloud</sakuracloud>
<softlayer>Softlayer</softlayer>
<subreg>Subreg</subreg>
<transip>Transip</transip>
<vultr>Vultr</vultr>
<yandex>Yandex</yandex>
<zeit>Zeit</zeit>
<zilore>Zilore</zilore>
<zonomi>Zonomi</zonomi>
</OptionValues>
</dns_lexicon_provider>
<dns_lexicon_user type="TextField">
@@ -1126,6 +1129,7 @@
<configd_upload_sftp>Upload certificate via SFTP</configd_upload_sftp>
<configd_remote_ssh>Remote Command via SSH</configd_remote_ssh>
<acme_fritzbox>Upload certificate to FRITZ!Box router</acme_fritzbox>
<acme_vault>Upload certificate to HashiCorp Vault</acme_vault>
<acme_synology_dsm>Upload certificate to Synology DSM</acme_synology_dsm>
<acme_unifi>Update local Unifi keystore</acme_unifi>
<configd_generic>System or Plugin Command</configd_generic>
@@ -1156,9 +1160,9 @@
<sftp_port type="IntegerField">
<Required>N</Required>
<MinimumValue>1</MinimumValue>
<MaximumValue>49151</MaximumValue>
<MaximumValue>65535</MaximumValue>
<default>22</default>
<ValidationMessage>Should be a valid port number between 1 and 49151.</ValidationMessage>
<ValidationMessage>Should be a valid port number between 1 and 65535.</ValidationMessage>
</sftp_port>
<sftp_user type="TextField">
<Required>N</Required>
@@ -1232,9 +1236,9 @@
<remote_ssh_port type="IntegerField">
<Required>N</Required>
<MinimumValue>1</MinimumValue>
<MaximumValue>49151</MaximumValue>
<MaximumValue>65535</MaximumValue>
<default>22</default>
<ValidationMessage>Should be a valid port number between 1 and 49151.</ValidationMessage>
<ValidationMessage>Should be a valid port number between 1 and 65535.</ValidationMessage>
</remote_ssh_port>
<remote_ssh_user type="TextField">
<Required>N</Required>
@@ -1322,6 +1326,20 @@
<default>/usr/local/share/java/unifi/data/keystore</default>
<Required>N</Required>
</acme_unifi_keystore>
<acme_vault_url type="TextField">
<Required>N</Required>
<mask>/^.{1,1024}$/u</mask>
<ValidationMessage>Should be a string between 1 and 1024 characters.</ValidationMessage>
</acme_vault_url>
<acme_vault_prefix type="TextField">
<default>acme</default>
<Required>N</Required>
<mask>/^.{1,1024}$/u</mask>
<ValidationMessage>Should be a string between 1 and 1024 characters.</ValidationMessage>
</acme_vault_prefix>
<acme_vault_kvv2 type="BooleanField">
<default>1</default>
</acme_vault_kvv2>
</action>
</actions>
</items>