diff --git a/README.md b/README.md new file mode 100644 index 0000000..72a1b96 --- /dev/null +++ b/README.md @@ -0,0 +1,32 @@ +# av-service + +av-service — это сервис, взаимодействующий с Kaspersky Endpoint Security для Linux (KESL) на одной машине. + +Основная задача сервиса — обеспечение защиты и анализа файлов с помощью интеграции с KESL. + +## Основные функции +- Интеграция с KESL: выполнение проверки файлов на наличие угроз. +- Обработка файлов через HTTP POST запросы. +- Логирование результатов: запись результатов проверки для последующего анализа. +- Управление ошибками: обработка ошибок и уведомление о причинах их возникновения. + +## Требования +- Java 17 +- KESL (установлен и настроен на одной машине с сервисом) + +## Конфигурация и запуск + +### Конфигурация параметров для сервиса +Для корректного запуска сервиса, добавьте следующие параметры в файл application.properties: +```properties +file.upload.directory=/tmp/uploaded_files # Путь для папки для хранения временных файлов +spring.servlet.multipart.max-file-size=10MB # Максимальный размер загружаемого файла +spring.servlet.multipart.max-request-size=10MB # Максимальный размер запроса +server.port=8080 # Порт сервиса +``` +### Запуск JAR-файла с конфигурационным файлом +```bash +java -jar app.jar --spring.config.location=file:/path/to/your/application.properties +``` + + diff --git a/src/main/java/ru/micord/av/service/controller/FileScanController.java b/src/main/java/ru/micord/av/service/controller/FileScanController.java index f947fe4..dd7d0be 100644 --- a/src/main/java/ru/micord/av/service/controller/FileScanController.java +++ b/src/main/java/ru/micord/av/service/controller/FileScanController.java @@ -28,10 +28,15 @@ public class FileScanController { @PostMapping("/scan-file") public ResponseEntity scanFile(@RequestPart("file") MultipartFile file) { if (file.isEmpty()) { + LOGGER.warn("The uploaded file is empty or missing."); return ResponseEntity.badRequest().build(); } try { ScanResult result = fileScanService.scanFile(file); + LOGGER.info("Scan result for file {}: status - {}, verdicts - {}", + file.getOriginalFilename(), + result.status(), + String.join(", ", result.verdicts())); return ResponseEntity.ok(result); } catch (Exception e) { diff --git a/src/main/java/ru/micord/av/service/service/FileManager.java b/src/main/java/ru/micord/av/service/service/FileManager.java index 71441f5..c301685 100644 --- a/src/main/java/ru/micord/av/service/service/FileManager.java +++ b/src/main/java/ru/micord/av/service/service/FileManager.java @@ -35,7 +35,7 @@ public class FileManager { Files.delete(file.toPath()); } catch (IOException e) { - throw new AvException("Ошибка удаления временного файла: " + file.getAbsolutePath(), e); + throw new AvException("Error deleting temporary file: " + file.getAbsolutePath(), e); } } } 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 e7f85d2..278b29d 100644 --- a/src/main/java/ru/micord/av/service/service/FileScanService.java +++ b/src/main/java/ru/micord/av/service/service/FileScanService.java @@ -41,7 +41,7 @@ public class FileScanService { ); } catch (Exception e) { - throw new AvException("Ошибка при сканировании файла: " + file.getOriginalFilename(), e); + throw new AvException("Error scanning file: " + file.getOriginalFilename(), e); } finally { fileManager.deleteFile(tempFile); @@ -58,7 +58,7 @@ public class FileScanService { String result = new String(inputStream.readAllBytes()); int exitCode = process.waitFor(); if (exitCode != 0 && exitCode != 72) { - throw new AvException("Ошибка KESL, код завершения: " + exitCode); + throw new AvException("KESL error, exit code: " + exitCode); } return result; }