Показать сообщение отдельно

  #90  
Старый 11.06.2007, 01:54
REDsaratov
Участник форума
Регистрация: 17.12.2006
Сообщений: 191
Провел на форуме:
415254

Репутация: 75
По умолчанию

ListDir v1.0 Листинг содержимого псевдокорневой директории и поддиректорий на вашем сайте. Обычно помогает при 403 ошибке: "Forbidden. You don't have permission to access /~user/dir/ on this server." т.е. когда админ запретил пользователям просмотр содержимого web директорий возможно в целях повышения security.

PHP код:
#!/usr/bin/perl

###################
#                 #
#  ListDir v1.0   ######################
#                                      #
################  Benvolio mindcrimer  #
               #                       #
               #########################

# klassno, vy polezli v ishodniki..
# zna4it, ya tak polagayu, eto vam za4em-to ponadobilos'
# tak vot, eto delo pisalos' s boduna i za 1 ve4er
# koro4e v kode sam 4ert nogu slomit, nikakoj struktury, vse v kashu
# sej skript real'no primenyaetsya(lsya) na
# http://dezcom.mephi.ru/~jerry/download/listdir.cgi i vrode dazhe rabotal :)
# esli ne len' - mozhete zajti na moyu strani4ku
# http://dezcom.mephi.ru/~jerry/
# ili mozhno potrepat'sya po as'ke: 16455534
# vsego samogo! vash eugene a. jerusalimov aka benvolio mindcrimer :)
# p.s. es4e mozhno primenyat' index.shtml: <!--#include virtual="listdir.cgi" -->

