ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 


  СТАТЬИ 


  ПЕРСОНАЛЬНОЕ 


  ПРОГРАММЫ 



ПИШИТЕ
ПИСЬМА












     АРХИВ :: nginx-ru
Nginx-ru mailing list archive (nginx-ru@sysoev.ru)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

perl модуль, возвращение запроса на обработку nginx


  • To: nginx-ru@xxxxxxxxx
  • Subject: perl модуль, возвращение запроса на обработку nginx
  • From: Alexey Shilo <italex.shilo@xxxxxxxxx>
  • Date: Fri, 2 Nov 2012 23:02:38 +0600
  • Dkim-signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:from:date:message-id:subject:to:content-type; bh=sLxQSVgLkSTqzRG6QJRqmHOpd0P9XP9GzMtZfTSx5UA=; b=ZTPVJdMprmjjkUqfiAomPNck0UbvedmYKA9xJ3L39SU0ZDbfSrPxiUUPQ35yc6Kwt/ Zk1d5RAXxoU+n/BcWGUBxcsru/AygCdkvroFUVlToqt3nVvnvsnJqmMss0HH4dDuE4uw xBD/rVPdLzNymjrtUb6CUwfXLEFiMA2y44EuyiRu2g1HHmn2AsgonHacILTQiKbk6UcO rvwz7E4tfc0GSTw3K0W0o5TUGjs1r53sU9Ke1YmCjscSwhkeszlorBqAmF54ahFVPppW na+kXZIwhDA5rAzf2nPnI+fDq8zN/L9cSsct7S/iy9iMYfdvgqhnhblGANhRBEf5MxpV 7oVg==

Здравствуйте, столкнулся с следующей задачей:
необходимо фильтровать HTTP запросы на уровне nginx, нужно пропускать GET запросы и POST запросы в теле которых валидный XML.
Написал на перле следующий модуль (в конце сообщения).
Всё отлично работает, проверяет валидность, адекватно реагирует, НО... в случае валидности POST запроса с XML он не возвращается на обработку nginx'у (не происходит выдача нужного контента ни через proxy_pass, ни через fastcgi_pass, ни через root), возвращает 405 Not Allowed.
Пожалуйста подскажите как сделать что-бы продолжалась обработка запроса после проверки перловым модулем?

Модуль:

package onlyxml;

use nginx;
use strict;
use XML::Simple;


sub test {
my $r = shift;

if ($r->request_method eq "POST") {
if ($r->has_request_body(\&post)) {
return 400; # не валидный XML
} else {
return 401; # пустой запрос
}
} else {
return DECLINED; # не GET запросы
}

}

sub post {
my $r = shift;

$r->send_http_header;
my $xs = new XML::Simple();
my $hash;
eval {$hash = $xs->XMLin($r->request_body)};
if ($@){
return 400; # не валидный
} else {
### TODO: вернуть запрос nginx'у
return DECLINED; # Валидный xml
}
}

1;
__END__
_______________________________________________
nginx-ru mailing list
nginx-ru@xxxxxxxxx
http://mailman.nginx.org/mailman/listinfo/nginx-ru


 




Copyright © Lexa Software, 1996-2009.