diff --git a/security/acme-client/Makefile b/security/acme-client/Makefile index dbcaa30d8..4b6be15b0 100644 --- a/security/acme-client/Makefile +++ b/security/acme-client/Makefile @@ -1,6 +1,5 @@ PLUGIN_NAME= acme-client PLUGIN_VERSION= 1.9 -PLUGIN_REVISION= 1 PLUGIN_COMMENT= Let's Encrypt client PLUGIN_MAINTAINER= opnsense@moov.de PLUGIN_DEPENDS= acme.sh bind911 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..692fa72d2 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 @@ -32,7 +32,6 @@ validation.http_service dropdown - @@ -88,7 +87,6 @@ validation.dns_service dropdown - validation.dns_sleep @@ -105,7 +103,6 @@ validation.dns_ad_key text - @@ -116,13 +113,11 @@ validation.dns_ali_key text - validation.dns_ali_secret text - @@ -133,13 +128,11 @@ validation.dns_aws_id text - validation.dns_aws_secret text - @@ -150,13 +143,11 @@ validation.dns_cf_email text - validation.dns_cf_key text - @@ -167,49 +158,61 @@ validation.dns_cx_key text - validation.dns_cx_secret text - - - header - - + + header + validation.dns_cyon_user text - validation.dns_cyon_password text - - - header - - + + header + + + + validation.dns_dgon_key + + text + + + + header + + + + validation.dns_dnsimple_token + + text + + + + header + validation.dns_do_pid text - validation.dns_do_password text - @@ -220,43 +223,81 @@ validation.dns_dp_id text - validation.dns_dp_key text - - - header - - + + 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 + validation.dns_freedns_user text - validation.dns_freedns_password text - - - header - - + + header + validation.dns_gandi_livedns_key text - @@ -267,13 +308,43 @@ validation.dns_gd_key text - validation.dns_gd_secret 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. @@ -284,25 +355,21 @@ validation.dns_ispconfig_user text - validation.dns_ispconfig_password text - validation.dns_ispconfig_api text - validation.dns_ispconfig_insecure checkbox - @@ -313,31 +380,26 @@ validation.dns_lexicon_provider dropdown - validation.dns_lexicon_user text - validation.dns_lexicon_token text - - - header - - + + header + validation.dns_linode_key text - @@ -348,13 +410,11 @@ validation.dns_lua_email text - validation.dns_lua_key text - @@ -365,13 +425,36 @@ validation.dns_me_key text - validation.dns_me_secret text - + + + + header + + + + validation.dns_namecom_user + + text + + + validation.dns_namecom_token + + text + + + + header + + + + validation.dns_nsone_key + + text @@ -382,7 +465,6 @@ validation.dns_nsupdate_server text - validation.dns_nsupdate_key @@ -399,19 +481,16 @@ validation.dns_ovh_app_key text - validation.dns_ovh_app_secret text - validation.dns_ovh_consumer_key text - validation.dns_ovh_endpoint @@ -440,6 +519,25 @@ validation.dns_pdns_token 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 cce421604..da8ba20ec 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/mvc/app/views/OPNsense/AcmeClient/certificates.volt b/security/acme-client/src/opnsense/mvc/app/views/OPNsense/AcmeClient/certificates.volt index d7ecdc49b..c479ca808 100644 --- a/security/acme-client/src/opnsense/mvc/app/views/OPNsense/AcmeClient/certificates.volt +++ b/security/acme-client/src/opnsense/mvc/app/views/OPNsense/AcmeClient/certificates.volt @@ -119,25 +119,6 @@ POSSIBILITY OF SUCH DAMAGE. }, }; - /** - * standard dialog when confirmation is required, wrapper around BootstrapDialog - */ - function stdDialogConfirmation(message, callback) { - BootstrapDialog.confirm({ - title: 'Confirmation Required', - message: message, - type:BootstrapDialog.TYPE_DANGER, - btnCancelLabel: 'Cancel', - btnOKLabel: 'Yes', - btnOKClass: 'btn-primary', - callback: function(result) { - if(result) { - callback(); - } - } - }); - } - /** * reload bootgrid, return to current selected page */ @@ -198,7 +179,9 @@ POSSIBILITY OF SUCH DAMAGE. // link delete selected items action $(this).find("*[data-action=deleteSelected]").click(function(){ if ( gridParams['del'] != undefined) { - stdDialogRemoveItem("Remove selected items?",function(){ + stdDialogConfirm('{{ lang._('Confirm removal') }}', + '{{ lang._('Do you want to remove the selected item?') }}', + '{{ lang._('Yes') }}', '{{ lang._('Cancel') }}', function () { var rows =$("#"+gridId).bootgrid('getSelectedRows'); if (rows != undefined){ var deferreds = []; @@ -300,7 +283,9 @@ POSSIBILITY OF SUCH DAMAGE. { if (gridParams['del'] != undefined) { var uuid=$(this).data("row-id"); - stdDialogRemoveItem('Remove selected item?',function() { + stdDialogConfirm('{{ lang._('Confirm removal') }}', + '{{ lang._('Do you want to remove the selected item?') }}', + '{{ lang._('Yes') }}', '{{ lang._('Cancel') }}', function () { ajaxCall(url=gridParams['del'] + uuid, sendData={},callback=function(data,status){ // reload grid after delete @@ -334,7 +319,9 @@ POSSIBILITY OF SUCH DAMAGE. { if (gridParams['sign'] != undefined) { var uuid=$(this).data("row-id"); - stdDialogConfirmation('Forcefully (re-)issue the selected certificate?',function() { + stdDialogConfirm('{{ lang._('Confirmation Required') }}', + '{{ lang._('Forcefully (re-)issue the selected certificate?') }}', + '{{ lang._('Yes') }}', '{{ lang._('Cancel') }}', function() { // Handle HAProxy integration (no-op if not applicable) ajaxCall(url="/api/acmeclient/settings/fetchHAProxyIntegration", sendData={}, callback=function(data,status) { ajaxCall(url=gridParams['sign'] + uuid,sendData={},callback=function(data,status){ @@ -354,13 +341,15 @@ POSSIBILITY OF SUCH DAMAGE. { if (gridParams['revoke'] != undefined) { var uuid=$(this).data("row-id"); - stdDialogConfirmation('Revoke selected certificate?',function() { + stdDialogConfirm('{{ lang._('Confirmation Required') }}', + '{{ lang._('Revoke selected certificate?') }}', + '{{ lang._('Yes') }}', '{{ lang._('Cancel') }}', function() { ajaxCall(url=gridParams['revoke'] + uuid, sendData={},callback=function(data,status){ // reload grid after sign $("#"+gridId).bootgrid("reload"); }); - }); + }, 'danger'); } else { console.log("[grid] action revoke missing") } 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);