Handle hostnames with upper-case letters
[webmin.git] / jabber / save_karma.cgi
1 #!/usr/local/bin/perl
2 # save_karma.cgi
3 # Save karma traffic control options
4
5 require './jabber-lib.pl';
6 &ReadParse();
7 &error_setup($text{'karma_err'});
8
9 $conf = &get_jabber_config();
10 $io = &find("io", $conf);
11 $karma = &find("karma", $io);
12
13 if (!$karma) {
14         # Create a new empty karma block
15         $karma = [ "karma", [ { } ] ];
16         }
17
18 # Validate and store inputs
19 if ($in{'rate_def'}) {
20         &save_directive($io, "rate");
21         }
22 else {
23         $in{'points'} =~ /^\d+$/ || &error($text{'karma_epoints'});
24         $in{'time'} =~ /^\d+$/ || &error($text{'karma_etime'});
25         &save_directive($io, "rate",
26                         [ [ "rate", [ { 'points' => $in{'points'},
27                                         'time' => $in{'time'} } ] ] ] );
28         }
29 if ($in{'mode'} == -1) {
30         # Remove karma section entirely
31         &save_directive($io, "karma");
32         }
33 elsif ($in{'mode'} == 3) {
34         # Check user karma inputs
35         foreach $k ('heartbeat', 'init', 'max', 'dec', 'penalty', 'restore') {
36                 $in{$k} =~ /^\d+$/ || &error($text{"karma_e$k"});
37                 local $v = $k eq 'penalty' ? -$in{$k} : $in{$k};
38                 &save_directive($karma, $k, [ [ $k, [ { }, 0, $v ] ] ] );
39                 }
40         }
41 else {
42         # Use pre-defined karma
43         $kp = $karma_presets[$in{'mode'}];
44         foreach $k (keys %$kp) {
45                 &save_directive($karma, $k, [ [ $k, [ { }, 0, $kp->{$k} ] ] ] );
46                 }
47         &save_directive($io, "karma", [ $karma ] );
48         }
49 &save_jabber_config($conf);
50 &redirect("");
51