#!/usr/bin/perl # save_policy.cgi # Change the default policy for some chain require './firewall-lib.pl'; &ReadParse(); if (&get_ipvx_version() == 6) { require './firewall6-lib.pl'; } else { require './firewall4-lib.pl'; } @tables = &get_iptables_save(); $table = $tables[$in{'table'}]; &can_edit_table($table->{'name'}) || &error($text{'etable'}); @d = split(/\0/, $in{'d'}); if ($in{'add'}) { # Redirect to the rule page for adding a rule &redirect("edit_rule.cgi?version=${ipvx_arg}&table=".&urlize($in{'table'}). "&chain=".&urlize($in{'chain'})."&new=1"); } elsif ($in{'delete'} && $in{'confirm'}) { # Delete this entire chain and all rules in it &lock_file($ipvx_save); $access{'delchain'} || &error($text{'delete_ecannot'}); $table->{'rules'} = [ grep { $_->{'chain'} ne $in{'chain'} } @{$table->{'rules'}} ]; delete($table->{'defaults'}->{$in{'chain'}}); &run_before_command(); &save_table($table); &run_after_command(); ©_to_cluster(); &unlock_file($ipvx_save); &webmin_log("delete", "chain", undef, { 'chain' => $in{'chain'}, 'table' => $table->{'name'} }); &redirect("index.cgi?version=${ipvx_arg}&table=".&urlize($in{'table'})); } elsif ($in{'clear'} && $in{'confirm'}) { # Delete all rules from this chain $access{'delchain'} || &error($text{'clear_ecannot'}); &lock_file($ipvx_save); $table->{'rules'} = [ grep { $_->{'chain'} ne $in{'chain'} } @{$table->{'rules'}} ]; &run_before_command(); &save_table($table); &run_after_command(); ©_to_cluster(); &unlock_file($ipvx_save); &webmin_log("clear", "chain", undef, { 'chain' => $in{'chain'}, 'table' => $table->{'name'} }); &redirect("index.cgi?version=${ipvx_arg}&table=".&urlize($in{'table'})); } elsif ($in{'delete'} || $in{'clear'}) { # Ask for confirmation on deleting the chain $mode = $in{'delete'} ? "delete" : "clear"; $access{'delchain'} || &error($text{$mode.'_ecannot'}); &ui_print_header($text{"index_title_v${ipvx}"}, $text{$mode.'_title'}, ""); @rules = grep { $_->{'chain'} eq $in{'chain'} } @{$table->{'rules'}}; print &ui_form_start("save_policy.cgi"); print &ui_hidden("version", ${ipvx_arg}); print &ui_hidden("table", $in{'table'}); print &ui_hidden("chain", $in{'chain'}); print &ui_hidden($mode, 1); print "<center><b>",&text($mode.'_rusure', "<tt>$in{'chain'}</tt>", scalar(@rules)),"</b><p>\n"; print &ui_submit($text{'delete_ok'}, 'confirm'); print "</center>\n"; print &ui_form_end(); &ui_print_footer("index.cgi?version=${ipvx_arg}&table=".&urlize($in{'table'}), $text{'index_return'}); } elsif ($in{'rename'} && $in{'newname'}) { # Rename a chain &lock_file($ipvx_save); $access{'delchain'} || &error($text{'rename_ecannot'}); $in{'newname'} =~ /^\S+$/ || &error($text{'new_ename'}); # Change the chain on each rule foreach $r (@{$table->{'rules'}}) { if ($r->{'chain'} eq $in{'chain'}) { $r->{'chain'} = $in{'newname'}; } } # Rename the default $table->{'defaults'}->{$in{'newname'}} = $table->{'defaults'}->{$in{'chain'}}; delete($table->{'defaults'}->{$in{'chain'}}); # Adjust any other rules if ($in{'adjust'}) { foreach $r (@{$table->{'rules'}}) { if ($r->{'j'} && $r->{'j'}->[1] eq $in{'chain'}) { $r->{'j'}->[1] = $in{'newname'}; } } } &run_before_command(); &save_table($table); &run_after_command(); ©_to_cluster(); &unlock_file($ipvx_save); &webmin_log("rename", "chain", undef, { 'chain' => $in{'chain'}, 'table' => $table->{'name'} }); &redirect("index.cgi?version=${ipvx_arg}&table=".&urlize($in{'table'})); } elsif ($in{'rename'}) { # Show chain rename form &ui_print_header($text{"index_title_v${ipvx}"}, $text{'rename_title'}, ""); print &ui_form_start("save_policy.cgi"); print &ui_hidden("version", ${ipvx_arg}); print &ui_hidden("table", $in{'table'}); print &ui_hidden("chain", $in{'chain'}); print &ui_hidden("rename", 1); print &ui_table_start($text{'rename_header'}, undef, 2); # Number of rules and old name @rules = grep { $_->{'chain'} eq $in{'chain'} } @{$table->{'rules'}}; print &ui_table_row($text{'rename_chain'}, $in{'chain'}); print &ui_table_row($text{'rename_count'}, scalar(@rules) || $text{'rename_none'}); # Destination chain print &ui_table_row($text{'rename_name'}, &ui_textbox("newname", undef, 20)); # Adjust other rules? print &ui_table_row(" ", &ui_checkbox("adjust", 1, $text{'rename_adjust'}, 1)); print &ui_table_end(); print &ui_form_end([ [ undef, $text{'rename_ok'} ] ]); &ui_print_footer("index.cgi?version=${ipvx_arg}&table=".&urlize($in{'table'}), $text{'index_return'}); } elsif ($in{'delsel'}) { # Just delete selected rules %idxs = map { $_, 1 } @d; &lock_file($ipvx_save); $table->{'rules'} = [ grep { $_->{'chain'} ne $in{'chain'} || !$idxs{$_->{'index'}} } @{$table->{'rules'}} ]; &run_before_command(); &save_table($table); &run_after_command(); ©_to_cluster(); &unlock_file($ipvx_save); &webmin_log("delsel", "chain", undef, { 'chain' => $in{'chain'}, 'table' => $table->{'name'}, 'count' => scalar(@d)}); &redirect("index.cgi?version=${ipvx_arg}&table=".&urlize($in{'table'})); } elsif ($in{'movesel'} && $in{'dest'}) { # Move selected rules to new chain %idxs = map { $_, 1 } @d; &lock_file($ipvx_save); # Change the chain on each rule foreach $r (@{$table->{'rules'}}) { if ($r->{'chain'} eq $in{'chain'} && $idxs{$r->{'index'}}) { $r->{'chain'} = $in{'dest'}; } } &run_before_command(); &save_table($table); &run_after_command(); ©_to_cluster(); &unlock_file($ipvx_save); &webmin_log("movesel", "chain", undef, { 'chain' => $in{'chain'}, 'table' => $table->{'name'}, 'count' => scalar(@d)}); &redirect("index.cgi?version=${ipvx_arg}&table=".&urlize($in{'table'})); } elsif ($in{'movesel'}) { # Show rule move form &ui_print_header($text{"index_title_v${ipvx}"}, $text{'move_title'}, ""); print &ui_form_start("save_policy.cgi"); print &ui_hidden("version", ${ipvx_arg}); print &ui_hidden("table", $in{'table'}); print &ui_hidden("chain", $in{'chain'}); print &ui_hidden("movesel", 1); foreach $d (@d) { print &ui_hidden("d", $d); } print &ui_table_start($text{'move_header'}, undef, 2); # Number of rules and source print &ui_table_row($text{'move_count'}, scalar(@d)); print &ui_table_row($text{'move_chain'}, $in{'chain'}); # Destination chain print &ui_table_row($text{'move_dest'}, &ui_select("dest", $in{'chain'}, [ grep { $_ ne $in{'chain'} } sort by_string_for_iptables (keys %{$table->{'defaults'}}) ])); print &ui_table_end(); print &ui_form_end([ [ undef, $text{'move_ok'} ] ]); &ui_print_footer("index.cgi?version=${ipvx_arg}&table=".&urlize($in{'table'}), $text{'index_return'}); } else { # Change the default for this chain $access{'policy'} || &error($text{'policy_ecannot'}); &lock_file($ipvx_save); $table->{'defaults'}->{$in{'chain'}} = $in{'policy'}; &run_before_command(); &save_table($table); &run_after_command(); ©_to_cluster(); &unlock_file($ipvx_save); &webmin_log("modify", "chain", undef, { 'chain' => $in{'chain'}, 'table' => $table->{'name'} }); &redirect("index.cgi?version=${ipvx_arg}&table=".&urlize($in{'table'})); }
Name | Type | Size | Permission | Actions |
---|---|---|---|---|
help | Folder | 0755 |
|
|
images | Folder | 0755 |
|
|
lang | Folder | 0755 |
|
|
acl_security.pl | File | 1.02 KB | 0755 |
|
apply.cgi | File | 512 B | 0755 |
|
backup_config.pl | File | 649 B | 0755 |
|
bootup.cgi | File | 600 B | 0755 |
|
cgi_args.pl | File | 430 B | 0755 |
|
cluster.cgi | File | 2.08 KB | 0755 |
|
cluster_add.cgi | File | 2.19 KB | 0755 |
|
cluster_delete.cgi | File | 651 B | 0755 |
|
coherent-linux-lib.pl | File | 1.54 KB | 0755 |
|
config | File | 83 B | 0644 |
|
config.info | File | 1.23 KB | 0644 |
|
config.info.ca | File | 1.5 KB | 0644 |
|
config.info.cs | File | 982 B | 0644 |
|
config.info.de | File | 1.42 KB | 0644 |
|
config.info.fr | File | 1.63 KB | 0644 |
|
config.info.ja | File | 421 B | 0644 |
|
config.info.nl | File | 976 B | 0644 |
|
config.info.no | File | 968 B | 0644 |
|
config.info.pl | File | 1012 B | 0644 |
|
config.info.pt_BR | File | 983 B | 0644 |
|
config.info.ru | File | 1.31 KB | 0644 |
|
config.info.sk | File | 989 B | 0644 |
|
config.info.tr | File | 827 B | 0644 |
|
convert.cgi | File | 756 B | 0755 |
|
debian-linux-lib.pl | File | 4.69 KB | 0755 |
|
defaultacl | File | 100 B | 0644 |
|
edit_rule.cgi | File | 14.88 KB | 0755 |
|
firewall-lib.pl | File | 17.32 KB | 0755 |
|
firewall4-lib.pl | File | 1.82 KB | 0755 |
|
firewall6-lib.pl | File | 1.76 KB | 0755 |
|
gentoo-linux-lib.pl | File | 722 B | 0755 |
|
index.cgi | File | 16.42 KB | 0755 |
|
install_check.pl | File | 841 B | 0755 |
|
log_parser.pl | File | 835 B | 0755 |
|
mandrake-linux-lib.pl | File | 1.69 KB | 0755 |
|
module.info | File | 238 B | 0644 |
|
module.info.af | File | 0 B | 0644 |
|
module.info.af.auto | File | 182 B | 0644 |
|
module.info.ar | File | 0 B | 0644 |
|
module.info.ar.auto | File | 254 B | 0644 |
|
module.info.be | File | 0 B | 0644 |
|
module.info.be.auto | File | 278 B | 0644 |
|
module.info.bg | File | 0 B | 0644 |
|
module.info.bg.auto | File | 299 B | 0644 |
|
module.info.ca | File | 155 B | 0644 |
|
module.info.ca.auto | File | 18 B | 0644 |
|
module.info.cs | File | 0 B | 0644 |
|
module.info.cs.auto | File | 194 B | 0644 |
|
module.info.da | File | 0 B | 0644 |
|
module.info.da.auto | File | 183 B | 0644 |
|
module.info.de | File | 161 B | 0644 |
|
module.info.de.auto | File | 18 B | 0644 |
|
module.info.el | File | 0 B | 0644 |
|
module.info.el.auto | File | 346 B | 0644 |
|
module.info.es | File | 0 B | 0644 |
|
module.info.es.auto | File | 185 B | 0644 |
|
module.info.eu | File | 0 B | 0644 |
|
module.info.eu.auto | File | 167 B | 0644 |
|
module.info.fa | File | 0 B | 0644 |
|
module.info.fa.auto | File | 268 B | 0644 |
|
module.info.fi | File | 0 B | 0644 |
|
module.info.fi.auto | File | 186 B | 0644 |
|
module.info.fr | File | 0 B | 0644 |
|
module.info.fr.auto | File | 180 B | 0644 |
|
module.info.he | File | 0 B | 0644 |
|
module.info.he.auto | File | 251 B | 0644 |
|
module.info.hr | File | 0 B | 0644 |
|
module.info.hr.auto | File | 173 B | 0644 |
|
module.info.hu | File | 0 B | 0644 |
|
module.info.hu.auto | File | 201 B | 0644 |
|
module.info.it | File | 0 B | 0644 |
|
module.info.it.auto | File | 174 B | 0644 |
|
module.info.ja | File | 0 B | 0644 |
|
module.info.ja.auto | File | 263 B | 0644 |
|
module.info.ko | File | 0 B | 0644 |
|
module.info.ko.auto | File | 206 B | 0644 |
|
module.info.lt | File | 0 B | 0644 |
|
module.info.lt.auto | File | 209 B | 0644 |
|
module.info.lv | File | 0 B | 0644 |
|
module.info.lv.auto | File | 180 B | 0644 |
|
module.info.ms | File | 0 B | 0644 |
|
module.info.ms.auto | File | 176 B | 0644 |
|
module.info.mt | File | 0 B | 0644 |
|
module.info.mt.auto | File | 192 B | 0644 |
|
module.info.nl | File | 0 B | 0644 |
|
module.info.nl.auto | File | 186 B | 0644 |
|
module.info.no | File | 0 B | 0644 |
|
module.info.no.auto | File | 176 B | 0644 |
|
module.info.pl | File | 0 B | 0644 |
|
module.info.pl.auto | File | 197 B | 0644 |
|
module.info.pt | File | 0 B | 0644 |
|
module.info.pt.auto | File | 172 B | 0644 |
|
module.info.pt_BR | File | 0 B | 0644 |
|
module.info.pt_BR.auto | File | 181 B | 0644 |
|
module.info.ro | File | 0 B | 0644 |
|
module.info.ro.auto | File | 186 B | 0644 |
|
module.info.ru | File | 0 B | 0644 |
|
module.info.ru.auto | File | 250 B | 0644 |
|
module.info.sk | File | 0 B | 0644 |
|
module.info.sk.auto | File | 203 B | 0644 |
|
module.info.sl | File | 0 B | 0644 |
|
module.info.sl.auto | File | 182 B | 0644 |
|
module.info.sv | File | 0 B | 0644 |
|
module.info.sv.auto | File | 177 B | 0644 |
|
module.info.th | File | 0 B | 0644 |
|
module.info.th.auto | File | 275 B | 0644 |
|
module.info.tr | File | 0 B | 0644 |
|
module.info.tr.auto | File | 222 B | 0644 |
|
module.info.uk | File | 0 B | 0644 |
|
module.info.uk.auto | File | 291 B | 0644 |
|
module.info.ur | File | 0 B | 0644 |
|
module.info.ur.auto | File | 306 B | 0644 |
|
module.info.vi | File | 0 B | 0644 |
|
module.info.vi.auto | File | 205 B | 0644 |
|
module.info.zh | File | 0 B | 0644 |
|
module.info.zh.auto | File | 146 B | 0644 |
|
module.info.zh_TW | File | 0 B | 0644 |
|
module.info.zh_TW.auto | File | 155 B | 0644 |
|
move.cgi | File | 1.29 KB | 0755 |
|
newchain.cgi | File | 898 B | 0755 |
|
open-ports.pl | File | 3.4 KB | 0755 |
|
prefs.info | File | 55 B | 0644 |
|
redhat-linux-lib.pl | File | 2.14 KB | 0755 |
|
save_policy.cgi | File | 7.15 KB | 0755 |
|
save_rule.cgi | File | 12.4 KB | 0755 |
|
save_rule6.cgi | File | 12.05 KB | 0755 |
|
setup.cgi | File | 9.37 KB | 0755 |
|
setup6.cgi | File | 8.12 KB | 0755 |
|
trustix-linux-lib.pl | File | 2.14 KB | 0755 |
|
unapply.cgi | File | 609 B | 0755 |
|