Perl, ClamAV, сканировать поток на вирусы
У меня есть приложение на Perl. Мне нужно сканировать некоторые файлы на наличие вирусов.
Я могу использовать ClamAV и модуль File::Scan::ClamAV . Это работает, если мне нужно сканировать какой-то файл, хранящийся на диске, или если файл загружен в память (в некоторую переменную).
Но мое приложение не имеет полного файла. Он имеет только входной поток (открытый сокет). Он читает из этого сокета и записывает в другой поток вывода.
Могу ли я как-нибудь передать поток через ClamAV? Хотелось бы перенаправить мой входной поток в clamav и прочитать данные из него, но в конце, чтобы получить какой-то результат сканирования?
1 ответ
Модуль ClamAV:: Client, кажется, предоставляет средство для сканирования потоков с scan_stream
метод.
Вот как я думаю, что это работает вместе из документации:
use ClamAV::Client;
# Try using socket options from clamd.conf, or use default socket:
my $scanner = ClamAV::Client->new();
# Scan a stream, i.e. read from an I/O handle:
my $result = $scanner->scan_stream($handle);
# $result is the name of a virus signature, or undef
die "infected" if $result;
Обратите внимание, что я еще не пробовал (пока).