SUPPORT-8818:add logging and description service
This commit is contained in:
parent
a38ead8070
commit
fb3825990f
4 changed files with 40 additions and 3 deletions
32
README.md
Normal file
32
README.md
Normal 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
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -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) {
|
||||||
|
|
|
||||||
|
|
@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue