From e97a7c611cd184f99e3f83aee138e3811364afd9 Mon Sep 17 00:00:00 2001 From: "Michael Kaufmann (d00p)" Date: Thu, 18 Apr 2013 16:38:22 +0200 Subject: [PATCH] add possibility to specify AXFR servers for bind zone-configuration, fixes #100 Signed-off-by: Michael Kaufmann (d00p) --- actions/admin/settings/160.nameserver.php | 10 +++++ install/froxlor.sql | 3 +- .../updates/froxlor/0.9/update_0.9.inc.php | 15 +++++++ .../preconfig/0.9/preconfig_0.9.inc.php | 8 ++++ lib/tables.inc.php | 2 +- lng/english.lng.php | 6 +-- lng/german.lng.php | 6 +-- scripts/jobs/cron_tasks.inc.dns.10.bind.php | 43 +++++++++++-------- 8 files changed, 68 insertions(+), 25 deletions(-) diff --git a/actions/admin/settings/160.nameserver.php b/actions/admin/settings/160.nameserver.php index 0defa95f..476d30da 100644 --- a/actions/admin/settings/160.nameserver.php +++ b/actions/admin/settings/160.nameserver.php @@ -68,6 +68,16 @@ return array( 'default' => '', 'save_method' => 'storeSettingField', ), + 'system_axfrservers' => array( + 'label' => $lng['serversettings']['axfrservers'], + 'settinggroup' => 'system', + 'varname' => 'axfrservers', + 'type' => 'string', + 'string_regexp' => '/^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})(, ?(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3}))*$/i', + 'string_emptyallowed' => true, + 'default' => '', + 'save_method' => 'storeSettingField', + ), 'system_dns_createmailentry' => array( 'label' => $lng['serversettings']['mail_also_with_mxservers'], 'settinggroup' => 'system', diff --git a/install/froxlor.sql b/install/froxlor.sql index e3b8f7d7..fac01608 100644 --- a/install/froxlor.sql +++ b/install/froxlor.sql @@ -511,6 +511,7 @@ INSERT INTO `panel_settings` (`settinggroup`, `varname`, `value`) VALUES ('system', 'apache24', '0'), ('system', 'documentroot_use_default_value', '0'), ('system', 'passwordcryptfunc', '1'), + ('system', 'axfrservers', ''), ('panel', 'decimal_places', '4'), ('panel', 'adminmail', 'admin@SERVERNAME'), ('panel', 'phpmyadmin_url', ''), @@ -538,7 +539,7 @@ INSERT INTO `panel_settings` (`settinggroup`, `varname`, `value`) VALUES ('panel', 'phpconfigs_hidestdsubdomain', '0'), ('panel', 'allow_theme_change_admin', '1'), ('panel', 'allow_theme_change_customer', '1'), - ('panel', 'version', '0.9.29-dev2'); + ('panel', 'version', '0.9.29-dev3'); diff --git a/install/updates/froxlor/0.9/update_0.9.inc.php b/install/updates/froxlor/0.9/update_0.9.inc.php index ef365350..70798aa3 100644 --- a/install/updates/froxlor/0.9/update_0.9.inc.php +++ b/install/updates/froxlor/0.9/update_0.9.inc.php @@ -2087,3 +2087,18 @@ if (isFroxlorVersion('0.9.29-dev1')) { updateToVersion('0.9.29-dev2'); } + +if (isFroxlorVersion('0.9.29-dev2')) { + showUpdateStep("Updating from 0.9.29-dev2 to 0.9.29-dev3", true); + lastStepStatus(0); + + $system_afxrservers = isset($_POST['system_afxrservers']) ? $_POST['system_afxrservers'] : ''; + if (!preg_match('/^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})(, ?(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3}))*$/i', $system_afxrservers)) { + $system_afxrservers = ''; + } + showUpdateStep("Inserting new setting for AFXR server", true); + $db->query("INSERT INTO `panel_settings` (`settinggroup`, `varname`, `value`) VALUES ('system', 'axfrservers', '".$db->escape($system_afxrservers)."');"); + lastStepStatus(0); + + updateToVersion('0.9.29-dev3'); +} diff --git a/install/updates/preconfig/0.9/preconfig_0.9.inc.php b/install/updates/preconfig/0.9/preconfig_0.9.inc.php index 09a5b319..1d3ac9a8 100644 --- a/install/updates/preconfig/0.9/preconfig_0.9.inc.php +++ b/install/updates/preconfig/0.9/preconfig_0.9.inc.php @@ -525,4 +525,12 @@ function parseAndOutputPreconfig(&$has_preconfig, &$return, $current_version) $question.= "Customers: ".makeyesno('allow_themechange_c', '1', '0', '1'); eval("\$return.=\"" . getTemplate("update/preconfigitem") . "\";"); } + + if (versionInUpdate($current_version, '0.9.29-dev3')) { + $has_preconfig = true; + $description = 'There is now a possibility to specify AFXR servers for your bind zone-configuration
'; + $question = 'Enter a comma-separated list of AFXR servers or leave empty (default): '; + $question.= ''; + eval("\$return.=\"" . getTemplate("update/preconfigitem") . "\";"); + } } diff --git a/lib/tables.inc.php b/lib/tables.inc.php index 99bcfe95..7e7601a9 100644 --- a/lib/tables.inc.php +++ b/lib/tables.inc.php @@ -73,6 +73,6 @@ define('PACKAGE_ENABLED', 2); // VERSION INFO -$version = '0.9.29-dev2'; +$version = '0.9.29-dev3'; $dbversion = '2'; $branding = ''; diff --git a/lng/english.lng.php b/lng/english.lng.php index f815378b..9fb857ea 100644 --- a/lng/english.lng.php +++ b/lng/english.lng.php @@ -1933,12 +1933,12 @@ $lng['error']['stringmustntbeempty'] = 'The value for the field %s must not be e $lng['admin']['domain_editable']['title'] = 'Allow editing of domain'; $lng['admin']['domain_editable']['desc'] = 'If set to yes, the customer is allowed to change several domain-settings.
If set to no, nothing can be changed by the customer.'; -// Added in Froxlor 0.9.29-dev1 +// Added in Froxlor 0.9.29-dev $lng['serversettings']['panel_phpconfigs_hidestdsubdomain']['title'] = 'Hide standard-subdomains in PHP-configuration overview'; $lng['serversettings']['panel_phpconfigs_hidestdsubdomain']['description'] = 'If activated the standard-subdomains for customers will not be displayed in the php-configurations overview

