nginx+perl+netams

Проблемы с установкой, настройкой и работой системных и сетевых программ.

Модераторы: GRooVE, alexco

Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Аватара пользователя
demonsked
ефрейтор
Сообщения: 68
Зарегистрирован: 2009-05-24 3:27:45
Откуда: Россия, 67rus
Контактная информация:

nginx+perl+netams

Непрочитанное сообщение demonsked » 2009-11-20 22:49:49

Всем здравствуйте.
Решил считать трафик нетамсом. Поставил, оказалось что веб фейс у него на перле, а веб серв стоит нгинкс к которум этот перл еще прикрутить надо. Ладно нагуглил, вроде прикрутил перл к нгинксу, но видимо не корректно оно работает. А возвращаться к апаче не хочется(хотя знаю что там все зафурыкает). Странички нетамс виснут(в частности логин) или выдает такое

Код: Выделить всё

The page you are looking for is temporarily unavailable.
Please try again later. 
В консоли вижу такое

Код: Выделить всё

Use of uninitialized value in concatenation (.) or string at netams.cgi line 64.
Use of uninitialized value in substitution (s///) at netams.cgi line 76.
Name "main::rightdata" used only once: possible typo at /usr/local/www/****/netams/cgi-bin/admin/index.cgi line 13.
Name "main::L_select_to_do" used only once: possible typo at /usr/local/www/****/netams/cgi-bin/admin/index.cgi line 15.
Name "main::action" used only once: possible typo at /usr/local/www/****/netams/cgi-bin/admin/index.cgi line 7.
Use of uninitialized value in concatenation (.) or string at russian.res line 244.
Use of uninitialized value in concatenation (.) or string at russian.res line 244.
Use of uninitialized value in concatenation (.) or string at russian.res line 244.
Use of uninitialized value in concatenation (.) or string at russian.res line 244.
Use of uninitialized value in concatenation (.) or string at russian.res line 244.
Use of uninitialized value in concatenation (.) or string at russian.res line 244.
Use of uninitialized value in concatenation (.) or string at russian.res line 244.
Use of uninitialized value in concatenation (.) or string at russian.res line 244.
Use of uninitialized value in concatenation (.) or string at russian.res line 244.
Use of uninitialized value in concatenation (.) or string at russian.res line 244.
Use of uninitialized value in concatenation (.) or string at russian.res line 244.
Use of uninitialized value in string eq at netams.cgi line 15.
Use of uninitialized value in string eq at /usr/local/www/****/netams/cgi-bin/admin/index.cgi line 7.
Use of uninitialized value in concatenation (.) or string at netams.cgi line 64.
Use of uninitialized value in concatenation (.) or string at netams.cgi line 65.
Use of uninitialized value in concatenation (.) or string at netams.cgi line 65.
Can't locate Crypt/GeneratePassword.pm in @INC (@INC contains: /usr/local/lib/perl5/5.8.9/BSDPAN /usr/local/lib/perl5/site_perl/5.8.9/mach /usr/local/lib/perl5/site_perl/5.8.9 /usr/local/lib/perl5/5.8.9/mach /usr/local/lib/perl5/5.8.9 .) at /usr/local/www/site/netams/cgi-bin/admin/account.cgi line 85.
Графика отображается если только распихать папки с картинками в каждой папке где скрипты крутятся.
Завожу пользователей - не сохраняются они, конфиг от старых зачистился, а новые не заводятся.
Привожу конфиг нгинкса и скрипт для перла.

Код: Выделить всё

server {
        listen       80;
        server_name  http://www.site.net.ru site.net.ru;

        charset windows-1251;

        access_log  logs/host.access.log  main;
        error_log  logs/host.error.log  error;

        location / {
            root   /usr/local/www/site;
            index  index.html index.htm index.php index.cgi;
        }

        #location ~* \.(gif|jpg|jpeg|png|js|css|rar|exe|sis|sisx|swf|txt)$ {
        #    root   /usr/local/www/site;
        #}

        location /.,ak,234sfyf34.:,.s/ {
            alias       /usr/local/www/phpMyAdmin/;
            index       index.html index.htm index.php;
            auth_basic  "Private Zone";
            auth_basic_user_file /usr/local/www/phpMyAdmin/.htpasswd;
        }

        location /netams/ {
            alias       /usr/local/www/netams/;
            index       index.html index.htm index.php index.cgi;
        }

        #error_page  404              /404.html;

        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   /usr/local/www/nginx-dist;
        }

        location ~ \.php$ {
            root           /usr/local/www/site/;
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  /usr/local/www/site$fastcgi_script_name;
            include        fastcgi_params;
        }

        location ~ /cgi-bin/.*\.cgi$ {
            root             /usr/local/www/site/;
            #fastcgi_pass     unix:/var/run/nginx/perl_cgi-dispatch.sock;# через юникс сокет тоже самое.
            fastcgi_pass     127.0.0.1:8999;
            fastcgi_index    index.cgi;
            fastcgi_param    SCRIPT_FILENAME  $document_root$fastcgi_script_name;
            include          fastcgi_params;
        }

        # deny access to .htaccess files, if Apache's document root
        # concurs with nginx's one
        #
        location ~ /\.ht {
            deny  all;
        }
}

