[Moscow.pm] Gzip в XMLRPC::Lite и логирование IP клиентского пира
Dennis S.Davidoff
davydov на nexo.ru
Ср Фев 4 22:38:03 PST 2009
Привет всем!
Есть два вопроса по XMLRPC::Lite. Возможно, кто-то подскажет.
-- 1. Возможно ли использовать gzip на XMLRPC::Transport::HTTP::Daemon?
Сервер:
#!/usr/bin/perl -I /usr/home/null/.Eclipse/RT/lib
# vim: ts=8:sw=4
use strict;
use warnings;
use XMLRPC::Lite +trace => 'all';
use XMLRPC::Transport::HTTP;
use Router;
use Data::Dumper;
my $daemon = XMLRPC::Transport::HTTP::Daemon
-> new (LocalPort => 9850, ReuseAddr => 1)
-> options({compress_threshold => 1000})
-> dispatch_to('Router');
$daemon->handle;
(там один метод из пакета Router возвращает много всяких данных,
хотелось бы сжимать)
Клиент:
#!/usr/bin/perl -w
use strict;
use XMLRPC::Lite +trace => 'all';
use Data::Dumper;
my $client = XMLRPC::Lite
->proxy('http://localhost:9850/', options => {compress_threshold => 1})
->on_fault(sub { die "Transport error: " . $_[1]->faultstring });
print Dumper($client->call('Router.GetAddrList', '192.168.0')->result);
Покопав трейс клиента, я увидел что первый запрос клиента пакуется:
POST http://localhost:9850/ HTTP/1.1
Accept: text/xml
Accept: multipart/*
Accept: application/soap
Accept-Encoding: gzip
Content-Encoding: gzip
Content-Length: 147
Content-Type: text/xml
Ответ сервера:
415 Unsupported Media Type
Дальше клиент пытается без паковки отправить запрос и получает
непакованный ответ. Хотя Accept-Encoding присутствует у клиента. Сервер
отдает где-то 37 Кбайт. Почему сервер не отдает запакованный контент?
-- 2. Как логировать хосты пиров у сервера?
Например, клиент вызывает Router.GetAddrList, возможно ли как-то в этом
пакете перехватить хост пира с портом? Насколько я понял каким-то
образом можно получить доступ к {client_socket}->peerhost и
{client_socket}->peerport. Я ошибаюсь?
Заранее спасибо!
--
Sincerely,
Dennis S.Davidoff
----------- следущая часть -----------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/x-pkcs7-signature
Size: 3229 bytes
Desc: S/MIME Cryptographic Signature
URL: <http://mail.pm.org/pipermail/moscow-pm/attachments/20090205/6bf873a0/attachment-0001.bin>
Подробная информация о списке рассылки Moscow-pm