Server IP : 195.201.23.43 / Your IP : 18.219.89.186 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 : |
#!/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