From 630af0ed6c0af69c7df2e45aef7a87722a3c00c0 Mon Sep 17 00:00:00 2001 From: Paul Buetow Date: Sat, 6 Apr 2013 13:14:47 +0200 Subject: tagging ychat-perl-legacy --- 0.7.1/stat.pm | 206 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 206 insertions(+) create mode 100644 0.7.1/stat.pm (limited to '0.7.1/stat.pm') diff --git a/0.7.1/stat.pm b/0.7.1/stat.pm new file mode 100644 index 0000000..7740079 --- /dev/null +++ b/0.7.1/stat.pm @@ -0,0 +1,206 @@ +sub stat { + +&start_html("Statistiken"); +&menu; +print $q->div("yChat Statistiken"), $q->hr, + $q->div( $q->a( { -href=>"chat?request=stat&var=ranking&alias=$alias&tmpid=$tmpid" }, "Rankings"), " | ", + $q->a( { -href=>"chat?request=stat&var=del&alias=$alias&tmpid=$tmpid" }, "Loginstatistiken"), " | ", + $q->a( { -href=>"chat?request=stat&var=stat&alias=$alias&tmpid=$tmpid" }, "DB-Statistik"), " | ", + $q->a( { -href=>"chat?request=stat&var=code&alias=$alias&tmpid=$tmpid" }, "Programmcode"), " | ", + $q->a( { -href=>"chat?request=stat&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 "
"; + + my $nr_start = $start; + my $nr_end = $end; + my %online; + my $rank; + my $nr; + + foreach(@counts) { + if(-f "data/user/counts/$_" ) { + if (s#.online##g) { + open(TOTAL, "; + close TOTAL; + $online{sprintf("%.2f",($total / 3600))} = $_; + } + } + } + + print "
", $q->b("Rankings:"), $q->br, + ""; + + 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 "\n"; + } + print "
#:
St.:
Name:
".$nr." ".$wert."h $online{$wert}
", $q->hr; + + $nr_start -= 20; $nr_end -= 20; + print "Rankings von $nr_start bis $nr_end anzeigen ...
" + if ($nr_start > 0); + + $nr_start += 40; $nr_end += 40; + print "Rankings von $nr_start bis $nr_end anzeigen ...", + $q->br, $q->br, $q->b("$alias, Du befindest Dich auf Rank $rank
"); + +} elsif ($var eq "del") { + + print "
", $q->b("Alte Benutzer lö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 = $tmp; + + foreach(@user) { + if (-f "data/user/lastlogin/$_") { + open(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 "
", $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 ü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ählt!" ); + print $q->br, $q->div( "(", $q->a( { -href=>"chat?request=stat&var=del&tmp=true&alias=$alias&tmpid=$tmpid"}, "Vollständige Ansicht"), ")" ) if ($full eq undef); + +} elsif ($var eq "var") { + + print "
", $q->b("Server Umgebungsvariablen:"), $q->br, $q->br, + "Die Serverumgebungsvariablen können nur von Oberwächtern oder höher eingesehen werden!", $q->br, $q->br; + + if (5 <= &hierachie($alias)) { + while(($key,$value) = each(%ENV)) { + print "$key = $value\n", $q->br; + } + } + + print "
"; + +} 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 = ; + 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öscht)") ), $q->br, "\n"; + print ""; + 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 "", $q->hr, "\n"; + &zeit; + open(DEL, ">>data/kill"); + print DEL "($day.$month.$year $hours:$min:$sec) $rm wurde automatisch gekillt [$alias]\n"; + close DEL; +} + +} + +1; -- cgit v1.2.3