Skip to content

Commit 73017f5

Browse files
authored
Merge pull request #56768 from nextcloud/feat/log-cache-events-to-audit
feat(admin_audit): Log cache insert/delete to audit log
2 parents b18372e + 938e8d3 commit 73017f5

File tree

4 files changed

+60
-0
lines changed

4 files changed

+60
-0
lines changed

apps/admin_audit/composer/composer/autoload_classmap.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
'OCA\\AdminAudit\\IAuditLogger' => $baseDir . '/../lib/IAuditLogger.php',
2020
'OCA\\AdminAudit\\Listener\\AppManagementEventListener' => $baseDir . '/../lib/Listener/AppManagementEventListener.php',
2121
'OCA\\AdminAudit\\Listener\\AuthEventListener' => $baseDir . '/../lib/Listener/AuthEventListener.php',
22+
'OCA\\AdminAudit\\Listener\\CacheEventListener' => $baseDir . '/../lib/Listener/CacheEventListener.php',
2223
'OCA\\AdminAudit\\Listener\\ConsoleEventListener' => $baseDir . '/../lib/Listener/ConsoleEventListener.php',
2324
'OCA\\AdminAudit\\Listener\\CriticalActionPerformedEventListener' => $baseDir . '/../lib/Listener/CriticalActionPerformedEventListener.php',
2425
'OCA\\AdminAudit\\Listener\\FileEventListener' => $baseDir . '/../lib/Listener/FileEventListener.php',

apps/admin_audit/composer/composer/autoload_static.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ class ComposerStaticInitAdminAudit
3434
'OCA\\AdminAudit\\IAuditLogger' => __DIR__ . '/..' . '/../lib/IAuditLogger.php',
3535
'OCA\\AdminAudit\\Listener\\AppManagementEventListener' => __DIR__ . '/..' . '/../lib/Listener/AppManagementEventListener.php',
3636
'OCA\\AdminAudit\\Listener\\AuthEventListener' => __DIR__ . '/..' . '/../lib/Listener/AuthEventListener.php',
37+
'OCA\\AdminAudit\\Listener\\CacheEventListener' => __DIR__ . '/..' . '/../lib/Listener/CacheEventListener.php',
3738
'OCA\\AdminAudit\\Listener\\ConsoleEventListener' => __DIR__ . '/..' . '/../lib/Listener/ConsoleEventListener.php',
3839
'OCA\\AdminAudit\\Listener\\CriticalActionPerformedEventListener' => __DIR__ . '/..' . '/../lib/Listener/CriticalActionPerformedEventListener.php',
3940
'OCA\\AdminAudit\\Listener\\FileEventListener' => __DIR__ . '/..' . '/../lib/Listener/FileEventListener.php',

apps/admin_audit/lib/AppInfo/Application.php

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
use OCA\AdminAudit\IAuditLogger;
2121
use OCA\AdminAudit\Listener\AppManagementEventListener;
2222
use OCA\AdminAudit\Listener\AuthEventListener;
23+
use OCA\AdminAudit\Listener\CacheEventListener;
2324
use OCA\AdminAudit\Listener\ConsoleEventListener;
2425
use OCA\AdminAudit\Listener\CriticalActionPerformedEventListener;
2526
use OCA\AdminAudit\Listener\FileEventListener;
@@ -40,6 +41,8 @@
4041
use OCP\Authentication\TwoFactorAuth\TwoFactorProviderChallengePassed;
4142
use OCP\Console\ConsoleEvent;
4243
use OCP\EventDispatcher\IEventDispatcher;
44+
use OCP\Files\Cache\CacheEntryInsertedEvent;
45+
use OCP\Files\Cache\CacheEntryRemovedEvent;
4346
use OCP\Files\Events\Node\BeforeNodeDeletedEvent;
4447
use OCP\Files\Events\Node\BeforeNodeReadEvent;
4548
use OCP\Files\Events\Node\NodeCopiedEvent;
@@ -123,6 +126,10 @@ public function register(IRegistrationContext $context): void {
123126

124127
// Console events
125128
$context->registerEventListener(ConsoleEvent::class, ConsoleEventListener::class);
129+
130+
// Cache events
131+
$context->registerEventListener(CacheEntryInsertedEvent::class, CacheEventListener::class);
132+
$context->registerEventListener(CacheEntryRemovedEvent::class, CacheEventListener::class);
126133
}
127134

128135
public function boot(IBootContext $context): void {
Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
/**
6+
* SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors
7+
* SPDX-License-Identifier: AGPL-3.0-or-later
8+
*/
9+
10+
namespace OCA\AdminAudit\Listener;
11+
12+
use OCA\AdminAudit\Actions\Action;
13+
use OCP\EventDispatcher\Event;
14+
use OCP\EventDispatcher\IEventListener;
15+
use OCP\Files\Cache\CacheEntryInsertedEvent;
16+
use OCP\Files\Cache\CacheEntryRemovedEvent;
17+
18+
/**
19+
* @template-implements IEventListener<CacheEntryInsertedEvent|CacheEntryRemovedEvent>
20+
*/
21+
class CacheEventListener extends Action implements IEventListener {
22+
public function handle(Event $event): void {
23+
if ($event instanceof CacheEntryInsertedEvent) {
24+
$this->entryInserted($event);
25+
} elseif ($event instanceof CacheEntryRemovedEvent) {
26+
$this->entryRemoved($event);
27+
}
28+
}
29+
30+
private function entryInserted(CacheEntryInsertedEvent $event): void {
31+
$this->log('Cache entry inserted for fileid "%1$d", path "%2$s" on storageid "%3$d"',
32+
[
33+
'fileid' => $event->getFileId(),
34+
'path' => $event->getPath(),
35+
'storageid' => $event->getStorageId(),
36+
],
37+
['fileid', 'path', 'storageid']
38+
);
39+
}
40+
41+
private function entryRemoved(CacheEntryRemovedEvent $event): void {
42+
$this->log('Cache entry removed for fileid "%1$d", path "%2$s" on storageid "%3$d"',
43+
[
44+
'fileid' => $event->getFileId(),
45+
'path' => $event->getPath(),
46+
'storageid' => $event->getStorageId(),
47+
],
48+
['fileid', 'path', 'storageid']
49+
);
50+
}
51+
}

0 commit comments

Comments
 (0)