diff --git a/security/acme-client/Makefile b/security/acme-client/Makefile
index def551fa6..59f807ac8 100644
--- a/security/acme-client/Makefile
+++ b/security/acme-client/Makefile
@@ -1,5 +1,5 @@
PLUGIN_NAME= acme-client
-PLUGIN_VERSION= 3.2
+PLUGIN_VERSION= 3.3
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 a7dc6c18e..304aa7509 100644
--- a/security/acme-client/pkg-descr
+++ b/security/acme-client/pkg-descr
@@ -8,6 +8,18 @@ WWW: https://github.com/acmesh-official/acme.sh
Plugin Changelog
================
+3.3
+
+Added:
+* add support for custom ACME CAs (#2529)
+* add support for Porkbun API (#2561)
+
+Fixed:
+* fix ACME Client reset (#2562)
+
+Changed:
+* change default Challenge Type from HTTP-01 to DNS-01
+
3.2
Added:
diff --git a/security/acme-client/src/opnsense/mvc/app/controllers/OPNsense/AcmeClient/forms/dialogAccount.xml b/security/acme-client/src/opnsense/mvc/app/controllers/OPNsense/AcmeClient/forms/dialogAccount.xml
index c19bff4f8..0b9139308 100644
--- a/security/acme-client/src/opnsense/mvc/app/controllers/OPNsense/AcmeClient/forms/dialogAccount.xml
+++ b/security/acme-client/src/opnsense/mvc/app/controllers/OPNsense/AcmeClient/forms/dialogAccount.xml
@@ -33,9 +33,14 @@
dropdown
acme.sh documentation for a list of supported CAs.]]>
+
+
+ header
+
+
account.custom_ca
-
+
text
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 4faa6b778..2f8e45bd4 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
@@ -1338,4 +1338,19 @@
text
+
+
+ header
+
+
+
+ validation.dns_porkbun_key
+
+ text
+
+
+ validation.dns_porkbun_secret
+
+ password
+
diff --git a/security/acme-client/src/opnsense/mvc/app/library/OPNsense/AcmeClient/LeValidation/DnsPorkbun.php b/security/acme-client/src/opnsense/mvc/app/library/OPNsense/AcmeClient/LeValidation/DnsPorkbun.php
new file mode 100644
index 000000000..872b85baf
--- /dev/null
+++ b/security/acme-client/src/opnsense/mvc/app/library/OPNsense/AcmeClient/LeValidation/DnsPorkbun.php
@@ -0,0 +1,45 @@
+acme_env['PORKBUN_API_KEY'] = (string)$this->config->dns_porkbun_key;
+ $this->acme_env['PORKBUN_SECRET_API_KEY'] = (string)$this->config->dns_porkbun_secret;
+ }
+}
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 0ec434d22..5bac98072 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
@@ -1,6 +1,6 @@
//OPNsense/AcmeClient
- 3.0.0
+ 3.1.0
A secure ACME Client plugin
@@ -152,7 +152,7 @@
N
/^https?:\/\/.*[^\/]$/
- The url must be a valid ACME endpoint without a trailing slash.
+ The URL must be a valid ACME endpoint without a trailing slash.
N
@@ -335,7 +335,7 @@
Y
- http01
+ dns01
HTTP-01
DNS-01
@@ -386,7 +386,7 @@
Y
- dns_nsupdate
+ dns_freedns
1984Hosting API
ACME DNS API
@@ -454,6 +454,7 @@
OVH, kimsufi, soyoustart and runabove API
PowerDNS.com API
Plesk XML API
+ Porkbun API
SchlundTech
selectel.com / selectel.ru domain API
Servercow API v1
@@ -884,6 +885,12 @@
N
+
+ N
+
+
+ N
+
N
diff --git a/security/acme-client/src/opnsense/mvc/app/views/OPNsense/AcmeClient/accounts.volt b/security/acme-client/src/opnsense/mvc/app/views/OPNsense/AcmeClient/accounts.volt
index dfa7eb6cf..d9e417ebd 100644
--- a/security/acme-client/src/opnsense/mvc/app/views/OPNsense/AcmeClient/accounts.volt
+++ b/security/acme-client/src/opnsense/mvc/app/views/OPNsense/AcmeClient/accounts.volt
@@ -317,6 +317,16 @@ POSSIBILITY OF SUCH DAMAGE.
});
+ // hook into on-show event for dialog to extend layout.
+ $('#DialogAccount').on('shown.bs.modal', function (e) {
+ // hide options that are irrelevant for the selected CA
+ $("#account\\.ca").change(function(){
+ $(".ca_options").hide();
+ $(".ca_options_"+$(this).val()).show();
+ });
+ $("#account\\.ca").change();
+ })
+
});