Skip to content
Snippets Groups Projects
Commit fc70a2c6 authored by tbrehm's avatar tbrehm
Browse files

Added debugging to bind plugin and fixed a few bugs.

parent 7dbea06e
No related branches found
No related tags found
No related merge requests found
<tmpl_loop name='zones'> <tmpl_loop name='zones'>
zone "<tmpl_var name='origin'>" { zone "<tmpl_var name='zone'>" {
type master; type master;
file "pri.<tmpl_var name='origin'>"; file "<tmpl_var name='zonefile_path'>";
}; };
</tmpl_loop> </tmpl_loop>
$TTL {tmpl_var name='ttl'} $TTL {tmpl_var name='ttl'}
@ IN SOA {tmpl_var name='ns'} {tmpl_var name='mbox'}. ( @ IN SOA {tmpl_var name='ns'} {tmpl_var name='mbox'} (
{tmpl_var name='serial'} ; serial, todays date + todays serial # {tmpl_var name='serial'} ; serial, todays date + todays serial #
{tmpl_var name='refresh'} ; refresh, seconds {tmpl_var name='refresh'} ; refresh, seconds
{tmpl_var name='retry'} ; retry, seconds {tmpl_var name='retry'} ; retry, seconds
...@@ -32,9 +32,6 @@ $TTL {tmpl_var name='ttl'} ...@@ -32,9 +32,6 @@ $TTL {tmpl_var name='ttl'}
<tmpl_if name="type" op='==' value='NAPTR'> <tmpl_if name="type" op='==' value='NAPTR'>
{tmpl_var name='name'} NAPTR {tmpl_var name='data'} {tmpl_var name='name'} NAPTR {tmpl_var name='data'}
</tmpl_if> </tmpl_if>
<tmpl_if name="type" op='==' value='NS'>
{tmpl_var name='name'} NS {tmpl_var name='data'}
</tmpl_if>
<tmpl_if name="type" op='==' value='PTR'> <tmpl_if name="type" op='==' value='PTR'>
{tmpl_var name='name'} PTR {tmpl_var name='data'} {tmpl_var name='name'} PTR {tmpl_var name='data'}
</tmpl_if> </tmpl_if>
......
...@@ -83,8 +83,10 @@ class bind_plugin { ...@@ -83,8 +83,10 @@ class bind_plugin {
function soa_update($event_name,$data) { function soa_update($event_name,$data) {
global $app, $conf; global $app, $conf;
//* Load libraries
$app->uses("getconf,tpl");
//* load the server configuration options //* load the server configuration options
$app->uses("getconf");
$dns_config = $app->getconf->get_server_config($conf["server_id"], 'dns'); $dns_config = $app->getconf->get_server_config($conf["server_id"], 'dns');
//* Write the domain file //* Write the domain file
...@@ -94,10 +96,11 @@ class bind_plugin { ...@@ -94,10 +96,11 @@ class bind_plugin {
$zone = $data['new']; $zone = $data['new'];
$tpl->setVar($zone); $tpl->setVar($zone);
$records = $app->db->queryAllRecords("SELECT * FROM dns_rr WHERE zone = ".$zone['id']); $records = $app->db->queryAllRecords("SELECT * FROM dns_rr WHERE zone = ".$zone['id']." AND active = 'Y'");
$tpl->setLoop('records',$records); $tpl->setLoop('zones',$records);
$filename = escapeshellcmd($dns_config['bind_zonefiles_dir'].'/pri.'.$zone['origin']); $filename = escapeshellcmd($dns_config['bind_zonefiles_dir'].'/pri.'.substr($zone['origin'],0,-1));
$app->log("Writing BIND domain file: ".$filename,LOGLEVEL_DEBUG);
file_put_contents($filename,$tpl->grab()); file_put_contents($filename,$tpl->grab());
exec('chown '.escapeshellcmd($dns_config['bind_user']).':'.escapeshellcmd($dns_config['bind_group']).' '.$filename); exec('chown '.escapeshellcmd($dns_config['bind_user']).':'.escapeshellcmd($dns_config['bind_group']).' '.$filename);
unset($tpl); unset($tpl);
...@@ -105,13 +108,13 @@ class bind_plugin { ...@@ -105,13 +108,13 @@ class bind_plugin {
unset($zone); unset($zone);
//* rebuild the named.conf file if the origin has changed or when the origin is inserted. //* rebuild the named.conf file if the origin has changed or when the origin is inserted.
if($this->action == 'insert' || $data['old']['origin'] != $data['new']['origin']) { //if($this->action == 'insert' || $data['old']['origin'] != $data['new']['origin']) {
$this->write_named_conf($data,$dns_config); $this->write_named_conf($data,$dns_config);
} //}
//* Delete old domain file, if domain name has been changed //* Delete old domain file, if domain name has been changed
if($data['old']['origin'] != $data['new']['origin']) { if($data['old']['origin'] != $data['new']['origin']) {
$filename = $dns_config['bind_zonefiles_dir'].'/pri.'.$data['old']['origin']; $filename = $dns_config['bind_zonefiles_dir'].'/pri.'.substr($data['old']['origin'],0,-1);
if(is_file($filename)) unset($filename); if(is_file($filename)) unset($filename);
} }
...@@ -133,6 +136,7 @@ class bind_plugin { ...@@ -133,6 +136,7 @@ class bind_plugin {
//* Delete the domain file //* Delete the domain file
$filename = $dns_config['bind_zonefiles_dir'].'/pri.'.$data['old']['origin']; $filename = $dns_config['bind_zonefiles_dir'].'/pri.'.$data['old']['origin'];
if(is_file($filename)) unset($filename); if(is_file($filename)) unset($filename);
$app->log("Deleting BIND domain file: ".$filename,LOGLEVEL_DEBUG);
//* Reload bind nameserver //* Reload bind nameserver
$app->services->restartServiceDelayed('bind','reload'); $app->services->restartServiceDelayed('bind','reload');
...@@ -180,14 +184,24 @@ class bind_plugin { ...@@ -180,14 +184,24 @@ class bind_plugin {
function write_named_conf($data, $dns_config) { function write_named_conf($data, $dns_config) {
global $app, $conf; global $app, $conf;
$zones = $app->db->queryAllRecords("SELECT origin FROM dns_soa WHERE active = 'Y'"); $tmps = $app->db->queryAllRecords("SELECT origin FROM dns_soa WHERE active = 'Y'");
$zones = array();
foreach($tmps as $tmp) {
$zones[] = array( 'zone' => substr($tmp['origin'],0,-1),
'zonefile_path' => $dns_config['bind_zonefiles_dir'].'/pri.'.substr($tmp['origin'],0,-1)
);
}
$tpl = new tpl(); $tpl = new tpl();
$tpl->newTemplate("bind_named.conf.local.master"); $tpl->newTemplate("bind_named.conf.local.master");
$tpl->setLoop('zones',$zones); $tpl->setLoop('zones',$zones);
file_put_contents($dns_config['named_conf_local_path'],$tpl->grab()); file_put_contents($dns_config['named_conf_local_path'],$tpl->grab());
$app->log("Writing BIND named.conf.local file: ".$dns_config['named_conf_local_path'],LOGLEVEL_DEBUG);
unset($tpl); unset($tpl);
unset($zones);
unset($tmps);
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment