CHMOD +Навигация
- #!/usr/bin/perl
- use warnings;
- use CGI::Carp qw(fatalsToBrowser);
- use CGI ':standart';
- $query=CGI->new();
- use Benchmark;
- $time1 = new Benchmark;
- print "Content-type: text/html; charset=windows-1251\n\n";
- $root= $ENV{'DOCUMENT_ROOT'};
- $pg = $ENV{'SCRIPT_NAME'};
- if ($query->param("chmod")){
- $mod = $query->param("chmod");
- $for =$query->param("for");
- chmod oct($mod),$for;
- print "для $for установлены права $mod\n<br/>";
- }
- if (length($ENV{'QUERY_STRING'}) >2){
- $path=$ENV{'QUERY_STRING'};
- }else{
- $path="";
- }
- $q="$root/$path";
- if(-d $q) {
- print "содержимое папки ";
- }
- elsif(-f $q) {
- print "свойства файла ";
- }
- print "$path<hr/>\n";
- $perm = sprintf "%04o", (stat ($q))[2] & 07777;
- print "<form method =\"post\">";
- print "<input type = \"hidden\" name =\"for\" value=\"$q\">";
- print"<table border=1><tr><th colspan=2>$perm</th></tr>";
- print "<tr><td><input type=\"text\" name=\"chmod\" value = \"$perm\"></td>\n";
- print "<td><input type=\"submit\" name=\"set\" value = \"Установить права\"></td></tr>";
- print"</table>";
- print "</form>";
- @dirs = split(/\//,$ENV{'QUERY_STRING'});
- $dsumm =@dirs;
- $d=1;
- $url ="@dirs[1]/";
- print "<a href =\"$pg\">home/</a>\n";
- while($d<$dsumm) {
- print "<a href =\"$pg?/$url\">@dirs[$d]/</a>";
- $d++;
- $url .= "@dirs[$d]\/";
- }
- print "\t<table border='2'>\n";
- if(-d $q) {
- opendir(FILES,"$q");
- @files=readdir(FILES);
- close(FILES);
- $fsumm=0;
- $dsumm=0;
- foreach $file (@files){
- next if ($file eq ".");
- next if ($file eq "..");
- if(-f $file) {
- print "<tr>";
- $fsumm++;
- }
- elsif(-d $file) {
- $dsumm++;
- print "<tr style='{background:#c9c9c9;}'>";
- }
- $mode = sprintf "%04o", (stat ($file))[2] & 07777;
- $size = (stat ($file))[7];
- print "<td><a href='$pg?$path/$file'>$file</a></td><td>$mode</td><td>$size</td></tr>";
- $i++;
- }
- print "</table>";
- print "Всего $dsumm папок и $fsumm файлов\n";
- }
- print"<hr/>";
- $time2 = new Benchmark;
- $timebenchmark = timediff($
- time2, $time1);
- print timestr($
- timebenchmark);
Так как категории перл нет ложу в быдло. Простенький код для навигации по файлам и установки прав. Для тех у кого фтп не дает возможность изменить пермисион(как у меня в желтом фтп) это полезный код,а для остальных -быдло. Строго не судите,написала за 15 минут и еще толком не проверила. Собераюсь из него мощный фм замутить.