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";
}