39 lines
791 B
Plaintext
39 lines
791 B
Plaintext
@load ../__load__
|
|
@load policy/frameworks/files/hash-all-files
|
|
|
|
event file_sniff(f: fa_file, meta: fa_metadata)
|
|
{
|
|
|
|
if ( meta?$mime_type && !hook FileExtraction::extract(f, meta) )
|
|
{
|
|
|
|
if ( !hook FileExtraction::ignore(f, meta) )
|
|
return;
|
|
|
|
Files::add_analyzer(f, Files::ANALYZER_SHA256);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
event file_state_remove(f: fa_file)
|
|
{
|
|
|
|
if ( !f$info?$extracted || !f$info?$sha256 || FileExtraction::path == "" )
|
|
return;
|
|
|
|
local orig = f$info$extracted;
|
|
|
|
local split_orig = split_string(f$info$extracted, /\./);
|
|
local extension = split_orig[|split_orig|-1];
|
|
|
|
local dest = fmt("%s%s-%s.%s", FileExtraction::path, f$source, f$info$sha256, extension);
|
|
|
|
local cmd = fmt("mv %s %s", orig, dest);
|
|
when ( local result = Exec::run([$cmd=cmd]) )
|
|
{
|
|
}
|
|
f$info$extracted = dest;
|
|
|
|
}
|