#!/usr/bin/perl require "$ENV{'DOCUMENT_ROOT'}/cgi-bin/adr.pl"; do GetInput(); # $input="detail=spotlight&pass=cinema"; $test = 0; # 0 = Aktiv, 1 = Test do Parsen(); print "Content-type: text/html\n\n"; print "\n \n Kontrolle FTP-Kunden\n"; print "\n"; print "\n"; print "\n"; print "\n
\n

Speicherplatzkontrolle

\n
\n"; open(IN,"<$ENV{'DOCUMENT_ROOT'}/cgi-bin/ftp.txt" ); while ($l1=) { $zeige = 1; if ($l1 eq "!!!x\n") { $zeige = 0; $l1 = "!!!\n"; } if ($l1 eq "!!!\n") { $_=; s/\n//g; $file=$_; $_=; s/\n//g; $maxsize=int($_); if ($maxsize <= 4000) { $maxsize = 9999999 } $_=; s/\n//g; $email=$_; $_=; 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"; print "Verzeichnis:
\n"; print "Passwort: \n"; print "\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 "Wenn Sie benachrichtigt werden wollen, wenn diese Seite sich ändert,
\n"; print "geben Sie hier Ihre e-mail Adresse ein:
\n"; print "
\n"; print "\n"; 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"; }