;
s/\n//g;
$xpw=$_;
$pwok = 0;
if ($file eq $Wert{'detail'})
{
$xpass=&xpassw($Wert{'pass'});
if ($xpass eq $xpw)
{
$pwok = 1;
} else
{
print "Passwort erforderlich, um die Details zu sehen
\n";
print "\n";
}
}
$size=0;
$files=0;
$loeschen = "";
$loeschinfo = "";
$loeschen2 = "";
$loeschinfo2 = "";
$info = 0;
if (($file eq $Wert{'detail'}) && ($pwok == 1))
{
print "
Verzeichnis: $file:
\n";
print "";
do subdir($file);
print "";
$info = 1;
}
if (length($Wert{'detail'}) == 0)
{
do subdir($file);
$info = 1;
}
if ($info == 1)
{
if ($zeige == 1)
{
print "Verzeichnis: $file:
\n";
}
$z1 = tausender($size);
$z2 = tausender($maxsize);
if ($zeige == 1)
{
print "$files Dateien. Gesamtgröße: $z1. Maximal $z2
\n";
}
$maxtage = 31;
if ($size >= $maxsize*10)
{
# SendToPager($email,"Del:$verzeichnis$datinfo");
$maxtage = 14;
}
if ($size >= $maxsize)
{
if ($zeige == 1)
{
print "Fehler: Zulässige Menge überschritten
\n";
}
$status = 0;
($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time);
$tagmail = "$mday.$mon.$year";
open(IN2, "<$ENV{'DOCUMENT_ROOT'}/htm/$file.status" );
while ($l1=)
{
$status = int($l1);
$l1 = ;
$l1 =~ s/\n//g;
$letztemail = $l1;
}
close(IN2);
if (($letztemail ne $tagmail) || ($test != 0)) {
$status = $status + 1;
open(AUS, ">$ENV{'DOCUMENT_ROOT'}/htm/$file.status" );
print AUS ("$status\n");
print AUS ("$tagmail\n");
close(AUS);
open(MAIL, "|\/usr\/sbin\/sendmail -t");
print MAIL ("From: webmaster\@adr.de\n");
if ($test == 0) {
print MAIL ("To: $email\n");
print MAIL ("Cc: webmaster\@adr.de\n");
} else {
print MAIL ("To: webmaster\@adr.de\n");
}
print MAIL ("Subject: FTP-Status: /$file zu gross \n\n");
print MAIL ("FTP-Status: (Dies ist eine automatisch erstellte Nachricht)\n");
print MAIL ("Sie haben $files Dateien mit einer Gesamtgroesse von \n");
$z1 = tausender($size);
print MAIL ("$z1 Bytes auf den Server www.adr.de/$file/ geladen. \n");
$z1 = tausender($maxsize);
print MAIL ("Zugelassen sind nur $z1 Bytes! \n");
print MAIL ("a) Entfernen Sie ueberfluessige Dateien.\n");
print MAIL (" Unter http://www.adr.de/kontroll.cgi?detail=$file\n");
print MAIL (" finden Sie die Details.\n");
print MAIL ("b) Laden Sie die LogDateien (www.adr.de/$file/logs/) \n");
print MAIL (" auf Ihre lokale Festplatte und loeschen Sie sie aus diesem Verzeichnis.\n");
print MAIL ("c) Bestellen Sie mehr Speicher bei webmaster\@Adr.de\n");
print MAIL ("\n");
print MAIL ("Ihr aktueller Warnstatus ist $status Tag(e).\n");
print MAIL ("\n");
$z1 = tausender($maxsize);
$noch = $maxtage-$status;
print MAIL ("Nach $maxtage Tagen (noch $noch) werden ueber $z1 Bytes \n");
print MAIL ("hinausgehende Dateien entfernt:\n");
print MAIL ("$loeschinfo\n");
print MAIL ("---\nREMOTE_ADDR=$ENV{'REMOTE_ADDR'}\n");
close (MAIL);
if ($zeige == 1)
{
print "Nachricht an $email verschickt
";
}
if ($size >= $maxsize*10) {
SendToPager($email,"Zu gross:$verzeichnis $size>=$maxsize ");
}
if (($status >= $maxtage+1) && ($test == 0)) {
do wegdamit($loeschen,$loeschinfo);
}
}
print "\n";
} else
{
if ($zeige == 1)
{
print "OK\n";
}
unlink "htm/$file.status";
}
if ($zeige == 1)
{
if ($file eq $Wert{'detail'})
{
print "
";
} else
{
print "\nDetaillierte Aufstellung der Dateien\n
\n";
}
print "
";
}
}
}
}
close(IN);
print "Information:
\n";
print "\n";
print "Wird mehr als der doppelte, maximale Speicher genutzt, werden sofort \n";
print "einige Dateien gelöscht. Ansonsten wird jeden Tag eine Warnung \n ";
print "per e-Mail geschickt und wenn nach 14 Tagen immer noch zu viele Dateien \n";
print "da sind, entschprechend welche gelöscht.\n";
print "
\n";
# FUSS
print "
\n";
print "www.adr.de
\n";
if (length($Wert{'detail'}) == 0)
{
# print "\n";
print "\n";
print "\n";
print "\n";
}
print "\n\n";
sub wegdamit{
local($dat,$datinfo) = @_;
print "\n";
print "";
$p = index($dat,"\n");
open(MAIL, "|\/usr\/sbin\/sendmail -t");
print MAIL ("From: webmaster\@Adr.de\n");
print MAIL ("To: $email\n");
print MAIL ("Cc: webmaster\@adr.de\n");
print MAIL ("Subject: FTP-Status: /$file Dateien GELOESCHT! \n\n");
print MAIL ("FTP-Status: (Dies ist eine automatisch erstellte Nachricht)\n");
print MAIL ("---\n");
print MAIL ("Dateien wurden von /$file GELOESCHT!\n");
print MAIL ("---\n");
$z1 = tausender($size);
print MAIL ("Sie haben mehr FTP Speicherplatz genutzt ($z1), als Ihnen \n");
$z1 = tausender($maxsize);
print MAIL ("zugewiesen wurde ($z1)! \n");
print MAIL ("Deshalb wurden die Dateien \n");
$p = index($dat,"\n");
while ($p != -1)
{
$d = substr($dat,0,$p);
print "$d
\n";
print MAIL ("$d\n");
unlink "$d";
$dat = substr($dat,$p+1);
$p = index($dat,"\n");
}
print MAIL ("automatisch entfernt.\n\n");
print MAIL ("$datinfo\n");
print MAIL ("Rueckfragen bitte an Stefan Cordes (webmaster\@Adr.de)\n");
close(MAIL);
print "$datinfo
";
print "";
print "
\n";
# SendToPager($email,"Del:$verzeichnis$datinfo");
}
sub subdir{
local($startdir) = @_;
local($todo) = "$startdir\n";
my $p = index($todo,"\n");
while ($p != -1)
{
$startdir = substr($todo,0,$p);
$todo = substr($todo,$p+1);
if ($file eq $Wert{'detail'})
{
print "www.adr.de/$startdir
\n";
}
system "ls $startdir/* -a -l -d >$ENV{'DOCUMENT_ROOT'}/tempfile.tmp";
open(DIR,"<$ENV{'DOCUMENT_ROOT'}/tempfile.tmp" );
# opendir (DIR,"$startdir" );
while ($l1=)
# while ($l1=readdir(DIR))
{
while (-1 != index($l1," ")) {
$l1 =~ s/ / /g;
}
($d_attr,$d_nr,$d_user,$d_group,$d_size,$d_month,$d_day,$d_time,$d_name)
= split (/ /,$l1);
if ($test == 1) {
print "$l1
\n";
print "($d_attr,$d_nr,$d_user,$d_group,$d_size,$d_month,$d_day,$d_time,$d_name)
\n";
}
# -rw-r--r-- 1 Cordes ftpusers 1207265 Jun 1 16:51 ./db5_run.exe
# -rw-r--r-- 1 u6791016 ftpusers 140 Dec 23 13:52 gewonnen/gewinn.htm
if (length($l1) >= 45)
{
$size1 = int($d_size);
if ($test == 1) {
print "size1 = $size1
\n";
}
$datei = $d_name;
$datei =~ s/\n//g;
if ($test == 1) {
print "datei = $datei
\n";
}
if (substr($l1,0,1) eq "d")
{
# drwxr-xr-x 2 Cordes ftpusers 1024 May 12 15:18 speicherplatz/000.1
# drwxr-xr-x 2 u6791016 ftpusers 4096 Feb 24 14:03 gewonnen/logs
$todo = "$todo$datei\n";
} else
{
if ((index("$datei\n","bin/compress\n") == -1)
&& (index("$datei\n","bin/cpio\n") == -1)
&& (index("$datei\n","bin/gzip\n") == -1)
&& (index("$datei\n","bin/ls\n") == -1)
&& (index("$datei\n","bin/tar\n") == -1)
&& (index("$datei\n","bin/zcat\n") == -1)
&& (index("$datei","$file/") != -1)
)
{
$size = $size+$size1;
$files = $files+1;
if ($size >= $maxsize)
{
$z1 = tausender($size1);
$loeschinfo = "$loeschinfo$datei ($z1 Zeichen)\n";
$loeschen = "$loeschen$datei\n";
}
if ($size >= $maxsize*2)
{
$z1 = tausender($size1);
$loeschinfo2 = "$loeschinfo2$datei ($z1 Zeichen)\n";
$loeschen2 = "$loeschen2$datei\n";
}
if ($file eq $Wert{'detail'})
{
# print "$l1
";
$z1 = tausender($size1);
$z2 = tausender($size);
if ($size1 >= 1000)
{
if ($size1 <= 5000) {print ""} else
{
if ($size1 <= 10000) {print ""} else
{
if ($size1 <= 50000) {print ""} else
{
print "";
}
}
}
}
print "$files: '$datei', $z1 Bytes. Summe: $z2\n";
if ($size1 >= 1000) {print ""};
if ($size >= $maxsize)
{
print " Zulässige Grösse ($maxsize) überschritten!\n";
}
}
}
}
}
}
close(DIR);
$p = index($todo,"\n");
# print "Alt: -$todo-
\n";
my $p2 = index($todo,"/logs\n");
if ($p2 != -1)
{
if ($p2 <= $p)
{
# Log's als letztes Verzeichnis
my $temp1 = substr($todo,0,$p+1);
my $temp2 = substr($todo,$p+1);
$todo = "$temp2$temp1";
# print "Neu: -$todo-
\n";
$p = index($todo,"\n");
}
}
}
unlink "tempfile.tmp";
}