CHMOD +Навигация

  1. #!/usr/bin/perl
  2. use warnings;
  3. use CGI::Carp qw(fatalsToBrowser);
  4. use CGI ':standart';
  5. $query=CGI->new();
  6. use Benchmark;
  7. $time1 = new Benchmark;
  8. print "Content-type: text/html; charset=windows-1251\n\n";
  9. $root= $ENV{'DOCUMENT_ROOT'};
  10. $pg = $ENV{'SCRIPT_NAME'};
  11. if ($query->param("chmod")){
  12. $mod = $query->param("chmod");
  13. $for =$query->param("for");
  14. chmod oct($mod),$for;
  15. print "для $for установлены права $mod\n<br/>";
  16. }
  17. if (length($ENV{'QUERY_STRING'}) >2){
  18. $path=$ENV{'QUERY_STRING'};
  19. }else{
  20. $path="";
  21. }
  22. $q="$root/$path";
  23. if(-d $q) {
  24. print "содержимое папки ";
  25. }
  26. elsif(-f $q) {
  27. print "свойства файла ";
  28. }
  29. print "$path<hr/>\n";
  30. $perm = sprintf "%04o", (stat ($q))[2] & 07777;
  31. print "<form method =\"post\">";
  32. print "<input type = \"hidden\" name =\"for\" value=\"$q\">";
  33. print"<table border=1><tr><th colspan=2>$perm</th></tr>";
  34. print "<tr><td><input type=\"text\" name=\"chmod\" value = \"$perm\"></td>\n";
  35. print "<td><input type=\"submit\" name=\"set\" value = \"Установить права\"></td></tr>";
  36. print"</table>";
  37. print "</form>";
  38. @dirs = split(/\//,$ENV{'QUERY_STRING'});
  39. $dsumm =@dirs;
  40. $d=1;
  41. $url ="@dirs[1]/";
  42. print "<a href =\"$pg\">home/</a>\n";
  43. while($d<$dsumm) {
  44. print "<a href =\"$pg?/$url\">@dirs[$d]/</a>";
  45. $d++;
  46. $url .= "@dirs[$d]\/";
  47.  
  48. }
  49. print "\t<table border='2'>\n";
  50. if(-d $q) {
  51. opendir(FILES,"$q");
  52. @files=readdir(FILES);
  53. close(FILES);
  54. $fsumm=0;
  55. $dsumm=0;
  56. foreach $file (@files){
  57. next if ($file eq ".");
  58.  
  59. next if ($file eq "..");
  60. if(-f $file) {
  61. print "<tr>";
  62. $fsumm++;
  63. }
  64. elsif(-d $file) {
  65. $dsumm++;
  66. print "<tr style='{background:#c9c9c9;}'>";
  67. }
  68. $mode = sprintf "%04o", (stat ($file))[2] & 07777;
  69. $size = (stat ($file))[7];
  70. print "<td><a href='$pg?$path/$file'>$file</a></td><td>$mode</td><td>$size</td></tr>";
  71.  
  72. $i++;
  73. }
  74. print "</table>";
  75. print "Всего $dsumm папок и $fsumm файлов\n";
  76. }
  77. print"<hr/>";
  78. $time2 = new Benchmark;
  79. $timebenchmark = timediff($
  80. time2, $time1);
  81.  
  82. print timestr($
  83. timebenchmark);
Так как категории перл нет ложу в быдло. Простенький код для навигации по файлам и установки прав. Для тех у кого фтп не дает возможность изменить пермисион(как у меня в желтом фтп) это полезный код,а для остальных -быдло. Строго не судите,написала за 15 минут и еще толком не проверила. Собераюсь из него мощный фм замутить.

Реклама

Мы в соцсетях

tw tg yt gt