#!/usr/bin/perl # Creating or editing rule require './tcpwrappers-lib.pl'; &ReadParse(); $type = $in{'allow'} ? 'allow' : 'deny'; @xservices = &list_services(); unshift @xservices, "ALL" if (@xservices); if ($in{'new'}) { &ui_print_header(undef, $text{'edit_title1'.$type}, "", "edit_rule"); } else { &ui_print_header(undef, $text{'edit_title2'.$type}, "", "edit_rule"); # Get the rule @rules = &list_rules($config{'hosts_'.$type}); ($rule) = grep { $_->{'id'} == $in{'id'} } @rules; $rule || &error($text{'edit_eid'}); # parse services (daemons) if ($rule->{'service'} =~ /^(.+) EXCEPT (.*)$/) { @services = split /,\s?|\s+/, $1; @eservices = split /,\s?|\s+/, $2; } else { @services = split /,\s?|\s+/, $rule->{'service'}; } if (@xservices) { # try to find all services (daemons) in xinetd/inetd foreach my $rule_service (@services, @eservices) { $found = 0; foreach my $xinet_service (@xservices) { $found = 1 if ($rule_service eq $xinet_service); } unless ($found) { # not found -> let user to edit custom service @xservices = (); } } } # parse hosts if ($rule->{'host'} =~ /^(.+) EXCEPT (.*)$/) { $hosts = $1; $ehosts = $2 } else { $hosts = $rule->{'host'}; } } # Form header print &ui_form_start("save_rule.cgi", "post"); print &ui_hidden("new", $in{'new'}),"\n"; print &ui_hidden("id", $in{'id'}),"\n"; print &ui_hidden($in{'allow'} ? 'allow' : 'deny', 1),"\n"; print &ui_table_start($text{'edit_header'}, "", 2); # Services if (@xservices && $config{'inetd_services'}) { # listed from (x)inetd print &ui_table_row($text{'edit_service'}, &ui_select("service", \@services, \@xservices, 5, 1)); print &ui_table_row($text{'edit_except'}, &ui_select("service_except", \@eservices, \@xservices, 5, 1)); } else { print &ui_table_row($text{'edit_service'}, &ui_textbox("service_custom", join(",",@services), 40)); print &ui_table_row($text{'edit_except'}, &ui_textbox("service_except_custom", join(",",@eservices), 40)); } print &ui_table_hr(); # Hosts @wildcards = ("ALL","KNOWN","UNKNOWN","LOCAL","PARANOID"); $found = ''; foreach my $w (@wildcards) { $found = $w if ($w eq $hosts); } print &ui_table_row($text{'edit_hosts'}, &ui_opt_textbox("host_text", ($found ? "" : $hosts), 41, &ui_select("host_select", $found, \@wildcards)), 3); print &ui_table_row($text{'edit_hostsexcept'}, &ui_textbox("host_except", $ehosts, 50), 3); print &ui_table_hr(); # Shell commands @directives = ('none', 'spawn', 'twist'); @cmds = split /:/, $rule->{'cmd'} if (!$in{'new'}); $label = $text{'edit_cmd'}; for ($i = 0; $i <= $#cmds; $i++) { $cmds[$i] =~ s/^\s*//; my $chosen = $cmds[$i] =~ /^(spawn|twist)/ ? $1 : 'none'; $cmds[$i] =~ s/^\s*${chosen}\s*// if ($cmds[$i] =~ /^\s*(spawn)|(twist)/); print &ui_table_row($label, &ui_select("cmd_directive_$i", $chosen, \@directives).' '.&ui_textbox("cmd_$i", $cmds[$i], 50), 3); $label = ""; } # Row for new command print &ui_table_row($label, &ui_select("cmd_directive_$i", undef, \@directives).' '.&ui_textbox("cmd_$i", "", 50), 3); print &ui_hidden("cmd_count", $i),"\n"; # Form footer print &ui_table_end(); print &ui_form_end([ $in{'new'} ? ( [ "create", $text{'create'} ] ) : ( [ "save", $text{'save'} ], [ "delete", $text{'delete'} ] ) ]); &ui_print_footer("index.cgi?type=$type", $text{'index_return'});
Name | Type | Size | Permission | Actions |
---|---|---|---|---|
help | Folder | 0755 |
|
|
images | Folder | 0755 |
|
|
lang | Folder | 0755 |
|
|
CHANGELOG | File | 266 B | 0644 |
|
backup_config.pl | File | 613 B | 0755 |
|
cgi_args.pl | File | 357 B | 0755 |
|
config | File | 73 B | 0644 |
|
config.info | File | 138 B | 0644 |
|
config.info.ca | File | 179 B | 0644 |
|
config.info.de | File | 141 B | 0644 |
|
config.info.fr | File | 174 B | 0644 |
|
config.info.hu | File | 0 B | 0644 |
|
config.info.ms | File | 153 B | 0644 |
|
config.info.nl | File | 93 B | 0644 |
|
config.info.no | File | 133 B | 0644 |
|
config.info.pl | File | 141 B | 0644 |
|
delete_rules.cgi | File | 541 B | 0755 |
|
edit_rule.cgi | File | 3.35 KB | 0755 |
|
index.cgi | File | 1.44 KB | 0755 |
|
module.info | File | 144 B | 0644 |
|
module.info.af | File | 0 B | 0644 |
|
module.info.af.auto | File | 106 B | 0644 |
|
module.info.ar | File | 0 B | 0644 |
|
module.info.ar.auto | File | 139 B | 0644 |
|
module.info.be | File | 0 B | 0644 |
|
module.info.be.auto | File | 167 B | 0644 |
|
module.info.bg | File | 0 B | 0644 |
|
module.info.bg.auto | File | 179 B | 0644 |
|
module.info.ca | File | 104 B | 0644 |
|
module.info.ca.auto | File | 20 B | 0644 |
|
module.info.cs | File | 0 B | 0644 |
|
module.info.cs.auto | File | 113 B | 0644 |
|
module.info.da | File | 0 B | 0644 |
|
module.info.da.auto | File | 113 B | 0644 |
|
module.info.de | File | 96 B | 0644 |
|
module.info.de.auto | File | 20 B | 0644 |
|
module.info.el | File | 0 B | 0644 |
|
module.info.el.auto | File | 163 B | 0644 |
|
module.info.es | File | 0 B | 0644 |
|
module.info.es.auto | File | 125 B | 0644 |
|
module.info.eu | File | 0 B | 0644 |
|
module.info.eu.auto | File | 115 B | 0644 |
|
module.info.fa | File | 0 B | 0644 |
|
module.info.fa.auto | File | 173 B | 0644 |
|
module.info.fi | File | 0 B | 0644 |
|
module.info.fi.auto | File | 110 B | 0644 |
|
module.info.fr | File | 0 B | 0644 |
|
module.info.fr.auto | File | 124 B | 0644 |
|
module.info.he | File | 0 B | 0644 |
|
module.info.he.auto | File | 150 B | 0644 |
|
module.info.hr | File | 0 B | 0644 |
|
module.info.hr.auto | File | 123 B | 0644 |
|
module.info.hu | File | 96 B | 0644 |
|
module.info.hu.auto | File | 21 B | 0644 |
|
module.info.it | File | 0 B | 0644 |
|
module.info.it.auto | File | 121 B | 0644 |
|
module.info.ja | File | 0 B | 0644 |
|
module.info.ja.auto | File | 135 B | 0644 |
|
module.info.ko | File | 0 B | 0644 |
|
module.info.ko.auto | File | 106 B | 0644 |
|
module.info.lt | File | 0 B | 0644 |
|
module.info.lt.auto | File | 126 B | 0644 |
|
module.info.lv | File | 0 B | 0644 |
|
module.info.lv.auto | File | 122 B | 0644 |
|
module.info.ms | File | 95 B | 0644 |
|
module.info.ms.auto | File | 20 B | 0644 |
|
module.info.mt | File | 0 B | 0644 |
|
module.info.mt.auto | File | 137 B | 0644 |
|
module.info.nl | File | 21 B | 0644 |
|
module.info.nl.auto | File | 101 B | 0644 |
|
module.info.no | File | 21 B | 0644 |
|
module.info.no.auto | File | 92 B | 0644 |
|
module.info.pl | File | 94 B | 0644 |
|
module.info.pl.auto | File | 20 B | 0644 |
|
module.info.pt | File | 0 B | 0644 |
|
module.info.pt.auto | File | 123 B | 0644 |
|
module.info.pt_BR | File | 0 B | 0644 |
|
module.info.pt_BR.auto | File | 132 B | 0644 |
|
module.info.ro | File | 0 B | 0644 |
|
module.info.ro.auto | File | 124 B | 0644 |
|
module.info.ru | File | 0 B | 0644 |
|
module.info.ru.auto | File | 167 B | 0644 |
|
module.info.sk | File | 0 B | 0644 |
|
module.info.sk.auto | File | 111 B | 0644 |
|
module.info.sl | File | 0 B | 0644 |
|
module.info.sl.auto | File | 124 B | 0644 |
|
module.info.sv | File | 0 B | 0644 |
|
module.info.sv.auto | File | 107 B | 0644 |
|
module.info.th | File | 0 B | 0644 |
|
module.info.th.auto | File | 178 B | 0644 |
|
module.info.tr | File | 0 B | 0644 |
|
module.info.tr.auto | File | 138 B | 0644 |
|
module.info.uk | File | 0 B | 0644 |
|
module.info.uk.auto | File | 174 B | 0644 |
|
module.info.ur | File | 0 B | 0644 |
|
module.info.ur.auto | File | 172 B | 0644 |
|
module.info.vi | File | 0 B | 0644 |
|
module.info.vi.auto | File | 133 B | 0644 |
|
module.info.zh | File | 0 B | 0644 |
|
module.info.zh.auto | File | 93 B | 0644 |
|
module.info.zh_TW | File | 0 B | 0644 |
|
module.info.zh_TW.auto | File | 102 B | 0644 |
|
save_rule.cgi | File | 2.31 KB | 0755 |
|
tcpwrappers-lib.pl | File | 3.2 KB | 0755 |
|