mirror of
https://github.com/webmin/webmin.git
synced 2026-02-03 14:13:29 +00:00
Fix parsing of multi-line rules
This commit is contained in:
@@ -39,20 +39,27 @@ if ($?) {
|
||||
&error("Failed to list zones : $out");
|
||||
}
|
||||
my $default_zone = backquote_command(
|
||||
"$config{'firewall_cmd'} --get-default-zone</dev/null 2>&1");
|
||||
"$config{'firewall_cmd'} --get-default-zone </dev/null 2>&1");
|
||||
chomp($default_zone);
|
||||
my $zone;
|
||||
my $lo;
|
||||
foreach my $l (split(/\r?\n/, $out)) {
|
||||
if ($l =~ /^(\S+)(\s+\(.*\))?/) {
|
||||
# New zone
|
||||
$zone = { 'name' => $1,
|
||||
'default' => $default_zone eq $1 ? 1 : 0 };
|
||||
$lo = undef;
|
||||
push(@rv, $zone);
|
||||
}
|
||||
elsif ($l =~ /^\s+(\S+):\s*(.*)/ && $zone) {
|
||||
elsif ($l =~ /^ (\S+):\s*(.*)/ && $zone) {
|
||||
# Option in some zone
|
||||
$lo = $1;
|
||||
$zone->{$1} = [ split(/\s+/, $2) ];
|
||||
}
|
||||
elsif ($l =~ /^\t(\S.*)/ && $zone && $lo) {
|
||||
# Continued option
|
||||
push(@{$zone->{$lo}}, split(/\s+/, $1));
|
||||
}
|
||||
}
|
||||
return @rv;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user