#!/usr/bin/perl
require 'anneau.pl';
# traitement des arguments
# $action -> le premier mot
# $source -> l'éventuel deuxième mot, séparé pas '&'
($action, $source) = split(/&/,$ENV{"QUERY_STRING"});
# lien aléatoire
if ($action eq "alea")
{
# ajout dans les stats d'appel
if ($app{"$source"} ne '')
{
# on n'enregistre pas les sources inconnues
$app{"$source"}++;
}
$app{"total"}++;
# attribution aléatoire des valeurs d'un site
while ($lien eq 'aucun')
{
&compteuriser;
&variabliser;
}
# si l'internaute n'arrête pas le script,
# ajout dans les statistiques de liens
$lie{"$select"}++;
$lie{"total"}++;
# envoi du header de redirection
print "Location: $lien\n\n";
# mise à jour des stats
&majstats;
}
print "Content-type: text/html\n\n";
# affichage des stats
if ($action eq "stats")
{
# Récupération et affichage des date et heure en cours
$tstats="
Statistiques de l'âne-haut
";
($sec,$mm,$hh,$jour,$mois,$annee) = (localtime);
$annee+=1900;
$mois++;
if ($sec < 10) { $sec = "0".$sec; }
if ($mm < 10) { $mm = "0".$mm; }
if ($hh < 10) { $hh = "0".$hh; }
if ($mois < 10) { $mois = "0".$mois; }
$tstats=$tstats."$jour/$mois/$annee ($hh:$mm:$sec)
\n\n";
# affichage de l'ensemble des statistiques
# bannieres affichées
$tstats=$tstats."Il y a eu $ban{'total'} bannières affichées
\n\n";
foreach $key (sort keys %ban)
{
if ($key ne 'total')
{
$tstats=$tstats."dont $key: $ban{$key} soit ";
&pourcent($ban{$key},$ban{'total'});
$tstats=$tstats."$part %
";
}
}
# appels de liens aléatoires effectués
$tstats=$tstats."
Il y a eu $app{'total'} redirections demandées
\n\n";
foreach $key (sort keys %app)
{
if ($key ne 'total')
{
$tstats=$tstats."par $key: $app{$key} soit ";
&pourcent($app{$key},$app{'total'});
$tstats=$tstats."$part %
";
}
}
# destination du lien aléatoire
$tstats=$tstats."
Il y a eu $lie{'total'} redirections effectuées
\n\n";
foreach $key (sort keys %lie)
{
if ($key ne 'total')
{
$tstats=$tstats."vers $key: $lie{$key} soit ";
&pourcent($lie{$key},$lie{'total'});
$tstats=$tstats."$part %
";
}
}
# 1ere place de liste
$tstats=$tstats."
Il y a eu $lis{'total'} listes affichées
\n\n";
$tstats=$tstats."
Premieres Places:
\n\n";
foreach $key (sort keys %lis)
{
if ($key ne 'total')
{
$tstats=$tstats."$key: $lis{$key} soit ";
&pourcent($lis{$key},$lis{'total'});
$tstats=$tstats."$part %
";
}
}
# destination du lien aléatoire
$tstats=$tstats."
Place Moyenne
\n\n";
foreach $key (sort keys %pla)
{
$tstats=$tstats."$key: ";
$part=(int($pla{$key} / $lis{'total'} * 100))/100;
$tstats=$tstats."$part
";
}
print "$tstats";
if ($source eq "archiver")
{
# demande d'archivage :
# crée une archive, puis affiche les stats et les
# archives enregistrées
&archiver;
&affarchives;
}
else
{
# pas de demande d'archivage, donc archivage proposé
print 'archiver maintenant
';
if ($source eq "archives")
# demande d'affichage d'archives
{
&affarchives;
}
else
{
# pas demande d'affichage d'archives, donc affichage proposé
print 'Voir les archives
';
}
}
}
sub pourcent
{
# renvoit un dénominateur de pourcentage
$part=(int($_[0] / $_[1] * 10000))/100;
}
sub archiver
{
# crée une archive
if (-M "archives.pl" < 5)
{
# si l'ultime archive a moins de 5 jours, archivage refusé
print "L'ultime archive a moins de 5 jours!";
return;
}
# ajout de la nouvelle archive dans la liste
open (farch,">>archives.pl");
print farch "print '$ban{'total'} ($jour/$mois/$annee)
';";
print farch "\n";
close farch;
# création de l'archive au format HTML
$fcree='../stats/'.$ban{'total'}.'.html';
open (fcree,">$fcree");
print fcree "$tstats";
print fcree "
(pour revenir aux stats, cliquer sur precedent)";
close fcree;
}
sub affarchives
{
# affichage de la liste des archives enregistrées
print "
Archives :
";
require 'archives.pl';
}