Handle hostnames with upper-case letters
[webmin.git] / shorewall / save.cgi
1 #!/usr/bin/perl
2 # save.cgi
3 # Updated, modify or delete a table entry
4
5 require './shorewall-lib.pl';
6 &ReadParse();
7 &get_clean_table_name(\%in);
8 &can_access($in{'table'}) || &error($text{'list_ecannot'});
9 $pfunc = &get_parser_func(\%in);
10 &error_setup($text{$in{'tableclean'}."_err"});
11
12 &lock_table($in{'table'});
13 if ($in{'delete'}) {
14         # Just delete one row
15         &delete_table_row($in{'table'}, $pfunc, $in{'idx'});
16         }
17 else {
18         # Validate inputs
19         $vfunc = $in{'tableclean'}."_validate";
20         @row = &$vfunc();
21         $jfunc = $in{'tableclean'}."_join";
22         if (defined(&$jfunc)) {
23                 $line = &$jfunc(@row);
24                 }
25         else {
26                 $line = join("\t", @row);
27                 }
28
29         # Update or add
30         if ($in{'new'}) {
31                 local $where = $in{'before'} ne '' ? $in{'before'} :
32                                $in{'after'} ne '' ? $in{'after'}+1 : undef;
33                 &create_table_row($in{'table'}, $pfunc, $line, $where);
34                 }
35         else {
36                 # Updating 
37                 &modify_table_row($in{'table'}, $pfunc, $in{'idx'}, $line);
38                 }
39         }
40 &unlock_table($in{'table'});
41 &webmin_log($in{'new'} ? "create" : $in{'delete'} ? "delete" : "modify",
42             "table", $in{'table'});
43 &redirect("list.cgi?table=$in{'table'}");
44