diff --git a/security/pfSense-pkg-acme/Makefile b/security/pfSense-pkg-acme/Makefile
index 84bda7d48ece..490d37274432 100644
--- a/security/pfSense-pkg-acme/Makefile
+++ b/security/pfSense-pkg-acme/Makefile
@@ -12,6 +12,8 @@ COMMENT= pfSense package acme
USE_PHP= ftp
+RUN_DEPENDS= samba-nsupdate:dns/samba-nsupdate
+
CONFLICTS=
NO_BUILD= yes
diff --git a/security/pfSense-pkg-acme/files/usr/local/pkg/acme/acme.inc b/security/pfSense-pkg-acme/files/usr/local/pkg/acme/acme.inc
index 53b24faaccd8..a36e9563f921 100644
--- a/security/pfSense-pkg-acme/files/usr/local/pkg/acme/acme.inc
+++ b/security/pfSense-pkg-acme/files/usr/local/pkg/acme/acme.inc
@@ -196,7 +196,7 @@ $acme_domain_validation_method['dns_me'] = array(name => "DNS-DNSMadeEasy",
'description' =>"Fill in the API Secret"
)
));
-/*$acme_domain_validation_method['dns_nsupdate'] = array(name => "DNS-NSupdate",
+$acme_domain_validation_method['dns_nsupdate'] = array(name => "DNS-NSupdate",
'fields' => array(
'NSUPDATE_SERVER' => array('name'=>"NSUPDATE_SERVER",'columnheader'=>"Key",'type'=>"textbox",
'description' =>"Fill in the API Key"
@@ -204,7 +204,7 @@ $acme_domain_validation_method['dns_me'] = array(name => "DNS-DNSMadeEasy",
'NSUPDATE_KEY' => array('name'=>"NSUPDATE_KEY",'columnheader'=>"Id",'type'=>"textarea",
'description' =>"Fill in the API Id"
)
- ));needs a file reference..*/
+ ));
$acme_domain_validation_method['dns_ovh'] = array(name => "DNS-ovh / kimsufi / soyoustart / runabove",
'fields' => array(
'OVH_AK' => array('name'=>"OVH_AK",'columnheader'=>"Application Key",'type'=>"textbox",
diff --git a/security/pfSense-pkg-acme/files/usr/local/pkg/acme/acme_gui.inc b/security/pfSense-pkg-acme/files/usr/local/pkg/acme/acme_gui.inc
index 0be1b4d760bc..ac4b2854de2c 100644
--- a/security/pfSense-pkg-acme/files/usr/local/pkg/acme/acme_gui.inc
+++ b/security/pfSense-pkg-acme/files/usr/local/pkg/acme/acme_gui.inc
@@ -32,7 +32,7 @@ $acme_icons = array(
"icon" => "icon_down.gif",
"iconsize" => 17),
'add' => array(
- "faicon" => "fa-level-down",
+ "faicon" => "fa-plus",
"icon" => "icon_plus.gif",
"iconsize" => 17),
'delete' => array(
diff --git a/security/pfSense-pkg-acme/files/usr/local/pkg/acme/acme_htmllist.inc b/security/pfSense-pkg-acme/files/usr/local/pkg/acme/acme_htmllist.inc
index f641207fedc4..ad5cb10b657d 100644
--- a/security/pfSense-pkg-acme/files/usr/local/pkg/acme/acme_htmllist.inc
+++ b/security/pfSense-pkg-acme/files/usr/local/pkg/acme/acme_htmllist.inc
@@ -332,9 +332,9 @@ EOT
}
$result .= "
-
- ".acmeicon('add','add another entry')."
-
+
";
return $result;
}
diff --git a/security/pfSense-pkg-acme/files/usr/local/pkg/acme/acme_sh.inc b/security/pfSense-pkg-acme/files/usr/local/pkg/acme/acme_sh.inc
index bfdb46af10d6..22724efceb7d 100644
--- a/security/pfSense-pkg-acme/files/usr/local/pkg/acme/acme_sh.inc
+++ b/security/pfSense-pkg-acme/files/usr/local/pkg/acme/acme_sh.inc
@@ -80,7 +80,12 @@ class acme_sh {
function generateAccountKey() {
unlink_if_exists("{$this->path_account}/account.key");
$this->debug = false;
- $this->execacmesh("--home {$this->acmeconf} --createAccountKey --accountkeylength 4096 --accountconf {$this->accountconfig}");
+ $this->execacmesh(""
+ . " --home " . escapeshellarg($this->acmeconf)
+ . " --createAccountKey"
+ . " --accountkeylength 4096"
+ . " --accountconf " . escapeshellarg($this->accountconfig)
+ );
$privateKey = file_get_contents("{$this->path_account}/account.key");
return $privateKey;
}
@@ -88,11 +93,11 @@ class acme_sh {
function registeraccount($key) {
file_put_contents("{$this->path_account}/account.key", $key);
$result = $this->execacmesh(""
- . " --home {$this->acmeconf}"
+ . " --home " . escapeshellarg($this->acmeconf)
. " --registeraccount"
- . " --accountconf {$this->accountconfig}"
+ . " --accountconf " . escapeshellarg($this->accountconfig)
. " --log-level 3"
- . " --log {$this->acmeconf}acme_issuecert.log");
+ . " --log " . escapeshellarg($this->acmeconf."acme_issuecert.log"));
return $result == 0;
}
@@ -104,15 +109,16 @@ class acme_sh {
}
$certpath = "{$this->acmeconf}{$domain}{$pathadd}";
safe_mkdir($certpath);
-
+
unlink_if_exists("{$certpath}/{$domain}.key");
$this->execacmesh(""
- . " --home {$this->acmeconf}"
- . " --accountconf {$this->accountconfig}"
- . " --createDomainKey -d $domain"
- . " --keylength $keylength"
+ . " --home " . escapeshellarg($this->acmeconf)
+ . " --accountconf " . escapeshellarg($this->accountconfig)
+ . " --createDomainKey -d " . escapeshellarg($domain)
+ . " --keylength " . escapeshellarg($keylength)
. " --log-level 3"
- . " --log {$this->acmeconf}acme_createdomainkey.log");
+ . " --log " . escapeshellarg($this->acmeconf."acme_createdomainkey.log")
+ );
$privateKey = file_get_contents("{$certpath}/{$domain}.key");
return $privateKey;
}
diff --git a/security/pfSense-pkg-acme/files/usr/local/www/acme/acme_accountkeys.php b/security/pfSense-pkg-acme/files/usr/local/www/acme/acme_accountkeys.php
index c34e7a67017e..6602670e96df 100644
--- a/security/pfSense-pkg-acme/files/usr/local/www/acme/acme_accountkeys.php
+++ b/security/pfSense-pkg-acme/files/usr/local/www/acme/acme_accountkeys.php
@@ -195,7 +195,7 @@