Note: This is only visible if you have enabled FCGID or PHP-FPM'; $lng['serversettings']['passwordcryptfunc']['title'] = 'Chose which password-crypt method is to be used'; $lng['serversettings']['systemdefault'] = 'System default'; - -// Added in Froxlor 0.9.29-dev2 $lng['serversettings']['panel_allow_theme_change_admin'] = 'Allow admins to change the theme'; $lng['serversettings']['panel_allow_theme_change_customer'] = 'Allow customers to change the theme'; +$lng['serversettings']['axfrservers']['title'] = 'AXFR servers'; +$lng['serversettings']['axfrservers']['description'] = 'A comma separated list of IP addresses allowed to transfer (AXFR) dns zones.'; diff --git a/lng/german.lng.php b/lng/german.lng.php index c00c916e..5d1ec026 100644 --- a/lng/german.lng.php +++ b/lng/german.lng.php @@ -1654,12 +1654,12 @@ $lng['error']['stringmustntbeempty'] = 'Der Wert für das Feld %s darf nicht lee $lng['admin']['domain_editable']['title'] = 'Erlaube Bearbeiten der Domain'; $lng['admin']['domain_editable']['desc'] = 'Wenn ja, darf der Kunde verschiedene Einstellungen anpassen.
Wenn nein, darf nichts durch den Kunden geändert werden.'; -// Added in Froxlor 0.9.29-dev1 +// Added in Froxlor 0.9.29-dev $lng['serversettings']['panel_phpconfigs_hidestdsubdomain']['title'] = 'Verstecke Standard-Subdomains in PHP-Konfigurations-Übersicht'; $lng['serversettings']['panel_phpconfigs_hidestdsubdomain']['description'] = 'Wenn aktiviert, werden die Standard-Subdomains der Kunden nicht mehr in der PHP-Konfigurations-Übersicht angezeigt.

