Bernd Wurst commited on 2014-03-25 09:50:08
Zeige 3 geänderte Dateien mit 171 Einfügungen und 5 Löschungen.
... | ... |
@@ -15,6 +15,7 @@ Nevertheless, in case you use a significant part of this code, we ask (but not r |
15 | 15 |
*/ |
16 | 16 |
|
17 | 17 |
require_once('inc/base.php'); |
18 |
+require_once('inc/icons.php'); |
|
18 | 19 |
require_once('inc/security.php'); |
19 | 20 |
|
20 | 21 |
require_role(ROLE_SYSTEMUSER); |
... | ... |
@@ -30,18 +31,47 @@ output('<p>Hier sehen Sie eine Übersicht über die angelegten DNS-records zu Ih |
30 | 31 |
//$output .= '<table><tr><th>Hostname</th><th>Typ</th><th>IP-Adresse/Inhalt</th><th>TTL</th><th> </th></tr> |
31 | 32 |
//'; |
32 | 33 |
|
33 |
-$output .= '<table><tr><th>Domainname</th><th>Manuelle records</th><th>Automatische records</th></tr>'; |
|
34 |
+$output .= '<table><tr><th>Domainname</th><th>Manuelle records</th><th>Automatische records</th><th>Status</th></tr>'; |
|
34 | 35 |
|
35 | 36 |
DEBUG($domains); |
36 | 37 |
|
38 |
+$external_domains = False; |
|
39 |
+$unused_dns = False; |
|
37 | 40 |
foreach($domains AS $dom) |
38 | 41 |
{ |
39 |
- if ($dom->dns == 0) |
|
42 |
+ if ($dom->provider != 'terions') { |
|
43 |
+ $external_domains = True; |
|
44 |
+ } |
|
45 |
+ $style=""; |
|
46 |
+ if ($dom->dns == 0) { |
|
47 |
+ if (strstr($dom->domainname, '.')) { |
|
48 |
+ $output .= '<tr style="color: #999;"><td>'.$dom->fqdn.'</td><td>---</td><td>---</td><td>'.icon_disabled('DNS-Server ausgeschaltet').' DNS-Server für Subdomains bitte mit dem Support besprechen</td></tr>'; |
|
49 |
+ } else { |
|
50 |
+ $output .= '<tr style="color: #999;"><td>'.$dom->fqdn.'</td><td>---</td><td>---</td><td>'.icon_disabled('DNS-Server ausgeschaltet').' '.internal_link('save', icon_add().' Einschalten', "dom={$dom->id}&dns=1").'</td></tr>'; |
|
51 |
+ } |
|
40 | 52 |
continue; |
53 |
+ } |
|
41 | 54 |
$records = get_domain_records($dom->id); |
42 | 55 |
|
43 | 56 |
$autorec = ($dom->autodns == 1 ? 'Ja' : 'Nein'); |
44 |
- $output .= '<tr><td>'.internal_link('dns_domain', $dom->fqdn, "dom={$dom->id}").'</td><td>'.count($records).'</td><td>'.$autorec.'</td></tr>'; |
|
57 |
+ if ($dom->provider != 'terions' || $dom->billing != 'regular') { |
|
58 |
+ $state = check_dns($dom->domainname, $dom->tld); |
|
59 |
+ if ($state !== True) { |
|
60 |
+ $current = 'Momentaner DNS-Server (u.A.): '.$state; |
|
61 |
+ if ($state == 'NXDOMAIN') { |
|
62 |
+ $current = 'Diese Domain ist aktuell nicht registriert.'; |
|
63 |
+ } |
|
64 |
+ if (substr_compare($state, config('masterdomain'), -strlen(config('masterdomain')), strlen(config('masterdomain'))) === 0) { |
|
65 |
+ $output .= '<tr><td>'.internal_link('dns_domain', $dom->fqdn, "dom={$dom->id}").'</td><td>'.count($records).'</td><td>'.$autorec.'</td><td>'.icon_enabled('DNS-Server aktiv').icon_warning('Es werden veraltete DNS-Server benutzt').' '.$current.'</td></tr>'; |
|
66 |
+ continue; |
|
67 |
+ } else { |
|
68 |
+ $output .= '<tr><td>'.internal_link('dns_domain', $dom->fqdn, "dom={$dom->id}").'</td><td>'.count($records).'</td><td>'.$autorec.'</td><td>'.icon_enabled('DNS-Server aktiv').icon_warning('DNS-Server eingeschaltet aber nicht genutzt').' '.$current.'<br />'.internal_link('save', icon_delete().' Abschalten', "dom={$dom->id}&dns=0").'</td></tr>'; |
|
69 |
+ $unused_dns = True; |
|
70 |
+ continue; |
|
71 |
+ } |
|
72 |
+ } |
|
73 |
+ } |
|
74 |
+ $output .= '<tr><td>'.internal_link('dns_domain', $dom->fqdn, "dom={$dom->id}").'</td><td>'.count($records).'</td><td>'.$autorec.'</td><td>'.icon_enabled('DNS-Server aktiv').'</td></tr>'; |
|
45 | 75 |
|
46 | 76 |
/* if ($records) |
47 | 77 |
{ |
... | ... |
@@ -62,4 +92,23 @@ foreach($domains AS $dom) |
62 | 92 |
|
63 | 93 |
$output .= '</table><br />'; |
64 | 94 |
|
95 |
+if ($external_domains) { |
|
96 |
+ $own_ns = own_ns(); |
|
97 |
+ asort($own_ns); |
|
98 |
+ $output.='<h4>Hinweis zu extern registrierten Domains</h4> |
|
99 |
+<p>Wenn Sie Ihre Domains bei einem anderen Provider registrieren und dennoch unsere DNS-Server nutzen möchten, dann stellen Sie bitte sicher, dass der DNS-Server oben eingeschaltet ist und stellen Sie dann folgende DNS-Server ein:<p> |
|
100 |
+<ul>'; |
|
101 |
+ foreach ($own_ns as $ns) { |
|
102 |
+ $output.='<li>'.$ns.'</li>'; |
|
103 |
+ } |
|
104 |
+ $output.='</ul>'; |
|
105 |
+} |
|
106 |
+if ($unused_dns) { |
|
107 |
+ $output.='<h4>Wichtiger Hinweis</h4> |
|
108 |
+<p>In der obigen Liste befinden sich Domains, bei denen unser DNS-Server aktiviert ist aber die Domain momentan auf einen anderen DNS-Server eingerichtet ist. Dies ist normal bei bevorstehenden Domain-Transfers zu uns, sollte aber nicht dauerhaft so bleiben.<p> |
|
109 |
+<p>Wenn Sie weiterhin einen externen DNS-Server benutzen möchten, dann schalten Sie bitte unseren DNS-Server für diese Domain aus, damit es nicht zu Fehlfunktionen kommt.</p> |
|
110 |
+<p>Im Zweifel sprechen Sie bitte unseren Support an.</p>'; |
|
111 |
+} |
|
112 |
+ |
|
113 |
+ |
|
65 | 114 |
?> |
... | ... |
@@ -338,4 +338,77 @@ function domain_is_maildomain($domain) |
338 | 338 |
} |
339 | 339 |
|
340 | 340 |
|
341 |
-?> |
|
341 |
+$own_ns = array(); |
|
342 |
+ |
|
343 |
+function own_ns() { |
|
344 |
+ global $own_ns; |
|
345 |
+ |
|
346 |
+ if (count($own_ns) < 1) { |
|
347 |
+ $auth = dns_get_record(config('masterdomain'), DNS_NS); |
|
348 |
+ foreach ($auth as $ns) { |
|
349 |
+ $own_ns[] = $ns['target']; |
|
350 |
+ } |
|
351 |
+ } |
|
352 |
+ |
|
353 |
+ return $own_ns; |
|
354 |
+} |
|
355 |
+ |
|
356 |
+ |
|
357 |
+$tld_ns = array(); |
|
358 |
+ |
|
359 |
+function check_dns($domainname, $tld) { |
|
360 |
+ global $tld_ns; |
|
361 |
+ $domain=idn_to_ascii($domainname.".".$tld); |
|
362 |
+ |
|
363 |
+ if (! isset($tld_ns[$tld])) { |
|
364 |
+ $resp = shell_exec('dig @a.root-servers.net. +noall +authority -t ns '.$tld.'.'); |
|
365 |
+ $line = explode("\n", $resp, 2)[0]; |
|
366 |
+ $NS = preg_replace("/^.*\\sIN\\s+NS\\s+(\\S+)$/", '\1', $line); |
|
367 |
+ $tld_ns[$tld] = $NS; |
|
368 |
+ } |
|
369 |
+ |
|
370 |
+ $resp = shell_exec('dig @'.$tld_ns[$tld].' +noall +authority -t ns '.$domain.'.'); |
|
371 |
+ $line = explode("\n", $resp, 2)[0]; |
|
372 |
+ if (preg_match('/^.*\\sIN\\s+NS\\s+/', $line) === 0) { |
|
373 |
+ return "NXDOMAIN"; |
|
374 |
+ } |
|
375 |
+ $NS = preg_replace("/^.*\\sIN\\s+NS\\s+(\\S+).$/", '\1', $line); |
|
376 |
+ |
|
377 |
+ $own_ns = own_ns(); |
|
378 |
+ |
|
379 |
+ if (in_array($NS, $own_ns)) { |
|
380 |
+ return True; |
|
381 |
+ } |
|
382 |
+ return $NS; |
|
383 |
+} |
|
384 |
+ |
|
385 |
+function remove_from_dns($dom) { |
|
386 |
+ $domains = get_domain_list($_SESSION['customerinfo']['customerno'], $_SESSION['userinfo']['uid']); |
|
387 |
+ $current = NULL; |
|
388 |
+ foreach ($domains as $d) { |
|
389 |
+ if ($d->id == $dom && $d->dns == 1) { |
|
390 |
+ $current = $d; |
|
391 |
+ break; |
|
392 |
+ } |
|
393 |
+ } |
|
394 |
+ if (! $current) { |
|
395 |
+ system_failure("Domain nicht gefunden!"); |
|
396 |
+ } |
|
397 |
+ db_query("UPDATE kundendaten.domains SET dns=0 WHERE id=?", array($current->id)); |
|
398 |
+} |
|
399 |
+ |
|
400 |
+function add_to_dns($dom) { |
|
401 |
+ $domains = get_domain_list($_SESSION['customerinfo']['customerno'], $_SESSION['userinfo']['uid']); |
|
402 |
+ $current = NULL; |
|
403 |
+ foreach ($domains as $d) { |
|
404 |
+ if ($d->id == $dom && $d->dns == 0) { |
|
405 |
+ $current = $d; |
|
406 |
+ break; |
|
407 |
+ } |
|
408 |
+ } |
|
409 |
+ if (! $current) { |
|
410 |
+ system_failure("Domain nicht gefunden!"); |
|
411 |
+ } |
|
412 |
+ db_query("UPDATE kundendaten.domains SET dns=1, autodns=1 WHERE id=?", array($current->id)); |
|
413 |
+} |
|
414 |
+ |
... | ... |
@@ -30,7 +30,7 @@ if (isset($_REQUEST['id'])) |
30 | 30 |
$id = (int) $_REQUEST['id']; |
31 | 31 |
|
32 | 32 |
|
33 |
-if ($_GET['type'] == 'dyndns') { |
|
33 |
+if (isset($_GET['type']) && $_GET['type'] == 'dyndns') { |
|
34 | 34 |
if ($_GET['action'] == 'delete') { |
35 | 35 |
$sure = user_is_sure(); |
36 | 36 |
if ($sure === NULL) |
... | ... |
@@ -64,5 +64,49 @@ if ($_GET['type'] == 'dyndns') { |
64 | 64 |
} |
65 | 65 |
|
66 | 66 |
|
67 |
+if (isset($_GET['dns']) && isset($_GET['dom'])) { |
|
68 |
+ $section = 'dns_dns'; |
|
69 |
+ $domains = get_domain_list($_SESSION['customerinfo']['customerno'], $_SESSION['userinfo']['uid']); |
|
70 |
+ $dom = NULL; |
|
71 |
+ foreach ($domains as $d) { |
|
72 |
+ if ($d->id == $_GET['dom']) { |
|
73 |
+ $dom = $d; |
|
74 |
+ break; |
|
75 |
+ } |
|
76 |
+ } |
|
77 |
+ if (! $dom) { |
|
78 |
+ system_failure("Domain nicht gefunden!"); |
|
79 |
+ } |
|
80 |
+ if ($_GET['dns'] == 0) { |
|
81 |
+ if ($dom->dns == 1) { |
|
82 |
+ $sure = user_is_sure(); |
|
83 |
+ if ($sure === NULL) |
|
84 |
+ { |
|
85 |
+ are_you_sure("dom={$dom->id}&dns=0", "Möchten Sie die Domain {$dom->fqdn} aus dem DNS-Server entfernen?"); |
|
86 |
+ } |
|
87 |
+ elseif ($sure === true) |
|
88 |
+ { |
|
89 |
+ remove_from_dns($dom->id); |
|
90 |
+ redirect('dns'); |
|
91 |
+ } |
|
92 |
+ elseif ($sure === false) |
|
93 |
+ { |
|
94 |
+ redirect('dns'); |
|
95 |
+ } |
|
96 |
+ } else { |
|
97 |
+ system_failure("Diese Domain ist nicht im DNS-Server eingetragen."); |
|
98 |
+ } |
|
99 |
+ } |
|
100 |
+ if ($_GET['dns'] == 1) { |
|
101 |
+ if ($dom->dns == 0) { |
|
102 |
+ add_to_dns($dom->id); |
|
103 |
+ redirect('dns'); |
|
104 |
+ } else { |
|
105 |
+ system_failure("Diese Domain ist bereits im DNS-Server eingetragen."); |
|
106 |
+ } |
|
107 |
+ } |
|
108 |
+ |
|
109 |
+} |
|
110 |
+ |
|
67 | 111 |
|
68 | 112 |
|
69 | 113 |