diff --git a/src/etc/inc/dyndns.class b/src/etc/inc/dyndns.class
index 400da73756..5fd732f96d 100644
--- a/src/etc/inc/dyndns.class
+++ b/src/etc/inc/dyndns.class
@@ -800,7 +800,7 @@
if ($this->_dnsPort) {
$port = ":" . $this->_dnsPort;
}
- curl_setopt($ch, CURLOPT_URL, $server . $port . '?username=' . urlencode($this->_dnsUser) . '&password=' . $this->_dnsPass . '&host=' . $this->_dnsHost);
+ curl_setopt($ch, CURLOPT_URL, $server . $port . '?username=' . rawurlencode($this->_dnsUser) . '&password=' . rawurlencode($this->_dnsPass) . '&host=' . $this->_dnsHost);
break;
case 'ods':
$needsIP = FALSE;
@@ -845,19 +845,19 @@
case 'freedns':
case 'freedns-v6':
$needIP = TRUE;
- curl_setopt($ch, CURLOPT_URL, 'https://freedns.afraid.org/dynamic/update.php?' . $this->_dnsPass . '&address=' . $this->_dnsIP);
+ curl_setopt($ch, CURLOPT_URL, 'https://freedns.afraid.org/dynamic/update.php?' . rawurlencode($this->_dnsPass) . '&address=' . $this->_dnsIP);
break;
case 'freedns2':
$needIP = TRUE;
- curl_setopt($ch, CURLOPT_URL, 'https://sync.afraid.org/u/' . $this->_dnsPass . '/?hostname=' . $this->_dnsHost . '&myip=' . $this->_dnsIP);
+ curl_setopt($ch, CURLOPT_URL, 'https://sync.afraid.org/u/' . rawurlencode($this->_dnsPass) . '/?hostname=' . $this->_dnsHost . '&myip=' . $this->_dnsIP);
break;
case 'freedns2-v6':
$needIP = TRUE;
- curl_setopt($ch, CURLOPT_URL, 'https://v6.sync.afraid.org/u/' . $this->_dnsPass . '/?hostname=' . $this->_dnsHost . '&myip=' . $this->_dnsIP);
+ curl_setopt($ch, CURLOPT_URL, 'https://v6.sync.afraid.org/u/' . rawurlencode($this->_dnsPass) . '/?hostname=' . $this->_dnsHost . '&myip=' . $this->_dnsIP);
break;
case 'dnsexit':
$needsIP = TRUE;
- curl_setopt($ch, CURLOPT_URL, 'https://api.dnsexit.com/dns/ud/?apikey=' . $this->_dnsPass . '&host=' . $this->_dnsHost . '&ip=' . $this->_dnsIP);
+ curl_setopt($ch, CURLOPT_URL, 'https://api.dnsexit.com/dns/ud/?apikey=' . rawurlencode($this->_dnsPass) . '&host=' . $this->_dnsHost . '&ip=' . $this->_dnsIP);
break;
case 'loopia':
$needsIP = TRUE;
@@ -886,7 +886,7 @@
case 'staticcling':
$needsIP = FALSE;
- 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=' . rawurlencode($this->_dnsUser) . '&pass=' . urlencode($this->_dnsPass));
break;
case 'dnsomatic':
/* Example syntax
@@ -988,7 +988,7 @@
https://dynamicdns.park-your-domain.com/update?host=[host_name]&domain=[domain.com]&password=[domain_password]&ip=[your_ip]
*/
$needsIP = FALSE;
- $dnspass = trim($this->_dnsPass);
+ $dnspass = rawurlencode(trim($this->_dnsPass));
$server = "https://dynamicdns.park-your-domain.com/update?host={$this->_dnsHost}&domain={$this->_dnsDomain}&password={$dnspass}&ip={$this->_dnsIP}";
curl_setopt($ch, CURLOPT_URL, $server);
break;
@@ -1129,7 +1129,7 @@
$needsIP = FALSE;
$server = "https://dyn.dns.he.net/nic/update?";
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
- curl_setopt($ch, CURLOPT_URL, $server . 'hostname=' . $this->_dnsHost . '&password=' . $this->_dnsPass . '&myip=' . $this->_dnsIP);
+ curl_setopt($ch, CURLOPT_URL, $server . 'hostname=' . $this->_dnsHost . '&password=' . rawurlencode($this->_dnsPass) . '&myip=' . $this->_dnsIP);
break;
case 'he-net-tunnelbroker':
$needsIP = FALSE;
@@ -1268,7 +1268,7 @@
case 'gratisdns':
$needsIP = TRUE;
$server = "https://ssl.gratisdns.dk/ddns.phtml";
- curl_setopt($ch, CURLOPT_URL, $server . '?u=' . $this->_dnsUser . '&p=' . $this->_dnsPass . '&h=' . $this->_dnsHost . '&d=' . $this->_dnsDomain . '&i=' . $this->_dnsIP);
+ curl_setopt($ch, CURLOPT_URL, $server . '?u=' . rawurlencode($this->_dnsUser) . '&p=' . rawurlencode($this->_dnsPass) . '&h=' . $this->_dnsHost . '&d=' . $this->_dnsDomain . '&i=' . $this->_dnsIP);
break;
case 'ovh-dynhost':
$needsIP = FALSE;
@@ -1349,7 +1349,7 @@
$needsIP = TRUE;
$server = "https://cp.dnsmadeeasy.com/servlet/updateip";
$username = empty($this->_dnsUser) ? "" : "&username={$this->_dnsUser}";
- curl_setopt($ch, CURLOPT_URL, $server . '?password=' . $this->_dnsPass . '&id=' . $this->_dnsHost . '&ip=' . $this->_dnsIP . $username);
+ curl_setopt($ch, CURLOPT_URL, $server . '?password=' . rawurlencode($this->_dnsPass) . '&id=' . $this->_dnsHost . '&ip=' . $this->_dnsIP . $username);
break;
case 'spdyn':
case 'spdyn-v6':
@@ -1798,11 +1798,11 @@
break;
case 'dynv6':
$needIP = TRUE;
- curl_setopt($ch, CURLOPT_URL, 'https://dynv6.com/api/update?ipv4=' . $this->_dnsIP . '&hostname=' . $this->_dnsHost . '&token=' . $this->_dnsPass);
+ curl_setopt($ch, CURLOPT_URL, 'https://dynv6.com/api/update?ipv4=' . $this->_dnsIP . '&hostname=' . $this->_dnsHost . '&token=' . rawurlencode($this->_dnsPass));
break;
case 'dynv6-v6':
$needIP = TRUE;
- curl_setopt($ch, CURLOPT_URL, 'https://dynv6.com/api/update?ipv6=' . $this->_dnsIP . '&hostname=' . $this->_dnsHost . '&token=' . $this->_dnsPass);
+ curl_setopt($ch, CURLOPT_URL, 'https://dynv6.com/api/update?ipv6=' . $this->_dnsIP . '&hostname=' . $this->_dnsHost . '&token=' . rawurlencode($this->_dnsPass));
break;
case 'gandi-livedns':
case 'gandi-livedns-v6':