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.