diff options
Diffstat (limited to 'apps/admin_audit/lib')
-rw-r--r-- | apps/admin_audit/lib/Actions/Action.php | 7 | ||||
-rw-r--r-- | apps/admin_audit/lib/Actions/Files.php | 37 | ||||
-rw-r--r-- | apps/admin_audit/lib/Actions/Versions.php | 10 | ||||
-rw-r--r-- | apps/admin_audit/lib/AppInfo/Application.php | 13 | ||||
-rw-r--r-- | apps/admin_audit/lib/Listener/AuthEventListener.php | 18 | ||||
-rw-r--r-- | apps/admin_audit/lib/Listener/FileEventListener.php | 21 |
6 files changed, 51 insertions, 55 deletions
diff --git a/apps/admin_audit/lib/Actions/Action.php b/apps/admin_audit/lib/Actions/Action.php index 2566025a8ce..acd415d82ea 100644 --- a/apps/admin_audit/lib/Actions/Action.php +++ b/apps/admin_audit/lib/Actions/Action.php @@ -37,11 +37,8 @@ class Action { ); } else { $this->logger->critical( - sprintf( - '$params["' . $element . '"] was missing. Transferred value: %s', - print_r($params, true) - ), - ['app' => 'admin_audit'] + '$params["' . $element . '"] was missing. Transferred value: {params}', + ['app' => 'admin_audit', 'params' => $params] ); } return; diff --git a/apps/admin_audit/lib/Actions/Files.php b/apps/admin_audit/lib/Actions/Files.php index 3993f1a76ee..7be4a7cd581 100644 --- a/apps/admin_audit/lib/Actions/Files.php +++ b/apps/admin_audit/lib/Actions/Files.php @@ -10,7 +10,6 @@ namespace OCA\AdminAudit\Actions; use OC\Files\Node\NonExistingFile; use OCP\Files\Events\Node\BeforeNodeDeletedEvent; use OCP\Files\Events\Node\BeforeNodeReadEvent; -use OCP\Files\Events\Node\BeforeNodeRenamedEvent; use OCP\Files\Events\Node\NodeCopiedEvent; use OCP\Files\Events\Node\NodeCreatedEvent; use OCP\Files\Events\Node\NodeRenamedEvent; @@ -26,9 +25,6 @@ use Psr\Log\LoggerInterface; * @package OCA\AdminAudit\Actions */ class Files extends Action { - - private array $renamedNodes = []; - /** * Logs file read actions */ @@ -37,7 +33,7 @@ class Files extends Action { $node = $event->getNode(); $params = [ 'id' => $node instanceof NonExistingFile ? null : $node->getId(), - 'path' => mb_substr($node->getInternalPath(), 5), + 'path' => $node->getPath(), ]; } catch (InvalidPathException|NotFoundException $e) { Server::get(LoggerInterface::class)->error( @@ -55,29 +51,14 @@ class Files extends Action { /** * Logs rename actions of files */ - public function beforeRename(BeforeNodeRenamedEvent $event): void { - try { - $source = $event->getSource(); - $this->renamedNodes[$source->getId()] = $source; - } catch (InvalidPathException|NotFoundException $e) { - Server::get(LoggerInterface::class)->error( - 'Exception thrown in file rename: ' . $e->getMessage(), ['app' => 'admin_audit', 'exception' => $e] - ); - return; - } - } - - /** - * Logs rename actions of files - */ public function afterRename(NodeRenamedEvent $event): void { try { $target = $event->getTarget(); - $originalSource = $this->renamedNodes[$target->getId()]; + $source = $event->getSource(); $params = [ 'newid' => $target->getId(), - 'oldpath' => mb_substr($originalSource->getInternalPath(), 5), - 'newpath' => mb_substr($target->getInternalPath(), 5), + 'oldpath' => $source->getPath(), + 'newpath' => $target->getPath(), ]; } catch (InvalidPathException|NotFoundException $e) { Server::get(LoggerInterface::class)->error( @@ -101,7 +82,7 @@ class Files extends Action { try { $params = [ 'id' => $event->getNode()->getId(), - 'path' => mb_substr($event->getNode()->getInternalPath(), 5), + 'path' => $event->getNode()->getPath(), ]; } catch (InvalidPathException|NotFoundException $e) { Server::get(LoggerInterface::class)->error( @@ -127,8 +108,8 @@ class Files extends Action { $params = [ 'oldid' => $event->getSource()->getId(), 'newid' => $event->getTarget()->getId(), - 'oldpath' => mb_substr($event->getSource()->getInternalPath(), 5), - 'newpath' => mb_substr($event->getTarget()->getInternalPath(), 5), + 'oldpath' => $event->getSource()->getPath(), + 'newpath' => $event->getTarget()->getPath(), ]; } catch (InvalidPathException|NotFoundException $e) { Server::get(LoggerInterface::class)->error( @@ -151,7 +132,7 @@ class Files extends Action { try { $params = [ 'id' => $node->getId(), - 'path' => mb_substr($node->getInternalPath(), 5), + 'path' => $node->getPath(), ]; } catch (InvalidPathException|NotFoundException $e) { Server::get(LoggerInterface::class)->error( @@ -177,7 +158,7 @@ class Files extends Action { try { $params = [ 'id' => $event->getNode()->getId(), - 'path' => mb_substr($event->getNode()->getInternalPath(), 5), + 'path' => $event->getNode()->getPath(), ]; } catch (InvalidPathException|NotFoundException $e) { Server::get(LoggerInterface::class)->error( diff --git a/apps/admin_audit/lib/Actions/Versions.php b/apps/admin_audit/lib/Actions/Versions.php index c856c994d3f..b3fdefd011d 100644 --- a/apps/admin_audit/lib/Actions/Versions.php +++ b/apps/admin_audit/lib/Actions/Versions.php @@ -8,16 +8,6 @@ declare(strict_types=1); namespace OCA\AdminAudit\Actions; class Versions extends Action { - public function rollback(array $params): void { - $this->log('Version "%s" of "%s" was restored.', - [ - 'version' => $params['revision'], - 'path' => $params['path'] - ], - ['version', 'path'] - ); - } - public function delete(array $params): void { $this->log('Version "%s" was deleted.', ['path' => $params['path']], diff --git a/apps/admin_audit/lib/AppInfo/Application.php b/apps/admin_audit/lib/AppInfo/Application.php index de45bb9bcdd..63a1d065bc8 100644 --- a/apps/admin_audit/lib/AppInfo/Application.php +++ b/apps/admin_audit/lib/AppInfo/Application.php @@ -27,6 +27,7 @@ use OCA\AdminAudit\Listener\GroupManagementEventListener; use OCA\AdminAudit\Listener\SecurityEventListener; use OCA\AdminAudit\Listener\SharingEventListener; use OCA\AdminAudit\Listener\UserManagementEventListener; +use OCA\Files_Versions\Events\VersionRestoredEvent; use OCP\App\Events\AppDisableEvent; use OCP\App\Events\AppEnableEvent; use OCP\App\Events\AppUpdateEvent; @@ -34,13 +35,13 @@ use OCP\AppFramework\App; use OCP\AppFramework\Bootstrap\IBootContext; use OCP\AppFramework\Bootstrap\IBootstrap; use OCP\AppFramework\Bootstrap\IRegistrationContext; +use OCP\Authentication\Events\AnyLoginFailedEvent; use OCP\Authentication\TwoFactorAuth\TwoFactorProviderChallengeFailed; use OCP\Authentication\TwoFactorAuth\TwoFactorProviderChallengePassed; use OCP\Console\ConsoleEvent; use OCP\EventDispatcher\IEventDispatcher; use OCP\Files\Events\Node\BeforeNodeDeletedEvent; use OCP\Files\Events\Node\BeforeNodeReadEvent; -use OCP\Files\Events\Node\BeforeNodeRenamedEvent; use OCP\Files\Events\Node\NodeCopiedEvent; use OCP\Files\Events\Node\NodeCreatedEvent; use OCP\Files\Events\Node\NodeRenamedEvent; @@ -105,9 +106,11 @@ class Application extends App implements IBootstrap { $context->registerEventListener(UserLoggedInWithCookieEvent::class, AuthEventListener::class); $context->registerEventListener(UserLoggedInEvent::class, AuthEventListener::class); $context->registerEventListener(BeforeUserLoggedOutEvent::class, AuthEventListener::class); + $context->registerEventListener(AnyLoginFailedEvent::class, AuthEventListener::class); // File events $context->registerEventListener(BeforePreviewFetchedEvent::class, FileEventListener::class); + $context->registerEventListener(VersionRestoredEvent::class, FileEventListener::class); // Security events $context->registerEventListener(TwoFactorProviderChallengePassed::class, SecurityEventListener::class); @@ -167,13 +170,6 @@ class Application extends App implements IBootstrap { $fileActions = new Files($logger); $eventDispatcher->addListener( - BeforeNodeRenamedEvent::class, - function (BeforeNodeRenamedEvent $event) use ($fileActions): void { - $fileActions->beforeRename($event); - } - ); - - $eventDispatcher->addListener( NodeRenamedEvent::class, function (NodeRenamedEvent $event) use ($fileActions): void { $fileActions->afterRename($event); @@ -218,7 +214,6 @@ class Application extends App implements IBootstrap { private function versionsHooks(IAuditLogger $logger): void { $versionsActions = new Versions($logger); - Util::connectHook('\OCP\Versions', 'rollback', $versionsActions, 'rollback'); Util::connectHook('\OCP\Versions', 'delete', $versionsActions, 'delete'); } diff --git a/apps/admin_audit/lib/Listener/AuthEventListener.php b/apps/admin_audit/lib/Listener/AuthEventListener.php index 2b31a271d23..88be8555a4d 100644 --- a/apps/admin_audit/lib/Listener/AuthEventListener.php +++ b/apps/admin_audit/lib/Listener/AuthEventListener.php @@ -10,6 +10,7 @@ declare(strict_types=1); namespace OCA\AdminAudit\Listener; use OCA\AdminAudit\Actions\Action; +use OCP\Authentication\Events\AnyLoginFailedEvent; use OCP\EventDispatcher\Event; use OCP\EventDispatcher\IEventListener; use OCP\User\Events\BeforeUserLoggedInEvent; @@ -18,7 +19,7 @@ use OCP\User\Events\UserLoggedInEvent; use OCP\User\Events\UserLoggedInWithCookieEvent; /** - * @template-implements IEventListener<BeforeUserLoggedInEvent|UserLoggedInWithCookieEvent|UserLoggedInEvent|BeforeUserLoggedOutEvent> + * @template-implements IEventListener<BeforeUserLoggedInEvent|UserLoggedInWithCookieEvent|UserLoggedInEvent|BeforeUserLoggedOutEvent|AnyLoginFailedEvent> */ class AuthEventListener extends Action implements IEventListener { public function handle(Event $event): void { @@ -28,6 +29,8 @@ class AuthEventListener extends Action implements IEventListener { $this->userLoggedIn($event); } elseif ($event instanceof BeforeUserLoggedOutEvent) { $this->beforeUserLogout($event); + } elseif ($event instanceof AnyLoginFailedEvent) { + $this->anyLoginFailed($event); } } @@ -64,4 +67,17 @@ class AuthEventListener extends Action implements IEventListener { [] ); } + + private function anyLoginFailed(AnyLoginFailedEvent $event): void { + $this->log( + 'Login failed: "%s"', + [ + 'loginName' => $event->getLoginName() + ], + [ + 'loginName', + ], + true + ); + } } diff --git a/apps/admin_audit/lib/Listener/FileEventListener.php b/apps/admin_audit/lib/Listener/FileEventListener.php index 4ea3db6aa7d..46a4962123b 100644 --- a/apps/admin_audit/lib/Listener/FileEventListener.php +++ b/apps/admin_audit/lib/Listener/FileEventListener.php @@ -10,6 +10,7 @@ declare(strict_types=1); namespace OCA\AdminAudit\Listener; use OCA\AdminAudit\Actions\Action; +use OCA\Files_Versions\Events\VersionRestoredEvent; use OCP\EventDispatcher\Event; use OCP\EventDispatcher\IEventListener; use OCP\Files\InvalidPathException; @@ -19,12 +20,14 @@ use OCP\Server; use Psr\Log\LoggerInterface; /** - * @template-implements IEventListener<BeforePreviewFetchedEvent> + * @template-implements IEventListener<BeforePreviewFetchedEvent|VersionRestoredEvent> */ class FileEventListener extends Action implements IEventListener { public function handle(Event $event): void { if ($event instanceof BeforePreviewFetchedEvent) { $this->beforePreviewFetched($event); + } elseif ($event instanceof VersionRestoredEvent) { + $this->versionRestored($event); } } @@ -40,7 +43,7 @@ class FileEventListener extends Action implements IEventListener { 'height' => $event->getHeight(), 'crop' => $event->isCrop(), 'mode' => $event->getMode(), - 'path' => mb_substr($file->getInternalPath(), 5) + 'path' => $file->getPath(), ]; $this->log( 'Preview accessed: (id: "%s", width: "%s", height: "%s" crop: "%s", mode: "%s", path: "%s")', @@ -54,4 +57,18 @@ class FileEventListener extends Action implements IEventListener { return; } } + + /** + * Logs when a version is restored + */ + private function versionRestored(VersionRestoredEvent $event): void { + $version = $event->getVersion(); + $this->log('Version "%s" of "%s" was restored.', + [ + 'version' => $version->getRevisionId(), + 'path' => $version->getVersionPath() + ], + ['version', 'path'] + ); + } } |