При создании пустого файла производится добавление в список для отслеживания. При записи файла производится повторная проверка данных.

This commit is contained in:
Alexander Zhirov 2025-11-19 16:09:49 +03:00
parent a3bfab2365
commit 98d414c44d
Signed by: alexander
GPG key ID: C8D8BE544A27C511
3 changed files with 22 additions and 6 deletions

View file

@ -293,7 +293,10 @@ public:
if (pid != _pid) {
string typeFile = magic_descriptor(_magic, fd).fromStringz;
if (typeFile == "binary") {
// Если файл имеет размер и при этом бинарный - то пропустить,
// иначе файл пуст и не имеет данных для точной идентификации по типу содержимого.
// При записи в файл данные будут повторно проверены
if (!fd.isEmpty() && typeFile == "binary") {
trace("Бинарный файл. Пропуск обработки: ", path);
} else {
string childPath;
@ -353,10 +356,17 @@ public:
DevIno key;
if (getDevIno(fd, key, pid)) {
if (Session* ps = key in _gMap) {
ps.data = readAllFromFd(fd).dup;
send(_tid, *ps);
// Для новых созданных файлов (пустых) необходимо проверить записываемые данные
string typeFile = magic_descriptor(_magic, fd).fromStringz;
if (typeFile == "binary") {
infof("[%d] Добавлены бинарные данные. Файл удален из списка для отслеживания: %s",
_gMap.length, ps.filePathOpen);
} else {
ps.data = readAllFromFd(fd).dup;
send(_tid, *ps);
infof("[%d] Файл передан для создания снимка: %s", _gMap.length, ps.filePathOpen);
}
_gMap.remove(key);
infof("[%d] Файл передан для создания снимка: %s", _gMap.length, ps.filePathOpen);
}
}
}

View file

@ -201,4 +201,10 @@ string getDate(SysTime created) {
return format("%04d-%02d-%02d %02d:%02d:%02d",
dt.year, dt.month, dt.day,
current.hour, current.minute, current.second);
}
}
bool isEmpty(int fd) {
stat_t st;
if (fstat(fd, &st) != 0) return false;
return st.st_size == 0;
}

View file

@ -1,3 +1,3 @@
module dwatch.version_;
enum dwatchVersion = "0.0.12";
enum dwatchVersion = "0.0.13";