Files
webmin/jabber/save_karma.cgi
2007-04-12 20:24:50 +00:00

52 lines
1.3 KiB
Perl
Executable File

#!/usr/local/bin/perl
# save_karma.cgi
# Save karma traffic control options
require './jabber-lib.pl';
&ReadParse();
&error_setup($text{'karma_err'});
$conf = &get_jabber_config();
$io = &find("io", $conf);
$karma = &find("karma", $io);
if (!$karma) {
# Create a new empty karma block
$karma = [ "karma", [ { } ] ];
}
# Validate and store inputs
if ($in{'rate_def'}) {
&save_directive($io, "rate");
}
else {
$in{'points'} =~ /^\d+$/ || &error($text{'karma_epoints'});
$in{'time'} =~ /^\d+$/ || &error($text{'karma_etime'});
&save_directive($io, "rate",
[ [ "rate", [ { 'points' => $in{'points'},
'time' => $in{'time'} } ] ] ] );
}
if ($in{'mode'} == -1) {
# Remove karma section entirely
&save_directive($io, "karma");
}
elsif ($in{'mode'} == 3) {
# Check user karma inputs
foreach $k ('heartbeat', 'init', 'max', 'dec', 'penalty', 'restore') {
$in{$k} =~ /^\d+$/ || &error($text{"karma_e$k"});
local $v = $k eq 'penalty' ? -$in{$k} : $in{$k};
&save_directive($karma, $k, [ [ $k, [ { }, 0, $v ] ] ] );
}
}
else {
# Use pre-defined karma
$kp = $karma_presets[$in{'mode'}];
foreach $k (keys %$kp) {
&save_directive($karma, $k, [ [ $k, [ { }, 0, $kp->{$k} ] ] ] );
}
&save_directive($io, "karma", [ $karma ] );
}
&save_jabber_config($conf);
&redirect("");