interfaces: actually, use get_nameservers() for *all* interfaces

It has the added benefit of grabbing the correct servers provided
for all upstream interfaces.

PR: https://github.com/opnsense/core/issues/3020
This commit is contained in:
Franco Fichtner 2018-12-07 11:38:32 +00:00
parent c65f2f5879
commit a22c63a67c
2 changed files with 27 additions and 12 deletions

View File

@ -304,22 +304,24 @@ function get_dns_servers()
return array_unique($dns_servers);
}
function get_nameservers()
function get_nameservers($realif = '')
{
$master_list = array();
$dns_lists = glob('/var/etc/nameserver_*');
$dns_listsv4 = glob("/var/etc/nameserver_{$realif}*");
/* XXX not a great design, please switch */
$dns_listsv6 = glob("/var/etc/nameserver_v6{$realif}*");
if (is_array($dns_lists)) {
foreach ($dns_lists as $fdns) {
$contents = file($fdns, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
if (!is_array($contents)) {
continue;
}
foreach ($contents as $dns) {
if (!empty($dns) && is_ipaddr($dns)) {
$master_list[] = $dns;
}
$dns_lists = array_unique(array_merge($dns_listsv4, $dns_listsv6));
foreach ($dns_lists as $fdns) {
$contents = file($fdns, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
if (!is_array($contents)) {
continue;
}
foreach ($contents as $dns) {
if (!empty($dns) && is_ipaddr($dns)) {
$master_list[] = $dns;
}
}
}

View File

@ -328,6 +328,19 @@ include("head.inc");
<td><?= gettext("Gateway IPv6") ?></td>
<td><?= htmlspecialchars($config['interfaces'][$ifdescr]['gatewayv6']) ?> <?= $ifinfo['gatewayv6'] ?></td>
</tr>
<?php
endif;
$dnsv4 = get_nameservers(get_real_interface($ifdescr));
$dnsv6 = get_nameservers(get_real_interface($ifdescr, 'inet6'));
$dnsall = array_unique(array_merge($dnsv4, $dnsv6));
if (count($dnsall)): ?>
<tr>
<td><?= gettext("DNS servers") ?></td>
<td>
<?php
echo implode('<br />', $dnsall); ?>
</td>
</tr>
<?php
endif;
endif;