mirror of
https://github.com/webmin/webmin.git
synced 2025-08-16 14:51:18 +00:00
52 lines
1.3 KiB
Perl
Executable File
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("");
|
|
|