#!/usr/bin/perl
use FileHandle;
use IPC::Open2;
use Fcntl qw(:flock);
$|=1;

## Konfiguration
my $squidGuard = "/usr/bin/squidGuard";
my $proxymanager = "/usr/local/sbin/proxy-manager";
my $redirecturl = "http://server/cgi-bin/inactive.cgi";
my $logfile = "/var/log/squid/squid-redirector";

my $pid = open2(*Reader, *Writer, $squidGuard);

&log("[$$,$pid] started");

while (<>) {
    my $request = $_;
    my @fields = split / /, $request;
    my @fields2 = split /\//, $fields[1];
    my $ip = $fields2[0];

    chomp($request);
    chomp($ip);

    #&log("request: $request ($ip)");
    
    print &check_ip($ip, $request) . "\n";
}

&log("[$$,$pid] stopped");

exit 0;

sub log {
  my $msg = shift;
  my $date = localtime(time);
  chomp($msg);
  system("echo \"$date $msg\" >> $logfile");
}

sub check_ip {
  my $ip = shift;
  my $request = shift;

  if ($ip eq "127.0.0.1") {
      return;
  }

  my $active = `$proxymanager -a $ip`;

  #&log("proxymanager: $active");
  
  if ($active eq "") {
      return "$redirecturl";
  }

  print Writer "$request\n";
  my $response = <Reader>;
  chomp($response);
  return $response;
}