Код: Выделить всё

#!/usr/bin/perl

use FCGI;
#perl -MCPAN -e 'install FCGI'
use Socket;
use POSIX qw(setsid);
#use Fcntl;

require 'sys/syscall.ph';

&daemonize;

#this keeps the program alive or something after exec'ing perl scripts
END() { } BEGIN() { }
*CORE::GLOBAL::exit = sub { die "fakeexit\nrc=".shift()."\n"; };
eval q{exit};
if ($@) {
        exit unless $@ =~ /^fakeexit/;
};

&main;

sub daemonize() {
    chdir '/'                 or die "Can't chdir to /: $!";
    defined(my $pid = fork)   or die "Can't fork: $!";
    exit if $pid;
    setsid                    or die "Can't start a new session: $!";
    umask 0;
}

sub main {
        $socket = FCGI::OpenSocket( "127.0.0.1:8999", 10 ); #use IP sockets
        #$socket = FCGI::OpenSocket( "/var/run/nginx/perl_cgi-dispatch.sock", 10 ); #use UNIX sockets - user running this script must have w access to the 'nginx' folder!!
        $request = FCGI::Request( \*STDIN, \*STDOUT, \*STDERR, \%req_params, $socket );
        if ($request) { request_loop()};
            FCGI::CloseSocket( $socket );
}

sub request_loop {
        while( $request->Accept() >= 0 ) {

           #processing any STDIN input from WebServer (for CGI-POST actions)
           $stdin_passthrough ='';
           $req_len = 0 + $req_params{'CONTENT_LENGTH'};
           if (($req_params{'REQUEST_METHOD'} eq 'POST') && ($req_len != 0) ){
                my $bytes_read = 0;
                while ($bytes_read < $req_len) {
                        my $data = '';
                        my $bytes = read(STDIN, $data, ($req_len - $bytes_read));
                        last if ($bytes == 0 || !defined($bytes));
                        $stdin_passthrough .= $data;
                        $bytes_read += $bytes;
                }
            }

            #running the cgi app
            if ( (-x $req_params{SCRIPT_FILENAME}) &&  #can I execute this?
                 (-s $req_params{SCRIPT_FILENAME}) &&  #Is this file empty?
                 (-r $req_params{SCRIPT_FILENAME})     #can I read this file?
            ){
                pipe(CHILD_RD, PARENT_WR);
                my $pid = open(KID_TO_READ, "-|");
                unless(defined($pid)) {
                        print("Content-type: text/plain\r\n\r\n");
                        print "Error: CGI app returned no output - Executing $req_params{SCRIPT_FILENAME} failed !\n";
                        next;
                }
                if ($pid > 0) {
                        close(CHILD_RD);
                        print PARENT_WR $stdin_passthrough;
                        close(PARENT_WR);

                        while(my $s = <KID_TO_READ>) { print $s; }
                        close KID_TO_READ;
                        waitpid($pid, 0);
                } else {
                        foreach $key ( keys %req_params){
                           $ENV{$key} = $req_params{$key};
                        }
                        # cd to the script's local directory
                        if ($req_params{SCRIPT_FILENAME} =~ /^(.*)\/[^\/]+$/) {
                                chdir $1;
                        }

                        close(PARENT_WR);
                        close(STDIN);
                        #fcntl(CHILD_RD, F_DUPFD, 0);
                        syscall(&SYS_dup2, fileno(CHILD_RD), 0);
                        #open(STDIN, "<&CHILD_RD");
                        exec($req_params{SCRIPT_FILENAME});
                        die("exec failed");
                }
            }
            else {
                print("Content-type: text/plain\r\n\r\n");
                print "Error: No such CGI app - $req_params{SCRIPT_FILENAME} may not exist or is not executable by this process.\n";
            }

        }
}
Прошу помочь заставить все это совместно работать.
Нас в ребут, а мы крепчаем.

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Аватара пользователя
ProFTP
подполковник
Сообщения: 3388
Зарегистрирован: 2008-04-13 1:50:04
Откуда: %&й
Контактная информация:

