Private
Server IP : 195.201.23.43  /  Your IP : 3.145.164.105
Web Server : Apache
System : Linux webserver2.vercom.be 5.4.0-192-generic #212-Ubuntu SMP Fri Jul 5 09:47:39 UTC 2024 x86_64
User : kdecoratie ( 1041)
PHP Version : 7.1.33-63+ubuntu20.04.1+deb.sury.org+1
Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : OFF  |  Sudo : ON  |  Pkexec : ON
Directory :  /usr/share/webmin/squid/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ HOME SHELL ]     

Current File : /usr/share/webmin/squid/save_pool.cgi
#!/usr/bin/perl
# save_pool.cgi
# Create, update or delete a delay pool

use strict;
use warnings;
no warnings 'redefine';
no warnings 'uninitialized';
our (%text, %in, %access, $squid_version, %config);
require './squid-lib.pl';
$access{'delay'} || &error($text{'delay_ecannot'});
&ReadParse();
&lock_file($config{'squid_conf'});
my $conf = &get_config();
&error_setup($text{'pool_err'});

my @pools = &find_config("delay_class", $conf);
my @params = &find_config("delay_parameters", $conf);
my @access = &find_config("delay_access", $conf);
my $pools = &find_config("delay_pools", $conf);
$pools ||= { 'name' => 'delay_pools' };

my ($pool, $param);
if (!$in{'new'}) {
	($pool) = grep { $_->{'values'}->[0] == $in{'idx'} } @pools;
	($param) = grep { $_->{'values'}->[0] == $in{'idx'} } @params;
	}
else {
	$pool = { 'name' => 'delay_class',
		  'values' => [ $pools->{'values'}->[0] + 1 ] };
	$param = { 'name' => 'delay_parameters',
		   'values' => [ $pools->{'values'}->[0] + 1 ] };
	}

if ($in{'delete'}) {
	# When deleting, the numbers of any pools 'above' it must be shifted
	# down, any delay_access directives removed and the delay_pools count
	# decreased
	@access = grep { $_->{'values'}->[0] != $in{'idx'} } @access;
	@pools = grep { $_ ne $pool } @pools;
	@params = grep { $_ ne $param } @params;
	map { $_->{'values'}->[0]-- if ($_->{'values'}->[0] > $in{'idx'}) } 
		(@access, @pools, @params);
	&save_directive($conf, "delay_class", \@pools);
	&save_directive($conf, "delay_parameters", \@params);
	&save_directive($conf, "delay_access", \@access);
	$pools->{'values'}->[0]--;
	&save_directive($conf, "delay_pools", [ $pools ]);
	}
else {
	# Validate and store inputs
	$pool->{'values'}->[1] = $in{'class'};
	my @v;
	if ($in{'class'} == 1) {
		@v = ( &parse_limit("agg") );
		}
	elsif ($in{'class'} == 2) {
		@v = ( &parse_limit("agg"), &parse_limit("ind") );
		}
	elsif ($in{'class'} == 3) {
		@v = ( &parse_limit("agg"), &parse_limit("net"),
		       &parse_limit("ind") );
		}
	elsif ($in{'class'} == 4) {
		@v = ( &parse_limit("agg"), &parse_limit("net"),
		       &parse_limit("ind"), &parse_limit("user") );
		}
	elsif ($in{'class'} == 5) {
		@v = ( &parse_limit("tag") );
		}
	$param->{'values'} = [ $param->{'values'}->[0], @v ];

	if ($in{'new'}) {
		# Add the pool and increment the count
		$pools->{'values'}->[0]++;
		push(@pools, $pool);
		push(@params, $param);
		&save_directive($conf, "delay_pools", [ $pools ]);
		}
	&save_directive($conf, "delay_class", \@pools);
	&save_directive($conf, "delay_parameters", \@params);
	&save_directive($conf, "delay_access", \@access);
	}

&flush_file_lines();
&unlock_file($config{'squid_conf'});
&webmin_log($in{'new'} ? "create" : $in{'delete'} ? "delete" : "modify",
	    "pool", $in{'idx'}, \%in);
&redirect("edit_delay.cgi");

# parse_limit(name)
sub parse_limit
{
my ($name) = @_;
if ($in{$name."_def"}) {
	return "-1/-1";
	}
else {
	my @ud = ( .125, 1, 125, 1000, 125000, 1000000 );
	my $u1 = $in{$name."_1_n"};
	my $u2 = $in{$name."_2_n"};
	$u1 =~ /^\d+$/ || $u1 == -1 || &error(&text('pool_elimit1', $u1));
	$u2 =~ /^\d+$/ || $u2 == -1 || &error(&text('pool_elimit2', $u2));
	$u1 = int($u1 * $ud[$in{$name."_1_u"}]);
	$u2 = int($u2 * $ud[$in{$name."_2_u"}]);
	return "$u1/$u2";
	}
}

Private