A modern web application for scanning files for malware using ClamAV, built with Python Flask and React.
- Real-time file scanning using ClamAV antivirus engine
- Modern, responsive web interface built with React and Material-UI
- Drag-and-drop file upload functionality
- Scan history tracking and viewing
- Health monitoring endpoint
- Docker containerization for easy deployment
- Docker and Docker Compose
- Git
- Clone the repository:
git clone https://github.com/yourusername/Malware-Detection-Application.git
cd Malware-Detection-Application- Build and start the services:
docker compose up --build -d- Access the application:
- Web Interface: http://localhost:3000
- Scanner API: http://localhost:8080
The application consists of two main services:
- Flask application with RESTful API
- ClamAV integration for virus scanning
- SQLite database for scan history
- Runs on port 8080
- React application with Material-UI
- Drag-and-drop file upload
- Real-time scan status updates
- Runs on port 3000
GET /health/
Returns the health status of the scanner service and ClamAV daemon.
POST /scan/
Upload and scan a file for malware. Accepts multipart/form-data with a 'file' field.
GET /history/
Retrieve the history of all scanned files.
- Maximum file size: 50MB
- Supported file types: txt, pdf, doc, docx, xls, xlsx, zip, rar, exe, dll
To run the services in development mode:
- Start the scanner service:
docker compose up scanner -d- Start the web service in development mode:
cd src/web/frontend
npm install
npm start-
If the scanner service is not responding:
- Check the logs:
docker compose logs scanner - Ensure ClamAV is running:
docker compose exec scanner clamdscan --version
- Check the logs:
-
If the web interface can't connect to the scanner:
- Verify the scanner service is healthy:
curl http://localhost:8080/health/ - Check CORS settings if running in development mode
- Verify the scanner service is healthy:
[Add your license information here]
[Add contribution guidelines here]