mirror of
https://github.com/scr34m/php-malware-scanner.git
synced 2026-06-16 12:30:35 +00:00
Allowing multiple use of -d option and braces in path syntax, closes #56
This commit is contained in:
48
scan.php
48
scan.php
@@ -69,16 +69,31 @@ class MalwareScanner
|
|||||||
if ($cli === true) {
|
if ($cli === true) {
|
||||||
//Read Run Options
|
//Read Run Options
|
||||||
$this->parseArgs();
|
$this->parseArgs();
|
||||||
$this->dir = realpath($this->dir);
|
|
||||||
|
$dirs = array();
|
||||||
|
if (is_array($this->dir)) {
|
||||||
|
// allow multiple directory aka. array
|
||||||
|
foreach ($this->dir as $path) {
|
||||||
|
$dirs[] = realpath($path);
|
||||||
|
}
|
||||||
|
} elseif ($bpos = strpos($this->dir, '{')) {
|
||||||
|
// Check path has a "brace", expand it to subdirectories
|
||||||
|
foreach (glob($this->dir, GLOB_BRACE) as $path) {
|
||||||
|
$dirs[] = realpath($path);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
// only one directory specified
|
||||||
|
$dirs = array (realpath($this->dir));
|
||||||
|
}
|
||||||
|
|
||||||
//Make sure a directory was specified.
|
//Make sure a directory was specified.
|
||||||
if ($this->dir === '') {
|
if (empty($dirs)) {
|
||||||
$this->error('No directory specified or directory doesn\'t exist');
|
$this->error('No directory specified or directory doesn\'t exist');
|
||||||
exit(-1);
|
exit(-1);
|
||||||
}
|
}
|
||||||
|
|
||||||
//Initiate Scan
|
//Initiate Scan
|
||||||
if (!$this->run($this->dir)) {
|
if (!$this->run($dirs)) {
|
||||||
exit(-1);
|
exit(-1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -592,18 +607,11 @@ class MalwareScanner
|
|||||||
* - Fetch and load combined whitelist
|
* - Fetch and load combined whitelist
|
||||||
* - Calls the process and report functions.
|
* - Calls the process and report functions.
|
||||||
*
|
*
|
||||||
* @param $dir
|
* @param string|array $dir A directory path or a list of paths in array
|
||||||
* @return bool
|
* @return bool
|
||||||
*/
|
*/
|
||||||
public function run($dir)
|
public function run($dir)
|
||||||
{
|
{
|
||||||
// Make sure the input is a valid directory path.
|
|
||||||
$dir = rtrim($dir, '/');
|
|
||||||
if (!is_dir($dir)) {
|
|
||||||
$this->error('Specified path is not a directory: ' . $dir);
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
$this->initializePatterns();
|
$this->initializePatterns();
|
||||||
|
|
||||||
$this->loadWhitelist();
|
$this->loadWhitelist();
|
||||||
@@ -613,9 +621,23 @@ class MalwareScanner
|
|||||||
}
|
}
|
||||||
|
|
||||||
$start = time();
|
$start = time();
|
||||||
$this->process($dir . '/');
|
|
||||||
|
if (!is_array($dir)) {
|
||||||
|
$dir = array ($dir);
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach ($dir as $path) {
|
||||||
|
// Make sure the input is a valid directory path.
|
||||||
|
$path = rtrim($path, '/');
|
||||||
|
if (!is_dir($path)) {
|
||||||
|
$this->error('Specified path is not a directory: ' . $path);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
$this->process($path . '/');
|
||||||
|
}
|
||||||
|
|
||||||
if (!$this->flagDisableStats) {
|
if (!$this->flagDisableStats) {
|
||||||
$this->report($start, $dir . '/');
|
$this->report($start, implode(', ', $dir));
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user