diff --git a/dns/dyndns/Makefile b/dns/dyndns/Makefile
index d3defe5fc..7f9f4bc5e 100644
--- a/dns/dyndns/Makefile
+++ b/dns/dyndns/Makefile
@@ -1,5 +1,5 @@
PLUGIN_NAME= dyndns
-PLUGIN_VERSION= 1.8
+PLUGIN_VERSION= 1.9
PLUGIN_COMMENT= Dynamic DNS Support
PLUGIN_MAINTAINER= franco@opnsense.org
diff --git a/dns/dyndns/src/etc/inc/plugins.inc.d/dyndns/phpDynDNS.inc b/dns/dyndns/src/etc/inc/plugins.inc.d/dyndns/phpDynDNS.inc
index 4c6278e5f..75dfff515 100644
--- a/dns/dyndns/src/etc/inc/plugins.inc.d/dyndns/phpDynDNS.inc
+++ b/dns/dyndns/src/etc/inc/plugins.inc.d/dyndns/phpDynDNS.inc
@@ -354,7 +354,7 @@ class updatedns
curl_setopt($ch, CURLOPT_USERAGENT, $this->_UserAgent);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_INTERFACE, $this->_dnsRequestIfIP);
- curl_setopt($ch, CURLOPT_TIMEOUT, 120); // Completely empirical
+ curl_setopt($ch, CURLOPT_TIMEOUT, 15);
}
switch ($this->_dnsService) {
@@ -521,7 +521,7 @@ class updatedns
curl_setopt($ch, CURLOPT_URL, 'https://freedns.afraid.org/dynamic/update.php?' . $this->_dnsPass);
break;
case 'dnsexit':
- curl_setopt($ch, CURLOPT_URL, 'https://www.dnsexit.com/RemoteUpdate.sv?login='.$this->_dnsUser. '&password='.$this->_dnsPass.'&host='.$this->_dnsHost.'&myip='.$this->_dnsIP);
+ curl_setopt($ch, CURLOPT_URL, 'https://www.dnsexit.com/RemoteUpdate.sv?login='.urlencode($this->_dnsUser). '&password='.$this->_dnsPass.'&host='.$this->_dnsHost.'&myip='.$this->_dnsIP);
break;
case 'loopia':
$this->_dnsWildcard = (isset($this->_dnsWildcard) && $this->_dnsWildcard == true) ? 'ON' : 'OFF';
@@ -547,7 +547,7 @@ class updatedns
break;
case 'staticcling':
- curl_setopt($ch, CURLOPT_URL, 'https://www.staticcling.org/update.html?login='.$this->_dnsUser.'&pass='.$this->_dnsPass);
+ curl_setopt($ch, CURLOPT_URL, 'https://www.staticcling.org/update.html?login='.urlencode($this->_dnsUser).'&pass='.$this->_dnsPass);
break;
case 'dnsomatic':
/* Example syntax
@@ -757,7 +757,7 @@ class updatedns
$server = "https://ssl.gratisdns.dk/ddns.phtml";
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true);
list($hostname, $domain) = explode(".", $this->_dnsHost, 2);
- curl_setopt($ch, CURLOPT_URL, $server . '?u=' . $this->_dnsUser . '&p=' . $this->_dnsPass . '&h=' . $this->_dnsHost . '&d=' . $domain);
+ curl_setopt($ch, CURLOPT_URL, $server . '?u=' . urlencode($this->_dnsUser) . '&p=' . $this->_dnsPass . '&h=' . $this->_dnsHost . '&d=' . $domain);
break;
case 'ovh-dynhost':
if (isset($this->_dnsWildcard) && $this->_dnsWildcard != "OFF") {
@@ -791,7 +791,7 @@ class updatedns
case 'duckdns':
$server = "https://www.duckdns.org/update";
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true);
- curl_setopt($ch, CURLOPT_URL, $server . '?domains=' . str_replace('.duckdns.org', '', $this->_dnsHost) . '&token=' . $this->_dnsUser);
+ curl_setopt($ch, CURLOPT_URL, $server . '?domains=' . str_replace('.duckdns.org', '', $this->_dnsHost) . '&token=' . urlencode($this->_dnsUser));
break;
case 'googledomains':
$server = "https://domains.google.com/nic/update";
@@ -826,7 +826,7 @@ class updatedns
case 'regfish':
case 'regfish-v6':
$family = $this->_useIPv6 ? 'ipv6' : 'ipv4';
- $server = "https://dyndns.regfish.de/?fqdn={$this->_dnsHost}&{$family}={$this->_dnsIP}&forcehost=1&token={$this->_dnsUser}";
+ $server = "https://dyndns.regfish.de/?fqdn={$this->_dnsHost}&{$family}={$this->_dnsIP}&forcehost=1&token=" . urlencode($this->_dnsUser);
curl_setopt($ch, CURLOPT_URL, $server);
break;
default:
@@ -1125,7 +1125,7 @@ class updatedns
} elseif ($output->errors[0]->code === 9103) {
$status = "Dynamic DNS ({$this->_dnsHost}): ERROR - Invalid Credentials! Don't forget to use API Key for password field with CloudFlare.";
} elseif (($output->success) && (!$output->result[0]->id)) {
- $status = "Dynamic DNS ({$this->_dnsHost}): ERROR - Zone or Host ID was not found, check your hostname.";
+ $status = "Dynamic DNS ({$this->_dnsHost}): ERROR - Zone or Host ID was not found, check that your hostname is correct and an A record already exists.";
} else {
$status = "Dynamic DNS ({$this->_dnsHost}): UNKNOWN ERROR - {$output->errors[0]->message}";
log_error("Dynamic DNS ({$this->_dnsHost}): PAYLOAD: {$data}");
diff --git a/dns/dyndns/src/www/services_dyndns_edit.php b/dns/dyndns/src/www/services_dyndns_edit.php
index 5baf4c6fc..14675eff7 100644
--- a/dns/dyndns/src/www/services_dyndns_edit.php
+++ b/dns/dyndns/src/www/services_dyndns_edit.php
@@ -38,7 +38,7 @@ function is_dyndns_username($uname)
{
if (!is_string($uname)) {
return false;
- } elseif (preg_match("/[^a-z0-9\-.@_:]/i", $uname)) {
+ } elseif (preg_match("/[^a-z0-9\-.@_:+]/i", $uname)) {
return false;
} else {
return true;
diff --git a/dns/dyndns/src/www/widgets/widgets/dyn_dns_status.widget.php b/dns/dyndns/src/www/widgets/widgets/dyn_dns_status.widget.php
index 3e67f40a7..2c22f72e4 100644
--- a/dns/dyndns/src/www/widgets/widgets/dyn_dns_status.widget.php
+++ b/dns/dyndns/src/www/widgets/widgets/dyn_dns_status.widget.php
@@ -1,32 +1,32 @@
-
=gettext("Interface");?>
- =gettext("Service");?>
- =gettext("Hostname");?>
- =gettext("Cached IP");?>
+ =gettext("Interface");?>
+ =gettext("Service");?>
+ =gettext("Hostname");?>
+ =gettext("Cached IP");?>