#!/usr/bin/perl -w
#########################################################
# Rekursives Durchlaufen eines Verzeichnisbaumes
# und Anlegen von HTML-Dateien mit Links zu den einzelnen
# Files / Dirs
# R. Unger 11/2001
#########################################################
use strict;
use Cwd;
my $htmlname = "index.html";
my $topdir = "/home/mrtg/ansicht";
##############################################################################
sub go_in
{
my $the_dir = $_[0];
my $level = $_[1];
my $hier=cwd();
# Ins Dir gehen
chdir $the_dir;
print "go_in:: Level: $level ... Scanning Dir: $the_dir \n";
# HTML Seite erstellen
open(AUS,">$htmlname") || die "Kann $htmlname nicht schreiben \n";
print AUS "<html>\n";
print AUS "<head>\n";
print AUS " <title>Teste nms2</title>\n";
print AUS "</head>\n\n";
print AUS "\n\n";
print AUS "<TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0>\n";
print AUS "<TR>\n";
print AUS "<TD WIDTH=476><IMG BORDER=0 SRC=\"/icons/mrtg_lang.jpg\" WIDTH=476 HEIGHT=25</A></TD> \n";
print AUS "<TD WIDTH=111><IMG BORDER=0 SRC=\"/icons/vub.gif\" WIDTH=111 HEIGHT=65</A></TD> \n";
print AUS "</TR>\n";
print AUS "</TABLE>\n";
print AUS "<hr>";
print AUS "<font size=+2>\n";
print AUS "<center><b>\n";
print AUS "</font>\n";
print AUS "</b></center>\n";
print AUS "<center>\n";
# Files holen
my @the_files=glob "*";
# Liste aller Verzeichnisse herausfiltern
my @found_dirs=();
for (my $i=0;$i<@the_files;$i++)
{
if (-d $the_files[$i] )
{
push(@found_dirs,$the_files[$i]);
print "Found Dir: $the_files[$i]\n";
}
}
# Sortieren der Fileliste (aber nicht case sensitive !)
@the_files=sort {uc($a) cmp uc($b)} @the_files;
# und alles ausser die Seite selbst in die Seite schreiben
for (my $i=0;$i<@the_files;$i++)
{
if ($the_files[$i] eq $htmlname) { next;}
print AUS "\n<p>\n";
print AUS "<b>\n";
if (-d $the_files[$i] )
{
print AUS "<a href=\"$the_files[$i]/$htmlname\">$the_files[$i] </a>\n";
}
else
{
if ( $the_files[$i] =~ m/(.+?)\.html/)
{
my $laenge=(length($the_files[$i]));
my $newname = (substr($the_files[$i],0,$laenge-5));
print AUS "<a href=\"$the_files[$i]\">$newname </a>\n";
}
}
print AUS "</b>\n";
}
print AUS "</center>\n";
# Zurueck ergibt nur Sinn, wenn ich nicht ganz oben bin
if ( $level > 1)
{
print AUS "<center>\n";
print AUS "\n<p>\n";
print AUS "<hr>\n<a href=\"../$htmlname\"> Zurück</a>\n";
print AUS "<hr>\n";
print AUS "</center>\n";
}
else
{
print AUS "\n<p>\n";
print AUS "<hr>\n";
}
print AUS " ";
print AUS "<b></i>\n\n";
print AUS "\n\n</body>\n</html>\n\n";
close (AUS);
# Levelnummer hoch
$level++;
# und alle gefundenen Subdirs abklappern
#for (my $i=0;$i<@found_dirs;$i++) orginal
for (my $i=0;$i<@found_dirs;$i++)
{
go_in($found_dirs[$i],$level);
}
# Wieder in richtige Verzeichnis gehen
# sonst klettern wir naemlich nur abwaerts
chdir $hier;
}
###########################################################################################
# Hauptprogramm
print "Start \n";
go_in($topdir,1);
print "Done \n";