summaryrefslogtreecommitdiffstats
path: root/apps/admin_audit/lib
diff options
context:
space:
mode:
authorLukas Reschke <lukas@statuscode.ch>2017-03-20 18:36:36 +0100
committerLukas Reschke <lukas@statuscode.ch>2017-03-20 18:36:36 +0100
commitabaf909ba2ce729ab2b210ff3aef7a2ab879e3da (patch)
treed68113685b16cf59ef5835ce01ab8325d5447248 /apps/admin_audit/lib
parent03a92eaf74ea3898f67a12e3c19216683abb44d8 (diff)
downloadnextcloud-server-abaf909ba2ce729ab2b210ff3aef7a2ab879e3da.tar.gz
nextcloud-server-abaf909ba2ce729ab2b210ff3aef7a2ab879e3da.zip
Log access to preview images
Signed-off-by: Lukas Reschke <lukas@statuscode.ch>
Diffstat (limited to 'apps/admin_audit/lib')
-rw-r--r--apps/admin_audit/lib/actions/files.php19
-rw-r--r--apps/admin_audit/lib/auditlogger.php39
2 files changed, 47 insertions, 11 deletions
diff --git a/apps/admin_audit/lib/actions/files.php b/apps/admin_audit/lib/actions/files.php
index d7b35aa2d3e..d0a030d892a 100644
--- a/apps/admin_audit/lib/actions/files.php
+++ b/apps/admin_audit/lib/actions/files.php
@@ -134,4 +134,23 @@ class Files extends Action {
]
);
}
+
+ /**
+ * Logs preview access to a file
+ *
+ * @param array $params
+ */
+ public function preview(array $params) {
+ $this->log(
+ 'Preview accessed: "%s" (width: "%s", height: "%s" crop: "%s", mode: "%s")',
+ $params,
+ [
+ 'path',
+ 'width',
+ 'height',
+ 'crop',
+ 'mode'
+ ]
+ );
+ }
}
diff --git a/apps/admin_audit/lib/auditlogger.php b/apps/admin_audit/lib/auditlogger.php
index 674282b5fe2..20d34655507 100644
--- a/apps/admin_audit/lib/auditlogger.php
+++ b/apps/admin_audit/lib/auditlogger.php
@@ -1,8 +1,10 @@
<?php
/**
* @copyright Copyright (c) 2016 Bjoern Schiessle <bjoern@schiessle.org>
+ * @copyright Copyright (c) 2017 Lukas Reschke <lukas@statuscode.ch>
*
* @author Bjoern Schiessle <bjoern@schiessle.org>
+ * @author Lukas Reschke <lukas@statuscode.ch>
*
* @license GNU AGPL version 3 or any later version
*
@@ -21,11 +23,10 @@
*
*/
-
namespace OCA\Admin_Audit;
-
use OC\Files\Filesystem;
+use OC\Files\Node\File;
use OCA\Admin_Audit\Actions\Auth;
use OCA\Admin_Audit\Actions\Files;
use OCA\Admin_Audit\Actions\GroupManagement;
@@ -35,17 +36,17 @@ use OCA\Admin_Audit\Actions\UserManagement;
use OCA\Admin_Audit\Actions\Versions;
use OCP\IGroupManager;
use OCP\ILogger;
+use OCP\IPreview;
use OCP\IUserSession;
use OCP\Util;
+use Symfony\Component\EventDispatcher\EventDispatcherInterface;
+use Symfony\Component\EventDispatcher\GenericEvent;
class AuditLogger {
-
/** @var ILogger */
private $logger;
-
/** @var IUserSession */
private $userSession;
-
/** @var IGroupManager */
private $groupManager;
@@ -55,17 +56,20 @@ class AuditLogger {
* @param ILogger $logger
* @param IUserSession $userSession
* @param IGroupManager $groupManager
+ * @param EventDispatcherInterface $eventDispatcher
*/
public function __construct(ILogger $logger,
IUserSession $userSession,
- IGroupManager $groupManager) {
+ IGroupManager $groupManager,
+ EventDispatcherInterface $eventDispatcher) {
$this->logger = $logger;
$this->userSession = $userSession;
$this->groupManager = $groupManager;
+ $this->eventDispatcher = $eventDispatcher;
}
/**
- * register hooks in order to log them
+ * Register hooks in order to log them
*/
public function registerHooks() {
$this->userManagementHooks();
@@ -78,7 +82,7 @@ class AuditLogger {
}
/**
- * connect to user management hooks
+ * Connect to user management hooks
*/
private function userManagementHooks() {
$userActions = new UserManagement($this->logger);
@@ -119,12 +123,25 @@ class AuditLogger {
Util::connectHook('OC_User', 'logout', $authActions, 'logout');
}
-
/**
- * connect to file hooks
+ * Connect to file hooks
*/
private function fileHooks() {
$fileActions = new Files($this->logger);
+ $this->eventDispatcher->addListener(
+ IPreview::EVENT,
+ function(GenericEvent $event) use ($fileActions) {
+ /** @var File $file */
+ $file = $event->getSubject();
+ $fileActions->preview([
+ 'path' => substr($file->getInternalPath(), 5),
+ 'width' => $event->getArguments()['width'],
+ 'height' => $event->getArguments()['height'],
+ 'crop' => $event->getArguments()['crop'],
+ 'mode' => $event->getArguments()['mode']
+ ]);
+ }
+ );
Util::connectHook(
Filesystem::CLASSNAME,
@@ -177,7 +194,7 @@ class AuditLogger {
}
/**
- * connect to trash bin hooks
+ * Connect to trash bin hooks
*/
private function trashbinHooks() {
$trashActions = new Trashbin($this->logger);