Re: nginx+perl+netams

Непрочитанное сообщение ProFTP » 2009-11-20 23:03:01

не установлен модуль

Код: Выделить всё

Crypt/GeneratePassword.pm
почитай инструкцию по установке, там должно быть написано какие модули ставить
Pеrl FAQ
perl -e 'print join"",map $$_[rand@$_],([0..9,'a'..'z','A'..'Z'])x30'
ИзображениеИзображение

Аватара пользователя
demonsked
ефрейтор
Сообщения: 68
Зарегистрирован: 2009-05-24 3:27:45
Откуда: Россия, 67rus
Контактная информация:

Re: nginx+perl+netams

Непрочитанное сообщение demonsked » 2009-11-21 0:06:20

Поставил модуль частично стало работать.
Пытаясь зайти на login.cgi

Код: Выделить всё

#!/usr/local/bin/perl -w
#
# login.cgi
#
# This script interacts with NeTAMS:login service in order to open an access
# for selected unit(s). You should have template file, with default name 'login.tem'
# in the same directory.
#
#-----------------------------------------------------------------------------
# $Id: login.cgi,v 1.10 2008-01-02 13:29:04 anton Exp $

# Data required to do a script login, change this
require "config.cgi";
$url_to_stat="../stat/clients/";

#-----------------------------------------------------------------------------
use CGI;
require "netams_api.pl";

$cgi=new CGI; # comment this for command-line version
print $cgi->header(-type=>'text/html',-expires=>'now',-charset=>'windows-1251'); # comment this for command-line version

$user=$cgi->param("user");
$password=$cgi->param("password");
$open=$cgi->param("open");
$from=$ENV{"REMOTE_ADDR"};

$tem_h = '<html><head><title>NeTAMS Login</title></head>
<body bgcolor="#ffffff" topmargin="0" marginheight="0" marginwidth="0" leftmargin="0">
<div align=center><form action="login.cgi" method=post>
<table width=700 align=center border=1 cellpadding=0 cellspacing=0>
<tr align=center><td width=100%><img src="../images/logo_sm.jpg" width=376 height=60 alt="" border="0" align=left>
<font size=+2 face="tahoma, arial" color=black><strong>юБРНПХГЮЖХЪ</strong></font><br>
<font size=-1 face="tahoma, arial" color=blue>БШГШБЮЕРЯЪ Я ЮДПЕЯЮ: <strong>%%FROM%%</strong></font></td></tr>
<tr bgcolor=white align=center><td><br> ';

$tem_f = '<br></td></tr></table></form></div></body></html>';

netams_login($sc_host, $sc_port, $sc_user, $sc_passwd);
$tem_h =~ s/%%FROM%%/$from/;

