@@ -0,0 +1,101 @@ |
| | 1 | +#!/bin/bash |
| | 2 | + |
| | 3 | +# LooseCannon Full System Launch Script |
| | 4 | +# Because clicking buttons is for mortals |
| | 5 | + |
| | 6 | +echo "=========================================" |
| | 7 | +echo " LooseCannon v0.3.0 Launch Sequence" |
| | 8 | +echo "=========================================" |
| | 9 | +echo "" |
| | 10 | + |
| | 11 | +# Check for dependencies |
| | 12 | +check_dependency() { |
| | 13 | + if ! command -v $1 &> /dev/null; then |
| | 14 | + echo "❌ $1 is not installed" |
| | 15 | + return 1 |
| | 16 | + else |
| | 17 | + echo "✓ $1 found" |
| | 18 | + return 0 |
| | 19 | + fi |
| | 20 | +} |
| | 21 | + |
| | 22 | +echo "Checking dependencies..." |
| | 23 | +check_dependency node |
| | 24 | +NODE_OK=$? |
| | 25 | +check_dependency ollama |
| | 26 | +OLLAMA_OK=$? |
| | 27 | +check_dependency firefox |
| | 28 | +FIREFOX_OK=$? |
| | 29 | + |
| | 30 | +echo "" |
| | 31 | + |
| | 32 | +# Start Ollama if not running |
| | 33 | +if [ $OLLAMA_OK -eq 0 ]; then |
| | 34 | + if ! pgrep -x "ollama" > /dev/null; then |
| | 35 | + echo "Starting Ollama..." |
| | 36 | + ollama serve & |
| | 37 | + sleep 2 |
| | 38 | + else |
| | 39 | + echo "Ollama already running" |
| | 40 | + fi |
| | 41 | +else |
| | 42 | + echo "⚠️ Ollama not found - AI responses will use fallbacks" |
| | 43 | +fi |
| | 44 | + |
| | 45 | +# Start the server |
| | 46 | +if [ $NODE_OK -eq 0 ]; then |
| | 47 | + echo "Starting LooseCannon server..." |
| | 48 | + npm start & |
| | 49 | + SERVER_PID=$! |
| | 50 | + sleep 3 |
| | 51 | +else |
| | 52 | + echo "❌ Cannot start server without Node.js" |
| | 53 | + exit 1 |
| | 54 | +fi |
| | 55 | + |
| | 56 | +# Open dashboard |
| | 57 | +echo "Opening analytics dashboard..." |
| | 58 | +if command -v open &> /dev/null; then |
| | 59 | + open dashboard/index.html |
| | 60 | +elif command -v xdg-open &> /dev/null; then |
| | 61 | + xdg-open dashboard/index.html |
| | 62 | +else |
| | 63 | + echo "Open dashboard/index.html in your browser" |
| | 64 | +fi |
| | 65 | + |
| | 66 | +# Launch Firefox with extension |
| | 67 | +if [ $FIREFOX_OK -eq 0 ]; then |
| | 68 | + echo "Launching Firefox with LooseCannon extension..." |
| | 69 | + npm run dev:extension & |
| | 70 | + FIREFOX_PID=$! |
| | 71 | +else |
| | 72 | + echo "⚠️ Firefox not found - manually load extension" |
| | 73 | +fi |
| | 74 | + |
| | 75 | +echo "" |
| | 76 | +echo "=========================================" |
| | 77 | +echo " LooseCannon Systems Online" |
| | 78 | +echo "=========================================" |
| | 79 | +echo "" |
| | 80 | +echo "Server: http://localhost:8765" |
| | 81 | +echo "Dashboard: file://$(pwd)/dashboard/index.html" |
| | 82 | +echo "Extension: Load in Firefox/Chrome" |
| | 83 | +echo "" |
| | 84 | +echo "Targets:" |
| | 85 | +echo " • WhatsApp Web: https://web.whatsapp.com" |
| | 86 | +echo " • Telegram Web: https://web.telegram.org" |
| | 87 | +echo " • Messenger: https://messenger.com" |
| | 88 | +echo "" |
| | 89 | +echo "Press Ctrl+C to shutdown all systems" |
| | 90 | +echo "" |
| | 91 | +echo "Happy hunting! 🎯" |
| | 92 | +echo "" |
| | 93 | + |
| | 94 | +# Wait for interrupt |
| | 95 | +wait |
| | 96 | + |
| | 97 | +# Cleanup |
| | 98 | +echo "Shutting down..." |
| | 99 | +kill $SERVER_PID 2>/dev/null |
| | 100 | +kill $FIREFOX_PID 2>/dev/null |
| | 101 | +echo "Goodbye!" |