#!/usr/bin/perl # # REF: resoorep.pl # ResooSite v.0.9.5.3 -(p)Resoo 2002-2004 # (c)2004 - pascal blain / GNU GPL - General Public License # http://www.resoo.com/resoosite # pascal@resoo.org # require "resooconf.pl"; ######## recuperation des données ######## $query = $ENV{'QUERY_STRING'}; $query =~ s/^\.\.//g; ## supprime ".." en début de ligne $query =~ s/^\.//g; ## supprime "." en début de ligne $query =~ s/\/$//g; ## supprime le dernier "/" if ($query =~ /^$dir_rep/) { $query =~ s/\/\.\.//g; ## supprime "/.." $query =~ s/\/\.//g; ## supprime "/." $page = "doc"; $repprincipal = "$dir_rep"; } elsif ($query =~ /^img/) { $query =~ s/\/\.\.//g; ## supprime "/.." $query =~ s/\/\.//g; ## supprime "/." $page = "admin"; $repprincipal = "img"; } else { $query = "$dir_rep"; $repprincipal = "$dir_rep"; $page = "doc"; } $repert = "../$query"; ######## mise en page de l'article ######## print "Content-type: text/html\; charset=ISO-8859-1\n\n"; if ($repprincipal eq "doc") { &get_comp; &incr_comp; } &head_gen; &pao_rep_haut; print ""; if (!$repclassement){ $sort = "age"; } else { $sort = $repclassement; } opendir (DIRREP, $repert); if ($query eq $repprincipal){@DIRREP=grep(!/^\.\.?$/, readdir DIRREP);} else {@DIRREP=grep(!/^\.?$/, readdir DIRREP);} closedir (DIRREP); @DIRREP = sort alpha @DIRREP; my @unlistage_rep=("resoo","private"); foreach $line (@DIRREP) { $infofile = "$repert/$line"; ($dev, $ino, $mode, $nlink, $uid, $gid, $rdev, $size, $atime, $mtime, $ctime, $blksize, $blocks) = stat($infofile); if ($line eq "\.\."){ print ""; print "\n"; print "\n"; print "\n"; if ($query =~ /^(.*)\//){; $queryprec = $&; $queryprec =~ s/\/$//; } if (($queryprec) and ($queryprec ne $repprincipal)){ print ""; print "\n"; print "\n"; print "\n"; } } else { if ($mode < 20000) { if (!grep(/$line/, @unlistage_rep)) { print ""; print "\n"; print "\n"; } } } } @DIRREP = sort $sort @DIRREP; foreach $line (@DIRREP) { $infofile = "$repert/$line"; ($dev, $ino, $mode, $nlink, $uid, $gid, $rdev, $size, $atime, $mtime, $ctime, $blksize, $blocks) = stat($infofile); if ($mode > 20000) { $sizeround = round($size); print ""; print "\n"; ($sec,$min,$hour,$mday,$mon,$year,$wday) = (localtime($mtime)) [0,1,2,3,4,5,6]; $month = ($mon + 1); if ($year > 0) { $year += 1900}; if ($month < 10) { $month = "0$month"}; if ($sec < 10) { $sec = "0$sec"}; if ($min < 10) { $min = "0$min"}; if ($hour < 10) { $hour = "0$hour"}; if ($mday < 10) { $mday = "0$mday"}; # print "\n"; print "\n"; # print "\n"; print "\n"; } } print "
$font"; if ($rep_ico == 1){ print "< . >"; } else { print "\"\""; } print " < retour répertoire principal >$finfont$font /$finfont
$font"; if ($rep_ico == 1){ print "< .. >"; } else { print "\"\""; } print " < répertoire précédent >$finfont$font ..$finfont
$font"; if ($rep_ico == 1){ print $printpuce3; } else { print "\"\""; } print " < $line >$finfont$font accès sous répertoire$finfont
$font"; if ($rep_ico == 1){ print $printpuce3; } else { if ($line =~ /(\.pl|\_pl\.txt)/i){ print "\"\""; } elsif ($line =~ /\.(txt|log|sys)/i){ print "\"\""; } elsif ($line =~ /\.(doc|rtf|sxw)/i){ print "\"\""; } elsif ($line =~ /\.pdf/i){ print "\"\""; } elsif ($line =~ /\.(gif|bmp|jpg|jpeg|png|tif|ico)/i){ print "\"\""; } elsif ($line =~ /\.(zip|arj|tar|gz|bz|rar)/i){ print "\"\""; } elsif ($line =~ /\.(wav|mid|ogg|mp3|ram)/i){ print "\"\""; } elsif ($line =~ /\.(mpg|avi|rm|mov)/i){ print "\"\""; } elsif ($line =~ /\.(exe|rpm|bin|com)/i){ print "\"\""; } elsif ($line =~ /\.(sh|py|php|php3|bat)/i){ print "\"\""; } elsif ($line =~ /\.(htm|html|shtml|xml|rss)/i){ print "\"\""; } else { print "\"\""; } } print "$line$finfont$font$sizeround$finfont$font$mday\/$month\/$year - $hour\:$min\:$sec$finfont$font$mday\/$month\/$year-$hour\:$min$finfont$font$mday\/$month\/$year$finfont
\n"; &pao_rep_bas; &foot_gen; ############ subroutines ###################### sub size { $tmpa = "$repert/$a"; $tmpb = "$repert/$b"; -s($tmpa) <=> -s($tmpb); } sub sized { $tmpa = "$repert/$a"; $tmpb = "$repert/$b"; -s($tmpb) <=> -s($tmpa); } sub alpha { uc($a) cmp uc($b); } sub alphad { uc($b) cmp uc($a); } sub age { $tmpa = -M "$repert/$a"; $tmpb = -M "$repert/$b"; $tmpa <=> $tmpb; } sub aged { $tmpa = -M "$repert/$a"; $tmpb = -M "$repert/$b"; $tmpb <=> $tmpa; } sub round { my $number = shift; if ($number > 999999){ $number = int(($number + 50000)/100000)/10; if ($number == int($number)){ $number = $number.".0"; } return("$number \;Mo"); } else{ $number = int(($number + 50)/100)/10; if ($number == int($number)){ if ($number == 0){ $number = $number.".1"; } else{ $number = $number.".0"; } } return("$number \;Ko"); } }