Add Dangerous Pi MVP implementation - complete backend and system integration
This commit adds the complete Dangerous Pi web management interface with all MVP features implemented and tested locally. ## New Features ### Backend (Python + FastAPI) - Complete FastAPI backend with async support - 40+ API endpoints (Health, PM3, WiFi, Updates, UPS, BLE, Plugins) - 6 managers: Session, WiFi, Update, UPS, BLE, Plugin - SQLite database with sessions, config, history, crash reports - Server-Sent Events (SSE) for real-time notifications - Mock PM3 worker for development without hardware ### WiFi Manager - Interface detection (USB vs built-in) - Network scanning with signal strength - Mode switching (AP/Client/Dual/Auto/Off) - Network connection with password support - Hidden SSID and saved networks support - Static IP and DHCP configuration - 10 WiFi API endpoints ### Update Manager - GitHub releases API integration - Automatic periodic update checks - Semantic version comparison - Update download with progress tracking - SHA256 checksum verification - Automatic installation with backup and rollback - PM3 client rebuild after updates - 6 Update API endpoints ### UPS Manager - I2C battery monitoring (MAX17040-compatible) - Battery percentage, voltage, current tracking - Power source detection (AC/Battery) - Safe shutdown triggers at configurable thresholds - Event callbacks for battery warnings - SSE and BLE notification integration - 3 UPS API endpoints ### BLE Manager - Bluetooth Low Energy notification support - Auto-detects BLE capability - Multiple notification types (updates, battery, shutdown, etc.) - BLE advertising management - Device connection tracking - 4 BLE API endpoints ### Plugin Framework - Dynamic plugin loading/unloading - Plugin lifecycle management (load, enable, disable, unload) - Hook system for extensibility - JSON-based metadata - Example "Hello World" plugin included - 7 Plugin API endpoints ### Frontend (Remix.js + React) - Cyberpunk-themed responsive UI - Dashboard with system status - PM3 command interface with history - Settings page with WiFi and Update management - Command logs viewer - Theme toggle (Dark/Light/Auto) - Server-side rendering (SSR) - Mobile-first responsive design ### System Integration - Systemd service with security hardening - Automated install/uninstall scripts - Environment configuration template - Hardware access groups (i2c, bluetooth, gpio, dialout) - Pi-gen stage 04 integration for OS image building - Port conflict resolution with ttyd-bash - I2C interface auto-enable for UPS HAT ### Testing - test_backend.py - Backend API tests - test_ups.py - UPS manager tests - test_ble.py - BLE manager tests - test_plugins.py - Plugin manager tests - All tests passing locally ### Documentation - 12 comprehensive documentation files - claude.md - AI development guide - WIFI_MANAGER.md - WiFi management guide - UPDATE_MANAGER.md - Update system guide - PORT_CONFLICT.md - Port conflict resolution guide - MVP_COMPLETE.md - MVP implementation summary - PROJECT_STATUS.md - Project status and roadmap - systemd/README.md - Service management docs - pi-gen integration documentation ## Technical Details - ~5,000+ lines of backend code - 11 Python dependencies (smbus2 added for UPS) - FastAPI with async/await throughout - Type hints and docstrings on all functions - RESTful API design with SSE for notifications - Security hardening (non-root, protected dirs, resource limits) ## Next Steps - Deploy to Raspberry Pi Zero 2 W hardware - Test with real Proxmark3 device - Test UPS HAT integration - Test BLE on Pi hardware - Build custom OS image with pi-gen - Performance optimization for Pi Zero 2 W 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
114
scripts/resolve-port-conflict.sh
Executable file
114
scripts/resolve-port-conflict.sh
Executable file
@@ -0,0 +1,114 @@
|
||||
#!/bin/bash
|
||||
# Script to resolve port conflict between Dangerous Pi and ttyd-bash
|
||||
|
||||
set -e
|
||||
|
||||
echo "Dangerous Pi Port Conflict Resolution"
|
||||
echo "======================================"
|
||||
echo ""
|
||||
echo "The existing pi-pm3 setup uses:"
|
||||
echo " - ttyd-bash on port 8000"
|
||||
echo " - ttyd-pm3 on port 8080"
|
||||
echo " - RaspAP on port 80"
|
||||
echo ""
|
||||
echo "Dangerous Pi wants to use port 8000 for the backend."
|
||||
echo ""
|
||||
echo "Choose a resolution option:"
|
||||
echo " 1) Disable ttyd-bash (recommended - use Dangerous Pi's web terminal instead)"
|
||||
echo " 2) Change Dangerous Pi to port 8001 (keep both services)"
|
||||
echo " 3) Change ttyd-bash to port 8002 (keep both services)"
|
||||
echo " 4) Cancel (manual configuration)"
|
||||
echo ""
|
||||
|
||||
read -p "Enter option (1-4): " option
|
||||
|
||||
case $option in
|
||||
1)
|
||||
echo ""
|
||||
echo "Disabling ttyd-bash service..."
|
||||
|
||||
if systemctl is-active --quiet ttyd-bash 2>/dev/null; then
|
||||
sudo systemctl stop ttyd-bash
|
||||
echo "✅ Stopped ttyd-bash"
|
||||
fi
|
||||
|
||||
if systemctl is-enabled --quiet ttyd-bash 2>/dev/null; then
|
||||
sudo systemctl disable ttyd-bash
|
||||
echo "✅ Disabled ttyd-bash (won't start on boot)"
|
||||
fi
|
||||
|
||||
echo ""
|
||||
echo "✅ Done! Dangerous Pi can now use port 8000."
|
||||
echo ""
|
||||
echo "To re-enable ttyd-bash later:"
|
||||
echo " sudo systemctl enable ttyd-bash"
|
||||
echo " sudo systemctl start ttyd-bash"
|
||||
;;
|
||||
|
||||
2)
|
||||
echo ""
|
||||
echo "Changing Dangerous Pi to port 8001..."
|
||||
|
||||
# Update environment file
|
||||
if [ -f /opt/dangerous-pi/.env ]; then
|
||||
if grep -q "^PORT=" /opt/dangerous-pi/.env; then
|
||||
sudo sed -i 's/^PORT=.*/PORT=8001/' /opt/dangerous-pi/.env
|
||||
else
|
||||
echo "PORT=8001" | sudo tee -a /opt/dangerous-pi/.env
|
||||
fi
|
||||
echo "✅ Updated /opt/dangerous-pi/.env"
|
||||
else
|
||||
echo "⚠️ Environment file not found. Please edit manually."
|
||||
fi
|
||||
|
||||
# Restart service if running
|
||||
if systemctl is-active --quiet dangerous-pi 2>/dev/null; then
|
||||
sudo systemctl restart dangerous-pi
|
||||
echo "✅ Restarted dangerous-pi service"
|
||||
fi
|
||||
|
||||
echo ""
|
||||
echo "✅ Done! Dangerous Pi now uses port 8001."
|
||||
echo " Access at: http://$(hostname -I | awk '{print $1}'):8001"
|
||||
;;
|
||||
|
||||
3)
|
||||
echo ""
|
||||
echo "Changing ttyd-bash to port 8002..."
|
||||
|
||||
# Find and update ttyd-bash service file
|
||||
if [ -f /etc/systemd/system/ttyd-bash.service ]; then
|
||||
sudo sed -i 's/--port 8000/--port 8002/' /etc/systemd/system/ttyd-bash.service
|
||||
sudo systemctl daemon-reload
|
||||
echo "✅ Updated ttyd-bash service"
|
||||
|
||||
if systemctl is-active --quiet ttyd-bash 2>/dev/null; then
|
||||
sudo systemctl restart ttyd-bash
|
||||
echo "✅ Restarted ttyd-bash"
|
||||
fi
|
||||
|
||||
echo ""
|
||||
echo "✅ Done! ttyd-bash now uses port 8002."
|
||||
echo " ttyd-bash: http://$(hostname -I | awk '{print $1}'):8002"
|
||||
echo " Dangerous Pi can use port 8000"
|
||||
else
|
||||
echo "⚠️ ttyd-bash service file not found. Please configure manually."
|
||||
fi
|
||||
;;
|
||||
|
||||
4)
|
||||
echo ""
|
||||
echo "Cancelled. Manual configuration required."
|
||||
echo ""
|
||||
echo "Configuration files:"
|
||||
echo " - Dangerous Pi: /opt/dangerous-pi/.env (PORT variable)"
|
||||
echo " - ttyd-bash: /etc/systemd/system/ttyd-bash.service"
|
||||
;;
|
||||
|
||||
*)
|
||||
echo "Invalid option. Exiting."
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
echo ""
|
||||
Reference in New Issue
Block a user