#!/usr/bin/perl

$0 = 'redirector' ;

$| = 1;

#$logfile = '/usr/local/squid/etc/redir/redir.log';
$rip = 'http://web.alium.ru/ban/empty.gif';
$bad_list = '/usr/local/squid/etc/redir/bad';
$good_list = '/usr/local/squid/etc/redir/good';

open F, "<$bad_list";  @bad  = map {chomp;$_} <F>; close F;
open F, "<$good_list"; @good = map {chomp;$_} <F>; close F;

while (<>) {
  ($url, $who, $ident, $method) = /^(\S+) (\S+) (\S+) (\S+)$/;
  $prev = $url;
  $match = $saved = undef;

  foreach $bad(@bad) {
    if ($url =~ /$bad/) { $match = $bad; $url = $rip; last; }
    }

  if ($match) {
     foreach $good(@good) {
#       print STDERR "matching against '$good'\n";
       if ($prev =~ /$good/) { $saved = $good; $url = $prev; last; }
       }
     }

  print "$url $who $ident $method\n" ;

  if ($logfile and open(F, ">>$logfile")) {
     print F "'$match' was hit by '$prev'".($saved ? " but was saved by '$saved'." : ".")."\n" if $match;
     close F;
     }
  }

