diff --git a/security/acme-client/Makefile b/security/acme-client/Makefile
index e43cc7d26..86944b5d6 100644
--- a/security/acme-client/Makefile
+++ b/security/acme-client/Makefile
@@ -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
diff --git a/security/acme-client/pkg-descr b/security/acme-client/pkg-descr
index 2ca43dc00..8dab89122 100644
--- a/security/acme-client/pkg-descr
+++ b/security/acme-client/pkg-descr
@@ -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:
diff --git a/security/acme-client/src/opnsense/mvc/app/controllers/OPNsense/AcmeClient/forms/dialogAction.xml b/security/acme-client/src/opnsense/mvc/app/controllers/OPNsense/AcmeClient/forms/dialogAction.xml
index d3ecd4664..45544272c 100644
--- a/security/acme-client/src/opnsense/mvc/app/controllers/OPNsense/AcmeClient/forms/dialogAction.xml
+++ b/security/acme-client/src/opnsense/mvc/app/controllers/OPNsense/AcmeClient/forms/dialogAction.xml
@@ -274,4 +274,27 @@
textPath to the Unifi keystore file in the local filesystem, i.e. /usr/local/share/java/unifi/data/keystore.
+
+
+ header
+
+
+
+ action.acme_vault_url
+
+ text
+ URL of the Vault, i.e. http://vault.example.com:8200.
+
+
+ action.acme_vault_prefix
+
+ text
+ This specifies the prefix path in Vault.
+
+
+ action.acme_vault_kvv2
+
+ checkbox
+ If checked version 2 of the kv store will be used, otherwise version 1.
+
diff --git a/security/acme-client/src/opnsense/mvc/app/controllers/OPNsense/AcmeClient/forms/dialogValidation.xml b/security/acme-client/src/opnsense/mvc/app/controllers/OPNsense/AcmeClient/forms/dialogValidation.xml
index ee96f9000..0d6d449c5 100644
--- a/security/acme-client/src/opnsense/mvc/app/controllers/OPNsense/AcmeClient/forms/dialogValidation.xml
+++ b/security/acme-client/src/opnsense/mvc/app/controllers/OPNsense/AcmeClient/forms/dialogValidation.xml
@@ -263,6 +263,12 @@
passwordThe token needs "Read" access to Zone.Zone and "Edit" access to Zone.DNS across all zones from an account.
+
+ validation.dns_cf_zone_id
+
+ text
+ Note that specifying a Zone ID will limit this configuration to a single domain.
+ header
diff --git a/security/acme-client/src/opnsense/mvc/app/library/OPNsense/AcmeClient/LeAutomation/AcmeVault.php b/security/acme-client/src/opnsense/mvc/app/library/OPNsense/AcmeClient/LeAutomation/AcmeVault.php
new file mode 100644
index 000000000..3eab03d75
--- /dev/null
+++ b/security/acme-client/src/opnsense/mvc/app/library/OPNsense/AcmeClient/LeAutomation/AcmeVault.php
@@ -0,0 +1,51 @@
+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;
+ }
+}
diff --git a/security/acme-client/src/opnsense/mvc/app/library/OPNsense/AcmeClient/LeValidation/DnsCf.php b/security/acme-client/src/opnsense/mvc/app/library/OPNsense/AcmeClient/LeValidation/DnsCf.php
index 3f6f735e0..107a09f6e 100644
--- a/security/acme-client/src/opnsense/mvc/app/library/OPNsense/AcmeClient/LeValidation/DnsCf.php
+++ b/security/acme-client/src/opnsense/mvc/app/library/OPNsense/AcmeClient/LeValidation/DnsCf.php
@@ -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;
+ }
}
}
diff --git a/security/acme-client/src/opnsense/mvc/app/models/OPNsense/AcmeClient/AcmeClient.xml b/security/acme-client/src/opnsense/mvc/app/models/OPNsense/AcmeClient/AcmeClient.xml
index 4b01dfa58..9ed293b83 100644
--- a/security/acme-client/src/opnsense/mvc/app/models/OPNsense/AcmeClient/AcmeClient.xml
+++ b/security/acme-client/src/opnsense/mvc/app/models/OPNsense/AcmeClient/AcmeClient.xml
@@ -416,90 +416,90 @@
Ydns_freedns
- 1984Hosting API
- ACME DNS API
- Acmeproxy API
- Active24 API
- Alwaysdata.com API
- aliyun.com API
- All-Inkl.com domain API
- ArvanCloud API
- AutoDNS (InterNetX) API
+ 1984Hosting
+ ACME DNS
+ Acmeproxy
+ Active24
+ Alwaysdata.com
+ aliyun.com
+ All-Inkl.com
+ ArvanCloud
+ AutoDNS (InterNetX)AWS Route 53
- Azure DNS API
- ClouDNS API
- CloudFlare.com API
- CloudXNS.com API
- Core-Networks API
- cPanel API
- cyon.ch API
- DDNSS API
- deSEC.io API
- DigitalOcean API
- DirectAdmin API
- DNSimple API
- Domeneshop API
- DNSMadeEasy.com API
- DNSPod.cn API
- Domain-Offensive LetsEncrypt API
- Domain-Offensive Resellerinterface/Domainrobot API
- DreamHost DNS API
- DuckDNS API
- Dyn Managed DNS API
- Dynu API
- dynv6 HTTP API
+ Azure DNS
+ ClouDNS
+ CloudFlare.com
+ CloudXNS.com
+ Core-Networks
+ cPanel
+ cyon.ch
+ DDNSS
+ deSEC.io
+ DigitalOcean
+ DirectAdmin
+ DNSimple
+ Domeneshop
+ DNSMadeEasy.com
+ DNSPod.cn
+ Domain-Offensive LetsEncrypt
+ Domain-Offensive Resellerinterface/Domainrobot
+ DreamHost
+ DuckDNS
+ Dyn Managed
+ Dynu
+ dynv6EUserv
- FreeDNS API
- Gandi LiveDNS API
- GoDaddy.com API
- Google Cloud DNS API
+ FreeDNS
+ Gandi LiveDNS
+ GoDaddy.com
+ Google Cloud DNSGratisDNS.dk
- Hetzner DNS API
- hexonet.com DNS API
- hosting.de API
+ Hetzner
+ hexonet.com
+ hosting.deHurricane Electric
- Infoblox API
- Infomaniak API
- INWX XMLRPC API
- IONOS domain API
- ISPConfig 3.1+ API
- Joker API
- KingHost DNS API
- Knot (knsupdate) DNS API
- LeaseWeb API
- lexicon DNS API
- Linode API (v3 / Deprecated)
- Linode API (v4)
- Loopia API
- LuaDNS.com API
- MailinaBox API
- Name.com API
- Namecheap API
- Namesilo.com API
- Nederhost API
- netcup DNS API
- Njalla API
- NS1.com API
+ Infoblox
+ Infomaniak
+ INWX XMLRPC
+ IONOS domain
+ ISPConfig 3.1+
+ Joker
+ KingHost
+ Knot (knsupdate)
+ LeaseWeb
+ lexicon
+ Linode (v3 / Deprecated)
+ Linode (v4)
+ Loopia
+ LuaDNS.com
+ MailinaBox
+ Name.com
+ Namecheap
+ Namesilo.com
+ Nederhost
+ netcup
+ Njalla
+ NS1.comnsupdate (RFC 2136)OPNsense BIND Plugin
- OVH, kimsufi, soyoustart and runabove API
- PowerDNS.com API
- Plesk XML API
- Porkbun API
+ OVH, kimsufi, soyoustart and runabove
+ PowerDNS.com
+ Plesk
+ PorkbunSchlundTech
- selectel.com / selectel.ru domain API
- Selfhost API
- Servercow API v1
- Simply.com API
- Transip API
- UnoEuro API
- Variomedia.de API
- Vscale API
- Vultr API
- Yandex PDD API
- Zilore DNS API
- Zone.eu API
- zonomi.com domain API
+ selectel.com / selectel.ru
+ Selfhost
+ Servercow
+ Simply.com
+ Transip
+ UnoEuro
+ Variomedia.de
+ Vscale
+ Vultr
+ Yandex PDD
+ Zilore
+ Zone.eu
+ zonomi.com
@@ -560,6 +560,9 @@
N
+
+ N
+ N
@@ -722,67 +725,67 @@
Ncloudflare
- Aliyun.com API
- AuroraDNS API
+ Aliyun.com
+ AuroraDNSAuto API
- Azure DNS API
- CloudFlare API
- ClouDNS API
- CloudXNS API
- ConoHa API
- Constellix API
- DigitalOcean API
- Dinahosting API
- DirectAdmin API
- DNSimple API
- DnsMadeEasy API
- DNSPark API
- DNSPod API
- Dreamhost API
- EasyDNS API
- Easyname API
- ExoScale API
- Gandi API
- Gehirn API
- Glesys API
- GoDaddy API
- Google Cloud DNS API
- GratisDNS API
- Hurricane Electric DNS API
- Hetzner API
- Hover API
- Infoblox API
- Internet.bs API
- INWX API
- Linode API
- Linode v4 API
- Localzone API
- LuaDNS API
- Memset API
- Namecheap API
- Namesilo API
- Netcup API
- NFSN API
- NS1 API
- OnApp API
- Online API
- OVH API
- Plesk API
- PointHQ API
- PowerDNS API
- Rackspace API
- Rage4 API
- Route 53 API
- SafeDNS API
- SakuraCloud API
- Softlayer API
- Subreg API
- Transip API
- Vultr API
- Yandex API
- Zeit API
- Zilore API
- Zonomi API
+ Azure
+ CloudFlare
+ ClouDNS
+ CloudXNS
+ ConoHa
+ Constellix
+ DigitalOcean
+ Dinahosting
+ DirectAdmin
+ DNSimple
+ DnsMadeEasy
+ DNSPark
+ DNSPod
+ Dreamhost
+ EasyDNS
+ Easyname
+ ExoScale
+ Gandi
+ Gehirn
+ Glesys
+ GoDaddy
+ Google Cloud
+ GratisDNS
+ Hurricane Electric
+ Hetzner
+ Hover
+ Infoblox
+ Internet.bs
+ INWX
+ Linode (v3 / Deprecated)
+ Linode (v4)
+ Localzone
+ LuaDNS
+ Memset
+ Namecheap
+ Namesilo
+ Netcup
+ NFSN
+ NS1
+ OnApp
+ Online
+ OVH
+ Plesk
+ PointHQ
+ PowerDNS
+ Rackspace
+ Rage4
+ Route 53
+ SafeDNS
+ SakuraCloud
+ Softlayer
+ Subreg
+ Transip
+ Vultr
+ Yandex
+ Zeit
+ Zilore
+ Zonomi
@@ -1126,6 +1129,7 @@
Upload certificate via SFTPRemote Command via SSHUpload certificate to FRITZ!Box router
+ Upload certificate to HashiCorp VaultUpload certificate to Synology DSMUpdate local Unifi keystoreSystem or Plugin Command
@@ -1156,9 +1160,9 @@
N1
- 49151
+ 6553522
- Should be a valid port number between 1 and 49151.
+ Should be a valid port number between 1 and 65535.N
@@ -1232,9 +1236,9 @@
N1
- 49151
+ 6553522
- Should be a valid port number between 1 and 49151.
+ Should be a valid port number between 1 and 65535.N
@@ -1322,6 +1326,20 @@
/usr/local/share/java/unifi/data/keystoreN
+
+ N
+ /^.{1,1024}$/u
+ Should be a string between 1 and 1024 characters.
+
+
+ acme
+ N
+ /^.{1,1024}$/u
+ Should be a string between 1 and 1024 characters.
+
+
+ 1
+