SUPPORT-8818:add logging and description service

This commit is contained in:
adel.kalimullin 2024-12-23 11:16:33 +03:00
parent a38ead8070
commit fb3825990f
4 changed files with 40 additions and 3 deletions

32
README.md Normal file
View file

@ -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
```

View file

@ -28,10 +28,15 @@ public class FileScanController {
@PostMapping("/scan-file") @PostMapping("/scan-file")
public ResponseEntity<?> scanFile(@RequestPart("file") MultipartFile file) { public ResponseEntity<?> scanFile(@RequestPart("file") MultipartFile file) {
if (file.isEmpty()) { if (file.isEmpty()) {
LOGGER.warn("The uploaded file is empty or missing.");
return ResponseEntity.badRequest().build(); return ResponseEntity.badRequest().build();
} }
try { try {
ScanResult result = fileScanService.scanFile(file); 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); return ResponseEntity.ok(result);
} }
catch (Exception e) { catch (Exception e) {

View file

@ -35,7 +35,7 @@ public class FileManager {
Files.delete(file.toPath()); Files.delete(file.toPath());
} }
catch (IOException e) { catch (IOException e) {
throw new AvException("Ошибка удаления временного файла: " + file.getAbsolutePath(), e); throw new AvException("Error deleting temporary file: " + file.getAbsolutePath(), e);
} }
} }
} }

View file

@ -41,7 +41,7 @@ public class FileScanService {
); );
} }
catch (Exception e) { catch (Exception e) {
throw new AvException("Ошибка при сканировании файла: " + file.getOriginalFilename(), e); throw new AvException("Error scanning file: " + file.getOriginalFilename(), e);
} }
finally { finally {
fileManager.deleteFile(tempFile); fileManager.deleteFile(tempFile);
@ -58,7 +58,7 @@ public class FileScanService {
String result = new String(inputStream.readAllBytes()); String result = new String(inputStream.readAllBytes());
int exitCode = process.waitFor(); int exitCode = process.waitFor();
if (exitCode != 0 && exitCode != 72) { if (exitCode != 0 && exitCode != 72) {
throw new AvException("Ошибка KESL, код завершения: " + exitCode); throw new AvException("KESL error, exit code: " + exitCode);
} }
return result; return result;
} }