if ($user eq "" or $password eq "") {
                print $tem_h;
                print ' <strong>хЛЪ:</strong> <input type=text name=user size="20">&nbsp;&nbsp;&nbsp;
                                <strong>оЮПНКЭ:</strong> <input type=password name=password size="20">&nbsp;&nbsp;&nbsp;
                                <input type=submit value="бУНД"><br><br> ';
                print $tem_f;
                netams_logout();
                exit;
                }


if ($user ne "" and $password ne "" and $cgi->param("logout") ne "") {
        netams_cmds("enable","conf t","service login");
        ($result)=netams_cmd("logout name $user password $password ip $from");
        $result =~ s/parse: //;
        $result =~ s/login:0//;

        print $tem_h;
        if (-1!=index($result, "OK")) {
                print '<font size=+2 face="tahoma, arial" color="#00bb00"><strong>сЯОЕЬМН</strong></font><br>'."\n";
                print '<font size=-1 face="tahoma, arial" color=blue><a href="'.$url_to_stat.$user.'/">ЯРЮРХЯРХЙЮ</a></font><br>'."\n";
                }
        else {
                print '<font size=+2 face="tahoma, arial" color="#bb0000"><strong>оПНАКЕЛШ</strong></font><br>'."\n";

                }
        print $tem_f;
        netams_logout();
        exit;
        }

netams_cmds("enable","conf t","service login");
($result)=netams_cmd("login name $user password $password ip $from");
$result =~ s/parse: //;
$result =~ s/login:0//;

print $tem_h;
print '<input type=hidden name=user value="'.$user.'" size="20"><input type=hidden name=password value="'.$password.'"size="20">';

if (-1!=index($result, "OK") or index($result,"already logged")>=0 ) {
        print '<font size=+2 face="tahoma, arial" color="#00bb00"><strong>';
        if ( index($result,"already logged") < 0 )      { print 'дНЯРСО ПЮГПЕЬЕМ' }
        else                                            { print $result }
        print '</strong></font><br>'."\n";
        print '<font size=-1 face="tahoma, arial" color=blue><a href="'.$url_to_stat.$user.'/">ЯРЮРХЯРХЙЮ</a></font><br>'."\n";
        print '<input type=submit name=logout value="нЯРЮМНБХРЭ ДНЯРСО"><br>'."\n";
        print ''."\n";
        }
else {
        print '<font size=+2 face="tahoma, arial" color="#bb0000"><strong>б ДНЯРСОЕ НРЙЮГЮМН</strong></font><br>'."\n";
        print $result."<br>\n";
        print '<font size=-1 face="tahoma, arial" color=blue><a href="login.cgi">ОНБРНПХРЭ</a></font>'."\n";

        }

print $tem_f;

netams_logout();
exit;
В консоль сыпется.

Код: Выделить всё

sysread() on closed filehandle NETAMS_SOCKET at netams_api.pl line 68.
sysread() on closed filehandle NETAMS_SOCKET at netams_api.pl line 68.
sysread() on closed filehandle NETAMS_SOCKET at netams_api.pl line 68.
sysread() on closed filehandle NETAMS_SOCKET at netams_api.pl line 68.
sysread() on closed filehandle NETAMS_SOCKET at netams_api.pl line 68.
sysread() on closed filehandle NETAMS_SOCKET at netams_api.pl line 68.
sysread() on closed filehandle NETAMS_SOCKET at netams_api.pl line 68.
sysread() on closed filehandle NETAMS_SOCKET at netams_api.pl line 68.
sysread() on closed filehandle NETAMS_SOCKET at netams_api.pl line 68.
sysread() on closed filehandle NETAMS_SOCKET at netams_api.pl line 68.
sysread() on closed filehandle NETAMS_SOCKET at netams_api.pl line 68.
sysread() on closed filehandle NETAMS_SOCKET at netams_api.pl line 68.
sysread() on closed filehandle NETAMS_SOCKET at netams_api.pl line 68.
sysread() on closed filehandle NETAMS_SOCKET at netams_api.pl line 68.
sysread() on closed filehandle NETAMS_SOCKET at netams_api.pl line 68.
sysread() on closed filehandle NETAMS_SOCKET at netams_api.pl line 68.
sysread() on closed filehandle NETAMS_SOCKET at netams_api.pl line 68.
Пробую на юних сокете, но тоже самое. На офф сайте про модули перла ни слова не сказано.
Нас в ребут, а мы крепчаем.

