1#!/usr/local/bin/perl 2# pool_access_save.cgi 3# Save or delete a delay pool ACL 4 5use strict; 6use warnings; 7our (%text, %in, %access, $squid_version, %config); 8require './squid-lib.pl'; 9$access{'delay'} || &error($text{'delay_ecannot'}); 10&ReadParse(); 11&lock_file($config{'squid_conf'}); 12my $conf = &get_config(); 13 14my @delays = &find_config("delay_access", $conf); 15my $delay; 16if (defined($in{'index'})) { 17 $delay = $conf->[$in{'index'}]; 18 } 19if ($in{'delete'}) { 20 # delete this ACL 21 splice(@delays, &indexof($delay, @delays), 1); 22 } 23else { 24 # update or create 25 my @vals = ( $in{'idx'}, $in{'action'} ); 26 foreach my $y (split(/\0/, $in{'yes'})) { push(@vals, $y); } 27 foreach my $n (split(/\0/, $in{'no'})) { push(@vals, "!$n"); } 28 my $newdelay = { 'name' => 'delay_access', 'values' => \@vals }; 29 if ($delay) { splice(@delays, &indexof($delay, @delays), 1, $newdelay);} 30 else { push(@delays, $newdelay); } 31 } 32&save_directive($conf, "delay_access", \@delays); 33&flush_file_lines(); 34&unlock_file($config{'squid_conf'}); 35&webmin_log($in{'delete'} ? 'delete' : $delay ? 'modify' : 'create', "delay", 36 $in{'idx'}); 37&redirect("edit_pool.cgi?idx=$in{'idx'}"); 38 39