Browse code

IPv6-support für DynDNS

Bernd Wurst authored on14/05/2018 07:37:12
Showing5 changed files
... ...
@@ -124,6 +124,7 @@ output('<h4>Neuen DNS-Record anlegen</h4>
124 124
 
125 125
 <ul>
126 126
 <li>'.internal_link('dns_record_edit', 'DynDNS (Hostname für einen DynDNS-Account setzen)', 'id=new&type=dyndns&domain='.$domain->id).'</li>
127
+<li>'.internal_link('dns_record_edit', 'DynDNS/AAAA (Hostname für einen DynDNS-Account setzen, als IPv6-Adresse)', 'id=new&type=dyndns_aaaa&domain='.$domain->id).'</li>
127 128
 <li>'.internal_link('dns_record_edit', 'A (normaler Hostname/normale Subdomain)', 'id=new&type=a&domain='.$domain->id).'</li>
128 129
 <li>'.internal_link('dns_record_edit', 'MX (Posteingangsserver)', 'id=new&type=mx&domain='.$domain->id).'</li>
129 130
 </ul>
... ...
@@ -40,6 +40,12 @@ if (isset($_REQUEST['type']) && $_REQUEST['type'] == "dyndns")
40 40
   $_REQUEST['type'] = 'a';
41 41
   $dyndns = true;
42 42
 }
43
+if (isset($_REQUEST['type']) && $_REQUEST['type'] == "dyndns_aaaa")
44
+{
45
+  $_REQUEST['type'] = 'aaaa';
46
+  $dyndns = true;
47
+}
48
+
43 49
 
44 50
 $new = false;
45 51
 if ($_REQUEST['id'] == 'new')
... ...
@@ -31,7 +31,11 @@ if (!isset($_REQUEST['id']))
31 31
 $id = (int) $_REQUEST['id'];
32 32
 $dyndns = get_dyndns_account($id);
33 33
 
34
-  $record = blank_dns_record('a');
34
+  $type = 'a';
35
+  if ($_REQUEST['type'] == 'aaaa') {
36
+      $type = 'aaaa';
37
+  }
38
+  $record = blank_dns_record($type);
35 39
   // Sicherheitsprüfungen passieren im Backend
36 40
   
37 41
   $record['hostname'] = $_REQUEST['hostname'];
... ...
@@ -44,7 +44,8 @@ if ($records) {
44 44
 <ul>
45 45
 ';
46 46
   foreach ($records AS $record) {
47
-    $output .= '  <li>'.$record['fqdn'].' '.internal_link('dyndns_hostname_delete', icon_delete(), 'id='.$record['id']).'</li>';
47
+    $type = strtoupper($record['type']).' / '.($record['type'] == 'a' ? 'IPv4' : 'IPv6');
48
+    $output .= '  <li>'.$record['fqdn'].' ('.$type.') '.internal_link('dyndns_hostname_delete', icon_delete(), 'id='.$record['id']).'</li>';
48 49
   }
49 50
   $output .= '</ul>';
50 51
 }
... ...
@@ -52,7 +53,9 @@ if ($records) {
52 53
 
53 54
 output('<h4>Neuen Hostname festlegen</h4>');
54 55
 
55
-$form = '<p><label for="hostname">Neuer Hostname: </label></td><td><input type="text" name="hostname" id="hostname" value="'.$dyndns['handle'].'" />&#160;.&#160;'.html_select('domain', $available_domains).' <input type="submit" value="Speichern"/></p>';
56
+$form = '<p><label for="hostname">Neuer Hostname: </label> <input type="text" name="hostname" id="hostname" value="'.$dyndns['handle'].'" />&#160;.&#160;'.html_select('domain', $available_domains).' </p>
57
+<p>Typ: <select name="type"><option value="a" selected="selected">A / IPv4</option><option value="aaaa">AAAA / IPv6</option></select></p>
58
+<p><input type="submit" value="Speichern"/></p>';
56 59
 
57 60
 
58 61
 output(html_form('dyndns_hostname_add', 'dyndns_hostname_add', 'id='.$dyndns['id'], $form));
... ...
@@ -250,10 +250,15 @@ function save_dns_record($id, $record)
250 250
       }
251 251
       break;
252 252
     case 'aaaa':
253
-      $record['dyndns'] = NULL;
254
-      verify_input_ipv6($record['ip']);
255
-      $record['data'] = NULL;
256
-      $record['spec'] = NULL;
253
+      if ($record['dyndns']) {
254
+          get_dyndns_account( $record['dyndns'] );
255
+          $record['ip'] = NULL;
256
+      } else {
257
+          $record['dyndns'] = NULL;
258
+          verify_input_ipv6($record['ip']);
259
+          $record['data'] = NULL;
260
+          $record['spec'] = NULL;
261
+      }
257 262
       break;
258 263
     case 'mx':
259 264
       $record['dyndns'] = NULL;