Аватара пользователя
ProFTP
подполковник
Сообщения: 3388
Зарегистрирован: 2008-04-13 1:50:04
Откуда: %&й
Контактная информация:

Re: nginx+perl+netams

Непрочитанное сообщение ProFTP » 2009-11-21 0:08:44

Код: Выделить всё

sysread() on closed filehandle NETAMS_SOCKET at netams_api.pl line 68.
может доступа/прав нету
Pеrl FAQ
perl -e 'print join"",map $$_[rand@$_],([0..9,'a'..'z','A'..'Z'])x30'
ИзображениеИзображение

Аватара пользователя
demonsked
ефрейтор
Сообщения: 68
Зарегистрирован: 2009-05-24 3:27:45
Откуда: Россия, 67rus
Контактная информация:

Re: nginx+perl+netams

Непрочитанное сообщение demonsked » 2009-11-21 0:17:41

Эх. Перевел на юник сокет. Права наиполнейшие выставлены на него. Видим вот это.

Код: Выделить всё

Name "main::L_a_created" used only once: possible typo at /usr/local/www/site/netams/cgi-bin/admin/account.cgi line 224.
Name "main::L_a_lastmod" used only once: possible typo at /usr/local/www/site/netams/cgi-bin/admin/account.cgi line 224.
Name "main::lan" used only once: possible typo at /usr/local/www/site/netams/cgi-bin/admin/account.cgi line 15.
Name "main::p5" used only once: possible typo at /usr/local/www/site/netams/cgi-bin/admin/account.cgi line 319.
Name "main::toppane" used only once: possible typo at /usr/local/www/site/netams/cgi-bin/admin/account.cgi line 16.
Name "main::log" used only once: possible typo at /usr/local/www/site/netams/cgi-bin/admin/account.cgi line 315.
Name "main::L_a_createunituser" used only once: possible typo at /usr/local/www/site/netams/cgi-bin/admin/account.cgi line 32.
Name "main::result1" used only once: possible typo at /usr/local/www/site/netams/cgi-bin/admin/account.cgi line 315.
Use of uninitialized value in concatenation (.) or string at russian.res line 244.
Use of uninitialized value in concatenation (.) or string at russian.res line 244.
Use of uninitialized value in concatenation (.) or string at russian.res line 244.
Use of uninitialized value in concatenation (.) or string at russian.res line 244.
Use of uninitialized value in concatenation (.) or string at russian.res line 244.
Use of uninitialized value in concatenation (.) or string at russian.res line 244.
Use of uninitialized value in concatenation (.) or string at russian.res line 244.
Use of uninitialized value in string eq at netams.cgi line 15.
Use of uninitialized value in split at /usr/local/www/site/netams/cgi-bin/admin/account.cgi line 49.
Use of uninitialized value in concatenation (.) or string at /usr/local/www/site/netams/cgi-bin/admin/account.cgi line 73.
Use of uninitialized value in concatenation (.) or string at /usr/local/www/site/netams/cgi-bin/admin/account.cgi line 319.
Use of uninitialized value in concatenation (.) or string at /usr/local/www/site/netams/cgi-bin/admin/account.cgi line 319.
Use of uninitialized value in concatenation (.) or string at /usr/local/www/site/netams/cgi-bin/admin/account.cgi line 319.
Use of uninitialized value in concatenation (.) or string at /usr/local/www/site/netams/cgi-bin/admin/account.cgi line 319.
Use of uninitialized value in concatenation (.) or string at netams.cgi line 64.
Может не верно врапер написан был?
Нас в ребут, а мы крепчаем.

Аватара пользователя
ProFTP
подполковник
Сообщения: 3388
Зарегистрирован: 2008-04-13 1:50:04
Откуда: %&й
Контактная информация:

