johnrivera7/filament-antivirus

Filament Antivirus — ClamAV upload scanning, quarantine and file security dashboard for Laravel.

Maintainers

Package info

github.com/Johnrivera7/filament-antivirus

pkg:composer/johnrivera7/filament-antivirus

Transparency log

Statistics

Installs: 3

Dependents: 0

Suggesters: 0

Stars: 0

Open Issues: 0

v1.0.0 2026-08-28 18:40 UTC

This package is auto-updated.

Last update: 2026-08-28 19:16:15 UTC


README

Filament Antivirus — ClamAV upload scanning, quarantine and file security dashboard for Laravel.

Stable ^1.0 (MIT). Sibling of filament-cybersecurity (read-only posture). This plugin acts on files: scan, block uploads, quarantine.

Features

  • Antivirus Dashboard — engine status, incidents, quarantine stats
  • ClamAV via clamdscan / clamscan (configurable)
  • Null driver for local dev without ClamAV
  • Upload validationAntivirusFileRule for Filament / Laravel forms
  • Quarantine — move infected files to storage/app/quarantine/
  • Incident logantivirus_incidents table
  • Artisan: antivirus:scan, antivirus:status
  • Facade: Antivirus::scanPath(), Antivirus::scanUpload()
  • ES / EN translations

Requirements

Stack Versions
PHP 8.2+
Laravel 11.28+ / 12+ / 13+
Filament 5.x
ClamAV optional (recommended in production)

Installation

composer require johnrivera7/filament-antivirus:^1.0
php artisan vendor:publish --tag="filament-antivirus-migrations"
php artisan migrate
php artisan vendor:publish --tag="filament-antivirus-config"

Register on your Filament panel:

use JohnRivera7\FilamentAntivirus\FilamentAntivirusPlugin;

public function panel(Panel $panel): Panel
{
    return $panel
        ->plugins([
            FilamentAntivirusPlugin::make()
                ->navigationGroup('Configuraciones')
                ->navigationLabel('Antivirus')
                ->navigationSort(7)
                ->permission(fn (): bool => auth()->user()?->hasAnyRole(['super_admin', 'admin']) ?? false),
        ]);
}

Configuration

ANTIVIRUS_DRIVER=clamav          # clamav | null
ANTIVIRUS_QUARANTINE=true
CLAMAV_BINARY=clamscan
CLAMAV_CLAMDSCAN_BINARY=clamdscan
ANTIVIRUS_PREFER_CLAMDSCAN=true

Upload validation

use JohnRivera7\FilamentAntivirus\Rules\AntivirusFileRule;

FileUpload::make('document')
    ->rules([new AntivirusFileRule()]);

CLI

php artisan antivirus:status
php artisan antivirus:scan
php artisan antivirus:scan /path/to/dir --purge

License

MIT © John Rivera