summaryrefslogtreecommitdiff
path: root/0.6.2/stat.pl
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2013-04-06 13:14:47 +0200
committerPaul Buetow <paul@buetow.org>2013-04-06 13:14:47 +0200
commit630af0ed6c0af69c7df2e45aef7a87722a3c00c0 (patch)
treead76f850278b090f7e5c26561035d19c320400cc /0.6.2/stat.pl
parent2860b03f00e48264ed15c132ad90b240ebe6070b (diff)
tagging ychat-perl-legacyychat-perl-legacy
Diffstat (limited to '0.6.2/stat.pl')
-rw-r--r--0.6.2/stat.pl209
1 files changed, 209 insertions, 0 deletions
diff --git a/0.6.2/stat.pl b/0.6.2/stat.pl
new file mode 100644
index 0000000..0cddb6e
--- /dev/null
+++ b/0.6.2/stat.pl
@@ -0,0 +1,209 @@
+#!/usr/bin/perl -w
+# yChat - Copyright by Paul C. Bütow
+
+use CGI;
+$q = new CGI;
+require config;
+
+my $var = $q->param('var');
+$alias = $q->param('alias');
+$tmpid = $q->param('tmpid');
+
+print $q->header();
+&start_html("Statistiken");
+print $q->div("yChat Statistiken"), $q->hr,
+ $q->div( $q->a( { -href=>"stat.pl?var=ranking&alias=$alias&tmpid=$tmpid" }, "Rankings"), " | ",
+ $q->a( { -href=>"stat.pl?var=del&alias=$alias&tmpid=$tmpid" }, "Loginstatistiken"), " | ",
+ $q->a( { -href=>"stat.pl?var=stat&alias=$alias&tmpid=$tmpid" }, "DB-Statistik"), " | ",
+ $q->a( { -href=>"stat.pl?var=code&alias=$alias&tmpid=$tmpid" }, "Programmcode"), " | ",
+ $q->a( { -href=>"stat.pl?var=var&alias=$alias&tmpid=$tmpid" }, "Umgebungsvariablen"),), $q->hr;
+
+if ($var eq "ranking") {
+
+ opendir(COUNTS, "data/user/counts");
+ my @counts = readdir(COUNTS);
+ closedir(COUNTS);
+
+ print "<div>";
+
+ my $nr_start = $q->param('start');
+ my $nr_end = $q->param('end');
+ my %online;
+ my $rank;
+ my $nr;
+
+ foreach(@counts) {
+ if(-f "data/user/counts/$_" ) {
+ if (s#.online##g) {
+ open(TOTAL, "<data/user/counts/$_.online");
+ my $total = <TOTAL>;
+ close TOTAL;
+ $online{sprintf("%.2f",($total / 3600))} = $_;
+ }
+ }
+ }
+
+ print "<div>", $q->b("Rankings:"), $q->br,
+ "<table><tr><td><div><b>#:</b></div></td><td><b><div>St.:</div></b></td><td><b><div>Name:</div></b></td></tr>";
+
+ if (!$nr_start) {
+ $nr_start = 1;
+ } if (!$nr_end) {
+ $nr_end = 20;
+ }
+
+ foreach $wert (reverse(sort { $a <=> $b } keys %online)) {
+ $nr++;
+ if ($online{$wert} eq $alias) {
+ $rank = $nr;
+ last if ($nr > $nr_end);
+ }
+ next if ($nr < $nr_start || $nr > $nr_end);
+ print "<tr><td><font color='ffffff' size='1' face='arial'>".$nr."</font></td><td><font color='ffffff' size='1' face='arial'> ".$wert."h </font></td><td> <a href='main2.pl?var=alias_html&alias=$alias&tmp=$online{$wert}&tmpid=$tmpid'><font size='1' face='arial'>$online{$wert}</font></a></td></tr>\n";
+ }
+ print "</table>", $q->hr;
+ $nr_start -= 20; $nr_end -= 20;
+ print "Rankings von <a href='stat.pl?var=ranking&start=$nr_start&end=$nr_end&alias=$alias&tmpid=$tmpid'>$nr_start bis $nr_end</a> anzeigen ...<br>" if ($nr_start > 0);
+ $nr_start += 40; $nr_end += 40;
+ print "Rankings von <a href='stat.pl?var=ranking&start=$nr_start&end=$nr_end&alias=$alias&tmpid=$tmpid'>$nr_start bis $nr_end</a> anzeigen ...",
+ $q->br, $q->br, $q->b("$alias, Du befindest Dich auf Rank $rank</div>");
+
+} elsif ($var eq "del") {
+
+ print "<div>", $q->b("Alte Benutzer l&ouml;schen:"), $q->br,
+ "Benutzer, die sich 1440 Stunden (60 Tage) nicht mehr in das System eingeloggt haben, werden gelöscht.", $q->br, $q->br;
+
+ opendir(USER, "data/user/options");
+ my @user = readdir(USER);
+ closedir(USER);
+ @user = sort(@user);
+
+ my $i = 0;
+ my $j;
+ my $k = 0;
+ my $l = 0;
+ my $full = $q->param('tmp');
+
+ foreach(@user) {
+ if (-f "data/user/lastlogin/$_") {
+ open(LOGIN,"<data/user/lastlogin/$_");
+ my $login = <LOGIN>;
+ close LOGIN;
+ $login = sprintf("%.2f",((time - $login) / 3600));
+ $j++;
+ if (999 < $login && $login < 1440) { # 1440 = 60 Tage
+ $k++;
+ print $q->font( { -color=>"ffa500" }, $q->b( "$j($k) $_ Letztes Login vor: ".$login."h") ), $q->br, "\n" if ($full ne undef);
+ } elsif ($login < 48) {
+ $l++;
+ print $q->font( { -color=>"ffffef" }, $q->b( "$j($l) $_ Letztes Login vor: ".$login."h") ), $q->br, "\n" if ($full ne undef);
+ } elsif ($login < 1440) {
+ print "$j $_ Letztes Login vor: ".$login."h", $q->br, "\n" if ($full ne undef);
+ } else {
+ $k++;
+ &kill($_,$i++,$login);
+ }
+ } elsif (-f "data/user/options/$_") {
+ &kill($_,$i++);
+ }
+ }
+ print $q->hr if ($full ne undef);
+ print "</div>", $q->div( $q->b(
+ "$j Benutzer befinden sich in der Datenbank!", $q->br,
+ $q->font( { -color=>"ffffef" }, "$l Benutzer haben sich innerhalb der letzten 48 Stunden eingeloggt!"), $q->br,
+ $q->font( { -color=>"ffa500" }, "$k Benutzer haben sich &uuml;ber 1000 Stunden nicht mehr eingeloggt!"), $q->br,
+ $q->font( { -color=>"ff0000" }, "$i Benutzer wurden gerade eben gelöscht!") ), $q->br, $q->br,
+ "PS: Jeder registrierte Benutzername wird nur einmal gez&auml;hlt!" );
+ print $q->br, $q->div( "(", $q->a( { -href=>"stat.pl?var=del&tmp=true&alias=$alias&tmpid=$tmpid"}, "Vollst&auml;ndige Ansicht"), ")" ) if ($full eq undef);
+
+} elsif ($var eq "var") {
+
+ print "<div>", $q->b("Server Umgebungsvariablen:"), $q->br, $q->br,
+ "Die Serverumgebungsvariablen k&ouml;nnen nur von Oberw&auml;chtern eingesehen werden!", $q->br, $q->br;
+
+ if (&hierachie($alias) eq "ow") {
+ &secure_checkid($alias);
+ while(($key,$value) = each(%ENV)) {
+ print "$key = $value\n", $q->br;
+ }
+ }
+
+ print "</div>";
+
+} elsif ($var eq "stat") {
+
+ print $q->div( $q->b("yChat-DB Statistik:") ), $q->br;
+ $files = 0;
+ $size = 0;
+ $directorys = 1;
+ &zaehle("data");
+ $size = sprintf("%.2f", ($size/1048576));
+ print $q->div( "Dateien insgesamt: $files", $q->br, "MB insgesamt: $size", $q->br, "Verzeichnisse insgesamt: $directorys");
+
+ } elsif ($var eq "code") {
+
+ print $q->div( $q->b("yChat Programmcode-Statistik:") ), $q->br;
+
+ my ($zeilen,$size,$bytes,$files);
+
+ opendir(DIR,".");
+ my @dir = readdir(DIR);
+ closedir(DIR);
+ $dir = sort(@dir);
+
+ foreach(@dir) {
+ if (/.+[pl]$/ || /.+[pm]$/) {
+ $bytes = (-s);
+ $size += $bytes;
+ open(PL, "<$_");
+ my @pl = <PL>;
+ close PL;
+ local $nr = $#pl+1;
+ $zeilen += $nr;
+ $files++;
+ print $q->div("Datei $files: $nr Zeilen, $bytes Bytes"), $q->br, "\n";
+ }
+ }
+print $q->div( $q->b("Programmcode: $files Dateien, $zeilen Zeilen", $q->br, "Größe: $size Bytes") );
+
+}
+
+print $q->end_html;
+
+sub zaehle {
+ local ($dir,$data) = @_;
+ $dir = "$dir/$data" if ($data ne undef);
+ opendir(DATA,$dir);
+ local @data = readdir(DATA);
+ closedir(DATA);
+ $files2 = 0;
+ foreach(@data) {
+ if (-f "$dir/$_") {
+ $files++;
+ $files2++;
+ $size += (-s "$dir/$_");
+ } elsif (-d "$dir/$_" && $_ ne "." && $_ ne "..") {
+ $directorys++;
+ &zaehle($dir,$_);
+ }
+ }
+}
+
+sub kill {
+ my ($rm,$nr,$login) = @_;
+ $login = "XXXXXX" if ($login eq undef);
+ print $q->font( { -color=>"ff0000" }, $q->b( "$j($nr) $rm Letztes Login vor: ".$login."h (wurde gel&ouml;scht)") ), $q->br, "\n";
+ print "<font size='1'>";
+ print "options " if unlink("data/user/options/$rm");
+ print "profiles " if unlink("data/user/profiles/$rm");
+ print "gbooks " if unlink("data/user/gbooks/$rm");
+ print "counts " if unlink("data/user/counts/$rm");
+ print "counts.online " if unlink("data/user/counts/".$rm.".online");
+ print "lastlogin " if unlink("data/user/lastlogin/$rm");
+ print "memos" if unlink("data/user/memos/$rm");
+ print "</font>", $q->hr, "\n";
+ &zeit;
+ open(DEL, ">>data/kill");
+ print DEL "($day.$month.$year $hours:$min:$sec) $rm wurde automatisch gekillt [$alias]\n";
+ close DEL;
+} \ No newline at end of file