#! perl -w use strict; use Cwd; my @logs = <@ARGV>; my %reports=(); my %results=(); my ($mday,$mon,$year) = (localtime(time))[3 .. 5]; $year = $year +1900; $mon = $mon +1; my $path = cwd; open INPUT_IN, "bat/FindSitesInput.txt" or die "Can't open input file! :$!"; while( ) { next if m/^\#/; my @tokens = split("\t"); if( !isExpired( $tokens[5] ) ) { $reports{$tokens[0]}= [ @tokens[1..9] ]; $results{$tokens[0]}= [ ]; } } close INPUT_IN or die "Can't close input file: $!"; foreach my $logfile ( @logs ) { print "\nSearching $logfile\n"; open LOG_IN, $logfile or die "Can't open $logfile! :$!"; while( my $currentLine = ) { my @tokens = split ' ', $currentLine; foreach my $rep (keys %reports) { my @comparisons = split( ' ', $reports{$rep}[0] ); my $match = 0; foreach my $item (@comparisons) { if( $reports{$rep}[1] eq 'site' ) { $match = 1 if $tokens[6] =~ /$item/; } elsif( $reports{$rep}[1] eq 'ip' ) { $match = 1 if $tokens[2] =~ /$item/; } last if $match; } if( $match && $reports{$rep}[2] eq 'normal' ) { push @{$results{$rep}}, $currentLine; } elsif( !$match && $reports{$rep}[2] eq 'reverse' ) { push @{$results{$rep}}, $currentLine; } } } close (LOG_IN) || die "Can't close log file: $!"; foreach my $rep (keys %results) { mkdir $reports{$rep}[5] if not! -d $reports{$rep}[5]; open OUTPUT, ">$reports{$rep}[5]/$logfile-$rep" or die "Can't open $reports{$rep}[5]/$logfile-$rep! :$!"; print OUTPUT @{$results{$rep}}; close OUTPUT or die "Can't close output file: $!"; system( "c:/blat/blat \"$path/$reports{$rep}[5]/$logfile-$rep\" -t \"$reports{$rep}[3]\"" ) unless $reports{$rep}[3] eq 'none'; if(($reports{$rep}[6] eq 'true')) { system( "perl bat/ipandbytes.pl $reports{$rep}[5]/$logfile-$rep" ); unlink "$reports{$rep}[5]\\$logfile-$rep" if $reports{$rep}[7] eq 'false'; } if( $reports{$rep}[8] eq 'true' ) { system( "pkzip25 -add -max $reports{$rep}[5]/$logfile-$rep" ); system( "move $reports{$rep}[5]/$logfile-$rep.zip /zip" ); } } } sub isExpired { my $date = shift; chomp $date; return 0 if $date =~ /none/; my( $repMon, $repDay, $repYear ) = $date =~ /([0-9]+)\/([0-9]+)\/([0-9][0-9][0-9][0-9])/; return 0 if $repYear > $year or $repMon > $mon && $repYear == $year or $repDay > $mday && $repMon == $mon && $repYear == $year; return 1; }