]> source.dussan.org Git - nextcloud-server.git/commitdiff
Log access to preview images 3963/head
authorLukas Reschke <lukas@statuscode.ch>
Mon, 20 Mar 2017 17:36:36 +0000 (18:36 +0100)
committerLukas Reschke <lukas@statuscode.ch>
Mon, 20 Mar 2017 17:36:36 +0000 (18:36 +0100)
Signed-off-by: Lukas Reschke <lukas@statuscode.ch>
apps/admin_audit/appinfo/app.php
apps/admin_audit/lib/actions/files.php
apps/admin_audit/lib/auditlogger.php

index a085b74585da582d47b9fa6a0fb46b6cac6e9b76..59f7e3987a110ce06273030a53a425490af5dd9a 100644 (file)
@@ -1,6 +1,7 @@
 <?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>
 $logger = \OC::$server->getLogger();
 $userSession = \OC::$server->getUserSession();
 $groupManager = \OC::$server->getGroupManager();
+$eventDispatcher = \OC::$server->getEventDispatcher();
 
-$auditLogger = new \OCA\Admin_Audit\AuditLogger($logger, $userSession, $groupManager);
+$auditLogger = new \OCA\Admin_Audit\AuditLogger(
+       $logger,
+       $userSession,
+       $groupManager,
+       $eventDispatcher
+);
 $auditLogger->registerHooks();
index d7b35aa2d3ea5376ef33161ffd526d6da8ab3168..d0a030d892a2ff1996c631e50ec9deb7fd38f045 100644 (file)
@@ -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'
+                       ]
+               );
+       }
 }
index 674282b5fe2d3a724657730cafc265f064f61485..20d346555070fd0a5fd9689d7c744b3d99fb2c17 100644 (file)
@@ -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
  *
  *
  */
 
-
 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);