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 |