Files
webmin/nftables/acl_security.pl
Ilia Ross 44ff20e5c6
Some checks failed
webmin.dev: webmin/webmin / build (push) Has been cancelled
Fix to perltidy new nftables module to convert spaces to tabs
2026-05-03 22:36:31 +02:00

91 lines
2.0 KiB
Perl

use strict;
use warnings;
no warnings 'redefine';
no warnings 'uninitialized';
require 'nftables-lib.pl';
our (%in, %text);
# acl_security_form(&options)
# Output HTML for editing security options for the nftables module
sub acl_security_form
{
my ($o) = @_;
my $mode =
$o->{'tables'} eq '*' ? 1
: $o->{'tables'} =~ /^\!/ ? 2
: 0;
my @selected = split(/\s+/, $o->{'tables'} || '');
shift(@selected) if ($mode == 2 && @selected && $selected[0] eq '!');
my @table_opts = acl_table_options();
print ui_table_row(
$text{'acl_tables'},
ui_radio(
"tables_def",
$mode,
[ [1, $text{'acl_tables_all'}],
[0, $text{'acl_tables_sel'}],
[2, $text{'acl_tables_nsel'}] ]
).
"<br>\n".
ui_select("tables", \@selected, \@table_opts, 6, 1),
3
);
foreach my $a (
qw(view active create setup chains sets rules raw delete
apply bootup import clear quick manual)
)
{
print ui_table_row($text{'acl_'.$a}, ui_yesno_radio($a, $o->{$a}));
}
}
# acl_security_save(&options)
# Parse the form for security options for the nftables module
sub acl_security_save
{
if ($in{'tables_def'} == 1) {
$_[0]->{'tables'} = '*';
}
elsif ($in{'tables_def'} == 2) {
$_[0]->{'tables'} = join(" ", "!", split(/\0/, $in{'tables'}));
}
else {
$_[0]->{'tables'} = join(" ", split(/\0/, $in{'tables'}));
}
foreach my $a (
qw(view active create setup chains sets rules raw delete
apply bootup import clear quick manual)
)
{
$_[0]->{$a} = $in{$a} || 0;
}
}
# acl_table_options()
# Returns saved and active table choices for the ACL editor
sub acl_table_options
{
my %seen;
my @opts;
foreach my $t (get_nftables_save()) {
push(@opts, [table_acl_name($t), nft_table_spec($t)]);
$seen{table_acl_name($t)} = 1;
}
my ($active, $err) = get_active_nftables_save();
if (!$err) {
foreach my $t (@$active) {
next if ($seen{table_acl_name($t)}++);
push(
@opts,
[ table_acl_name($t),
nft_table_spec($t)." ($text{'active_title'})" ]
);
}
}
return sort { $a->[1] cmp $b->[1] } @opts;
}