我想挂钩附件文件。例如,当用户尝试使用webmail或其他东西附加文件时,我想要挂钩附件文件。我分析了echo服务,在echo_check_preview_handler
函数中我可以挂钩数据的内容。但我想挂钩附件。我搜索了一些c-icap模块(squidclamav和yara),但我没有找到这种能力。从simple_api.c代码,我使用下面的代码,但我只能使用data-> body-> filename挂钩ascii文件。
data->body = ci_simple_file_new(0);
if ((SEND_PERCENT_BYTES >= 0) && (START_SEND_AFTER == 0))
{
ci_req_unlock_data(req);
ci_simple_file_lock_all(data->body);
}
if (!data->body)
return CI_ERROR;
if (ci_simple_file_write(data->body, preview_data, preview_data_len, ci_req_hasalldata(req)) == CI_ERROR)
return CI_ERROR;
那我该如何实现呢?是否有任何示例c-icap模块或文档或代码块?
答案 0 :(得分:0)
你不应该在preview_handler中这样做,而是你应该做的事情:
预览_handler中的- 返回CI_MOD_CONTINUE
然后在你执行ci_simple_file_write ...
的地方实现io然后在数据处理程序结束时,您可以实现分析。
这是来自services.h的评论,简要解释了c-icap插件的生命周期:
和否 - 您不能直接挂钩附件,但是您必须通过ci_simple_file API从您编写的内容中解析出附件文件。
答案 1 :(得分:0)
例如,当用户尝试使用网络邮件或其他东西附加文件时,我想要挂钩附件文件
您需要将HTTP请求包含文件作为正文数据挂钩。
所以你的目标是 REQMOD ICAP请求。
以下是3个提示。
请记住,文件数据通常是gzip或deflate压缩。
可以使用 make doc 生成c-icap文档。