Re: nginx+perl+netams

Непрочитанное сообщение ProFTP » 2009-11-21 0:25:35

ну это варнинги выдаються, интерпретатор ругается....

я так понял уже работает?

их можешь убрать

Код: Выделить всё

#!/usr/local/bin/perl -w

Код: Выделить всё

#!/usr/local/bin/perl 
Pеrl FAQ
perl -e 'print join"",map $$_[rand@$_],([0..9,'a'..'z','A'..'Z'])x30'
ИзображениеИзображение

Аватара пользователя
demonsked
ефрейтор
Сообщения: 68
Зарегистрирован: 2009-05-24 3:27:45
Откуда: Россия, 67rus
Контактная информация:

Re: nginx+perl+netams

Непрочитанное сообщение demonsked » 2009-11-21 0:53:10

Да не понять его правильно работает или нет. Видимо сам фейс родной кривоват.
А ак можно проверить отработку перла на nginx? Чтобы точно уверенным быть что врапер работает верно.
Нас в ребут, а мы крепчаем.

Аватара пользователя
ProFTP
подполковник
Сообщения: 3388
Зарегистрирован: 2008-04-13 1:50:04
Откуда: %&й
Контактная информация:

Re: nginx+perl+netams

Непрочитанное сообщение ProFTP » 2009-11-21 2:29:21

если работает - значит работает, не знаю я там что за враперы, может fcgi поставить?

mod_perl2 apache - это максимальный вариант

UPD: я не увидел это и есть FCGI

ты наверное не правильно настроил, я FCGI настраивал только под апач

там гемороя может быть много, поставь обычный CGI
Pеrl FAQ
perl -e 'print join"",map $$_[rand@$_],([0..9,'a'..'z','A'..'Z'])x30'
ИзображениеИзображение

Аватара пользователя
demonsked
ефрейтор
Сообщения: 68
Зарегистрирован: 2009-05-24 3:27:45
Откуда: Россия, 67rus
Контактная информация:

Re: nginx+perl+netams

Непрочитанное сообщение demonsked » 2009-11-21 3:01:27

Если бы еще знать как поставить просто цги+нгинкс.
Я только за, лишь бы работало.
Нас в ребут, а мы крепчаем.

Аватара пользователя
MASiK
лейтенант
Сообщения: 625
Зарегистрирован: 2008-09-19 20:09:41
Откуда: Оттуда
Контактная информация:

Re: nginx+perl+netams

Непрочитанное сообщение MASiK » 2009-11-21 6:47:42

Давным давно, один умный мой знакомый под ником ICe написал netams front который другой мой знакомый сунул в порты, она работет на Php и очень даже удачно работает, почитать можно на http://www.it2k.ru/projects/netams-front/

будут вопросы, ко мне в личку, если что можно её переделать (Самим естественно) но с поддержкой разработчика

а NaWT уже давным давно умер... разраб пропал около 4 лет назад... Куда он пропал не кому не известно, даже есть мысли что умер... Потому что он слишком резко пропал из сети
Самурай

Аватара пользователя
ProFTP
подполковник
Сообщения: 3388
Зарегистрирован: 2008-04-13 1:50:04
Откуда: %&й
Контактная информация:

Re: nginx+perl+netams

Непрочитанное сообщение ProFTP » 2009-11-24 8:02:24

demonsked писал(а):Если бы еще знать как поставить просто цги+нгинкс.
Я только за, лишь бы работало.

ну что ты сделал?
Pеrl FAQ
perl -e 'print join"",map $$_[rand@$_],([0..9,'a'..'z','A'..'Z'])x30'
ИзображениеИзображение

Аватара пользователя
demonsked
ефрейтор
Сообщения: 68
Зарегистрирован: 2009-05-24 3:27:45
Откуда: Россия, 67rus
Контактная информация:

Re: nginx+perl+netams

Непрочитанное сообщение demonsked » 2009-11-24 20:59:18

Поставил апач.
Нас в ребут, а мы крепчаем.