c- cap和附件文件
c-icap and attachment file
我想挂起附件文件。例如,当用户试图使用webmail或其他方式附加文件时,我想要钩住附件文件。对echo服务进行了分析,在echo_check_preview_handler
函数中可以钩住数据的内容。但我想挂钩附件文件。我搜索了一些c- cap模块(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模块或文档或代码块?
你不应该在preview_handler中这样做,相反,你应该这样做:
preview_handler - return CI_MOD_CONTINUE
然后实现IO,其中ci_simple_file_write…
然后在数据处理程序的末尾,你可以实现你的分析。
services.h的注释简要说明了c-icap插件的生命周期:
- 是实现服务的结构*
- 要实现服务,需要实现成员此结构体的函数。这些函数
- 将被c- cap调用如下:
-
- 此服务的新请求到达->ci_service_module: mod_init_request_data叫做
-
- icap客户端发送预览数据-ci_service_module: mod_check_preview_handler。
- 如果此函数返回CI_MOD_ALLOW204 ICAP事务停止在这里。如果这个函数返回
- CI_MOD_CONTINUE如果存在,ICAP客户端将发送其余的body数据。
-
- 客户机开始发送更多数据->多次调用ci_service_module::mod_service_io,直到
- 客户端已经发送了所有的body数据。服务可以开始发送使用此函数将数据发送到客户端
- 在接收到所有数据之前
-
- 客户端已发送所有数据-ci_service_module: mod_end_of_data_handler叫做
-
- 客户端等待从c- cap ->读取剩余数据ci_service_module::mod_service_io called multiple
- 的次数,直到所有的身体数据发送到客户端*/
例如,当用户尝试使用webmail或其他方式附加文件时,我想要钩住附件文件
你需要钩子HTTP请求包含文件作为它的主体数据。
所以你的目标是REQMOD ICAP请求。
这里有3个提示给你。
- 预览,检查体魔术,识别体类型为'文件数据' (ci_magic_data_type_ext帮助)。
- 在service_io中读取所有数据,而iseof不为真(ci_simple_file..函数帮助)。 end_of_data中的
- 文件,修改或检查为ci_simple_file object。
请记住,文件数据通常是gzip或deflate压缩的。
c-icap文档可以通过make doc.
相关文章:
- .cpp和.h文件中的模板专用化声明
- 为什么两个不同的未命名名称空间可以共存于一个cpp文件中
- 文本文件中的单词链表
- CMake-按正确顺序将项目与C运行时对象文件链接
- 使用新行和不使用新行读取文件
- 在C++程序中输入的文本文件将不起作用,除非文本被复制和粘贴
- 挂起和取消挂起一个文件DLL
- 如何确定我已使用非编码文件到达 EOF?
- 命名空间中具有.h和.cpp文件的类
- 如何使用ndk-build.cmd构建Android.so文件
- 从包含m行的文件中提取n行,必要时(惰性地)重复该文件
- 读取文件并输入到矢量中
- 在C++中查找文件
- c++库的公共头文件中应该包含什么
- 用c++从输入文件中读取另一行
- Cppcheck生成xml转储文件
- 读取文件的最后一行并输入到链接列表时出错
- 无法编译 rtmidi 测试 cmidiin.cpp 文件, 非法指令
- 如何将内容数组写入文本文件?
- c- cap和附件文件