2 # Delete a bunch of delay pools
4 require './squid-lib.pl';
5 &error_setup($text{'dpool_err'});
6 $access{'delay'} || &error($text{'delay_ecannot'});
8 @d = split(/\0/, $in{'d'});
9 @d || &error($text{'dpool_enone'});
11 # Get the current settings
12 &lock_file($config{'squid_conf'});
13 $conf = &get_config();
14 @pools = &find_config("delay_class", $conf);
15 @params = &find_config("delay_parameters", $conf);
16 @access = &find_config("delay_access", $conf);
17 $pools = &find_config("delay_pools", $conf);
19 # Do the deletion, highest first
20 foreach $d (sort { $b <=> $a } @d) {
21 ($pool) = grep { $_->{'values'}->[0] == $d } @pools;
22 ($param) = grep { $_->{'values'}->[0] == $d } @params;
23 @access = grep { $_->{'values'}->[0] != $d } @access;
24 @pools = grep { $_ ne $pool } @pools;
25 @params = grep { $_ ne $param } @params;
26 map { $_->{'values'}->[0]-- if ($_->{'values'}->[0] > $d) }
27 (@access, @pools, @params);
28 &save_directive($conf, "delay_class", \@pools);
29 &save_directive($conf, "delay_parameters", \@params);
30 &save_directive($conf, "delay_access", \@access);
31 $pools->{'values'}->[0]--;
32 &save_directive($conf, "delay_pools", [ $pools ]);
36 &unlock_file($config{'squid_conf'});
37 &webmin_log("delete", "pools", scalar(@d));
38 &redirect("edit_delay.cgi");