Hinweis: Nur relevant, wenn FCGID oder PHP-FPM aktiviert ist.'; $lng['serversettings']['passwordcryptfunc']['title'] = 'Wähle zu verwendende Passwort-Verschlüsselungsmethode'; $lng['serversettings']['systemdefault'] = 'Systemstandard'; - -// Added in Froxlor 0.9.29-dev2 $lng['serversettings']['panel_allow_theme_change_admin'] = 'Erlaube Admins das Theme zu wechseln'; $lng['serversettings']['panel_allow_theme_change_customer'] = 'Erlaube Kunden das Theme zu wechseln'; +$lng['serversettings']['axfrservers']['title'] = 'AXFR Server'; +$lng['serversettings']['axfrservers']['description'] = 'Eine komma-getrennte Liste von IP Adressen, die DNS Zonen transferieren dürfen (AXFR).'; diff --git a/scripts/jobs/cron_tasks.inc.dns.10.bind.php b/scripts/jobs/cron_tasks.inc.dns.10.bind.php index f4d4a04e..a4883b8c 100644 --- a/scripts/jobs/cron_tasks.inc.dns.10.bind.php +++ b/scripts/jobs/cron_tasks.inc.dns.10.bind.php @@ -36,26 +36,22 @@ class bind public $settings = array(); public $nameservers = array(); public $mxservers = array(); + public $axfrservers = array(); + + public function __construct($db, $logger, $debugHandler, $settings) { - public function __construct($db, $logger, $debugHandler, $settings) - { $this->db = $db; $this->logger = $logger; $this->debugHandler = $debugHandler; $this->settings = $settings; - if($this->settings['system']['nameservers'] != '') - { + if ($this->settings['system']['nameservers'] != '') { $nameservers = explode(',', $this->settings['system']['nameservers']); - foreach($nameservers as $nameserver) - { + foreach ($nameservers as $nameserver) { $nameserver_ip = gethostbyname(trim($nameserver)); - - if(substr($nameserver, -1, 1) != '.') - { + if (substr($nameserver, -1, 1) != '.') { $nameserver.= '.'; } - $this->nameservers[] = array( 'hostname' => trim($nameserver), 'ip' => trim($nameserver_ip) @@ -63,19 +59,23 @@ class bind } } - if($this->settings['system']['mxservers'] != '') - { + if ($this->settings['system']['mxservers'] != '') { $mxservers = explode(',', $this->settings['system']['mxservers']); - foreach($mxservers as $mxserver) - { - if(substr($mxserver, -1, 1) != '.') - { + foreach ($mxservers as $mxserver) { + if (substr($mxserver, -1, 1) != '.') { $mxserver.= '.'; } - $this->mxservers[] = $mxserver; } } + + // AXFR server #100 + if ($this->settings['system']['axfrservers'] != '') { + $axfrservers = explode(',', $this->settings['system']['axfrservers']); + foreach ($axfrservers as $axfrserver) { + $this->axfrservers[] = trim($axfrservers); + } + } } public function writeConfigs() @@ -128,6 +128,15 @@ class bind $bindconf_file.= ' };' . "\n"; } + // AXFR server #100 + if (count($this->axfrservers) > 0) { + foreach ($this->axfrservers as $axfrserver) { + if (validate_ip($axfrserver, true) !== false) { + $bindconf_file.= ' ' . $axfrserver . ';' . "\n"; + } + } + } + $bindconf_file.= '};' . "\n"; $bindconf_file.= "\n"; }