]> git.ipfire.org Git - people/teissler/ipfire-2.x.git/commitdiff
ddns.cgi: Support hostname details without seperating dots.
authorStefan Schantl <stefan.schantl@ipfire.org>
Sat, 26 Jul 2014 16:26:37 +0000 (18:26 +0200)
committerStefan Schantl <stefan.schantl@ipfire.org>
Sun, 27 Jul 2014 10:06:27 +0000 (12:06 +0200)
To keep compatiblity with the settings file of the old DDNS update script
(setddns.pl) we keept the storrage of the hostname information in
two parts (hostname and domain) and connected both with a dot to get a valid
FQDN again. OpenDNS and may some other providers do not use a dotted format
for this information, so one of these two values were empty.

We now can handle such cases in a right way.

html/cgi-bin/ddns.cgi

index 7be9a50f073bd64560560204efb749014ef386fb..aeb0cd733296b44005edcffb3648977b088f6943 100644 (file)
@@ -314,8 +314,17 @@ if ($settings{'ACTION'} eq $Lang::tr{'edit'}) {
                        # Splitt lines (splitting element is a single ",") and save values into temp array.
                        @temp = split(/\,/,$line);
 
+                       # Handle hostname details. Only connect the values with a dott if both are available.
+                       my $hostname;
+
+                       if (($temp[1]) && ($temp[2])) {
+                               $hostname = "$temp[1].$temp[2]";
+                       } else {
+                               $hostname = "$temp[1]";
+                       }
+
                        $settings{'SERVICE'} = $temp[0];
-                       $settings{'HOSTNAME'} = "$temp[1].$temp[2]";
+                       $settings{'HOSTNAME'} = $hostname;
                        $settings{'PROXY'} = $temp[3];
                        $settings{'WILDCARDS'} = $temp[4];
                        $settings{'LOGIN'} = $temp[5];
@@ -536,11 +545,20 @@ END
                        $col="bgcolor='$color{'color22'}'";
                }
 
+               # Handle hostname details. Only connect the values with a dott if both are available.
+               my $hostname="";
+
+               if (($temp[1]) && ($temp[2])) {
+                       $hostname="$temp[1].$temp[2]";
+               } else {
+                       $hostname="$temp[1]";
+               }
+
                # The following HTML Code still is part of the loop.
                print <<END;
 <tr>
        <td align='center' $col><a href='http://$temp[0]'>$temp[0]</a></td>
-       <td align='center' $col>$sync$temp[1].$sync$temp[2]</td>
+       <td align='center' $col>$sync$hostname</td>
 
        <td align='center' $col><form method='post' action='$ENV{'SCRIPT_NAME'}'>
                <input type='hidden' name='ID' value='$id'>
@@ -641,7 +659,13 @@ sub GenerateDDNSConfigFile {
                # Skip disabled entries.
                next if ($enabled eq "off");
 
-               print FILE "[$hostname.$domain]\n";
+               # Handle hostname details. Only connect the values with a dott if both are available.
+               if (($hostname) && ($domain)) {
+                       print FILE "[$hostname.$domain]\n";
+               } else {
+                       print FILE "[$hostname]\n";
+               }
+
                print FILE "provider = $provider\n";
 
                my $use_token = 0;