11require_once
"./Services/VirusScanner/classes/class.ilVirusScanner.php";
24 parent::__construct($a_scancommand, $a_cleancommand);
25 $this->type =
"clamav";
26 $this->scanZipFiles =
true;
34 return $this->scanCommand .
' ' . self::ADD_SCAN_PARAMS .
' ' .
$file;
42 $functions = array(
'proc_open',
'proc_close');
44 foreach ($functions as $func) {
45 if (function_exists($func)) {
74 $descriptorspec = array(
75 0 => array(
"pipe",
"r"),
76 1 => array(
"pipe",
"w"),
77 2 => array(
"pipe",
"w")
86 if (!is_resource($process)) {
90 fwrite($pipes[0], $buffer);
93 $detectionReport = stream_get_contents($pipes[1]);
96 $errorReport = stream_get_contents($pipes[2]);
99 $return = proc_close($process);
110 return preg_match(
"/FOUND/", $detectionReport);
120 public function scanFile($a_filepath, $a_origname =
"")
132 $this->scanFilePath = $a_filepath;
133 $this->scanFileOrigName = $a_origname;
138 $this->scanResult = implode(
"\n",
$out);
142 $this->scanFileIsInfected =
true;
146 $this->scanFileIsInfected =
false;
151 $this->log->write(
"ERROR (Virus Scanner failed): "
153 .
"; COMMAMD=" . $cmd);
An exception for terminatinating execution or to throw for unit testing.
Interface to the ClamAV virus protector.
hasDetections($detectionReport)
scanFile($a_filepath, $a_origname="")
scan a file for viruses
processBufferScan($buffer)
__construct($a_scancommand, $a_cleancommand)
Constructor @access public.
buildScanCommand($file='-')
Base class for the interface to an external virus scanner This class is abstract and needs to be exte...
scanFileFromBuffer($buffer)
logScanResult()
write the result of the last scan to the log @access public
if(!file_exists("$old.txt")) if( $old===$new) if(file_exists("$new.txt")) $file