@@ -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!" |