<html><head><meta name="color-scheme" content="light dark"></head><body><pre style="word-wrap: break-word; white-space: pre-wrap;"># mod_bandwidth.pl
# Editors for bandwidth-limiting directives

sub mod_bandwidth_directives
{
local $rv;
$rv = [ [ 'BandWidthDataDir', 0, 1, 'global', undef, -1 ],
	[ 'BandWidthModule', 0, 1, 'virtual' ],
	[ 'BandWidth', 1, 1, 'directory htaccess' ],
	[ 'LargeFileLimit', 1, 1, 'directory htaccess' ],
	[ 'MaxConnection', 0, 1, 'directory htaccess' ],
#	[ 'MinBandWidth', 1, 1, 'directory htaccess' ]
	[ 'BandWidthPulse', 0, 1, 'virtual' ]
      ];
return &amp;make_directives($rv, $_[0], "mod_bandwidth");
}

sub edit_BandWidthDataDir
{
return (2,
	$text{'mod_band_dir'},
	&amp;opt_input($_[0]-&gt;{'value'}, "BandWidthDataDir", $text{'default'}, 40));
}
sub save_BandWidthDataDir
{
if (!$in{'BandWidthDataDir_def'}) {
	-d $in{'BandWidthDataDir'} || &amp;error($text{'mod_band_edir'});
	local $sd;
	foreach $sd ('master', 'link') {
		-d "$in{'BandWidthDataDir'}/$sd" ||
			&amp;error(&amp;text('mod_band_esubdir', $sd));
		}
	}
return &amp;parse_opt("BandWidthDataDir");
}

sub edit_BandWidthModule
{
return (1, $text{'mod_band_enable'},
	&amp;choice_input($_[0]-&gt;{'value'}, "BandWidthModule", "",
	      "$text{'yes'},on", "$text{'no'},off", "$text{'default'},"));
}
sub save_BandWidthModule
{
return &amp;parse_choice("BandWidthModule");
}

sub edit_BandWidth
{
local ($rv, $i, $max);
$rv = "&lt;table border&gt;\n".
      "&lt;tr $tb&gt; &lt;td&gt;&lt;b&gt;$text{'mod_band_bw'}&lt;/b&gt;&lt;/td&gt;\n".
      "&lt;td&gt;&lt;b&gt;$text{'mod_band_client'}&lt;/b&gt;&lt;/td&gt; &lt;/tr&gt;\n";
$max = @{$_[0]}+1;
for($i=0; $i&lt;$max; $i++) {
	$rv .= "&lt;tr $cb&gt;\n";
	$rv .= "&lt;td&gt;&lt;input name=BandWidth_bw_$i size=10 ".
	       "value=\"$_[0]-&gt;[$i]-&gt;{'words'}-&gt;[1]\"&gt;&lt;/td&gt;\n";
	local $client = $_[0]-&gt;[$i]-&gt;{'words'}-&gt;[0];
	$rv .= sprintf
	        "&lt;td&gt;&lt;input type=radio name=BandWidth_all_$i value=1 %s&gt; $text{'mod_band_all'}\n",
	        $client eq "all" ? "checked" : "";
	$rv .= sprintf
	        "&lt;input type=radio name=BandWidth_all_$i value=0 %s&gt; $text{'mod_band_ent'}\n",
	        $client eq "all" ? "" : "checked";
	$rv .= sprintf
	        "&lt;input name=BandWidth_$i size=20 value=\"%s\"&gt;&lt;/td&gt;\n",
	        $client eq "all" ? "" : $client;
	$rv .= "&lt;/tr&gt;\n";
	}
$rv .= "&lt;/table&gt;\n";
return (2, $text{'mod_band_bandwidth'}, $rv);
}
sub save_BandWidth
{
local ($i, $bw, $client, $all, @rv);
for($i=0; defined($bw = $in{"BandWidth_bw_$i"}); $i++) {
	$client = $in{"BandWidth_$i"};
	$all = $in{"BandWidth_all_$i"};
	next if ($bw eq "");
	$bw =~ /^\d+$/ || &amp;error(&amp;text('mod_band_ebw', $bw));
	$all || $client =~ /^[a-z0-9\.\-\_\/]+$/i ||
		&amp;error(&amp;text('mod_band_eclient', $bw));
	push(@rv, ($all ? "all" : $client)." ".$bw);
	}
return ( \@rv );
}

sub edit_LargeFileLimit
{
local ($rv, $i, $max);
$rv = "&lt;table border&gt;\n".
      "&lt;tr $tb&gt; &lt;td&gt;&lt;b&gt;$text{'mod_band_bw'}&lt;/b&gt;&lt;/td&gt;\n".
      "&lt;td&gt;&lt;b&gt;$text{'mod_band_size'}&lt;/b&gt;&lt;/td&gt; &lt;/tr&gt;\n";
$max = @{$_[0]}+1;
for($i=0; $i&lt;$max; $i++) {
	$rv .= "&lt;tr $cb&gt;\n";
	$rv .= "&lt;td&gt;&lt;input name=LargeFileLimit_bw_$i size=10 ".
	       "value=\"$_[0]-&gt;[$i]-&gt;{'words'}-&gt;[1]\"&gt;&lt;/td&gt;\n";
	$rv .= "&lt;td&gt;&lt;input name=LargeFileLimit_$i size=10 ".
	       "value=\"$_[0]-&gt;[$i]-&gt;{'words'}-&gt;[0]\"&gt;&lt;/td&gt;\n";
	$rv .= "&lt;/tr&gt;\n";
	}
$rv .= "&lt;/table&gt;\n";
return (2, $text{'mod_band_sizelimit'}, $rv);
}
sub save_LargeFileLimit
{
local ($i, $bw, $size, @rv);
for($i=0; defined($bw = $in{"LargeFileLimit_bw_$i"}); $i++) {
	$size = $in{"LargeFileLimit_$i"};
	next if ($bw eq "");
	$bw =~ /^\d+$/ || &amp;error(&amp;text('mod_band_ebw', $bw));
	$size =~ /^\d+$/ || $size == -1 || &amp;error(&amp;text('mod_band_esize', $bw));
	push(@rv, "$size $bw");
	}
return ( \@rv );
}

sub edit_MaxConnection
{
return (1,
	$text{'mod_band_max'},
	&amp;opt_input($_[0]-&gt;{'value'}, "MaxConnections", $text{'default'}, 4));
}
sub save_MaxConnection
{
return &amp;parse_opt("MaxConnections", '^\d+$',
		  $text{'mod_band_emax'});
}

sub edit_BandWidthPulse
{
return (1,
	$text{'mod_band_pulse'},
	&amp;opt_input($_[0]-&gt;{'value'}, "BandWidthPulse", $text{'default'}, 4));
}
sub save_BandWidthPulse
{
return &amp;parse_opt("BandWidthPulse", '^\d+$',
		  $text{'mod_band_epulse'});
}

1;

</pre></body></html>