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;

Обратите внимание, что я еще не пробовал (пока).

Другие вопросы по тегам