gpt4 book ai didi

c++ - c-icap 和附件文件

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:57:11 26 4
gpt4 key购买 nike

我想挂接附件。例如,当用户尝试使用网络邮件或其他方式附加文件时,我也想 Hook 附件文件。我分析了 echo 服务,在 echo_check_preview_handler 函数中我可以 Hook 数据的内容。但我想 Hook 附件文件。我搜索了一些 c-icap 模块(squidclamav 和 yara),但我没有找到这种能力。在 simple_api.c 代码中,我使用了下面的代码,但我只能使用 data->body->filename Hook 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 中 - 返回 CI_MOD_CONTINUE

然后在执行 ci_simple_file_write 的地方实现 io ...

然后在数据处理程序的末尾,您可以实现您的分析。

这是来自 services.h 的评论,它简要解释了 c-icap 插件的生命周期:

  • 是实现服务的结构*
  • 要实现一项服务,某人需要实现成员(member)这个结构的功能。这些功能
  • 将被c-icap调用如下:
    • 此服务的新请求到达 ->ci_service_module::mod_init_request_data 调用
    • icap客户端发送预览数据->ci_service_module::mod_check_preview_handler 已调用。
  • 如果此函数返回 CI_MOD_ALLOW204 ICAP 事务停在这里。如果这个函数返回
  • CI_MOD_CONTINUE ICAP 客户端将发送其余正文数据(如果存在)。
    • 客户端开始发送更多数据->多次调用 ci_service_module::mod_service_io 直到
  • 客户端已发送所有正文数据。服务可以开始发送使用此功能向客户端发送数据
  • 在收到所有数据之前
    • 客户端已发送所有数据->ci_service_module::mod_end_of_data_handler 调用
    • 客户端等待从c-icap读取剩余数据->ci_service_module::mod_service_io 调用了多个
  • 次,直到所有的正文数据发送到客户端*/

不,您不能直接 Hook 附件,但您必须通过 ci_simple_file API 从您编写的内容中解析出附件文件。

关于c++ - c-icap 和附件文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16772337/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com