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