Merge pull request #339 from KZumbusch/feature/support-for-multi-homed-dns-servers
Support for multi homed DNS servers
This commit is contained in:
@@ -33,14 +33,19 @@ class bind {
|
|||||||
if (Settings::Get('system.nameservers') != '') {
|
if (Settings::Get('system.nameservers') != '') {
|
||||||
$nameservers = explode(',', Settings::Get('system.nameservers'));
|
$nameservers = explode(',', Settings::Get('system.nameservers'));
|
||||||
foreach ($nameservers as $nameserver) {
|
foreach ($nameservers as $nameserver) {
|
||||||
$nameserver_ip = gethostbyname(trim($nameserver));
|
// DNS servers might be multi homed; allow transfer from all ip
|
||||||
if (substr($nameserver, -1, 1) != '.') {
|
// addresses of the DNS server
|
||||||
$nameserver.= '.';
|
$nameserver_ips = gethostbynamel(trim($nameserver));
|
||||||
|
// ignore invalid responses
|
||||||
|
if (is_array($nameserver_ips)) {
|
||||||
|
if (substr($nameserver, -1, 1) != '.') {
|
||||||
|
$nameserver.= '.';
|
||||||
|
}
|
||||||
|
$this->nameservers[] = array(
|
||||||
|
'hostname' => trim($nameserver),
|
||||||
|
'ips' => $nameserver_ips
|
||||||
|
);
|
||||||
}
|
}
|
||||||
$this->nameservers[] = array(
|
|
||||||
'hostname' => trim($nameserver),
|
|
||||||
'ip' => trim($nameserver_ip)
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -233,7 +238,9 @@ class bind {
|
|||||||
// put nameservers in allow-transfer
|
// put nameservers in allow-transfer
|
||||||
if (count($this->nameservers) > 0) {
|
if (count($this->nameservers) > 0) {
|
||||||
foreach ($this->nameservers as $ns) {
|
foreach ($this->nameservers as $ns) {
|
||||||
$bindconf_file.= ' ' . $ns['ip'] . ';' . "\n";
|
foreach($ns["ips"] as $ip) {
|
||||||
|
$bindconf_file.= ' ' . $ip . ";\n";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// AXFR server #100
|
// AXFR server #100
|
||||||
|
|||||||
Reference in New Issue
Block a user