bernd commited on 2009-09-07 07:11:50
Zeige 4 geänderte Dateien mit 129 Einfügungen und 4 Löschungen.
git-svn-id: https://svn.schokokeks.org/repos/tools/webinterface/trunk@1463 87cf0b9e-d624-0410-a070-f6ee81989793
... | ... |
@@ -37,7 +37,7 @@ foreach ($records AS $rec) |
37 | 37 |
} |
38 | 38 |
$ttl = ($rec['ttl'] ? $rec['ttl'] : 3600); |
39 | 39 |
$link = $rec['fqdn']; |
40 |
- if (in_array($rec['type'], array('a', 'aaaa', 'mx', 'cname'))) { |
|
40 |
+ if (in_array($rec['type'], array('a', 'aaaa', 'mx', 'cname', 'ns', 'txt', 'spf'))) { |
|
41 | 41 |
$link = internal_link('dns_record_edit', $rec['fqdn'], "id={$rec['id']}"); |
42 | 42 |
} |
43 | 43 |
output("<tr><td>{$link}</td><td>".strtoupper($rec['type'])."</td><td>$data</td><td>{$ttl} Sek.</td><td>".internal_link('dns_record_save', '<img src="'.$prefix.'images/delete.png" width="16" height="16" alt="löschen" title="Record löschen" />', "id={$rec['id']}&action=delete")."</td></tr>\n"); |
... | ... |
@@ -70,9 +70,23 @@ output('<h4>Neuen DNS-Record anlegen</h4> |
70 | 70 |
<ul> |
71 | 71 |
<li>'.internal_link('dns_record_edit', 'AAAA (IPv6-Adresse)', 'id=new&type=aaaa&domain='.$domain->id).'</li> |
72 | 72 |
<li>'.internal_link('dns_record_edit', 'CNAME (Aliasnamen)', 'id=new&type=cname&domain='.$domain->id).'</li> |
73 |
-<li>'.internal_link('dns_record_edit', 'SPF', 'id=new&type=spf&domain='.$domain->id).'</li> |
|
73 |
+<li>'.internal_link('dns_record_edit', 'NS (Nameserver)', 'id=new&type=ns&domain='.$domain->id).'</li> |
|
74 |
+<li>'.internal_link('dns_record_edit', 'SPF (sender policy framework)', 'id=new&type=spf&domain='.$domain->id).'</li> |
|
74 | 75 |
<li>'.internal_link('dns_record_edit', 'TXT', 'id=new&type=txt&domain='.$domain->id).'</li> |
75 | 76 |
</ul> |
77 |
+ |
|
78 |
+<h4>Automatische DNS-Records</h4> |
|
76 | 79 |
'); |
77 | 80 |
|
81 |
+if ($domain->autodns) |
|
82 |
+{ |
|
83 |
+ output("<p>Automatische Einträge können nicht geändert werden. Möchten Sie davon abweichende Records setzen, so können Sie hiermit alle automatischen Einträge in normale Einträge konvertieren und die Erzeugung neuer automatischer Einträge abschalten. Diese Einstellung betrifft nur diese Domain und kann jederzeit geändert werden.</p> |
|
84 |
+<p>".internal_link('dns_save', 'Automatisch erzeugte Einträge umwandeln', "type=autodns&action=disable&dom={$domain->id}")."</p>"); |
|
85 |
+} |
|
86 |
+else |
|
87 |
+{ |
|
88 |
+ output("<p>Sie verwealten Ihre DNS-Einträge selbst. Wenn Sie möchten, können Sie die DNS-Einträge auch automatisch anhand der angelegten Webserver-VHosts und anderer Einstellungen festlegen lassen. Diese Eintäge können Sie dann nicht direkt ändern. Ihre bestehenden Einträge bleiben unberührt und zusätzlich erhalten. Bitte löschen Sie dadurch entstehende Duplikate!</p> |
|
89 |
+<p>".internal_link('dns_save', 'Automatisch erzeugte Einträge aktivieren', "type=autodns&action=enable&dom={$domain->id}")."</p>"); |
|
90 |
+} |
|
91 |
+ |
|
78 | 92 |
?> |
... | ... |
@@ -21,7 +21,7 @@ foreach (get_dyndns_accounts() AS $t) |
21 | 21 |
$dyndns_accounts[$t['id']] = $t['handle']; |
22 | 22 |
} |
23 | 23 |
|
24 |
-if ($_REQUEST['type'] == "dyndns") |
|
24 |
+if (isset($_REQUEST['type']) && $_REQUEST['type'] == "dyndns") |
|
25 | 25 |
{ |
26 | 26 |
$_REQUEST['type'] = 'a'; |
27 | 27 |
$dyndns = true; |
... | ... |
@@ -77,6 +77,13 @@ if (! $dyndns && ($type == 'a' || $type == 'aaaa')) |
77 | 77 |
'; |
78 | 78 |
} |
79 | 79 |
|
80 |
+if ($type == 'ns') |
|
81 |
+{ |
|
82 |
+ $form .= ' |
|
83 |
+<tr><td><label for="data">DNS-Server:</label></td><td><input type="text" name="data" id="data" value="'.$data['data'].'" /></td></tr> |
|
84 |
+'; |
|
85 |
+} |
|
86 |
+ |
|
80 | 87 |
if ($type == 'ptr' || $type == 'cname') |
81 | 88 |
{ |
82 | 89 |
$form .= ' |
... | ... |
@@ -0,0 +1,66 @@ |
1 |
+<?php |
|
2 |
+ |
|
3 |
+require_once('inc/base.php'); |
|
4 |
+require_once('inc/debug.php'); |
|
5 |
+global $debugmode; |
|
6 |
+require_once('inc/security.php'); |
|
7 |
+ |
|
8 |
+require_once('class/domain.php'); |
|
9 |
+ |
|
10 |
+require_role(ROLE_CUSTOMER); |
|
11 |
+ |
|
12 |
+require_once('dnsinclude.php'); |
|
13 |
+ |
|
14 |
+$section = 'dns_dns'; |
|
15 |
+ |
|
16 |
+if ($_GET['type'] == 'autodns') |
|
17 |
+{ |
|
18 |
+ if ($_GET['action'] == 'enable') |
|
19 |
+ { |
|
20 |
+ $dom = new Domain( (int) $_GET['dom'] ); |
|
21 |
+ $dom->ensure_customerdomain(); |
|
22 |
+ |
|
23 |
+ $sure = user_is_sure(); |
|
24 |
+ if ($sure === NULL) |
|
25 |
+ { |
|
26 |
+ are_you_sure("type=autodns&action=enable&dom={$dom->id}", "Möchten Sie die automatischen DNS-records für {$dom->fqdn} einschalten?"); |
|
27 |
+ } |
|
28 |
+ elseif ($sure === true) |
|
29 |
+ { |
|
30 |
+ enable_autorecords($dom->id); |
|
31 |
+ sync_autorecords(); |
|
32 |
+ if (! $debugmode) |
|
33 |
+ header("Location: dns_domain?dom={$dom->id}"); |
|
34 |
+ } |
|
35 |
+ elseif ($sure === false) |
|
36 |
+ { |
|
37 |
+ if (! $debugmode) |
|
38 |
+ header("Location: dns_domain?dom={$dom->id}"); |
|
39 |
+ } |
|
40 |
+ } |
|
41 |
+ elseif ($_GET['action'] == 'disable') |
|
42 |
+ { |
|
43 |
+ $dom = new Domain( (int) $_GET['dom'] ); |
|
44 |
+ $dom->ensure_customerdomain(); |
|
45 |
+ |
|
46 |
+ $sure = user_is_sure(); |
|
47 |
+ if ($sure === NULL) |
|
48 |
+ { |
|
49 |
+ are_you_sure("type=autodns&action=disable&dom={$dom->id}", "Möchten Sie die automatischen DNS-records für {$dom->fqdn} in manuelle Einträge umwandeln?"); |
|
50 |
+ } |
|
51 |
+ elseif ($sure === true) |
|
52 |
+ { |
|
53 |
+ convert_from_autorecords($dom->id); |
|
54 |
+ sync_autorecords(); |
|
55 |
+ if (! $debugmode) |
|
56 |
+ header("Location: dns_domain?dom={$dom->id}"); |
|
57 |
+ } |
|
58 |
+ elseif ($sure === false) |
|
59 |
+ { |
|
60 |
+ if (! $debugmode) |
|
61 |
+ header("Location: dns_domain?dom={$dom->id}"); |
|
62 |
+ } |
|
63 |
+ } |
|
64 |
+} |
|
65 |
+ |
|
66 |
+ |
... | ... |
@@ -166,7 +166,7 @@ function get_domain_auto_records($domainname) |
166 | 166 |
} |
167 | 167 |
|
168 | 168 |
|
169 |
-$implemented_record_types = array('a', 'aaaa', 'mx', 'spf', 'txt', 'cname', 'ptr', 'srv'); |
|
169 |
+$implemented_record_types = array('a', 'aaaa', 'mx', 'spf', 'txt', 'cname', 'ptr', 'srv', 'ns'); |
|
170 | 170 |
|
171 | 171 |
function save_dns_record($id, $record) |
172 | 172 |
{ |
... | ... |
@@ -217,6 +217,7 @@ function save_dns_record($id, $record) |
217 | 217 |
break; |
218 | 218 |
case 'cname': |
219 | 219 |
case 'ptr': |
220 |
+ case 'ns': |
|
220 | 221 |
$record['dyndns'] = ''; |
221 | 222 |
$record['spec'] = ''; |
222 | 223 |
$record['ip'] = ''; |
... | ... |
@@ -262,4 +263,41 @@ function delete_dns_record($id) |
262 | 263 |
db_query("DELETE FROM dns.custom_records WHERE id={$id} LIMIT 1"); |
263 | 264 |
} |
264 | 265 |
|
266 |
+ |
|
267 |
+function convert_from_autorecords($domainid) |
|
268 |
+{ |
|
269 |
+ $dom = new Domain( (int) $domainid ); |
|
270 |
+ $dom->ensure_customerdomain(); |
|
271 |
+ $dom = $dom->id; |
|
272 |
+ |
|
273 |
+ db_query("INSERT IGNORE INTO dns.custom_records SELECT r.id, r.lastchange, type, d.id, hostname, ip, NULL AS dyndns, data, spec, ttl FROM dns.v_tmptable_allrecords AS r INNER JOIN dns.v_domains AS d ON (d.name=r.domain) WHERE d.id={$dom}"); |
|
274 |
+ disable_autorecords($dom); |
|
275 |
+} |
|
276 |
+ |
|
277 |
+ |
|
278 |
+function enable_autorecords($domainid) |
|
279 |
+{ |
|
280 |
+ $dom = new Domain( (int) $domainid ); |
|
281 |
+ $dom->ensure_customerdomain(); |
|
282 |
+ $dom = $dom->id; |
|
283 |
+ |
|
284 |
+ db_query("UPDATE kundendaten.domains SET autodns=1 WHERE id={$dom} LIMIT 1"); |
|
285 |
+} |
|
286 |
+ |
|
287 |
+function disable_autorecords($domainid) |
|
288 |
+{ |
|
289 |
+ $dom = new Domain( (int) $domainid ); |
|
290 |
+ $dom->ensure_customerdomain(); |
|
291 |
+ $dom = $dom->id; |
|
292 |
+ |
|
293 |
+ db_query("UPDATE kundendaten.domains SET autodns=0 WHERE id={$dom} LIMIT 1"); |
|
294 |
+} |
|
295 |
+ |
|
296 |
+ |
|
297 |
+function sync_autorecords() |
|
298 |
+{ |
|
299 |
+ db_query("CALL dns.sync_autorecords()"); |
|
300 |
+} |
|
301 |
+ |
|
302 |
+ |
|
265 | 303 |
?> |
266 | 304 |