source: trunk/tools/dnszones-poller/dnszones-poller.php @ 245

Revision 245, 4.0 KB checked in by sque, 8 months ago (diff)

Merge branches/awmn 221:235
[awmn] Allow users to delete zones and nameservers without making a request to hostmaster
[awmn] Untaint sprintf
[awmn] Don't change to php script dir
[awmn] Add support to dump list of stealth nameservers
[awmn] Add active peers search fields to hostmaster's ranges page
[awmn] Redirect errors to stderr
[awmn] Don't explicitly set owner to 'N' (#146)
[awmn] Restrict ip ranges to valid b-classes (0-255)
[awmn] Escape HTML special characters
[awmn] Use appropriate entities for < and > HTML special characters
[awmn] Add missing 'alt' attribute for 'img' element
[awmn] Close 'td' and 'tr' elements properly
[awmn] Escape HTML special characters in services URLs
[awmn] Remove end of line carriage returns

Line 
1<?php
2
3if (isset($argv[1])) {
4        $conf_file = basename($argv[1]).'.conf';
5} else {
6        $conf_file = basename($_GET['zonefile']).'.conf';
7}
8
9if ( file_exists($conf_file) ) {
10        include $conf_file;
11} else {
12        exit;
13}
14if (!isset($conf)) exit;
15
16$mysql_link = mysql_connect($conf['db']['server'], $conf['db']['username'], $conf['db']['password']);
17
18mysql_select_db($conf['db']['database'], $mysql_link);
19
20function replace($array, $string) {
21        $ret = $string;
22        foreach ($array as $key => $value) {
23                $ret = str_replace("##".$key."##", $value, $ret);
24        }
25        return $ret;
26}
27
28if ($conf['zone_type'] == 'forward') {
29       
30        $replace = array('NAMESERVERS' => '', 'ZONES' => '', 'NS-SUBDOMAIN' => '', 'SERIAL' => '');
31       
32        ## NAMESERVERS
33        $query = "SELECT dns_nameservers.name AS ns_num, dns_nameservers.ip AS ns_ip, nodes.name_ns AS name_ns
34                          FROM dns_nameservers
35                          INNER JOIN nodes ON nodes.id = dns_nameservers.node_id
36                          WHERE dns_nameservers.status = 'active'
37                          ORDER BY nodes.name_ns ASC, dns_nameservers.name ASC";
38        $q = mysql_query($query, $mysql_link);
39        while ($ret = mysql_fetch_assoc($q)) {
40                $replace['NAMESERVERS'] .= $conf['notify']?
41                        long2ip($ret['ns_ip']).";\n":
42                        " NS ".$ret['ns_num'].".".$ret['name_ns'].$conf['ns_domain']."\n";
43        }
44       
45        ## ZONES
46        $query = "SELECT dns_zones.name AS zone_name, dns_nameservers.name AS ns_num, nodes.name_ns AS name_ns
47                          FROM dns_zones
48                          INNER JOIN dns_zones_nameservers ON dns_zones.id = dns_zones_nameservers.zone_id
49                          INNER JOIN dns_nameservers ON dns_zones_nameservers.nameserver_id = dns_nameservers.id
50                          INNER JOIN nodes ON dns_nameservers.node_id = nodes.id
51                          WHERE dns_nameservers.status = 'active' AND dns_zones.type = 'forward' AND dns_zones.status = 'active'
52                          ORDER BY dns_zones.name ASC, dns_zones_nameservers.id ASC";
53        $q = mysql_query($query, $mysql_link);
54        echo mysql_error();
55        while ($ret = mysql_fetch_assoc($q)) {
56                $replace['ZONES'] .= $ret['zone_name']." NS ".$ret['ns_num'].".".$ret['name_ns'].$conf['ns_domain']."\n";
57        }
58
59        ## NS-SUBDOMAIN
60        $query = "SELECT dns_nameservers.ip AS ip, dns_nameservers.name AS ns_num, nodes.name_ns AS name_ns
61                          FROM dns_nameservers
62                          INNER JOIN nodes ON nodes.id = dns_nameservers.node_id
63                          WHERE dns_nameservers.status = 'active'
64                          ORDER BY nodes.name_ns ASC, dns_nameservers.name ASC";
65        $q = mysql_query($query, $mysql_link);
66        while ($ret = mysql_fetch_assoc($q)) {
67                $replace['NS-SUBDOMAIN'] .= $ret['ns_num'].".".$ret['name_ns'].$conf['ns_domain']." A ".long2ip($ret['ip'])."\n";
68                if ($ret['ns_num'] == 'ns0') {
69                        $replace['NS-SUBDOMAIN'] .= $ret['name_ns'].$conf['ns_domain']." CNAME ".$ret['ns_num'].".".$ret['name_ns'].$conf['ns_domain']."\n";   
70                }
71        }
72       
73       
74} elseif ($conf['zone_type'] == 'reverse') {
75       
76        $replace = array('NAMESERVERS' => '', 'ZONES' => '', 'SERIAL' => '');
77
78        ## NAMESERVERS
79        $query = "SELECT dns_nameservers.name AS ns_num, nodes.name_ns AS name_ns
80                          FROM dns_nameservers
81                          INNER JOIN nodes ON nodes.id = dns_nameservers.node_id
82                          WHERE dns_nameservers.status = 'active'
83                          ORDER BY nodes.name_ns ASC, dns_nameservers.name ASC";
84        $q = mysql_query($query, $mysql_link);
85        while ($ret = mysql_fetch_assoc($q)) {
86                $replace['NAMESERVERS'] .= " NS ".$ret['ns_num'].".".$ret['name_ns'].$conf['ns_domain']."\n";
87        }
88
89        ## ZONES
90        $query = "SELECT dns_zones.name AS zone_name, dns_nameservers.name AS ns_num, nodes.name_ns AS name_ns
91                          FROM dns_zones
92                          INNER JOIN dns_zones_nameservers ON dns_zones.id = dns_zones_nameservers.zone_id
93                          INNER JOIN dns_nameservers ON dns_zones_nameservers.nameserver_id = dns_nameservers.id
94                          INNER JOIN nodes ON dns_nameservers.node_id = nodes.id
95                          WHERE dns_nameservers.status = 'active' AND dns_zones.type = 'reverse' AND dns_zones.status = 'active'
96                          ORDER BY dns_zones.name ASC, dns_zones_nameservers.id ASC";
97        $q = mysql_query($query, $mysql_link);
98        echo mysql_error();
99        while ($ret = mysql_fetch_assoc($q)) {
100                $replace['ZONES'] .= $ret['zone_name'].". NS ".$ret['ns_num'].".".$ret['name_ns'].$conf['ns_domain']."\n";
101        }
102
103}
104
105## ECHO ZONE
106echo replace($replace, file_get_contents($conf['shema']));
107
108mysql_close($mysql_link);
109
110?>
Note: See TracBrowser for help on using the repository browser.