#!/usr/bin/perl # Squid reconfiguration script rev: 0.91 # use File::Tail; sub ban { open( CFG, "<", "/etc/squid/squid.conf" ); while ( ) { push @cfg, $_; } close(CFG); #my $line = shift; #my ($proxy) = $line =~ m| - \S+/(proxy_\S+)|; #my @cutoff = grep /$proxy/, @cfg; my @cutoff = grep /proxy_/,@_; s/ROUNDROBIN_PARENT\///g for @cutoff; @cutoff = grep /@cutoff/,@cfg; open( GREY, ">>", "/etc/squid/all.grey" ); if (@cutoff) { print GREY @cutoff; print GREY "10\n"; } close (GREY); print "Banned parrent: @cutoff\n"; print " Strings with parrent in conf: @cutoff\n"; open( EXC, ">", "/etc/squid/squid.conf" ); my %dels = map { $_ => 1 } @cutoff; @cfg = grep !$dels{$_}, @cfg; print EXC @cfg; close (EXC); @args = ("/etc/init.d/squid", "reload"); system(@args) == 0 or die "system @args failed: $?" ; } my $name = "/var/log/squid/access.log"; my $ref=tie *FH,"File::Tail",(name=>$name, maxinterval=>1); while () { m|/sorry/| && ban (split ' ',$_); }