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 @@ - - - - + + + + @@ -101,7 +101,7 @@ if (!empty($_REQUEST['getdyndnsstatus'])) { $groupslist = return_gateway_groups_array(); foreach ($a_dyndns as $i => $dyndns) :?> - > + > $ifdesc) { if ($dyndns['interface'] == $if) { @@ -116,7 +116,7 @@ if (!empty($_REQUEST['getdyndnsstatus'])) { } }?> - > + > - > + > - > + >