From 862cf49511d237463ff392bf1f483a6fcdbdab4f Mon Sep 17 00:00:00 2001 From: "adel.ka" Date: Tue, 6 May 2025 12:54:41 +0300 Subject: [PATCH 1/4] SUPPORT-9156: remove throw exception --- .../av/service/service/FileScanService.java | 30 ++++++++++++------- 1 file changed, 20 insertions(+), 10 deletions(-) diff --git a/src/main/java/ru/micord/av/service/service/FileScanService.java b/src/main/java/ru/micord/av/service/service/FileScanService.java index 8d32265..5b06b26 100644 --- a/src/main/java/ru/micord/av/service/service/FileScanService.java +++ b/src/main/java/ru/micord/av/service/service/FileScanService.java @@ -24,6 +24,8 @@ import ru.micord.av.service.exception.AvException; public class FileScanService { private static final String KESL_CONTROL = "kesl-control"; private static final String KESL_SCAN = "--scan-file"; + private static final int CLEAN_CODE = 0; + private static final int INFECTED_CODE = 72; private static final Logger LOGGER = LoggerFactory.getLogger(FileScanService.class); @Value("${file.upload.directory:/tmp/uploaded_files}") private String uploadDirectory; @@ -70,32 +72,40 @@ public class FileScanService { String processOutput = processResult.outputUTF8(); int exitCode = processResult.getExitValue(); - if (exitCode != 0 && exitCode != 72) { + if (exitCode != CLEAN_CODE && exitCode != INFECTED_CODE) { throw new AvException( "KESL error scanning file: " + originalFileName + ", exit code: " + exitCode); } - checkScanResult(processOutput, originalFileName); + + if (isPasswordProtectedFile(processOutput)) { + LOGGER.warn("File '{}' is identified as password protected. Please review the file.", + originalFileName + ); + exitCode = INFECTED_CODE; + } return exitCode; } - private void checkScanResult(String result, String originalFileName) { + private boolean isPasswordProtectedFile(String result) { if (!result.contains(passwordProtectedResultName)) { - throw new AvException(String.format( - "File scan result doesn't contains \"%s\", " - + "please check property \"password.protected.result.name\" is correct", + LOGGER.warn( + "File scan result doesn't contains \"{}\"." + + "Please check property \"password.protected.result.name\" is correct", passwordProtectedResultName - )); + ); + return true; } for (String line : result.split("\n")) { String[] lineParts = line.split(":"); if (lineParts.length > 1) { - if (lineParts[0].startsWith(passwordProtectedResultName) - && Integer.parseInt(lineParts[1].trim()) > 0) { - throw new AvException("Detected password-protected file: " + originalFileName); + if (lineParts[0].startsWith(passwordProtectedResultName)) { + int count = Integer.parseInt(lineParts[1].trim()); + return count > 0; } } } + return true; } } From 88a3460d65b6625e881cabeb9d18c89af2684486 Mon Sep 17 00:00:00 2001 From: "adel.ka" Date: Tue, 6 May 2025 13:58:57 +0300 Subject: [PATCH 2/4] SUPPORT-9156: fix --- src/main/java/ru/micord/av/service/service/FileScanService.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/ru/micord/av/service/service/FileScanService.java b/src/main/java/ru/micord/av/service/service/FileScanService.java index 5b06b26..308f09e 100644 --- a/src/main/java/ru/micord/av/service/service/FileScanService.java +++ b/src/main/java/ru/micord/av/service/service/FileScanService.java @@ -78,7 +78,7 @@ public class FileScanService { } if (isPasswordProtectedFile(processOutput)) { - LOGGER.warn("File '{}' is identified as password protected. Please review the file.", + LOGGER.warn("File: {} is identified as password protected. Please review the file.", originalFileName ); exitCode = INFECTED_CODE; From 823eb519053b02f1e01b179df4a0a713bd5fee00 Mon Sep 17 00:00:00 2001 From: "adel.ka" Date: Tue, 6 May 2025 16:43:21 +0300 Subject: [PATCH 3/4] SUPPORT-9156: remove throw ex --- .../micord/av/service/service/FileScanService.java | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/main/java/ru/micord/av/service/service/FileScanService.java b/src/main/java/ru/micord/av/service/service/FileScanService.java index 308f09e..f48009f 100644 --- a/src/main/java/ru/micord/av/service/service/FileScanService.java +++ b/src/main/java/ru/micord/av/service/service/FileScanService.java @@ -26,6 +26,7 @@ public class FileScanService { private static final String KESL_SCAN = "--scan-file"; private static final int CLEAN_CODE = 0; private static final int INFECTED_CODE = 72; + private static final int PROTECTED_CODE = 73; private static final Logger LOGGER = LoggerFactory.getLogger(FileScanService.class); @Value("${file.upload.directory:/tmp/uploaded_files}") private String uploadDirectory; @@ -81,7 +82,7 @@ public class FileScanService { LOGGER.warn("File: {} is identified as password protected. Please review the file.", originalFileName ); - exitCode = INFECTED_CODE; + exitCode = PROTECTED_CODE; } return exitCode; @@ -89,12 +90,11 @@ public class FileScanService { private boolean isPasswordProtectedFile(String result) { if (!result.contains(passwordProtectedResultName)) { - LOGGER.warn( - "File scan result doesn't contains \"{}\"." - + "Please check property \"password.protected.result.name\" is correct", + throw new AvException(String.format( + "File scan result doesn't contains \"%s\", " + + "please check property \"password.protected.result.name\" is correct", passwordProtectedResultName - ); - return true; + )); } for (String line : result.split("\n")) { From f0990fb1bb9680bfc076001178494e3597e8ae73 Mon Sep 17 00:00:00 2001 From: "adel.ka" Date: Tue, 6 May 2025 17:08:34 +0300 Subject: [PATCH 4/4] SUPPORT-9156: fix --- .../java/ru/micord/av/service/service/FileScanService.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/ru/micord/av/service/service/FileScanService.java b/src/main/java/ru/micord/av/service/service/FileScanService.java index f48009f..7477a7f 100644 --- a/src/main/java/ru/micord/av/service/service/FileScanService.java +++ b/src/main/java/ru/micord/av/service/service/FileScanService.java @@ -26,7 +26,7 @@ public class FileScanService { private static final String KESL_SCAN = "--scan-file"; private static final int CLEAN_CODE = 0; private static final int INFECTED_CODE = 72; - private static final int PROTECTED_CODE = 73; + private static final int PASS_PROTECTED_CODE = 73; private static final Logger LOGGER = LoggerFactory.getLogger(FileScanService.class); @Value("${file.upload.directory:/tmp/uploaded_files}") private String uploadDirectory; @@ -82,7 +82,7 @@ public class FileScanService { LOGGER.warn("File: {} is identified as password protected. Please review the file.", originalFileName ); - exitCode = PROTECTED_CODE; + exitCode = PASS_PROTECTED_CODE; } return exitCode;