From ed30c60150ffda0301eb1f8d30c93cac94de41df Mon Sep 17 00:00:00 2001
From: tbrehm <t.brehm@ispconfig.org>
Date: Mon, 25 Jul 2011 10:38:22 -0400
Subject: [PATCH] Fixed some warnings in the installer.
---
server/mods-available/dns_module.inc.php | 88 +++++++++++++++++++++++++++++++++++++++++++-
1 files changed, 86 insertions(+), 2 deletions(-)
diff --git a/server/mods-available/dns_module.inc.php b/server/mods-available/dns_module.inc.php
index 79b0e5b..01c4526 100644
--- a/server/mods-available/dns_module.inc.php
+++ b/server/mods-available/dns_module.inc.php
@@ -35,6 +35,9 @@
var $actions_available = array( 'dns_soa_insert',
'dns_soa_update',
'dns_soa_delete',
+ 'dns_slave_insert',
+ 'dns_slave_update',
+ 'dns_slave_delete',
'dns_rr_insert',
'dns_rr_update',
'dns_rr_delete');
@@ -44,7 +47,11 @@
function onInstall() {
global $conf;
- return true;
+ if($conf['services']['dns'] == true) {
+ return true;
+ } else {
+ return false;
+ }
}
@@ -73,7 +80,13 @@
*/
$app->modules->registerTableHook('dns_soa',$this->module_name,'process');
+ $app->modules->registerTableHook('dns_slave',$this->module_name,'process');
$app->modules->registerTableHook('dns_rr',$this->module_name,'process');
+
+
+ // Register service
+ $app->services->registerService('bind','dns_module','restartBind');
+ $app->services->registerService('powerdns','dns_module','restartPowerDNS');
}
@@ -91,6 +104,11 @@
if($action == 'u') $app->plugins->raiseEvent('dns_soa_update',$data);
if($action == 'd') $app->plugins->raiseEvent('dns_soa_delete',$data);
break;
+ case 'dns_slave':
+ if($action == 'i') $app->plugins->raiseEvent('dns_slave_insert',$data);
+ if($action == 'u') $app->plugins->raiseEvent('dns_slave_update',$data);
+ if($action == 'd') $app->plugins->raiseEvent('dns_slave_delete',$data);
+ break;
case 'dns_rr':
if($action == 'i') $app->plugins->raiseEvent('dns_rr_insert',$data);
if($action == 'u') $app->plugins->raiseEvent('dns_rr_update',$data);
@@ -99,7 +117,73 @@
} // end switch
} // end function
+
+ function restartBind($action = 'restart') {
+ global $app,$conf;
+
+ $daemon = '';
+ if(is_file($conf['init_scripts'] . '/' . 'bind9')) {
+ $daemon = 'bind9';
+ } else {
+ $daemon = 'named';
+ }
+
+ if($action == 'restart') {
+ exec($conf['init_scripts'] . '/' . $daemon . ' restart');
+ } else {
+ exec($conf['init_scripts'] . '/' . $daemon . ' reload');
+ }
+
+ }
+
+ function restartPowerDNS($action = 'restart') {
+ global $app,$conf;
+
+ $app->log("restartPDNS called.",LOGLEVEL_DEBUG);
+
+/** Since PowerDNS does not currently allow to limit AXFR for specific zones to specific
+* IP addresses, we create a list of IPs allowed of AXFR transfers from our PowerDNS,
+* however any of these IPs is allowed to AXFR transfer any of the zones we are masters
+* for.
+*/
+ $tmps = $app->db->queryAllRecords("SELECT DISTINCT xfer FROM dns_soa WHERE active = 'Y' UNION SELECT DISTINCT xfer FROM dns_slave WHERE active = 'Y' ");
+
+ //* Make sure the list is never empty
+ $options='127.0.0.1';
+ foreach($tmps as $tmp) {
+ if (trim($tmp['xfer'])!='') {
+ if ($options=='') {
+ $options.=$tmp['xfer'];
+ } else {
+ $options=$options.",".$tmp['xfer'];
+ }
+ }
+ }
+
+ //* Remove duplicate IPs from the array
+ $options = "allow-axfr-ips=".implode(",",array_unique(explode(",",$options)));
+ $app->log("".$options,LOGLEVEL_DEBUG);
+
+/** Not an ideal way to use a hardcoded path like that, but currently
+* we have no way to find out where powerdns' configuration files are
+* located, so we have to work on assumption.
+*/
+ file_put_contents('/etc/powerdns/pdns.d/pdns.ispconfig-axfr',$options."\n");
+
+ $daemon= '';
+ if (is_file($conf['init_scripts'] . '/' . 'powerdns')) {
+ $daemon = 'powerdns';
+ } else {
+ $daemon = 'pdns';
+ }
+
+ exec($conf['init_scripts'] . '/' . $daemon . ' restart');
+
+// unset $tmps;
+
+ }
+
} // end class
-?>
\ No newline at end of file
+?>
--
Gitblit v1.9.1