VirWex is a web virus scanning application built on Symfony that provides multiple scanning engines and a simple web interface for detecting malicious files.
-
Web-based interface: Clean and intuitive UI for scanning files and viewing results
-
Multiple Scanning Engines:
- phpMussel: Signature-based scanning with ClamAV signatures integration
- AMWScan (PHP-Antimalware-Scanner): Malware detection using heuristic analysis
- scr34m PHP Malware Scanner: Specialized PHP malware detection
- ClamAV: Industry-standard antivirus engine with real-time updates
- PHP Malware Finder: YARA-based malware detection
-
Asynchronous processing: Queue-based scanning using Symfony Messenger and Redis for handling multiple concurrent scans
-
Real-time monitoring: Live status updates and progress tracking during scans
-
Multilingual support: Available in English, Spanish, French, and Polish
-
Docker containerization: Complete containerized environment with separate services for performance
- PHP: >= 8.2
- Docker and Docker Compose
-
Clone and navigate to the project:
cd /path/to/virwex -
Set up the environment:
make setup
This will make scripts executable and run the initial setup.
-
Build Docker images:
make build
-
Start the application:
make up
-
Update malware signatures:
make update-db
The application will be available at http://localhost:1310 (or your configured host).
Simply navigate to the application URL and:
- Upload a file or select files to scan
- Choose specific scanners or use all available ones
- Click the "Init scan" button
- View detailed threat detection results
make up # Start all services
make down # Stop all services
make restart # Restart servicesThe application runs the following services:
- app: Main Symfony application container (PHP 8.3 with FPM)
- nginx: Nginx web server (port 1310)
- clamav: ClamAV daemon for signature-based scanning with health checks
- redis: Message queue and caching service
- worker: Background worker processes for asynchronous scanning
- File upload - temporary storage
- Scan request queued via Symfony Messenger
- Background workers process scans in parallel
- Real-time status updates via AJAX polling
- Results aggregated and displayed
Check scanner availability and status:
make check-scannersView logs for errors:
make logs- Adjust worker replica count in
docker-compose.yml
- English (en)
- Spanish (es)
- French (fr)
- Polish (pl)
GNU 2.0 License. See LICENSE file for details.
For issues, questions, or contributions, please submit an issue through the project's issue tracker.