4848use OCA \AdminAudit \Actions \Trashbin ;
4949use OCA \AdminAudit \Actions \UserManagement ;
5050use OCA \AdminAudit \Actions \Versions ;
51+ use OCA \AdminAudit \AuditLogger ;
52+ use OCA \AdminAudit \IAuditLogger ;
5153use OCA \AdminAudit \Listener \CriticalActionPerformedEventListener ;
5254use OCP \App \ManagerEvent ;
5355use OCP \AppFramework \App ;
6567use OCP \Log \ILogFactory ;
6668use OCP \Share ;
6769use OCP \Util ;
70+ use Psr \Container \ContainerInterface ;
6871use Psr \Log \LoggerInterface ;
6972use Symfony \Component \EventDispatcher \EventDispatcherInterface ;
7073use Symfony \Component \EventDispatcher \GenericEvent ;
@@ -79,14 +82,16 @@ public function __construct() {
7982 }
8083
8184 public function register (IRegistrationContext $ context ): void {
85+ $ context ->registerService (IAuditLogger::class, function (ContainerInterface $ c ) {
86+ return new AuditLogger ($ c ->get (ILogFactory::class), $ c ->get (Iconfig::class));
87+ });
88+
8289 $ context ->registerEventListener (CriticalActionPerformedEvent::class, CriticalActionPerformedEventListener::class);
8390 }
8491
8592 public function boot (IBootContext $ context ): void {
86- /** @var LoggerInterface $logger */
87- $ logger = $ context ->injectFn (
88- Closure::fromCallable ([$ this , 'getLogger ' ])
89- );
93+ /** @var IAuditLogger $logger */
94+ $ logger = $ context ->getAppContainer ()->get (IAuditLogger::class);
9095
9196 /*
9297 * TODO: once the hooks are migrated to lazy events, this should be done
@@ -95,26 +100,10 @@ public function boot(IBootContext $context): void {
95100 $ this ->registerHooks ($ logger , $ context ->getServerContainer ());
96101 }
97102
98- private function getLogger (IConfig $ config ,
99- ILogFactory $ logFactory ): LoggerInterface {
100- $ auditType = $ config ->getSystemValueString ('log_type_audit ' , 'file ' );
101- $ defaultTag = $ config ->getSystemValueString ('syslog_tag ' , 'Nextcloud ' );
102- $ auditTag = $ config ->getSystemValueString ('syslog_tag_audit ' , $ defaultTag );
103- $ logFile = $ config ->getSystemValueString ('logfile_audit ' , '' );
104-
105- if ($ auditType === 'file ' && !$ logFile ) {
106- $ default = $ config ->getSystemValue ('datadirectory ' , \OC ::$ SERVERROOT . '/data ' ) . '/audit.log ' ;
107- // Legacy way was appconfig, now it's paralleled with the normal log config
108- $ logFile = $ config ->getAppValue ('admin_audit ' , 'logfile ' , $ default );
109- }
110-
111- return $ logFactory ->getCustomPsrLogger ($ logFile , $ auditType , $ auditTag );
112- }
113-
114103 /**
115104 * Register hooks in order to log them
116105 */
117- private function registerHooks (LoggerInterface $ logger ,
106+ private function registerHooks (IAuditLogger $ logger ,
118107 IServerContainer $ serverContainer ): void {
119108 $ this ->userManagementHooks ($ logger , $ serverContainer ->get (IUserSession::class));
120109 $ this ->groupHooks ($ logger , $ serverContainer ->get (IGroupManager::class));
@@ -134,7 +123,7 @@ private function registerHooks(LoggerInterface $logger,
134123 $ this ->securityHooks ($ logger , $ eventDispatcher );
135124 }
136125
137- private function userManagementHooks (LoggerInterface $ logger ,
126+ private function userManagementHooks (IAuditLogger $ logger ,
138127 IUserSession $ userSession ): void {
139128 $ userActions = new UserManagement ($ logger );
140129
@@ -148,7 +137,7 @@ private function userManagementHooks(LoggerInterface $logger,
148137 $ userSession ->listen ('\OC\User ' , 'postUnassignedUserId ' , [$ userActions , 'unassign ' ]);
149138 }
150139
151- private function groupHooks (LoggerInterface $ logger ,
140+ private function groupHooks (IAuditLogger $ logger ,
152141 IGroupManager $ groupManager ): void {
153142 $ groupActions = new GroupManagement ($ logger );
154143
@@ -159,7 +148,7 @@ private function groupHooks(LoggerInterface $logger,
159148 $ groupManager ->listen ('\OC\Group ' , 'postCreate ' , [$ groupActions , 'createGroup ' ]);
160149 }
161150
162- private function sharingHooks (LoggerInterface $ logger ): void {
151+ private function sharingHooks (IAuditLogger $ logger ): void {
163152 $ shareActions = new Sharing ($ logger );
164153
165154 Util::connectHook (Share::class, 'post_shared ' , $ shareActions , 'shared ' );
@@ -171,15 +160,15 @@ private function sharingHooks(LoggerInterface $logger): void {
171160 Util::connectHook (Share::class, 'share_link_access ' , $ shareActions , 'shareAccessed ' );
172161 }
173162
174- private function authHooks (LoggerInterface $ logger ): void {
163+ private function authHooks (IAuditLogger $ logger ): void {
175164 $ authActions = new Auth ($ logger );
176165
177166 Util::connectHook ('OC_User ' , 'pre_login ' , $ authActions , 'loginAttempt ' );
178167 Util::connectHook ('OC_User ' , 'post_login ' , $ authActions , 'loginSuccessful ' );
179168 Util::connectHook ('OC_User ' , 'logout ' , $ authActions , 'logout ' );
180169 }
181170
182- private function appHooks (LoggerInterface $ logger ,
171+ private function appHooks (IAuditLogger $ logger ,
183172 EventDispatcherInterface $ eventDispatcher ): void {
184173 $ eventDispatcher ->addListener (ManagerEvent::EVENT_APP_ENABLE , function (ManagerEvent $ event ) use ($ logger ) {
185174 $ appActions = new AppManagement ($ logger );
@@ -195,15 +184,15 @@ private function appHooks(LoggerInterface $logger,
195184 });
196185 }
197186
198- private function consoleHooks (LoggerInterface $ logger ,
187+ private function consoleHooks (IAuditLogger $ logger ,
199188 EventDispatcherInterface $ eventDispatcher ): void {
200189 $ eventDispatcher ->addListener (ConsoleEvent::EVENT_RUN , function (ConsoleEvent $ event ) use ($ logger ) {
201190 $ appActions = new Console ($ logger );
202191 $ appActions ->runCommand ($ event ->getArguments ());
203192 });
204193 }
205194
206- private function fileHooks (LoggerInterface $ logger ,
195+ private function fileHooks (IAuditLogger $ logger ,
207196 EventDispatcherInterface $ eventDispatcher ): void {
208197 $ fileActions = new Files ($ logger );
209198 $ eventDispatcher ->addListener (
@@ -265,19 +254,19 @@ function (GenericEvent $event) use ($fileActions) {
265254 );
266255 }
267256
268- private function versionsHooks (LoggerInterface $ logger ): void {
257+ private function versionsHooks (IAuditLogger $ logger ): void {
269258 $ versionsActions = new Versions ($ logger );
270259 Util::connectHook ('\OCP\Versions ' , 'rollback ' , $ versionsActions , 'rollback ' );
271260 Util::connectHook ('\OCP\Versions ' , 'delete ' , $ versionsActions , 'delete ' );
272261 }
273262
274- private function trashbinHooks (LoggerInterface $ logger ): void {
263+ private function trashbinHooks (IAuditLogger $ logger ): void {
275264 $ trashActions = new Trashbin ($ logger );
276265 Util::connectHook ('\OCP\Trashbin ' , 'preDelete ' , $ trashActions , 'delete ' );
277266 Util::connectHook ('\OCA\Files_Trashbin\Trashbin ' , 'post_restore ' , $ trashActions , 'restore ' );
278267 }
279268
280- private function securityHooks (LoggerInterface $ logger ,
269+ private function securityHooks (IAuditLogger $ logger ,
281270 EventDispatcherInterface $ eventDispatcher ): void {
282271 $ eventDispatcher ->addListener (IProvider::EVENT_SUCCESS , function (GenericEvent $ event ) use ($ logger ) {
283272 $ security = new Security ($ logger );
0 commit comments