$cvalue=""$command="";
$envstring="$ENV{'QUERY_STRING'}";
(
$command,$cvalue)=split('=',$envstring);
print 
"Content-type: text/html\n\n";
print 
"<html><head><title>ListDir v1.0 by Benvolio mindcrimer</title>
<meta name=\"author\" content=\"Eugene A. Jerusalimov\"></head><body>\n"
;
@
sp=split('\/',$ENV{'SCRIPT_NAME'});
foreach(@
sp) { chomp$sn=$_; }
print 
"<table><tr><td>ListDir v1.0: Browsing the directory <b><a href=\"$sn\">/</a>$cvalue</b></td></tr></table><table>\n";
if(
$command=="subdir" || $cvalue ne "") { chdir($cvalue); }
open(FILES,"/bin/ls |");
@
files=<FILES>;
foreach(@
files)
{
chomp;
(
$dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,$atime,$mtime,$ctime,$blksize,$blocks) = stat;
@
sp=split('\/');
foreach(@
sp) { chomp; }
$fsz=int $size/1024;
$sep="";$subdir="";
(
$sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = gmtime($mtime);
if(
$mday<10) { $mday="0$mday"; }
$mon++;
if(
$mon<10) { $mon="0$mon"; }
$date="$mday.$mon.$year";
if(
$min<10) { $min="0$min"; }
if(
$hour<10) { $hour="0$hour"; }
$time="$hour:$min";
$octmode=(sprintf("%lo",$mode)%1000);
if(
$cvalue ne "") { $sep="/"; }
if(
$nlink==1) { ($z,$afext)=split('\.'); $fsize="$fsz"."k"; } else { $afext="dir"$fsize="---"$subdir="?subdir=$cvalue$sep$_"; }
if(
$_ ne $sn) { print "<tr><td>$afext</td><td>"
if(
$nlink==1) { print "<a href=\"$cvalue$sep$_\">$_</a>"; } else { print "<a href=\"$sn$subdir\">$_</a>"; }
print 
"</td><td>$octmode</td><td>$fsize</td><td>$date</td><td>$time</td></tr>\n"; }
}
print 
"</table><br><table><tr><td>Copyright <a href=\"http://dezcom.mephi.ru/~jerry/\">Benvolio mindcrimer</a> 1999.</td></tr><tr><td>If you want to get a copy of this script simply <a href=\"mailto:jerry\@dezcom.mephi.ru?subject=listdir.cgi\">mail me</a>.</td></tr></table></body></html>\n";
# (c) eugene a. jerusalimov aka. benvolio mindcrimer 
полезные скрипт для рисовки СКАМА
(Этот скрипт пересылает данные с формы, заполненные посетителями Вашего сервера. В форме могут быть обозначены любые типы полей, такие, например, как текстовые, парольные (password), checkbox и т.д. Форма создается Вами и может иметь любое количество полей.)
PHP код:
#!/perl/bin/perl
#############################################################################
# Возвратная форма                                #
# Написана Андреем Юриным 22.09.98                        #
# ###########################################################################
#                            WWW.SCRIPT.RU                                  #
# ###########################################################################
# Этот скрипт является частью коллекции скриптов сервера www.script.ru      #
# Свои пожелания и/или предложения присылайте на andrey@script.ru           #
#############################################################################


##################################################
# Определение переменных:                        #
##################################################
# Настоящий путь к программе отсылки e-mail
$mailprog '/usr/sbin/sendmail';




#Алфавиты кодировок
$tbl_alt="*ЎўЈ¤Ґ¦§Ё©Є«¬*®Їабвгдежзиймлкноп";
$tbl_koi="БВЧЗДЕЦЪЙКЛМНОПРТУФХЖИГЮЫЭШЩЯЬАСбвчздецъйклмнопртуфхжигюыэшщяьас";
$tbl_win="абвгдежзийклмнопрстуфхцчшщьыъэюяАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЬЫЪЭЮЯ";
$win_koi="/".$tbl_win."/".$tbl_koi."/";
$win_alt="/".$tbl_win."/".$tbl_alt."/";




&get_date;

# Считать данные формы
&parse_form;

# Проверить все ли необходимые поля заполнены
&check_required;

# Return HTML Page or Redirect User
&return_html;

# отсылка e-mail
&send_mail;


#################################################################
#        Перевод даты                                           #
#################################################################
sub get_date {
    @
days = ('Воскресение','Понедельник','Вторник','Среда','Четверг','Пятница','Суббота');
    @
months = ('Январь','Февраль','Март','Апрель','Май','Июнь','Июль''Август','Сентябрь','Октябрь','Ноябрь','Декабрь');
    (
$sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time);
    if (
$hour 10) { $hour "0$hour"; }
    if (
$min 10) { $min "0$min"; }
    if (
$sec 10) { $sec "0$sec"; }
    
$date "$days[$wday]$months[$mon] $mday, 19$year в $hour\:$min\:$sec";
}



#################################################################
#                    Считывание данных формы                    #
#################################################################
sub parse_form {
    if (
$ENV{'REQUEST_METHOD'eq "POST") {
        
read(STDIN$buffer$ENV{'CONTENT_LENGTH'})
    } 
elsif ($ENV{'REQUEST_METHOD'eq "GET") {
        
$buffer $ENV{'QUERY_STRING'}
    } else {
        &
error('request_method');
    }

    @
pairs split(/&/, $buffer);
    foreach 
$pair (@pairs) {
        (
$name$value) = split(/=/, $pair);
        
$value =~ tr/+/ /;
        
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C"hex($1))/eg;
            
$value =~ s/<([^>]|\n)*>//g;
            
$value =~ s/<//g;
            
$value =~ s/>//g;
            
$value =~ s/\s/ /g;
        
$value =~ s/\cM\n/<br>/gi;
        
$value =~ s/\n/<br>/gi# Без перевода каретки
        
$value =~ s/\|/\\/gi#Без разделителей

        
if ($name eq 'recipient' ||
        
$name eq 'subject' ||
        
$name eq 'email' ||
        
$name eq 'realname' ||
        
$name eq 'redirect' ||
        
$name eq 'bgcolor' ||
        
$name eq 'background' ||
        
$name eq 'link_color' ||
        
$name eq 'vlink_color' ||
            
$name eq 'text_color' ||
           
$name eq 'alink_color' ||
        
$name eq 'title' ||
        
$name eq 'sort' ||
        
$name eq 'submit' ||
        
$name eq 'print_config' ||
        
$name eq 'return_link_title' ||
        
$name eq 'return_link_url' && ($value)) {
            
$CONFIG{$name} = $value;
        } 
elsif ($name eq 'required') {
            @
required split(/,/,$value);
        } 
elsif ($name eq 'env_report') {
            @
env_report split(/,/,$value);
        } else {
            if (
$FORM{$name} && ($value)) {
                
$FORM{$name} = "$FORM{$name}$value";
            } 
elsif ($value) {
                
$FORM{$name} = $value;
            }
        }
    }
}


#################################################################
#            Проверка заполнения обязательных полей             #
#################################################################
sub check_required {
    foreach 
$require (@required) {
        if (
$require eq 'recipient' ||
            
$require eq 'subject' ||
            
$require eq 'email' ||
            
$require eq 'realname' ||
            
$require eq 'redirect' ||
            
$require eq 'bgcolor' ||
            
$require eq 'background' ||
            
$require eq 'link_color' ||
            
$require eq 'vlink_color' ||
            
$require eq 'alink_color' ||
            
$require eq 'text_color' ||
            
$require eq 'sort' ||
            
$require eq 'title' ||
            
$require eq 'print_config' ||
            
$require eq 'return_link_title' ||
            
$require eq 'return_link_url') {
                if (!(
$CONFIG{$require}) || $CONFIG{$requireeq ' ') {
                    
push(@ERROR,$require);
                }
        } 
elsif (!($FORM{$require}) || $FORM{$requireeq ' ') {
            
push(@ERROR,$require);
        }
    }

    if (@
ERROR) {
        &
error('missing_fields', @ERROR);
    }
}


#################################################################
#            Вывод сообщения о добавлении записи                #
#################################################################
sub return_html {
    
my $bod = &body_attributes;
    if (
$CONFIG{'redirect'} =~ /http\:\/\/.*\..*/) {
        print 
"Location: $CONFIG{'redirect'}\n\n";
    } else {
        if (
$CONFIG{'title'}) {
            &
print_head($CONFIG{'title'}, $bod);
        } else {
            &
print_head($CONFIG{'title'}, $bod);
        }
        print 
"<center>\n";
        if (
$CONFIG{'title'}) {
            print 
"<h1>$CONFIG{'title'}</h1>\n";
        } else {
           print 
"<h1>Спасибо</h1>\n";
        }
        print 
"</center>\n";
        
#print "<center>Это содержимое формы, заполненой Вами и отправленной к $CONFIG{'recipient'}.<br>";
        
print "$date</center><p><hr size=2 width=90\%><p>\n";
    
        if (
$CONFIG{'sort'eq 'alphabetic') {
            foreach 
$key (sort keys %FORM) {
                print 
"<b>$key:</b> $FORM{$key}<p>\n";
            }
        } 
elsif ($CONFIG{'sort'} =~ /^order:.*,.*/) {
            
$sort_order $CONFIG{'sort'};
            
$sort_order =~ s/order://;
            
@sorted_fields split(/,/, $sort_order);
            foreach 
$sorted_field (@sorted_fields) {
                if (
$FORM{$sorted_field}) {
                    print 
"<b>$sorted_field:</b> $FORM{$sorted_field}<p>\n";
                }
            }
        } else {
            foreach 
$key (keys %FORM) {
                print 
"<b>$key:</b> $FORM{$key}<p>\n";
            }
        }
        print 
"<p><hr size=7 width=75%><p>\n";
        if (
$CONFIG{'return_link_url'} =~ /http\:\/\/.*\..*/ && $CONFIG{'return_link_title'}) {
            print 
"<ul>\n";
            print 
"<li><a href=\"$CONFIG{'return_link_url'}\">$CONFIG{'return_link_title'}</a>\n";
            print 
"</ul>\n";
        }
        &
print_end;
    }
}




#################################################################
#            Подпрограмма отправки сообщения                    #
#################################################################
sub send_mail {
    foreach 
$i (keys %FORM) {
        eval(
"\$FORM{$i} =~ tr".$win_koi);
    } 
    foreach 
$i (keys %CONFIG) {
        eval(
"\$CONFIG{$i} =~ tr".$win_koi);
    } 

    eval(
"\$date =~ tr".$win_koi);
    
open(MAIL,"|$mailprog -t");
#    open(MAIL, ">form");
    
print MAIL "To: $CONFIG{'recipient'}\n";
    print 
MAIL "From: $CONFIG{'email'} ($CONFIG{'realname'})\n";

    if (
$CONFIG{'subject'}) {
        print 
MAIL "Subject: $CONFIG{'subject'}\n\n";
    } else {
        print 
MAIL "Subject: WWW Form Submission\n\n";
    }

    print 
MAIL "***** This is free service from Land.Ru ****\n";
    print 
MAIL "It's results of fill You form. It was ";
    print 
MAIL "submitted by $CONFIG{'realname'} ($CONFIG{'email'}) on ";
    print 
MAIL "$date\n";
    print 
MAIL "---------------------------------------------------------------------------\n\n";

    if (
$CONFIG{'print_config'}) {
        @
print_config split(/,/,$CONFIG{'print_config'});
        foreach 
$print_config (@print_config) {
            if (
$CONFIG{$print_config}) {
                print 
MAIL "$print_config$CONFIG{$print_config}\n\n";
            }
        }
    }

    if (
$CONFIG{'sort'eq 'alphabetic') {
        foreach 
$key (sort keys %FORM) {
            print 
MAIL "$key$FORM{$key}\n\n";
        }
    } 
elsif ($CONFIG{'sort'} =~ /^order:.*,.*/) {
        
$CONFIG{'sort'} =~ s/order://;
        
@sorted_fields split(/,/, $CONFIG{'sort'});
        foreach 
$sorted_field (@sorted_fields) {
            if (
$FORM{$sorted_field}) {
                print 
MAIL "$sorted_field$FORM{$sorted_field}\n\n";
            }
        }
    } else {
        foreach 
$key (keys %FORM) {
            print 
MAIL "$key$FORM{$key}\n\n";
        }
    }

    print 
MAIL "---------------------------------------------------------------------------\n";

    foreach 
$env_report (@env_report) {
        print 
MAIL "$env_report$ENV{$env_report}\n";
    }
    
close (MAIL);
}




#################################################################
#            Вывод сообщений об ошибках                         #
#################################################################
sub error {
    
my $bod = &body_attributes;
    (
$error,@error_fields) = @_;
    if (
$error eq 'bad_referer') {
        &
print_head("Нет прав доступа");
        print 
"<center>\n   <h1>Извините, но у Вас нет прав доступа!</h1>\n  </center>\n";
        &
print_end;
    } 
elsif ($error eq 'request_method') {
        &
print_head("Не тот метод"$bod);
        print 
"<center>\n   <h1>Метод, которым была отправлена форма, не поддерживается сервером. Форма может быть отправлена только способами GET или POST</h1>\n  </center>\n";
        &
print_end;
    } 
elsif ($error eq 'missing_fields') {
        &
print_head("Вы заполнили не все поля"$bod);
        print 
"<center>\n   <h1>Вы оставили обязательные поля в форме пустыми</h1>\n  </center>\n";
        print 
"Следующие поля необходимо заполнить:<p>\n";
        print 
"<ul>\n";
        foreach 
$missing_field (@error_fields) {
            print 
"<li>$missing_field\n";
        }
        print 
"</ul>\n";
        print 
"<p><hr size=7 width=75\%><p>\n";
        print 
"Возвратитесь в форму и попробуйте <a href=\"$ENV{'HTTP_REFERER'}\">заполнить поля</a>\n";
        &
print_end;
    }
    exit;
}



#################################################################
#     Вывод аттрибутов тега <body>                              #
#################################################################
sub body_attributes {
    
my $out;
    if (
$CONFIG{'bgcolor'}) {
        
$out $out." bgcolor=\"$CONFIG{'bgcolor'}\"";
    }

    if (
$CONFIG{'background'} =~ /http\:\/\/.*\..*/) {
        
$out $out." background=\"$CONFIG{'background'}\"";
    }

    if (
$CONFIG{'link_color'}) {
        
$out $out." link=\"$CONFIG{'link_color'}\"";
    }

    if (
$CONFIG{'vlink_color'}) {   
        
$out $out." vlink=\"$CONFIG{'vlink_color'}\"";
    }


    if (
$CONFIG{'alink_color'}) {
        
$out $out." alink=\"$CONFIG{'alink_color'}\"";
    }

    if (
$CONFIG{'text_color'}) {
        
$out $out." text=\"$CONFIG{'text_color'}\"";
    }
    return 
$out;
}




#################################################################
#     Печать HTML - заголовка                                   #
#################################################################
sub print_head {
    
my $bod $_[1];
    print 
"Content-type: text/html";
    print 
"\n\n";
    print 
"<html><head>";  
    print 
"<title>$_[0]</title>\n"
    print 
"</head><body $bod>\n";
    print 
"<div align=center><table border=\"0\" cellpadding=\"0\" cellspacing=\"4\" width=\"75%\">\n";

}

#################################################################
#     Печать HTML - конца                                       #
#################################################################
sub print_end {
    
$rand int rand(10000000);
    print 
"</table></div>
    <p align=center><a href=\"http://www.reklama.ru/cgi-bin/href/land?
$rand\" target=\"_top\"><img  src=\"http://www.reklama.ru/cgi-bin/banner/land?$rand\" alt=\"www.reklama.ru\" border=\"0\" height=\"60\" width=\"468\"></a></p>
    <p align=right><font size=-1><a href=\"http://www.script.ru\">Script.Ru</a>
    <br>Reconstructed for Land.Ru<br>&copy; 1998  <a href=\"mailto:andrey\@script.ru\">Андрей Юрин</a>
      <br>Create by<br>&copy; 1996  <a href=\"http://www.worldwidemart.com/scripts/formmail.shtml\">Matt Wright</a>
    </font></p></body></html>\n"
;


Последний раз редактировалось REDsaratov; 11.06.2007 в 02:05..
 
Ответить с цитированием