source: trunk/system/generators/dns.php@ 211

Last change on this file since 211 was 211, checked in by george, 16 years ago
  • Upraveno: Dynamická velikost mapy.
  • Upraveno: Volba zobrazení prvků mapy.
  • Opraveno: Skript pro generování DNS záznamů opraven pro podporu struktury nových tabulek.
  • Property svn:executable set to *
File size: 12.6 KB
Line 
1<?php
2
3if(isset($_SERVER['REMOTE_ADDR'])) die();
4include_once('../../global.php');
5
6$BaseDomain = 'zdechov.net';
7$Serial = date('Ymds', time());
8$MinimumTime = 7200;
9$RetryTime = 7200;
10$ExpireTime = 2419200;
11$RefreshTime = 28800;
12$MinimumTime = 10800;
13$BaseDir = '/var/named/chroot/var/named/';
14$MailServer = 'centrala';
15$NameServers = array('centrala', 'tv');
16
17// === Local network DNS server ===
18
19// Generate DNS records
20$File = fopen($BaseDir.'internal/'.$BaseDomain.'.zone', 'w');
21fputs($File,'$ORIGIN '.$BaseDomain.'.'."\n".
22'$TTL 86400'."\n".
23$BaseDomain.".\tIN\tSOA\t".$NameServers[0].".".$BaseDomain.".\troot.".$BaseDomain.". (\n".
24"\t\t\t".$Serial."\t; serial\n".
25"\t\t\t".$RefreshTime."\t; refresh\n".
26"\t\t\t".$RetryTime."\t; retry\n".
27"\t\t\t".$ExpireTime."\t; expire\n".
28"\t\t\t".$MinimumTime."\t; minimum\n".
29"\t\t\t)\n".
30"\t\tIN\tNS\t".$NameServers[0].".".$BaseDomain.".\n".
31"\t\tIN\tNS\t".$NameServers[1].".".$BaseDomain.".\n".
32"\t\t\tTXT\t".'"community network ZdechovNET"'."\n".
33// "\t\tIN\tA\t192.168.0.1\n".
34"\t\t\tMX\t10 ".$MailServer.".".$BaseDomain.".\n");
35
36$DbResult = $Database->query('SELECT NetworkInterface.*, NetworkDevice.Name AS DeviceName FROM NetworkInterface JOIN NetworkDevice ON NetworkDevice.Id = NetwordInterface.Device WHERE NetworkInterface.LocalIP <> ""');
37while($Interface = $DbResult->fetch_assoc())
38{
39 $Name = $Interface['DeviceName'];
40 if($Interface['Name'] != '') $Name .= '-'.$Interface['Name'];
41 $Name = strtolower($Name);
42 if(strlen($Name) < 8) $Name .= "\t";
43 fputs($File, $Name."\tIN\tA\t".$Interface['LocalIP']."\n");
44}
45
46// External records in internal server
47$DbResult = $Database->query('SELECT NetworkInterface.*, NetworkDevice.Name AS DeviceName FROM NetworkInterface JOIN NetworkDevice ON NetworkDevice.Id = NetwordInterface.Device WHERE NetworkInterface.ExternalIP <> ""');
48while($Interface = $DbResult->fetch_assoc())
49{
50 $Name = $Interface['DeviceName'];
51 if($Interface['Name'] != '') $Name .= '-'.$Interface['Name'];
52 $Name = strtolower($Name.'-ext');
53 if(strlen($Name) < 8) $Name .= "\t";
54 fputs($File, $Name."\tIN\tA\t".$Interface['ExternalIP']."\n");
55}
56
57$DbResult = $Database->select('NetworkDomainAlias', '*');
58while($Alias = $DbResult->fetch_assoc())
59{
60 $Data = strtolower($Alias['Name']);
61 if(strlen($Data) < 8) $Data .= "\t";
62 fputs($File, $Data."\tIN\tCNAME\t".$Alias['Target']."\n");
63}
64
65fclose($File);
66
67// Generate reverse DNS records
68$Networks = array('192.168.0', '192.168.1', '192.168.2', '192.168.3', '192.168.4', '192.168.5', '192.168.6', '192.168.7');
69foreach($Networks as $Network)
70{
71 $Parts = explode('.', $Network);
72 $File = fopen($BaseDir.'internal/'.$Parts[2].'.'.$Parts[1].'.'.$Parts[0].'.in-addr.arpa.zone', 'w+');
73 fputs($File,
74 '$TTL 86400'."\n".
75 "@\tIN\tSOA\t".$NameServers[0].".".$BaseDomain.".\troot.".$BaseDomain.". (\n".
76 "\t\t\t\t".$Serial."\t; serial\n".
77 "\t\t\t\t".$RefreshTime."\t; refresh\n".
78 "\t\t\t\t".$RetryTime."\t; retry\n".
79 "\t\t\t\t".$ExpireTime."\t; expire\n".
80 "\t\t\t\t".$MinimumTime."\t; minimum\n".
81 "\t\t\t\t)\n".
82 "@\tIN\tNS\t".$NameServers[0].".".$BaseDomain.".\n".
83 "\tIN\tNS\t".$NameServers[1].".".$BaseDomain.".\n\n");
84 $DbResult = $Database->query('SELECT NetworkInterface.*, NetworkDevice.Name AS DeviceName FROM NetworkInterface JOIN NetworkDevice ON NetworkDevice.Id = NetworkInterface.Device WHERE NetworkInterface.LocalIP LIKE "'.$Network.'%"');
85 while($Interface = $DbResult->fetch_assoc())
86 {
87 $Name = $Interface['DeviceName'];
88 if($Interface['Name'] != '') $Name .= '-'.$Interface['Name'];
89 $Name = strtolower($Name.'-ext');
90 $IP = explode('.', $Interface['LocalIP']);
91 fputs($File, $IP[3]."\tIN\tPTR\t".strtolower($Name).".zdechov.net.\n");
92 }
93 fclose($File);
94}
95
96// Generate reverse DNS records
97$Networks = array('85.92.50');
98foreach($Networks as $Network)
99{
100 $Parts = explode('.', $Network);
101 $File = fopen($BaseDir.'internal/'.$Parts[2].'.'.$Parts[1].'.'.$Parts[0].'.in-addr.arpa.zone', 'w+');
102 fputs($File,
103 '$TTL 86400'."\n".
104 "@\tIN\tSOA\t".$NameServers[0].".".$BaseDomain.".\troot.".$BaseDomain.". (\n".
105 "\t\t\t\t".$Serial."\t; serial\n".
106 "\t\t\t\t".$RefreshTime."\t; refresh\n".
107 "\t\t\t\t".$RetryTime."\t; retry\n".
108 "\t\t\t\t".$ExpireTime."\t; expire\n".
109 "\t\t\t\t".$MinimumTime."\t; minimum\n".
110 "\t\t\t\t)\n".
111 "@\tIN\tNS\t".$NameServers[0].".".$BaseDomain.".\n".
112 "\tIN\tNS\t".$NameServers[1].".".$BaseDomain.".\n\n");
113 $DbResult = $Database->query('SELECT NetworkInterface.*, NetworkDevice.Name AS DeviceName FROM NetworkInterface JOIN NetworkDevice ON NetworkDevice.Id = NetworkInterface.Device WHERE NetworkInterface.ExternalIP LIKE "'.$Network.'%"');
114 while($Interface = $DbResult->fetch_assoc())
115 {
116 $Name = $Interface['DeviceName'];
117 if($Interface['Name'] != '') $Name .= '-'.$Interface['Name'];
118 $Name = strtolower($Name.'-ext');
119 $IP = explode('.',$Interafce['ExternalIP']);
120 fputs($File, $IP[3]."\tIN\tPTR\t".strtolower($Name])."-ext.".$BaseDomain.".\n");
121 }
122 fclose($File);
123}
124
125// === External network DNS server ===
126
127// Generate DNS records
128$File = fopen($BaseDir.'external/'.$BaseDomain.'.zone', 'w');
129$Header = '$ORIGIN '.$BaseDomain.'.'."\n".
130'$TTL 86400'."\n".
131$BaseDomain.".\tIN\tSOA\t".$NameServers[0].".".$BaseDomain.".\troot.".$BaseDomain.". (\t\n".
132"\t\t\t".$Serial."\t; serial\n".
133"\t\t\t".$RefreshTime."\t; refresh\n".
134"\t\t\t".$RetryTime."\t; retry\n".
135"\t\t\t".$ExpireTime."\t; expire\n".
136"\t\t\t".$MinimumTime."\t; minimum\n".
137"\t\t\t)\n".
138"\t\t\tTXT\t".'"community network ZdechovNET"'."\n".
139"\t\tIN\tNS\t".$NameServers[0].".".$BaseDomain.".\n".
140"\t\tIN\tNS\t".$NameServers[1].".".$BaseDomain.".\n".
141"\t\tIN\tNS\tplandsfeld.avonet.cz.\n";
142// "\t\tIN\tA\t81.2.194.142\n".
143$Header .= "\t\t\tMX\t10 ".$MailServer.".".$BaseDomain.".\n".
144"; SPF\n".
145"zdechov.net.\tIN\tTXT\t\"v=spf1 mx -all\"\n".
146"zdechov.net.\tIN\tSPF\t\"v=spf1 mx -all\"\n".
147"centrala\tIN\tTXT\t\"v=spf1 a -all\"\n".
148"centrala\tIN\tSPF\t\"v=spf1 a -all\"\n".
149"; Host list\n";
150
151fputs($File, $Header);
152
153$DbResult = $Database->query('SELECT NetworkInterface.*, NetworkDevice.Name AS DeviceName FROM NetworkInterface JOIN NetworkDevice ON NetworkDevice.Id = NetworkInterface.Device WHERE NetworkInterface.ExternalIP != ""');
154while($Interface = $DbResult->fetch_assoc())
155{
156 $Name = $Interface['DeviceName'];
157 if($Interface['Name'] != '') $Name .= '-'.$Interface['Name'];
158 $Name = strtolower($Name);
159 if(strlen($Name) < 8) $Name .= "\t";
160 fputs($File, $Name."\tIN\tA\t".$Interface['ExternalIP']."\n");
161}
162
163$DbResult = $Database->query('SELECT NetworkDomainAlias.* FROM `NetworkDomainAlias`');
164// JOIN `NetworkDevice` ON NetworkDomainAlias.Target LIKE NetworkDevice.Name AND NetworkInterface.ExternalIP != ""');
165while($Alias = $DbResult->fetch_assoc())
166{
167 $Data = strtolower($Alias['Name']);
168 if(strlen($Data) < 8) $Data .= "\t";
169 fputs($File, $Data."\tIN\tCNAME\t".$Alias['Target']."\n");
170}
171
172fclose($File);
173
174// Generate reverse DNS records
175$Networks = array('85.92.50', '81.2.194', '193.86.238', '212.111.4');
176foreach($Networks as $Network)
177{
178 $Parts = explode('.', $Network);
179 $File = fopen($BaseDir.'external/'.$Parts[2].'.'.$Parts[1].'.'.$Parts[0].'.in-addr.arpa.zone', 'w+');
180 fputs($File,
181 '$TTL 86400'."\n".
182 "@\tIN\tSOA\t".$NameServers[0].".".$BaseDomain.".\troot.".$BaseDomain.". (\n".
183 "\t\t\t\t".$Serial."\t; serial\n".
184 "\t\t\t\t".$RefreshTime."\t; refresh\n".
185 "\t\t\t\t".$RetryTime."\t; retry\n".
186 "\t\t\t\t".$ExpireTime."\t; expire\n".
187 "\t\t\t\t".$MinimumTime."\t; minimum\n".
188 "\t\t\t\t)\n".
189 "@\tIN\tNS\t".$NameServers[0].".".$BaseDomain.".\n\n".
190 "\t\t\tNS\tplandsfeld.avonet.cz.\n".
191 "\t\t\tNS\t".$NameServers[1].".".$BaseDomain.".\n");
192
193 $DbResult = $Database->query('SELECT NetworkInterface.*, NetworkDevice.Name AS DeviceName FROM NetworkInterface JOIN NetworkDevice ON NetworkDevice.Id = NetwordInterface.Device WHERE NetworkInterface.ExternalIP LIKE "'.$Network.'.%"');
194 while($Interface = $DbResult->fetch_assoc())
195 {
196 $Name = $Interface['DeviceName'];
197 if($Interface['Name'] != '') $Name .= '-'.$Interface['Name'];
198 $Name = strtolower($Name);
199 if(strlen($Name) < 8) $Name .= "\t";
200 $IP = explode('.', $Interface['ExternalIP']);
201 fputs($File, $IP[3]."\tIN\tPTR\t".strtolower($Interface['Name']).".".$BaseDomain.".\n");
202 }
203
204 fclose($File);
205}
206
207// === CZFree network DNS server ===
208$Domain = 'zdechov.zlin.czf';
209
210// Generate DNS records
211$File = fopen($BaseDir.'czfree/zdechov.zlin.czf.zone', 'w');
212$File2 = fopen($BaseDir.'internal/zdechov.zlin.czf.zone', 'w');
213
214$Header = '$ORIGIN zdechov.zlin.czf.'."\n".
215'$TTL 86400'."\n".
216$Domain.".\tIN\tSOA\t".$NameServers[0].".".$Domain.".\troot.".$Domain." (\n".
217"\t\t\t".$Serial."\t; serial\n".
218"\t\t\t".$RefreshTime."\t; refresh\n".
219"\t\t\t".$RetryTime."\t; retry\n".
220"\t\t\t".$ExpireTime."\t; expire\n".
221"\t\t\t".$MinimumTime."\t; minimum\n".
222"\t\t\t)\n".
223"\t\t\tTXT\t".'"Community network ZdechovNET"'."\n".
224"\t\t\tNS\t".$NameServers[0].".".$Domain.".\n".
225"\t\t\tNS\t".$NameServers[1].".".$Domain.".\n".
226"\t\t\tNS\tserver.zlin.czf.\n";
227"\t\t\tMX\t10 ".$MailServer.".".$Domain.".\n";
228
229fputs($File, $Header);
230
231$Header = '$ORIGIN zdechov.zlin.czf.'."\n".
232'$TTL 86400'."\n".
233$Domain.".\tIN\tSOA\t".$NameServers[0].".".$Domain.".\troot.".$Domain." (\n".
234"\t\t\t".$Serial."\t; serial\n".
235"\t\t\t".$RefreshTime."\t; refresh\n".
236"\t\t\t".$RetryTime."\t; retry\n".
237"\t\t\t".$ExpireTime."\t; expire\n".
238"\t\t\t".$MinimumTime."\t; minimum\n".
239"\t\t\t)\n".
240"\t\t\tTXT\t".'"Community network ZdechovNET"'."\n".
241"\t\t\tNS\t".$NameServers[0].".".$Domain.".\n".
242"\t\t\tNS\t".$NameServers[1].".".$Domain.".\n".
243"\t\t\tNS\tserver.zlin.czf.\n";
244"\t\t\tMX\t10 ".$MailServer.".".$Domain.".\n";
245fputs($File2, $Header);
246
247$DbResult = $Database->query('SELECT NetworkInterface.*, NetworkDevice.Name AS DeviceName FROM NetworkInterface JOIN NetworkDevice ON NetworkDevice.Id = NetworkInterface.Device WHERE NetworkInterface.CZFreeIP != ""');
248while($Interface = $DbResult->fetch_assoc())
249{
250 $Name = $Interface['DeviceName'];
251 if($Interface['Name'] != '') $Name .= '-'.$Interface['Name'];
252 $Name = strtolower($Name);
253 if(strlen($Name) < 8) $Name .= "\t";
254 fputs($File, $Name."\tIN\tA\t".$Interface['CZFreeIP']."\n");
255 fputs($File2, $Name."\tIN\tA\t".$Interface['LocalIP']."\n");
256 $Name .= '-czfree';
257 fputs($File2, $Name."\tIN\tA\t".$Interface['CZFreeIP']."\n");
258}
259
260$DbResult = $Database->query('SELECT NetworkDomainAlias.* FROM `NetworkDomainAlias` JOIN `hosts` ON NetworkDomainAlias.Target LIKE hosts.name AND hosts.czfree_ip != ""');
261while($Alias = $DbResult->fetch_assoc())
262{
263 $Data = $Alias['Name'];
264 if(strlen($Data) < 8) $Data .= "\t";
265 fputs($File, $Data."\tIN\tCNAME\t".$Alias['Target']."\n");
266 fputs($File2, $Data."\tIN\tCNAME\t".$Alias['Target']."\n");
267}
268fclose($File);
269fclose($File2);
270
271// Generate reverse DNS records
272$Networks = array('10.144.200');
273foreach($Networks as $Network)
274{
275 $Parts = explode('.', $Network);
276 $File = fopen($BaseDir.'czfree/'.$Parts[2].'.'.$Parts[1].'.'.$Parts[0].'.in-addr.arpa.zone', 'w+');
277 $File2 = fopen($BaseDir.'internal/'.$Parts[2].'.'.$Parts[1].'.'.$Parts[0].'.in-addr.arpa.zone', 'w+');
278 $Header = '$TTL 86400'."\n".
279 "@\tIN\tSOA\t".$NameServers[0].".".$Domain.".\troot.".$Domain.". (\n".
280 "\t\t\t\t".$Serial."\t; serial\n".
281 "\t\t\t\t".$RefreshTime."\t; refresh\n".
282 "\t\t\t\t".$RetryTime."\t; retry\n".
283 "\t\t\t\t".$ExpireTime."\t; expire\n".
284 "\t\t\t\t".$MinimumTime."\t; minimum\n".
285 "\t\t\t\t)\n".
286 "@\tIN\tNS\t".$NameServers[0].".".$Domain.".\n".
287 "@\tIN\tNS\t".$NameServers[1].".".$Domain.".\n".
288 "\tIN\tNS\tserver.zlin.czf.\n\n";
289 fputs($File, $Header);
290
291 $Header = '$TTL 86400'."\n".
292 "@\tIN\tSOA\t".$NameServers[0]."-ext.".$Domain.".\troot.".$Domain.". (\n".
293 "\t\t\t\t".$Serial."\t; serial\n".
294 "\t\t\t\t".$RefreshTime."\t; refresh\n".
295 "\t\t\t\t".$RetryTime."\t; retry\n".
296 "\t\t\t\t".$ExpireTime."\t; expire\n".
297 "\t\t\t\t".$MinimumTime."\t; minimum\n".
298 "\t\t\t\t)\n".
299 "@\tIN\tNS\t".$NameServers[0]."-ext.".$Domain.".\n";
300 "@\tIN\tNS\t".$NameServers[1]."-ext.".$Domain.".\n";
301 "\tIN\tNS\tserver.zlin.czf.\n\n";
302
303 fputs($File2, $Header);
304
305 $DbResult = $Database->query('SELECT NetworkInterface.*, NetworkDevice.Name AS DeviceName FROM NetworkInterface JOIN NetworkDevice ON NetworkDevice.Id = NetwordInterface.Device WHERE NetworkInterface.CZFreeIP LIKE "'.$Network.'.%"');
306 while($Interface = $DbResult->fetch_assoc())
307 {
308 $Name = $Interface['DeviceName'];
309 if($Interface['Name'] != '') $Name .= '-'.$Interface['Name'];
310 $Name = strtolower($Name);
311 if(strlen($Name) < 8) $Name .= "\t";
312 $IP = explode('.', $Interface['CZFreeIP']);
313 fputs($File, $IP[3]."\tIN\tPTR\t".strtolower($Interface['Name']).".".$Domain.".\n");
314 fputs($File2, $IP[3]."\tIN\tPTR\t".strtolower($Interface['Name'].'-czfree').".".$Domain.".\n");
315 }
316
317 fclose($File);
318 fclose($File2);
319}
320
321?>
Note: See TracBrowser for help on using the repository browser.