sineflow/clamav

ClamAV PHP Client for Symfony

Installs: 32 307

Dependents: 0

Suggesters: 1

Security: 0

Stars: 8

Watchers: 4

Forks: 1

Open Issues: 1

Type:symfony-bundle

v1.1.2 2024-04-06 10:59 UTC

README

This library is a PHP client for working with a ClamAV daemon. It also provides optional Symfony integration.

Workflow status

Requirements:

You need to have ClamAV installed and configured to accept socket and/or network connections: https://docs.clamav.net/manual/Installing.html

Installation

$ composer require sineflow/clamav

Usage as a standalone library

$scanner = new Scanner(new ScanStrategyClamdUnix($socket));
$scanner = new Scanner(new ScanStrategyClamdNetwork($host, $port));

Usage as a Symfony bundle

Enable the bundle

// config/bundles.php

return [
    // ...
    Sineflow\ClamAV\Bundle\SineflowClamAVBundle::class => ['all' => true],
];

Configuration:

sineflow_clam_av:
    strategy: clamd_unix
    socket: "/var/run/clamav/clamd.ctl"

or

sineflow_clam_av:
    strategy: clamd_network
    host: 127.0.0.1
    port: 3310

Scanning files

use Sineflow\ClamAV\Scanner;
use Sineflow\ClamAV\Exception\FileScanException;
use Sineflow\ClamAV\Exception\SocketException;

public function myAction(Scanner $scanner)
{
    try {
        $scannedFile = $scanner->scan($file);
        if (!$scannedFile->isClean()) {
            echo $scannedFile->getVirusName();
        }
    } catch (SocketException $e) {
        ...
    } catch (FileScanException $e) {
        ...
    }
}