Fix to delete chains and sets immediately

This commit is contained in:
Ilia Ross
2026-05-02 17:30:59 +02:00
parent 1ed1ff84a2
commit 6825dc11d6
3 changed files with 15 additions and 60 deletions

View File

@@ -20,34 +20,13 @@ my @refs = grep {
($_->{'jump'} && $_->{'jump'} eq $in{'chain'}) ||
($_->{'goto'} && $_->{'goto'} eq $in{'chain'})
} @{$table->{'rules'}};
@refs && error(text('delete_chain_inuse', $in{'chain'}, scalar(@refs)));
if ($in{'confirm'}) {
@refs && error(text('delete_chain_inuse', $in{'chain'}, scalar(@refs)));
@{$table->{'rules'}} = grep { $_->{'chain'} ne $in{'chain'} } @{$table->{'rules'}};
delete($table->{'chains'}->{$in{'chain'}});
@{$table->{'rules'}} = grep { $_->{'chain'} ne $in{'chain'} } @{$table->{'rules'}};
delete($table->{'chains'}->{$in{'chain'}});
my $err = save_table_configuration($table, @tables);
error(text('delete_chain_failed', $err)) if ($err);
webmin_log("delete", "chain", $in{'chain'},
{ 'table' => $table->{'name'}, 'family' => $table->{'family'} });
redirect("index.cgi?table=$in{'table'}");
}
ui_print_header(undef, $text{'delete_chain_title'}, "", "intro", 1, 1);
print ui_form_start("delete_chain.cgi");
print ui_hidden("table", $in{'table'});
print ui_hidden("chain", $in{'chain'});
print "<center><b>",
text('delete_chain_confirm',
"<tt>$in{'chain'}</tt>",
"<tt>$table->{'family'} $table->{'name'}</tt>"),
"</b>";
if (@refs) {
print "<br><br>", text('delete_chain_inuse', $in{'chain'}, scalar(@refs));
}
print "<p>\n";
print ui_submit($text{'delete'}, "confirm");
print "</center>\n";
print ui_form_end();
ui_print_footer("index.cgi?table=$in{'table'}", $text{'index_return'});
my $err = save_table_configuration($table, @tables);
error(text('delete_chain_failed', $err)) if ($err);
webmin_log("delete", "chain", $in{'chain'},
{ 'table' => $table->{'name'}, 'family' => $table->{'family'} });
redirect("index.cgi?table=$in{'table'}");

View File

@@ -17,32 +17,12 @@ my $set = $table->{'sets'}->{$in{'set'}};
$set || error($text{'set_noset'});
my $refs = count_set_references($table, $in{'set'});
$refs && error(text('delete_set_inuse', $in{'set'}, $refs));
if ($in{'confirm'}) {
$refs && error(text('delete_set_inuse', $in{'set'}, $refs));
delete($table->{'sets'}->{$in{'set'}});
delete($table->{'sets'}->{$in{'set'}});
my $err = save_table_configuration($table, @tables);
error(text('delete_set_failed', $err)) if ($err);
webmin_log("delete", "set", $in{'set'},
{ 'table' => $table->{'name'}, 'family' => $table->{'family'} });
redirect("index.cgi?table=$in{'table'}&view=sets");
}
ui_print_header(undef, $text{'delete_set_title'}, "", "intro", 1, 1);
print ui_form_start("delete_set.cgi");
print ui_hidden("table", $in{'table'});
print ui_hidden("set", $in{'set'});
print "<center><b>",
text('delete_set_confirm',
"<tt>$in{'set'}</tt>",
"<tt>$table->{'family'} $table->{'name'}</tt>"),
"</b>";
if ($refs) {
print "<br><br>", text('delete_set_inuse', $in{'set'}, $refs);
}
print "<p>\n";
print ui_submit($text{'delete'}, "confirm");
print "</center>\n";
print ui_form_end();
ui_print_footer("index.cgi?table=$in{'table'}&view=sets", $text{'index_return'});
my $err = save_table_configuration($table, @tables);
error(text('delete_set_failed', $err)) if ($err);
webmin_log("delete", "set", $in{'set'},
{ 'table' => $table->{'name'}, 'family' => $table->{'family'} });
redirect("index.cgi?table=$in{'table'}&view=sets");

View File

@@ -165,10 +165,8 @@ chain_edup=A chain with that name already exists
chain_notable=No such table selected
chain_nochain=No such chain selected
chain_ebase=Base chains require type, hook, priority, and policy.
delete_chain_title=Delete chain
delete_chain_err=Failed to delete chain
delete_chain_failed=Failed to delete chain: <pre>$1</pre>
delete_chain_confirm=Are you sure you want to delete chain $1 from table $2?
delete_chain_inuse=Chain $1 is referenced by $2 rule(s) via jump/goto. Remove those rules first.
delete_chains_err=Failed to delete selected chains
delete_chains_failed=Failed to delete selected chains: <pre>$1</pre>
@@ -222,10 +220,8 @@ set_edup=A set with that name already exists
set_etype=Set type is required
set_notable=No such table selected
set_noset=No such set selected
delete_set_title=Delete set
delete_set_err=Failed to delete set
delete_set_failed=Failed to delete set: <pre>$1</pre>
delete_set_confirm=Are you sure you want to delete set $1 from table $2?
delete_set_inuse=Set $1 is referenced by $2 rule(s). Remove those rules first.
delete_sets_err=Failed to delete selected sets
delete_sets_failed=Failed to delete selected sets: <pre>$1</pre>