#!/usr/bin/perl # # LiveCounter Classic 99AX # Copyright (C) 1996-1999, by Chaminda Wickremasinghe. # All Rights Reserved. # # This copy is not licensed for business use. # Visit the LiveCounter Classic home page for details. # # # $sURLFilter = ''; $sIPFilter = ''; $sHostFilter = ''; $sCounterFilter = ''; $bAutoCreate = 1; { local( $bVer ) = ( 'v' eq $ARGV[0] ); local( $bRedirect ) = ( 'u' eq $ARGV[0] ); local( $bHiddenImage ) = ( 'h' eq $ARGV[0] ); if( !$bRedirect && !$bVer ) { print "Content-type: image/gif"; if( !$bVer && ( 0 == $ARGV[0] )) { print "\nPragma: no-cache"; print "\nCache-control: no-cache"; print "\nExpires: Mon, 28 Apr 1997 00:01:00 -0500"; } print "\n\n"; } local( $nCount ) = 0; local( $__COUNTER_DAT) = 'coffeelivecntr.txt'; local( $Temp ); local( *F ); { if( $ARGV[2] && ( '0' ne $ARGV[2] ) ) { $__COUNTER_DAT = $ARGV[2] . '.lcd'; } if( -w "$__COUNTER_DAT" ) { local( $bInc ) = 0; if( open( F, "+<$__COUNTER_DAT" ) ) { flock( F, 2 ); seek( F, 0, 0 ); ( $Temp, $nCount ) = split( /\s/, ); if( $bHiddenImage || $bRedirect || ( !$bVer && ( 0 == $ARGV[0] ) ) ) { local( $bFiltersOk ) = 1; if( $sURLFilter && ( lc( $ENV{'HTTP_REFERER'} ) !~ $sURLFilter ) ) { $bFiltersOk = 0; } if( $bFiltersOk && $sIPFilter && ( $ENV{'REMOTE_ADDR'} =~ $sIPFilter ) ) { $bFiltersOk = 0; } if( $bFiltersOk && $sHostFilter && ( $ENV{'REMOTE_HOST'} =~ $sHostFilter ) ) { $bFiltersOk = 0; } if( $bFiltersOk && $sCounterFilter && ( $__COUNTER_DAT =~ $sCounterFilter ) ) { $bFiltersOk = 0; } if( $bFiltersOk ) { seek( F, 0, 0 ); ++$nCount; print F "Total: $nCount\n"; $bInc = 1; } } flock( F, 8 ); close( F ); } } elsif( $bAutoCreate ) { if( ( !( -e "$__COUNTER_DAT" ) ) && open( F, ">$__COUNTER_DAT" ) ) { print F "Total: 0\n"; close( F ); } } if( $bRedirect ) { local( $n, $sURL ); $sURL = ''; $n = 0; foreach $Temp (@ARGV) { if( $n > 2 ) { $sURL .= (($n>3)?"+":"") . $Temp; } ++$n; } print "Location: $sURL\n\n"; } elsif( $bVer ) { print "Content-type: text/plain\n\n"; print "c0=$nCount\nvr=99AX\n"; } else { binmode( *STDOUT ); if( $bHiddenImage ) { print STDOUT $g_sImage1x1; } else { local( $i, $s1, $n1 ); $s1 = $nCount; for( $i = length( $nCount ); $i < $ARGV[1]; $i++ ) { $s1 = '0' . $s1; } $n1 = substr( $s1, $ARGV[0], 1 ); print STDOUT $g_sHeader0 . $g_sColorMap . $g_sHeader1 . $g_sPixels[ $n1 ] ."\x00;"; } close( STDOUT ); } } }