Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/undo-ransomware/ransomware_detection.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthias <ilovemilk@wusa.io>2020-03-29 20:06:37 +0300
committerMatthias <ilovemilk@wusa.io>2020-03-29 20:06:37 +0300
commit1cbc676f20f9f0d983df4ee1f6deceb0df922d08 (patch)
tree48618d2f4ebe5928685b063216c1489613e7be56
parent1bee2eee08ec714efe15265f109f6c59d1773ff6 (diff)
check if file or folder is created
-rw-r--r--lib/Monitor.php64
1 files changed, 38 insertions, 26 deletions
diff --git a/lib/Monitor.php b/lib/Monitor.php
index 06f1d56..dc5aa1e 100644
--- a/lib/Monitor.php
+++ b/lib/Monitor.php
@@ -138,7 +138,7 @@ class Monitor
$path = $paths[0];
$storage = $this->rootFolder->getUserFolder($this->userId)->get(dirname($path))->getStorage();
- if ($this->userId === null || $this->nestingLevel !== 0 /*|| !$this->isUploadedFile($storage, $path)*/ || $this->isCreatingSkeletonFiles()) {
+ if ($this->userId === null || $this->nestingLevel !== 0 || /*!$this->isUploadedFile($storage, $path) ||*/ $this->isCreatingSkeletonFiles()) {
// check only cloud files and no system files
return;
}
@@ -243,34 +243,46 @@ class Monitor
return;
case self::CREATE:
$this->logger->error("Create", ['app' => Application::APP_ID]);
- // only folders are created
-
// reset PROPFIND_COUNT
$this->resetProfindCount();
- $fileOperation = new FileOperation();
- $fileOperation->setUserId($this->userId);
- $fileOperation->setPath(str_replace('files', '', pathinfo($path)['dirname']));
- $fileOperation->setOriginalName(pathinfo($path)['basename']);
- $fileOperation->setType('folder');
- $fileOperation->setMimeType('httpd/unix-directory');
- $fileOperation->setSize(0);
- $fileOperation->setTimestamp(time());
- $fileOperation->setCorrupted(false);
- $fileOperation->setCommand(self::CREATE);
- $sequenceId = $this->config->getUserValue($this->userId, Application::APP_ID, 'sequence_id', 0);
- $fileOperation->setSequence($sequenceId);
-
- // entropy analysis
- $fileOperation->setEntropy(0.0);
- $fileOperation->setStandardDeviation(0.0);
- $fileOperation->setFileClass(EntropyResult::NORMAL);
-
- // file extension analysis
- $fileOperation->setFileExtensionClass(FileExtensionResult::NOT_SUSPICIOUS);
-
- $this->mapper->insert($fileOperation);
- $this->nestingLevel--;
+ try {
+ $userRoot = $this->rootFolder->getUserFolder($this->userId);
+ $node = $userRoot->get($path);
+ } catch (\OCP\Files\NotFoundException $exception) {
+ $this->logger->error("File Not Found ".$path, ['app' => Application::APP_ID]);
+ return;
+ }
+ if (!($node instanceof File)) {
+
+ $fileOperation = new FileOperation();
+ $fileOperation->setUserId($this->userId);
+ $fileOperation->setPath(str_replace('files', '', pathinfo($path)['dirname']));
+ $fileOperation->setOriginalName(pathinfo($path)['basename']);
+ $fileOperation->setType('folder');
+ $fileOperation->setMimeType('httpd/unix-directory');
+ $fileOperation->setSize(0);
+ $fileOperation->setTimestamp(time());
+ $fileOperation->setCorrupted(false);
+ $fileOperation->setCommand(self::CREATE);
+ $sequenceId = $this->config->getUserValue($this->userId, Application::APP_ID, 'sequence_id', 0);
+ $fileOperation->setSequence($sequenceId);
+
+ // entropy analysis
+ $fileOperation->setEntropy(0.0);
+ $fileOperation->setStandardDeviation(0.0);
+ $fileOperation->setFileClass(EntropyResult::NORMAL);
+
+ // file extension analysis
+ $fileOperation->setFileExtensionClass(FileExtensionResult::NOT_SUSPICIOUS);
+
+ $this->mapper->insert($fileOperation);
+ $this->nestingLevel--;
+ } else {
+ $this->addFileOperation($paths, $node, self::CREATE);
+
+ $this->nestingLevel--;
+ }
return;
default: