#clam-av #anitvirus #clamd

revolt_clamav-client

ClamAV client library

2 releases

0.1.5 Jun 5, 2023
0.1.4 Jun 5, 2023

#3 in #clam-av

Download history 72/week @ 2024-12-13 86/week @ 2024-12-20 18/week @ 2024-12-27 29/week @ 2025-01-03 52/week @ 2025-01-10 47/week @ 2025-01-17 41/week @ 2025-01-24 35/week @ 2025-01-31 50/week @ 2025-02-07 79/week @ 2025-02-14 60/week @ 2025-02-21 64/week @ 2025-02-28 67/week @ 2025-03-07 50/week @ 2025-03-14 52/week @ 2025-03-21 54/week @ 2025-03-28

233 downloads per month

MIT license

6KB
112 lines

Rust ClamAV Client

A simple ClamAV client to stream files to clamd for antivirus scanning.

Please note: The functions ping_socket and scan_socket are only available on Unix platforms.

Installation

Add this to your Cargo.toml:

[dependencies]
clamav-client = "0.1.3"

Usage

Ensure ClamD is running by pinging the server for a response:

let clamd_host_address = "localhost:3310";

let clamd_available = match clamav_client::ping_tcp(clamd_host_address) {
    Ok(ping_response) => ping_response == b"PONG\0",
    Err(_) => false,
};

if !clamd_available {
    println!("Cannot ping clamd at {}", clamd_host_address);
    return;
}

Scan a file for detections:

let file_path = "virus.txt";
let scan_response = clamav_client::scan_tcp(file_path, clamd_host_address, None).unwrap();
let file_clean = clamav_client::clean(&scan_response).unwrap();
if file_clean {
    println!("No virus found in {}", file_path);
} else {
    println!("The file {} is infected!", file_path);
}

Scan a buffer from memory:

let buffer = "X5O!P%@AP[4\\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*"
    .bytes()
    .collect::<Vec<u8>>();

let scan_response = clamav_client::scan_buffer_tcp(buffer, clamd_host_address, None).unwrap();
let file_clean = clamav_client::clean(&scan_response).unwrap();
assert!(!file_clean);

No runtime deps