#!/usr/bin/perl
####################################
# Usuários Online #
####################################
# Para mostrar o usuarios coloque a linha abixo em seu
site
# <script language="JavaScript"
src="http://www.seusite.com.br/user_online.cgi"></script>
# salve o arquivo como user_online.cgi
####################################
# Minutos para um IP ser Valido
$minutes = 3;
$ip = $ENV{'REMOTE_ADDR'};
$time = time;
$found = 0;
$users = 0;
# Se não existir o arquivo user.txt ele sera
automaticamente criado.
if (! (-f "users.txt")){
open (CREATE, ">users.txt");
close CREATE;
chmod(0666, "users.txt");
}
open FILE,"+<users.txt";
&lock(FILE);
@users = <FILE>;
chomp(@users);
seek(FILE,0,0);
truncate(FILE,0);
foreach $line (@users)
{
($savedip,$savedtime) = split/\|/,$line;
if ($savedip eq $ip) {$savedtime = $time;$found = 1;}
if ($time < $savedtime + ($minutes * 60))
{
print FILE "$savedip|$savedtime\n";
$users = $users + 1;
}
}
if ($found == 0)
{
print FILE "$ip|$time\n";
$users = $users + 1;
}
close (FILE);
$log="counter.txt";
open (FILE,$log);
$counter=<FILE>;
close(FILE);
$counter++;
open (WRITE,">$log");
print WRITE "$counter";
close(WRITE);
print "Content-type: text/javascript\n\n";
print qq~document.write\('visitantes online $users'\)
\;~;
exit;
sub lock
{
my $lock = 0;
while ($lock < 5)
{
if (flock(@_[0], 2)) {return 0;}
sleep (1);
$lock++;
}
exit;
}