#!/usr/bin/perl

$0 = 'redirector' ;

$| = 1 ;

$SITE = 'http://tech.nitek.ru/squid' ;
$LOG = '/var/squid/logs/redirect' ;
$READABLE_TIME = 0 ;
$LAZY_WRITE = 1 ;

if ($LOG) {
  open LOG, ">> $LOG" ;
  unless ($LAZY_WRITE) { select LOG ; $| = 1 ; select STDOUT ; }
}

@b468x60    = qw (
                 reklama\.ru/cgi\-bin/banner/
                 anekdot\.ru/cgi\-bin/banner/
                 www\.lbe\.ru/cgi\-bin/banner/

                 www\.banner\.ru/cgi/sites/
                 www\.banner\.ru/cgi/cl/
                 www\.banners\.ru/cgi\-bin/show\?

                 www\.bizlink\.ru/cgi\-bin/irads\.cgi\?
                 adv\.stars\.ru/cgi\-bin/adv\.pl
                 banner\.ricor\.ru/cgi\-bin/banner\.pl\?
                 click\.ipc\.ru/cgi\-bin/banner-rotate\.pl?\S+&type=1
                 click\.ipc\.ru/cgi\-bin/imgsrc\?\S+&type=1
                 ) ;

@b100x100   = qw (
                 rb2\.design\.ru/cgi\-bin/banner/
                 click\.ipc\.ru/cgi\-bin/banner-rotate\.pl?\S+&type=4
                 click\.ipc\.ru/cgi\-bin/imgsrc\?\S+&type=4
                 ) ;

@various    = qw (
                 www\.linkexchange\.ru/cgi\-bin/e?rle\.cgi\?
                 msnbc\.ru/adv/banner\.pl\?                    #125x125
                 ) ;

@openwindow = qw (
                 ^http://members\.tripod\.com/adm/popup/.+html
                 ^http://www\.geocities\.com/ad_container/pop\.html
                 ^http://www\.geocities\.com/toto\?
                 ^http://windoms\.sitek\.net/popup/banner\.html
                 ) ;

@text       = qw (
                 ^http://tx3\.design\.ru/cgi\-bin/banner/
                 ) ;

$b468x60     = "$SITE/468x60.gif" ;
$b100x100    = "$SITE/100x100.gif" ;
$various     = "$SITE/empty.gif" ;
$closewindow = "$SITE/close.html" ;
$text        = "$SITE/text.js" ;

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

  # Banners 468x60
  $url = $b468x60 if grep $url =~ m%$_%, @b468x60 ;

  # Banners 100x100
  $url = $b100x100 if grep $url =~ m%$_%, @b100x100 ;

  # Banners with various size
  $url = $various if grep $url =~ m%$_%, @various ;

  # JavaScript window
  $url = $closewindow if grep $url =~ m%$_%, @openwindow ;

  # Text banners
  $url = $text if grep $url =~ m%$_%, @text ;


  # Rambler Top100
  $url = "$SITE/top100.gif" if $url =~ m%rambler\.ru/top100\.cnt\?% ;

  # 1000 stars
  $url = "$SITE/1000.gif" if $url =~ m%1000\.stars\.ru/cgi-bin/1000\.cgi\?% ;

  # InfoArt
  $url = "$SITE/infoart.gif"
                     if $url =~ m%infoart\.ru/cgi-bin/ihits/counter\.cgi\?% ;

  # extreme-dm
  $url = "$SITE/extreme.gif" if $url =~ m%extreme-dm\.com/\w/\?% ;

  # List.ru
  $url = "$SITE/list.gif"
                     if $url =~ m%counter\.list\.ru/list-cgi/counter\.dll\?% ;

  # TopList
#  $url = "$SITE/toplist.gif" if $url =~ m%top\.list\.ru/counter\?% ;


  # hitbox.com
  $url = "$SITE/hitbox.gif" if $url =~ m%hitbox\.com/Hitbox\?% ;

  if ($LOG and $url ne $prev) {
    if ($READABLE_TIME) {
      my ($sec, $min, $hour, $mday, $mon, $year) = localtime ;
      printf LOG "%2d.%02d.%2d %2d:%02d:%04d: %s\r\n",
             $mday, $mon + 1, $year + 1900, $hour, $min, $sec,
             "$who $prev > $url" ;
    } else {
      print LOG time, " $who $prev > $url\n" ;
    }
  }

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

close LOG if $LOG ;
