diff options
author | Lukas Reschke <lukas@statuscode.ch> | 2017-03-20 18:36:36 +0100 |
---|---|---|
committer | Lukas Reschke <lukas@statuscode.ch> | 2017-03-20 18:36:36 +0100 |
commit | abaf909ba2ce729ab2b210ff3aef7a2ab879e3da (patch) | |
tree | d68113685b16cf59ef5835ce01ab8325d5447248 /apps/admin_audit/lib | |
parent | 03a92eaf74ea3898f67a12e3c19216683abb44d8 (diff) | |
download | nextcloud-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.php | 19 | ||||
-rw-r--r-- | apps/admin_audit/lib/auditlogger.php | 39 |
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); |