diff --git a/MANIFEST b/MANIFEST index 222749a..6167f64 100644 --- a/MANIFEST +++ b/MANIFEST @@ -9,16 +9,16 @@ etc/excluded etc/network-aliases etc/squidanalyzer.conf etc/user-aliases -resources/back-arrow.png -resources/cursor.png -resources/domain.png +resources/images/back-arrow.png +resources/images/cursor.png +resources/images/domain.png +resources/images/info.png +resources/images/logo-squidanalyzer.png +resources/images/network.png +resources/images/user.png resources/flotr2.js -resources/info.png -resources/logo-squidanalyzer.png -resources/network.png resources/sorttable.js resources/squidanalyzer.css -resources/user.png lang/de_DE.txt lang/en_US.txt lang/fr_FR.txt diff --git a/Makefile.PL b/Makefile.PL index 728e91d..566f4b5 100644 --- a/Makefile.PL +++ b/Makefile.PL @@ -42,11 +42,16 @@ if [ ! -d "$DESTDIR$BINDIR" ]; then fi if [ ! -d "$DESTDIR$CONFDIR" ]; then mkdir -p $DESTDIR$CONFDIR +fi +if [ ! -d "$DESTDIR$CONFDIR/lang" ]; then mkdir -p $DESTDIR$CONFDIR/lang fi if [ ! -d "$DESTDIR$HTMLDIR" ]; then mkdir -p $DESTDIR$HTMLDIR fi +if [ ! -d "$DESTDIR$HTMLDIR/images" ]; then + mkdir -p $DESTDIR$HTMLDIR/images +fi }; if ($DOCDIR ne '') { @@ -68,15 +73,15 @@ install -m 644 etc/user-aliases $DESTDIR$CONFDIR/user-aliases.orig install -m 644 etc/excluded $DESTDIR$CONFDIR/excluded.orig install -m 755 squid-analyzer $DESTDIR$BINDIR/ install -m 644 resources/sorttable.js $DESTDIR$HTMLDIR/ -install -m 644 resources/logo-squidanalyzer.png $DESTDIR$HTMLDIR/ install -m 644 resources/squidanalyzer.css $DESTDIR$HTMLDIR/ install -m 644 resources/flotr2.js $DESTDIR$HTMLDIR/ -install -m 644 resources/cursor.png $DESTDIR$HTMLDIR/ -install -m 644 resources/domain.png $DESTDIR$HTMLDIR/ -install -m 644 resources/back-arrow.png $DESTDIR$HTMLDIR/ -install -m 644 resources/info.png $DESTDIR$HTMLDIR/ -install -m 644 resources/network.png $DESTDIR$HTMLDIR/ -install -m 644 resources/user.png $DESTDIR$HTMLDIR/ +install -m 644 resources/images/logo-squidanalyzer.png $DESTDIR$HTMLDIR/images/ +install -m 644 resources/images/cursor.png $DESTDIR$HTMLDIR/images/ +install -m 644 resources/images/domain.png $DESTDIR$HTMLDIR/images/ +install -m 644 resources/images/back-arrow.png $DESTDIR$HTMLDIR/images/ +install -m 644 resources/images/info.png $DESTDIR$HTMLDIR/images/ +install -m 644 resources/images/network.png $DESTDIR$HTMLDIR/images/ +install -m 644 resources/images/user.png $DESTDIR$HTMLDIR/images/ install -m 644 lang/* $DESTDIR$CONFDIR/lang/ pod2man doc/SquidAnalyzer.pod doc/squidanalyzer.3 install -m 644 doc/squidanalyzer.3 $DESTDIR$MANDIR/squidanalyzer.3 diff --git a/SquidAnalyzer.pm b/SquidAnalyzer.pm index dd327bd..453289e 100644 --- a/SquidAnalyzer.pm +++ b/SquidAnalyzer.pm @@ -36,6 +36,7 @@ $BZCAT_PROG = "/bin/bzcat"; # Default translation srings my %Translate = ( + 'Charset' => 'utf-8', '01' => 'Jan', '02' => 'Feb', '03' => 'Mar', @@ -1106,44 +1107,13 @@ sub _print_header - +
@@ -1424,8 +1394,7 @@ sub _print_cache_stat @total = (); print $out qq{ -
$Translate{'Requests'} | $Translate{'Bytes'} | @@ -1464,24 +1433,23 @@ sub _print_cache_stat print $out qq{
---|
$code_requests | $code_bytes |
- $Translate{'Hit'}: $Translate{'Hit_help'} - $Translate{'Miss'}: $Translate{'Miss_help'} - $Translate{'Users'}: $Translate{'Users_help'} - $Translate{'Sites'}: $Translate{'Sites_help'} - $Translate{'Domains'}: $Translate{'Domains_help'} ++ $Translate{'Hit'}: $Translate{'Hit_help'}}; %code_stat = (); @@ -1534,8 +1502,7 @@ sub _print_mime_stat print $out "
+ $Translate{'Miss'}: $Translate{'Miss_help'}
+ $Translate{'Users'}: $Translate{'Users_help'}
+ $Translate{'Sites'}: $Translate{'Sites_help'}
+ $Translate{'Domains'}: $Translate{'Domains_help'}
}; print $out qq{ - $Translate{'Cost'}: $Translate{'Cost_help'} $self->{CostPrice} $self->{Currency} + $Translate{'Cost'}: $Translate{'Cost_help'} $self->{CostPrice} $self->{Currency}
} if ($self->{CostPrice}); print $out qq{ - +$Translate{'Mime_number'}: $ntype
\n"; print $out qq{ --}; $self->_print_footer(\$out); $out->close(); @@ -1989,8 +1953,7 @@ sub _print_user_stat $user_bytes = ''; print $out qq{ -+
-- }; print $out qq{ @@ -1722,8 +1688,7 @@ sub _print_network_stat $network_bytes = ''; print $out "
$Translate{'Mime_link'} @@ -1574,7 +1541,6 @@ sub _print_mime_stat } print $out qq{$Translate{'Network_number'}: $nnet
\n"; print $out qq{ --+
\n"; print $out qq{\n\n"; + print $out "
$Translate{'Network_link'} @@ -1848,7 +1813,7 @@ sub _print_network_stat $self->_print_footer(\$outnet); $outnet->close(); } - print $out "@@ -1857,7 +1822,6 @@ sub _print_network_stat[ $Translate{'Up_link'} ] -+
- }; print $out qq{ @@ -2173,8 +2135,7 @@ sub _print_netuser_stat $Translate{'User_number'}: $nuser
$Translate{'Users'} @@ -2116,7 +2079,6 @@ sub _print_user_stat } print $out qq{
}; print $$out qq{ --+
- }; return $nuser; } @@ -2289,8 +2249,7 @@ sub _print_user_detail $Translate{'Url_number'}: $nurl
$Translate{'Users'} @@ -2241,7 +2202,6 @@ sub _print_netuser_stat } print $$out qq{
}; print $$out qq{ --+
- }; } @@ -2404,8 +2362,7 @@ sub _print_top_url_stat print $out "
$Translate{'Url'} @@ -2337,7 +2296,6 @@ sub _print_user_detail } print $$out qq{$t1 $stat_date
\n"; } print $out qq{ --+
}; } print $out qq{ @@ -2606,8 +2563,7 @@ sub _print_top_domain_stat print $out "}; + print $out qq{
$Translate{'Url'} @@ -2480,7 +2437,7 @@ sub _print_top_url_stat $i++; last if ($i > $self->{TopNumber}); } - print $out qq{$t1 $stat_date
\n"; } print $out qq{ --+
}; } print $out qq{ @@ -2745,11 +2701,9 @@ sub _gen_summary my $colspn = 2; $colspn = 3 if ($self->{CostPrice}); print $out qq{ -}; + print $out qq{
$Translate{'Url'} @@ -2682,7 +2638,7 @@ sub _print_top_domain_stat $i++; last if ($i > $self->{TopNumber}); } - print $out qq{$Translate{'Globals_Statistics'}
--+
-
@@ -2795,16 +2749,14 @@ sub _gen_summary print $out qq{ $Translate{'Legende'}
-- $Translate{'Hit'}: $Translate{'Hit_help'} - $Translate{'Miss'}: $Translate{'Miss_help'} ++ $Translate{'Hit'}: $Translate{'Hit_help'}}; $self->_print_footer(\$out); diff --git a/doc/squidanalyzer.3 b/doc/squidanalyzer.3 index 66e9c4d..7bdfb63 100644 --- a/doc/squidanalyzer.3 +++ b/doc/squidanalyzer.3 @@ -133,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "SQUIDANALYZER 1" -.TH SQUIDANALYZER 1 "2012-09-12" "perl v5.10.1" "User Contributed Perl Documentation" +.TH SQUIDANALYZER 1 "2012-12-03" "perl v5.10.1" "User Contributed Perl Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l diff --git a/lang/de_DE.txt b/lang/de_DE.txt index 389c9ce..c1a992e 100644 --- a/lang/de_DE.txt +++ b/lang/de_DE.txt @@ -91,5 +91,5 @@ Domain_graph_bytes_title Domain Bytes Statistik First_visit Erster Besuch Last_visit Letzter Besuch Globals_Statistics Globals Statistics -Legende Legende +Legende Legend File_Generated File generated by diff --git a/lang/en_US.txt b/lang/en_US.txt index 8d2157e..e3d40ea 100644 --- a/lang/en_US.txt +++ b/lang/en_US.txt @@ -91,5 +91,5 @@ Domain_graph_bytes_title Domain Bytes Statistiques on First_visit First visit Last_visit Last visit Globals_Statistics Globals Statistics -Legende Legende +Legende Legend File_Generated File generated by diff --git a/lang/fr_FR.txt b/lang/fr_FR.txt index 0977d7d..6408f76 100644 --- a/lang/fr_FR.txt +++ b/lang/fr_FR.txt @@ -1,18 +1,18 @@ #------------------------------------------------------------------------------ -# Fichier de traduction des chaines de caractères du programme SquidAnalyzer. -# La premiere colonne correspond aux clés d'accès par le programme aux -# traductions données dans la deuxieme colonne. Les clés ne doivent pas être -# modifiés et la casse doit etre repectée. Le séparateur de colonne est la +# Fichier de traduction des chaines de caractères du programme SquidAnalyzer. +# La premiere colonne correspond aux clés d'accès par le programme aux +# traductions données dans la deuxieme colonne. Les clés ne doivent pas être +# modifiés et la casse doit etre repectée. Le séparateur de colonne est la # tabulation. # # Les tags %s et %d dans les chaines de traduction correspondent aux valeurs -# dynamiques subtituées par le programme. Suivant la langue utilisée leur -# emplacement peut être modifié. +# dynamiques subtituées par le programme. Suivant la langue utilisée leur +# emplacement peut être modifié. # # Auteur: Gilles Darold #------------------------------------------------------------------------------ 01 Jan -02 Fév +02 Fév 03 Mar 04 Avr 05 Mai @@ -22,21 +22,21 @@ 09 Sep 10 Oct 11 Nov -12 Déc -Requests Requêtes +12 Déc +Requests Requêtes Bytes Octets Megabytes Mega octets Total Total -Years Années +Years Années Months Mois Days Jours -Hit Trouvés +Hit Trouvés Miss Manquants Cost Coût Users Utilisateurs Sites Sites Domains Domaines -Requests_graph Requêtes +Requests_graph Requêtes Megabytes_graph Mega octets Months_graph Mois Days_graph Jours @@ -44,23 +44,23 @@ Hit_graph Trouves Miss_graph Manquants Total_graph Total Domains_graph Domaines -Users_help Nombre total d'utilisateurs differents pendant cette période -Sites_help Nombre total de sites differents visités pendant cette période -Domains_help Nombre total de domaines visités pendant cette période -Hit_help Objets trouvés dans le cache -Miss_help Objets non trouvés dans le cache +Users_help Nombre total d'utilisateurs differents pendant cette période +Sites_help Nombre total de sites differents visités pendant cette période +Domains_help Nombre total de domaines visités pendant cette période +Hit_help Objets trouvés dans le cache +Miss_help Objets non trouvés dans le cache Cost_help 1 Mega octet = -Generation Rapport généré +Generation Rapport généré Main_cache_title Statistiques du cache Cache_title Statistiques du cache pour Stat_label Stat Mime_link Mime Types -Network_link Réseaux +Network_link Réseaux User_link Utilisateurs Top_url_link Top Urls Top_domain_link Top Domaines Back_link Retour -Graph_cache_hit_title Statistiques %s des requêtes pour +Graph_cache_hit_title Statistiques %s des requêtes pour Graph_cache_byte_title Statistiques %s des transferts pour Hourly par heure Hours Heures @@ -70,26 +70,26 @@ Monthly Mensuelles Months Mois Mime_title Statistiques Mimes Types pour Mime_number Nombre de mimes types -Network_title Statistiques Réseaux pour -Network_number Nombre de réseaux -Duration Durée +Network_title Statistiques Réseaux pour +Network_number Nombre de réseaux +Duration Durée Time Temps Largest Plus gros transfert Url Url User_title Statistiques utilisateurs pour User_number Nombre d'utilisateurs -Url_Hits_title Url Top %d des requêtes pour +Url_Hits_title Url Top %d des requêtes pour Url_Bytes_title Url Top %d des transferts pour -Url_Duration_title Url Top %d par durée pour +Url_Duration_title Url Top %d par durée pour Url_number Nombre d'Url -Domain_Hits_title Domaines Top %d des requêtes pour +Domain_Hits_title Domaines Top %d des requêtes pour Domain_Bytes_title Domaines Top %d des transferts pour -Domain_Duration_title Domaines Top %d par durée pour +Domain_Duration_title Domaines Top %d par durée pour Domain_number Nombre de domaines -Domain_graph_hits_title Statistiques des requêtes par domaines pour +Domain_graph_hits_title Statistiques des requêtes par domaines pour Domain_graph_bytes_title Statistiques des transferts par domaines pour -First_visit Première visite -Last_visit Dernière visite -Globals_Statistics Statistiques Globales +First_visit Première visite +Last_visit Dernière visite +Globals_Statistics Statistiques Globales Legende Legende -File_Generated Fichier généré par +File_Generated Fichier généré par diff --git a/lang/pt_BR.txt b/lang/pt_BR.txt index aa26916..6cdbb0b 100644 --- a/lang/pt_BR.txt +++ b/lang/pt_BR.txt @@ -92,5 +92,5 @@ Domain_graph_bytes_title Bytes Transferidos de Dom First_visit Primeira visita Last_visit Ultima visita Globals_Statistics Globales Statistiques -Legende Legende +Legende Legend File_Generated File generated by diff --git a/resources/flotr2.js b/resources/flotr2.js index 57bed7a..2d6a4af 100644 --- a/resources/flotr2.js +++ b/resources/flotr2.js @@ -1,3 +1,15 @@ +function toggle(idButton, idDiv, label) { + if(document.getElementById(idDiv)) { + if(document.getElementById(idDiv).style.display == 'none') { + document.getElementById(idDiv).style.display = 'block'; + document.getElementById(idButton).value = 'Hide '+label; + } else { + document.getElementById(idDiv).style.display = 'none'; + document.getElementById(idButton).value = 'Show '+label; + } + } +} + /*! * bean.js - copyright Jacob Thornton 2011 * https://github.com/fat/bean diff --git a/resources/images/back-arrow.png b/resources/images/back-arrow.png new file mode 100644 index 0000000..b797d45 Binary files /dev/null and b/resources/images/back-arrow.png differ diff --git a/resources/images/cursor.png b/resources/images/cursor.png new file mode 100644 index 0000000..b206c34 Binary files /dev/null and b/resources/images/cursor.png differ diff --git a/resources/images/domain.png b/resources/images/domain.png new file mode 100644 index 0000000..d6ffe71 Binary files /dev/null and b/resources/images/domain.png differ diff --git a/resources/images/info.png b/resources/images/info.png new file mode 100644 index 0000000..68e3294 Binary files /dev/null and b/resources/images/info.png differ diff --git a/resources/logo-squidanalyzer.png b/resources/images/logo-squidanalyzer.png similarity index 100% rename from resources/logo-squidanalyzer.png rename to resources/images/logo-squidanalyzer.png diff --git a/resources/images/network.png b/resources/images/network.png new file mode 100644 index 0000000..7732fde Binary files /dev/null and b/resources/images/network.png differ diff --git a/resources/images/user.png b/resources/images/user.png new file mode 100644 index 0000000..3b5b3b0 Binary files /dev/null and b/resources/images/user.png differ diff --git a/resources/squidanalyzer.css b/resources/squidanalyzer.css index a9d3e59..9b1a79a 100644 --- a/resources/squidanalyzer.css +++ b/resources/squidanalyzer.css @@ -10,9 +10,9 @@ body { font-size: 10pt; background-color: #F1F1F1; min-width: 900px; } .line-separator { height:1px; width:450px; background:#717171; border-bottom:1px solid #313030; margin-top:-30px; margin-left: 10px; margin-bottom: 45px; } -pre .descLegende { font-style: italic; } +.descLegende { font-style: italic; } -pre .legendeTitle { font-variant: small-caps; font-weight: bold; font-size: 1.3em; line-height: 18pt; letter-spacing: 2px; } +.legendeTitle { font-variant: small-caps; font-weight: bold; font-size: 1.3em; line-height: 18pt; letter-spacing: 2px; } #alignLeft { float: left; } @@ -22,19 +22,42 @@ pre .legendeTitle { font-variant: small-caps; font-weight: bold; font-size: 1.3e .displayGraph { border: 0px; } -#stata .headerBlack { color: black; font: bold 14px "Trebuchet MS", Verdana, Arial, Helvetica, sans-serif; font-variant: small-caps; } +table.stata th.headerBlack { color: black; font: bold 12px "Trebuchet MS", Verdana, Arial, Helvetica, sans-serif; font-variant: small-caps; } -#stata table { border-collapse: collapse; width: 90%; margin-left:auto; margin-right:auto; border: 0px; white-space:nowrap; } +table.stata { border-collapse: collapse; width: 90%; margin-left:auto; margin-right:auto; border: 0px; white-space:nowrap; } -#stata th { background: #76add2; font: 14px "Trebuchet MS", Verdana, Arial, Helvetica, sans-serif; font-variant: small-caps; letter-spacing: 2px; padding-left: 20px; padding-right: 20px; padding-top: 3px; padding-bottom: 3px; border: 2px solid silver; color: #F1F1F1; } +table.stata th { background: #76add2; font: 12px "Trebuchet MS", Verdana, Arial, Helvetica, sans-serif; font-variant: small-caps; letter-spacing: 2px; padding-left: 20px; padding-right: 20px; padding-top: 3px; padding-bottom: 3px; border: 2px solid silver; color: #F1F1F1; } -#stata td { text-align: center; padding-left: 20px; padding-right: 20px; padding-top: 5px; padding-bottom: 5px; border: 2px solid silver; font-style: italic; } +table.stata td { text-align: center; padding-left: 20px; padding-right: 20px; padding-top: 5px; padding-bottom: 5px; border: 2px solid silver; font-style: italic; } -#stata th.nobg { background: none; border-top: 0px; border-left: 0px; padding-left: 20px; padding-right: 20px; padding-top: 3px; padding-bottom: 3px; } +table.stata th.nobg { background: none; border-top: 0px; border-left: 0px; padding-left: 20px; padding-right: 20px; padding-top: 3px; padding-bottom: 3px; } -#stata td a { font-variant: small-caps; text-decoration: none; color: black; font-weight: bold; font-style: normal; font-size: 15px; } +table.stata td a { font-variant: small-caps; text-decoration: none; color: black; font-weight: bold; font-style: normal; font-size: 15px; } -#stata td a:hover { color: #76add2; } +table.stata td a:hover { color: #76add2; } + +.displayLegend { + margin-left: 150px; +} + +/**************/ +/* Graphs */ +/**************/ + +#code_requests, #code_bytes, #network_hits, #network_bytes, #user_hits, #user_bytes, #domain_hits, #domain_bytes { + width : 550px; + height: 300px; + background:#F3F2ED; + border:4px double white; + padding:0 10px; + margin:30px 0 30px 0; + border-radius:10px; + -moz-border-radius:10px; + -webkit-border-radius:10px; + box-shadow:3px 3px 6px 2px #A9A9A9; + -moz-box-shadow:3px 3px 6px 2px #A9A9A9; + -webkit-box-shadow:3px 3px 6px #A9A9A9; +} /**************/ /* Header */ @@ -64,12 +87,12 @@ ul li a { display:block; width:125px; text-decoration:none; text-align:center; p ul li a:hover { color: #76add2; } #menu { margin: 0 auto; padding: 0 auto; height: 28px; clear: both; background-color: black; border-bottom: 3px solid #76add2; } -.iconUser { background-image: url("/squidreport/images/user.png"); background-position: left center; background-repeat: no-repeat; padding-left: 20px; } -.iconArrow { background-image: url("/squidreport/images/back-arrow.png"); background-position: left center; background-repeat: no-repeat; padding-left: 20px; } -.iconDomain { background-image: url("/squidreport/images/domain.png"); background-position: left center; background-repeat: no-repeat; padding-left: 20px; } -.iconNetwork { background-image: url("/squidreport/images/network.png"); background-position: left center; background-repeat: no-repeat; padding-left: 20px; } -.iconUrl { background-image: url("/squidreport/images/cursor.png"); background-position: left center; background-repeat: no-repeat; padding-left: 20px; } -.iconMime { background-image: url("/squidreport/images/info.png"); background-position: left center; background-repeat: no-repeat; padding-left: 20px; } +.iconUser { background-image: url("./images/user.png"); background-position: left center; background-repeat: no-repeat; padding-left: 20px; } +.iconArrow { background-image: url("./images/back-arrow.png"); background-position: left center; background-repeat: no-repeat; padding-left: 20px; } +.iconDomain { background-image: url("./images/domain.png"); background-position: left center; background-repeat: no-repeat; padding-left: 20px; } +.iconNetwork { background-image: url("./images/network.png"); background-position: left center; background-repeat: no-repeat; padding-left: 20px; } +.iconUrl { background-image: url("./images/cursor.png"); background-position: left center; background-repeat: no-repeat; padding-left: 20px; } +.iconMime { background-image: url("./images/info.png"); background-position: left center; background-repeat: no-repeat; padding-left: 20px; } /******************************/ /* Calendar */
+ $Translate{'Miss'}: $Translate{'Miss_help'}
}; - print $out qq{$Translate{'Cost'}: $Translate{'Cost_help'} $self->{CostPrice} $self->{Currency}} if ($self->{CostPrice}); + print $out qq{$Translate{'Cost'}: $Translate{'Cost_help'} $self->{CostPrice} $self->{Currency}
} if ($self->{CostPrice}); print $out qq{ -