Пример включения в решение системной программы KlogStorage, выполняющей запись данных аудита в файл
Исходный код программы
klog_storage/src/klog_storage_entity.c
#include<klog_storage/server.h>#include<klog_storage/file_storage.h>#include<ping/KlogStorageEntity.edl.h>intmain(int argc, char *argv[]){
/* В результате вызова этой функции будет запущен цикл обработки IPC-запросов.
* Данные аудита будут записываться в файл /etc/klog_storage.log, который может
* вместить не более 100 записей. При полном заполнении файла предыдущие
* записи будут заменяться новыми с начала файла. Если в последнем параметре
* функции указано значение, отличное от 1, программа KlogStorage при запуске
* откроет существующий файл и начнет запись данных аудита с той позиции,
* которая была установлена в файле после предыдущей записи. Если в последнем
* параметре функции указано значение 1, будет создан новый пустой файл.
* (Константы ping_KlogStorageEntity_klogStorage_iidOffset и
* ping_KlogStorageEntity_klogStorage_storage_iid определены в заголовочном
* файле KlogStorageEntity.edl.h, который содержит автоматически сгенерированный
* транспортный код.) */returnklog_storage_file_storage_run(KLOG_STORAGE_SERVER_CONNECTION_ID,
"/etc/klog_storage.log",
ping_KlogStorageEntity_klogStorage_iidOffset,
ping_KlogStorageEntity_klogStorage_storage_iid,
100,
0);
}
...
# При создании исполняемого файла программы KlogStorage нужно# выполнить компоновку с библиотекой klog_storage_file_storage.target_link_libraries (KlogStorageEntity ${klog_storage_FILE_STORAGE_LIB})
...
Словарь процесса программы в шаблоне init-описания
...
/* Взаимодействие с программой VFS */
request dst=file_vfs.FileVfs {
match src=ping.KlogStorageEntity { grant () }
}
response src=file_vfs.FileVfs {
match dst=ping.KlogStorageEntity { grant () }
}
error src=file_vfs.FileVfs {
match dst=ping.KlogStorageEntity { grant () }
}
...
Передача данных аудита другим программам
Чтобы передавать через IPC данные аудита, записанные в файл, программа KlogStorage предоставляет интерфейсные методы read и readRange, определенные в файле sysroot-*-kos/include/kl/KlogStorage.idl из состава KasperskyOS SDK.
Исполняемый файл программы, которой требуется получать данные аудита, должен быть скомпонован с клиентской библиотекой программы KlogStorage:
klog_reader/CMakeLists.txt
# Импорт библиотек KlogStorage из состава# KasperskyOS SDKfind_package (klog_storage REQUIRED)
include_directories (${klog_storage_INCLUDE})
...
# Создание исполняемого файла программы, которой требуется# получать данные аудита от программы KlogStorage.add_executable (KlogReader "src/klog_reader.c")
target_link_libraries (KlogReader ${klog_storage_CLIENT_LIB})
...
Исходный код для получения данных аудита от программы KlogStorage:
klog_reader/src/klog_reader.c
#include<klog_storage/client.h>
...
intmain(int argc, char *argv[]){
...
structKlog_storage_ctx *storage =
klog_storage_init(KLOG_STORAGE_SERVER_CONNECTION_ID);
structkl_KlogStorage_Entry first_entries[10], latest_entries [10];
/* Чтение десяти первых записей */int f_count = klog_storage_read_range(klog_storage_IKlog_storage(storage),
1,
10,
first_entries);
/* Чтение десяти последних записей */int l_count = klog_storage_read(klog_storage_IKlog_storage(storage),
10,
latest_entries);
...
}
Идентификатор статьи: klogstorage_usage_example_file, Последнее изменение: 27 янв. 2025 г.