NAME
File::VirusScan::Engine - Engine class for File::VirusScan backends
SYNOPSIS
use File::VirusScan::Engine;
@ISA = qw( File::VirusScan::Engine );
DESCRIPTION
File::VirusScan::Engine provides a base class and utility methods for implementing File::VirusScan support for various virus scanners.
Backend engine classes are named with the format:
File::VirusScan::Engine::(Daemon | Command)::Vendor::Product
where Daemon or Command specifies whether or not this speaks directly to a daemon, or invokes a commandline interface, and Vendor and Product are the names of the product as of the writing of these modules.
Note that
Some backends use their own commandline tool to speak to a scanning daemon. These are implemented under Command, not Daemon, as we need to invoke an external binary and parse commandline output to interpret the results.
Vendor and product names may change more frequently than the interfaces to those products. The names used here are correct as of the writing of this package.
INSTANCE METHODS
scan ( $path )
Generic scan() method. Takes a pathname to scan. Returns a File::VirusScan::Result object which can be queried for status.
Generally, this will be implemented by the subclass.
UTILITY METHODS FOR SUBCLASSES
list_files ( $path )
Returns a list of all files below $path, recursing into directories.
Some scanners can only scan individual files, rather than understanding directories themselves. This gives us a lightweight way to find all files for scanning.
Will die with "Could not open directory $path: $!" if directory cannot be opened.
_run_commandline_scanner ( $command, $match )
Runs the command given by $command. Returns the exit status of that command, and a string containing any lines of output that match the regular expression $match.
DEPENDENCIES
AUTHOR
Dave O'Neill (dmo@roaringpenguin.com)
LICENCE AND COPYRIGHT
Copyright (c) 2007 Roaring Penguin Software, Inc.
This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License, version 2, or (at your option) any later version.