11import { buildPaymentsService } from '../../payments/builder' ;
22import { PaymentsService } from '../../payments/service' ;
33import * as clamAVServer from '../ClamAVDaemon' ;
4+ import { isWindowsDefenderAvailable } from '../windows-defender/is-windows-defender-available' ;
45import { clearDailyScan , scheduleDailyScan } from '../scanCronJob' ;
56import { logger } from '@/apps/shared/logger/logger' ;
67
@@ -9,54 +10,43 @@ let isClamAVRunning = false;
910let clamAVInitializationPromise : Promise < { antivirusEnabled : boolean } > | null = null ;
1011
1112export async function initializeAntivirusIfAvailable ( ) {
12- isClamAVRunning = await clamAVServer . checkClamdAvailability ( ) ;
13-
14- if ( isClamAVRunning ) {
15- return { antivirusEnabled : true } ;
16- }
17-
18- if ( clamAVInitializationPromise ) {
19- return clamAVInitializationPromise ;
20- }
21-
22- clamAVInitializationPromise = initializeClamAV ( ) ;
23- return clamAVInitializationPromise ;
24- }
25-
26- export async function initializeClamAV ( ) {
2713 paymentService = buildPaymentsService ( ) ;
2814
2915 try {
3016 const availableProducts = await paymentService . getAvailableProducts ( ) ;
3117 const isAntivirusEnabled = availableProducts . antivirus ;
3218
33- if ( isAntivirusEnabled ) {
34- await clamAVServer . startClamdServer ( ) ;
35- await clamAVServer . waitForClamd ( ) ;
36-
19+ if ( ! isAntivirusEnabled ) {
3720 logger . debug ( {
3821 tag : 'ANTIVIRUS' ,
39- msg : 'ClamAV is running. Scheduling daily scan .' ,
22+ msg : 'Antivirus not enabled for this user. Clearing any running ClamAV instance .' ,
4023 } ) ;
4124
42- scheduleDailyScan ( ) ;
25+ clearAntivirus ( ) ;
4326
44- isClamAVRunning = true ;
45- clamAVInitializationPromise = null ;
27+ return { antivirusEnabled : false } ;
28+ }
4629
47- return { antivirusEnabled : true } ;
48- } else {
30+ const isWindowsDefenderActive = await isWindowsDefenderAvailable ( ) ;
31+ if ( isWindowsDefenderActive ) {
4932 logger . debug ( {
5033 tag : 'ANTIVIRUS' ,
51- msg : 'Antivirus not enabled for this user. Clearing any running ClamAV instance .' ,
34+ msg : 'Using default antivirus .' ,
5235 } ) ;
36+ return { antivirusEnabled : true } ;
37+ }
5338
54- clamAVInitializationPromise = null ;
55-
56- clearAntivirus ( ) ;
39+ isClamAVRunning = await clamAVServer . checkClamdAvailability ( ) ;
40+ if ( isClamAVRunning ) {
41+ return { antivirusEnabled : true } ;
42+ }
5743
58- return { antivirusEnabled : false } ;
44+ if ( clamAVInitializationPromise ) {
45+ return clamAVInitializationPromise ;
5946 }
47+
48+ clamAVInitializationPromise = initializeClamAV ( ) ;
49+ return clamAVInitializationPromise ;
6050 } catch ( error ) {
6151 logger . warn ( {
6252 tag : 'ANTIVIRUS' ,
@@ -71,6 +61,36 @@ export async function initializeClamAV() {
7161 }
7262}
7363
64+ export async function initializeClamAV ( ) {
65+ try {
66+ await clamAVServer . startClamdServer ( ) ;
67+ await clamAVServer . waitForClamd ( ) ;
68+
69+ logger . debug ( {
70+ tag : 'ANTIVIRUS' ,
71+ msg : 'ClamAV is running. Scheduling daily scan.' ,
72+ } ) ;
73+
74+ scheduleDailyScan ( ) ;
75+
76+ isClamAVRunning = true ;
77+ clamAVInitializationPromise = null ;
78+
79+ return { antivirusEnabled : true } ;
80+ } catch ( error ) {
81+ logger . warn ( {
82+ tag : 'ANTIVIRUS' ,
83+ msg : 'Error initializing ClamAV.' ,
84+ exc : error ,
85+ } ) ;
86+
87+ clamAVInitializationPromise = null ;
88+ clearAntivirus ( ) ;
89+
90+ return { antivirusEnabled : false } ;
91+ }
92+ }
93+
7494export function clearAntivirus ( ) {
7595 if ( isClamAVRunning ) {
7696 clearDailyScan ( ) ;
0 commit comments