Skip to content

Davidvivek/AG38_Singularity

 
 

Repository files navigation

SecureSync

1. Install Dependencies

pip install -r requirements.txt

2. Start Redis

# Windows
redis-server

# Or use Docker
docker run -d -p 6379:6379 redis

3. Generate Keys

python app/security.py

4. Start Services

# 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

Access URLs

Security Features

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

API Endpoints

Public

  • POST /token - Login
  • POST /api/v1/sync - Sync data (requires auth)

Admin Only

  • POST /api/v1/admin/whitelist - Add IP
  • DELETE /api/v1/admin/whitelist/{ip} - Remove IP
  • GET /api/v1/admin/security-events - Get events
  • GET /api/v1/admin/metrics - Get metrics
  • GET /api/v1/admin/alerts - Check alerts

Configuration

Edit app/config.py to customize:

  • Rate limits (default: 100 req/min)
  • Payload size (default: 50MB)
  • Block durations
  • Alert thresholds
  • Geolocation settings

Troubleshooting

Redis Connection Error:

  • Ensure Redis is running: redis-cli ping should return PONG
  • 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.db and restart server
  • Database will be recreated automatically

Key Errors:

  • Run: python app/security.py to regenerate keys
  • Check app/keys/ directory exists

Performance

  • Redis improves rate limiting performance
  • Auto-refresh dashboard every 5s for real-time monitoring
  • CSV export for large audit log analysis

Load Testing with Locust

# 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"
  1. Run Locust web UI with 30 users
  2. Show Admin Dashboard side-by-side
  3. Watch real-time rate limiting and blocked IPs
  4. Run python run_load_tests.py ddos to demonstrate DDoS protection

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 97.4%
  • HTML 2.6%