pip install -r requirements.txt# Windows
redis-server
# Or use Docker
docker run -d -p 6379:6379 redispython app/security.py# Terminal 1: API Server
uvicorn app.main:app --reload
# Terminal 2: Admin Dashboard
streamlit run dashboard/dashboard_ui.py
# Terminal 3: Plant UI (Optional)
streamlit run dashboard/plant_ui.py --server.port 8502- API: http://localhost:8000
- API Docs: http://localhost:8000/docs
- Admin Dashboard: http://localhost:8501
- Plant UI: http://localhost:8502
✅ AES-256-GCM encryption
✅ RSA-2048 digital signatures
✅ HMAC-SHA256 integrity checks
✅ Sliding window rate limiting
✅ Geolocation validation
✅ Auto-blocking for violators
✅ Real-time monitoring
✅ Complete audit trails
POST /token- LoginPOST /api/v1/sync- Sync data (requires auth)
POST /api/v1/admin/whitelist- Add IPDELETE /api/v1/admin/whitelist/{ip}- Remove IPGET /api/v1/admin/security-events- Get eventsGET /api/v1/admin/metrics- Get metricsGET /api/v1/admin/alerts- Check alerts
Edit app/config.py to customize:
- Rate limits (default: 100 req/min)
- Payload size (default: 50MB)
- Block durations
- Alert thresholds
- Geolocation settings
Redis Connection Error:
- Ensure Redis is running:
redis-cli pingshould returnPONG - Check port 6379 is not in use
Import Errors:
- Run:
pip install -r requirements.txt - Ensure you're in the correct directory
Database Errors:
- Delete
secure_vault.dband restart server - Database will be recreated automatically
Key Errors:
- Run:
python app/security.pyto regenerate keys - Check
app/keys/directory exists
- Redis improves rate limiting performance
- Auto-refresh dashboard every 5s for real-time monitoring
- CSV export for large audit log analysis
# Start Locust web interface
locust -f locustfile.py --host=http://127.0.0.1:8000
# Open http://localhost:8089 in your browser
# Configure:
# - Number of users: 30 (simulates 30 plants)
# - Spawn rate: 5 (adds 5 users/second)
# - Host: http://127.0.0.1:8000
# Click "Start swarming"- Run Locust web UI with 30 users
- Show Admin Dashboard side-by-side
- Watch real-time rate limiting and blocked IPs
- Run
python run_load_tests.py ddosto demonstrate DDoS protection