При создании пустого файла производится добавление в список для отслеживания. При записи файла производится повторная проверка данных.
This commit is contained in:
parent
a3bfab2365
commit
98d414c44d
3 changed files with 22 additions and 6 deletions
|
|
@ -293,7 +293,10 @@ public:
|
||||||
if (pid != _pid) {
|
if (pid != _pid) {
|
||||||
string typeFile = magic_descriptor(_magic, fd).fromStringz;
|
string typeFile = magic_descriptor(_magic, fd).fromStringz;
|
||||||
|
|
||||||
if (typeFile == "binary") {
|
// Если файл имеет размер и при этом бинарный - то пропустить,
|
||||||
|
// иначе файл пуст и не имеет данных для точной идентификации по типу содержимого.
|
||||||
|
// При записи в файл данные будут повторно проверены
|
||||||
|
if (!fd.isEmpty() && typeFile == "binary") {
|
||||||
trace("Бинарный файл. Пропуск обработки: ", path);
|
trace("Бинарный файл. Пропуск обработки: ", path);
|
||||||
} else {
|
} else {
|
||||||
string childPath;
|
string childPath;
|
||||||
|
|
@ -353,10 +356,17 @@ public:
|
||||||
DevIno key;
|
DevIno key;
|
||||||
if (getDevIno(fd, key, pid)) {
|
if (getDevIno(fd, key, pid)) {
|
||||||
if (Session* ps = key in _gMap) {
|
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);
|
_gMap.remove(key);
|
||||||
infof("[%d] Файл передан для создания снимка: %s", _gMap.length, ps.filePathOpen);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -201,4 +201,10 @@ string getDate(SysTime created) {
|
||||||
return format("%04d-%02d-%02d %02d:%02d:%02d",
|
return format("%04d-%02d-%02d %02d:%02d:%02d",
|
||||||
dt.year, dt.month, dt.day,
|
dt.year, dt.month, dt.day,
|
||||||
current.hour, current.minute, current.second);
|
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;
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,3 @@
|
||||||
module dwatch.version_;
|
module dwatch.version_;
|
||||||
|
|
||||||
enum dwatchVersion = "0.0.12";
|
enum dwatchVersion = "0.0.13";
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue