mirror of
https://github.com/webmin/webmin.git
synced 2026-02-03 14:13:29 +00:00
Work on reading netplan DNS configs
This commit is contained in:
@@ -719,6 +719,7 @@ sub get_dns_config
|
||||
{
|
||||
local $dns = { };
|
||||
local $rc;
|
||||
local $dnsfile;
|
||||
if ($use_suse_dns && ($rc = &parse_rc_config()) && $rc->{'NAMESERVER'}) {
|
||||
# Special case - get DNS settings from SuSE config
|
||||
local @ns = split(/\s+/, $rc->{'NAMESERVER'}->{'value'});
|
||||
@@ -727,8 +728,20 @@ if ($use_suse_dns && ($rc = &parse_rc_config()) && $rc->{'NAMESERVER'}) {
|
||||
$dns->{'domain'} = [ split(/\s+/, $src->{'value'}) ] if ($src);
|
||||
$dnsfile = $rc_config;
|
||||
}
|
||||
elsif ($gconfig{'os_type'} eq 'debian-linux' &&
|
||||
-l "/etc/resolv.conf") {
|
||||
elsif ($gconfig{'os_type'} eq 'debian-linux' && -l "/etc/resolv.conf" &&
|
||||
$netplan_dir) {
|
||||
# On Ubuntu 18+, /etc/resolv.conf is auto-generated from netplan config
|
||||
my @boot = &boot_interfaces();
|
||||
foreach my $b (@boot) {
|
||||
if ($b->{'nameserver'}) {
|
||||
$dns->{'nameserver'} = $b->{'nameserver'};
|
||||
$dns->{'domain'} = $b->{'search'};
|
||||
$dnsfile = $b->{'file'};
|
||||
last;
|
||||
}
|
||||
}
|
||||
}
|
||||
elsif ($gconfig{'os_type'} eq 'debian-linux' && -l "/etc/resolv.conf") {
|
||||
# On Ubuntu 12+, /etc/resolv.conf is auto-generated from network
|
||||
# interface config
|
||||
my @ifaces = &get_interface_defs();
|
||||
|
||||
@@ -18,6 +18,7 @@ foreach my $f (glob("$netplan_dir/*.yaml")) {
|
||||
foreach my $e (@{$ens->{'members'}}) {
|
||||
my $cfg = { 'name' => $e->{'name'},
|
||||
'fullname' => $e->{'name'},
|
||||
'file' => $f,
|
||||
'up' => 1 };
|
||||
my ($dhcp) = grep { $_->{'name'} eq 'dhcp4' }
|
||||
@{$e->{'members'}};
|
||||
@@ -63,6 +64,22 @@ foreach my $f (glob("$netplan_dir/*.yaml")) {
|
||||
}
|
||||
push(@rv, $cfg);
|
||||
|
||||
# Nameservers (which are used to generate resolv.conf)
|
||||
my ($nameservers) = grep { $_->{'name'} eq 'nameservers' }
|
||||
@{$e->{'members'}};
|
||||
if ($nameservers) {
|
||||
my ($nsa) = grep { $_->{'name'} eq 'addresses' }
|
||||
@{$nameservers->{'members'}};
|
||||
my ($search) = grep { $_->{'name'} eq 'search' }
|
||||
@{$nameservers->{'members'}};
|
||||
if ($nsa) {
|
||||
$cfg->{'nameserver'} = $nsa->{'value'};
|
||||
}
|
||||
if ($search) {
|
||||
$cfg->{'search'} = $search->{'value'};
|
||||
}
|
||||
}
|
||||
|
||||
# Add IPv4 alias interfaces
|
||||
foreach my $aa (@addrs) {
|
||||
# XXX
|
||||
|
||||
Reference in New Issue
Block a user