diff --git a/html/cgi-bin/ddns.cgi b/html/cgi-bin/ddns.cgi
index 4e51ab6fd..ae981a42f 100644
--- a/html/cgi-bin/ddns.cgi
+++ b/html/cgi-bin/ddns.cgi
@@ -254,6 +254,7 @@ $checked{'SERVICE'}{'ovh.com'} = '';
$checked{'SERVICE'}{'regfish.com'} = '';
$checked{'SERVICE'}{'selfhost.de'} = '';
$checked{'SERVICE'}{'strato.com'} = '';
+$checked{'SERVICE'}{'twodns.de'} = '';
$checked{'SERVICE'}{'tzo.com'} = '';
$checked{'SERVICE'}{'zoneedit.com'} = '';
$checked{'SERVICE'}{$settings{'SERVICE'}} = "selected='selected'";
@@ -350,6 +351,7 @@ print <regfish.com
+
diff --git a/src/scripts/setddns.pl b/src/scripts/setddns.pl
index f97e75074..939e9f254 100644
--- a/src/scripts/setddns.pl
+++ b/src/scripts/setddns.pl
@@ -650,6 +650,40 @@ if ($ip ne $ipcache) {
&General::log("Dynamic DNS ip-update for $settings{'HOSTDOMAIN'} : failure (could not connect to server, check your credentials---$out-$response--)");
}
}
+ elsif ($settings{'SERVICE'} eq 'twodns.de') {
+ # use proxy ?
+ my %proxysettings;
+ &General::readhash("${General::swroot}/proxy/settings", \%proxysettings);
+ if ($_=$proxysettings{'UPSTREAM_PROXY'}) {
+ my ($peer, $peerport) = (/^(?:[a-zA-Z ]+\:\/\/)?(?:[A-Za-z0-9\_\.\-]*?(?:\:[A-Za-z0-9\_\.\-]*?)?\@)?([a-zA-Z0-9\.\_\-]*?)(?:\:([0-9]{1,5}))?(?:\/.*?)?$/);
+ Net::SSLeay::set_proxy($peer,$peerport,$proxysettings{'UPSTREAM_USER'},$proxysettings{'UPSTREAM_PASSWORD'} );
+ }
+
+ if ($settings{'HOSTNAME'} eq '') {
+ $settings{'HOSTDOMAIN'} = $settings{'DOMAIN'};
+ } else {
+ $settings{'HOSTDOMAIN'} = "$settings{'HOSTNAME'}.$settings{'DOMAIN'}";
+ }
+
+ my ($out, $response) = Net::SSLeay::get_https( 'update.twodns.de',
+ 443,
+ "/update?hostname=$settings{'HOSTDOMAIN'}&ip=$ip",
+ Net::SSLeay::make_headers('User-Agent' => 'IPFire',
+ 'Authorization' => 'Basic ' . encode_base64("$settings{'LOGIN'}:$settings{'PASSWORD'}")) );
+
+ # Valid response are 'ok' 'nochange'
+ if ($response =~ m%HTTP/1\.. 200 OK%) {
+ if ( $out !~ m/^(good|nochg)/ ) {
+ $out =~ s/\n/ /g;
+ &General::log("Dynamic DNS ip-update for $settings{'HOSTDOMAIN'} : failure ($out)");
+ } else {
+ &General::log("Dynamic DNS ip-update for $settings{'HOSTDOMAIN'} : success");
+ $success++;
+ }
+ } else {
+ &General::log("Dynamic DNS ip-update for $settings{'HOSTDOMAIN'} : failure (could not connect to server, check your credentials---$out-$response--)");
+ }
+ }
else {
if ($settings{'WILDCARDS'} eq 'on') {
$settings{'WILDCARDS'} = '-w';