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 b5de4608c..92e25735f 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
@@ -193,6 +193,30 @@
text
+
+
+ header
+
+
+
+
+ validation.dns_dgon_key
+
+ text
+
+
+
+
+ header
+
+
+
+
+ validation.dns_dnsimple_token
+
+ text
+
+
header
@@ -228,6 +252,58 @@
text
+
+
+ header
+
+
+
+ validation.dns_duckdns_token
+
+ text
+
+
+
+
+ header
+
+
+
+ validation.dns_dyn_customer
+
+ text
+
+
+
+ validation.dns_dyn_user
+
+ text
+
+
+
+ validation.dns_dyn_password
+
+ text
+
+
+
+
+
+ header
+
+
+
+ validation.dns_dynu_clientid
+
+ text
+
+
+
+ validation.dns_dynu_secret
+
+ text
+
+
header
@@ -275,6 +351,40 @@
text
+
+
+ header
+
+
+
+ validation.dns_he_user
+
+ text
+
+
+
+ validation.dns_he_password
+
+ text
+
+
+
+
+ header
+
+
+
+ validation.dns_infoblox_credentials
+
+ text
+ Use the following format: username:password
+
+
+ validation.dns_infoblox_server
+
+ text
+ Enter either the IP address or FQDN of your Infoblox appliance.
+
header
@@ -373,6 +483,34 @@
text
+
+
+ header
+
+
+
+ validation.dns_namecom_user
+
+ text
+
+
+
+ validation.dns_namecom_token
+
+ text
+
+
+
+
+ header
+
+
+
+ validation.dns_nsone_key
+
+ text
+
+
header
@@ -442,4 +580,26 @@
text
+
+
+ header
+
+
+
+ validation.dns_vscale_key
+
+ text
+
+
+
+
+ header
+
+
+
+ validation.dns_yandex_token
+
+ text
+
+
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 1b6d82f43..aee2e2119 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
@@ -325,19 +325,30 @@
CloudFlare.com API
CloudXNS.com API
cyon.ch API
- Domain-Offensive API
+ DigitalOcean API
+ DNSimple API
+ DNSMadeEasy.com API
+ Domain-Offensive/Resellerinterface/Domainrobot API
DNSPod.cn API
+ DuckDNS API
+ Dyn Managed DNS API
+ Dynu API
FreeDNS API
Gandi LiveDNS API
GoDaddy.com API
+ Hurricane Electric
+ Infoblox API
ISPConfig 3.1+ API
lexicon DNS API
Linode API
LuaDNS.com API
- DNSMadeEasy.com API
+ Name.com API
+ NS1.com API
nsupdate (RFC 2136)
OVH, kimsufi, soyoustart and runabove API
PowerDNS.com API
+ Vscale API
+ Yandex PDD API
diff --git a/security/acme-client/src/opnsense/scripts/OPNsense/AcmeClient/certhelper.php b/security/acme-client/src/opnsense/scripts/OPNsense/AcmeClient/certhelper.php
index 59aca7547..4aecac91d 100755
--- a/security/acme-client/src/opnsense/scripts/OPNsense/AcmeClient/certhelper.php
+++ b/security/acme-client/src/opnsense/scripts/OPNsense/AcmeClient/certhelper.php
@@ -607,6 +607,12 @@ function run_acme_validation($certObj, $valObj, $acctObj)
$proc_env['CY_Username'] = (string)$valObj->dns_cyon_user;
$proc_env['CY_Password'] = (string)$valObj->dns_cyon_user;
break;
+ case 'dns_dgon':
+ $proc_env['DO_API_KEY'] = (string)$valObj->dns_dgon_key;
+ break;
+ case 'dns_dnsimple':
+ $proc_env['DNSimple_OAUTH_TOKEN'] = (string)$valObj->dns_dnsimple_token;
+ break;
case 'dns_do':
$proc_env['DO_PID'] = (string)$valObj->dns_do_pid;
$proc_env['DO_PW'] = (string)$valObj->dns_do_password;
@@ -615,6 +621,18 @@ function run_acme_validation($certObj, $valObj, $acctObj)
$proc_env['DP_Id'] = (string)$valObj->dns_dp_id;
$proc_env['DP_Key'] = (string)$valObj->dns_dp_key;
break;
+ case 'dns_duckdns':
+ $proc_env['DuckDNS_Token'] = (string)$valObj->dns_duckdns_token;
+ break;
+ case 'dns_dyn':
+ $proc_env['DYN_Customer'] = (string)$valObj->dns_dyn_customer;
+ $proc_env['DYN_Username'] = (string)$valObj->dns_dyn_user;
+ $proc_env['DYN_Password'] = (string)$valObj->dns_dyn_password;
+ break;
+ case 'dns_dynu':
+ $proc_env['Dynu_ClientId'] = (string)$valObj->dns_dynu_clientid;
+ $proc_env['Dynu_Secret'] = (string)$valObj->dns_dynu_secret;
+ break;
case 'dns_freedns':
$proc_env['FREEDNS_User'] = (string)$valObj->dns_freedns_user;
$proc_env['FREEDNS_Password'] = (string)$valObj->dns_freedns_password;
@@ -626,6 +644,14 @@ function run_acme_validation($certObj, $valObj, $acctObj)
$proc_env['GD_Key'] = (string)$valObj->dns_gd_key;
$proc_env['GD_Secret'] = (string)$valObj->dns_gd_secret;
break;
+ case 'dns_he':
+ $proc_env['HE_Username'] = (string)$valObj->dns_he_user;
+ $proc_env['HE_Password'] = (string)$valObj->dns_he_password;
+ break;
+ case 'dns_infoblox':
+ $proc_env['Infoblox_Creds'] = (string)$valObj->dns_infoblox_credentials;
+ $proc_env['Infoblox_Server'] = (string)$valObj->dns_infoblox_server;
+ break;
case 'dns_ispconfig':
$proc_env['ISPC_User'] = (string)$valObj->dns_ispconfig_user;
$proc_env['ISPC_Password'] = (string)$valObj->dns_ispconfig_password;
@@ -655,6 +681,13 @@ function run_acme_validation($certObj, $valObj, $acctObj)
$proc_env['ME_Key'] = (string)$valObj->dns_me_key;
$proc_env['ME_Secret'] = (string)$valObj->dns_me_secret;
break;
+ case 'dns_namecom':
+ $proc_env['Namecom_Username'] = (string)$valObj->dns_namecom_user;
+ $proc_env['Namecom_Token'] = (string)$valObj->dns_namecom_token;
+ break;
+ case 'dns_nsone':
+ $proc_env['NS1_Key'] = (string)$valObj->dns_nsone_key;
+ break;
case 'dns_nsupdate':
// Write secret key to filesystem
$secret_key_data = (string)$valObj->dns_nsupdate_key . "\n";
@@ -674,6 +707,12 @@ function run_acme_validation($certObj, $valObj, $acctObj)
$proc_env['PDNS_ServerId'] = (string)$valObj->dns_pdns_serverid;
$proc_env['PDNS_Token'] = (string)$valObj->dns_pdns_token;
break;
+ case 'dns_vscale':
+ $proc_env['VSCALE_API_KEY'] = (string)$valObj->dns_vscale_key;
+ break;
+ case 'dns_yandex':
+ $proc_env['PDD_Token'] = (string)$valObj->dns_yandex_token;
+ break;
default:
log_error("AcmeClient: invalid DNS-01 service specified: " . (string)$valObj->dns_service);
return(1);