#clam-av #tcp-socket #unix-socket #clamd #sockets #tokio #病毒扫描

clamd-client

Rust异步tokio客户端,用于clamd。支持TCP套接字或Unix套接字。目前它将为每个命令打开一个新的套接字。正在进行中。

3个版本

0.1.2 2022年11月24日
0.1.1 2022年11月24日
0.1.0 2022年11月24日

#4#clamd

每月45次下载

MIT 协议

27KB
476 代码行

clamd-client,工作进度中

Rust异步tokio客户端,用于clamd。支持TCP套接字或Unix套接字。目前它将为每个命令打开一个新的套接字。正在进行中。

示例

请参阅examples/simple.rs。您的机器上应该有一个正在运行的clamd实例(见注意事项)。

#[tokio::main]
async fn main() -> Result<()> {
    let address = "127.0.0.1:3310";
    let mut clamd_client = ClamdClientBuilder::tcp_socket(address).build();

    let eicar_bytes = reqwest::get("https://secure.eicar.org/eicarcom2.zip")
        .await?
        .bytes()
        .await?;

    let err = clamd_client.scan_bytes(&eicar_bytes).await.unwrap_err();
    let msg = err.scan_error().unwrap();
    println!("Eicar scan returned that its a virus: {}", msg);
    Ok(())
}

注意事项

运行Clamd

要运行cargo test或示例,您必须在机器上有一个正在运行的clamd实例。最简单的方法是使用docker

docker run -p 3310:3310  -v /run/clamav/:/run/clamav/  clamav/clamav:unstable

待办事项

  • 实现缺失的clamd功能
  • 实现保持TCP连接的活动状态
  • 检查此是否也可以与其他异步运行时一起使用
  • github actions cargo test
  • 使用Unix套接字需要设置<String, str>类型界限。

依赖关系

~4–13MB
~136K SLoC