#!/bin/bash # Update Termux SMS API Server on Android Device # This script updates the Termux API server with improved error handling and higher message limits set -e # Colors GREEN='\033[0;32m' YELLOW='\033[1;33m' BLUE='\033[0;34m' RED='\033[0;31m' NC='\033[0m' echo -e "${GREEN}๐Ÿ“ฑ Updating Termux SMS API Server${NC}" echo "======================================" # Configuration ANDROID_IP="10.0.0.193" ANDROID_PORT="8022" ANDROID_USER="android-dev" REMOTE_PATH="~/projects/sms-campaign-manager" echo -e "${BLUE}๐Ÿ“‹ Configuration:${NC}" echo " Android IP: $ANDROID_IP" echo " SSH Port: $ANDROID_PORT" echo " User: $ANDROID_USER" echo " Remote Path: $REMOTE_PATH" echo # Check if Android device is reachable echo -e "${BLUE}๐Ÿ” Checking Android device connectivity...${NC}" if ! ping -c 1 $ANDROID_IP >/dev/null 2>&1; then echo -e "${RED}โŒ Cannot reach Android device at $ANDROID_IP${NC}" exit 1 fi echo -e "${GREEN}โœ… Android device is reachable${NC}" # Stop existing API server echo -e "${BLUE}๐Ÿ›‘ Stopping existing Termux API server...${NC}" ssh -p $ANDROID_PORT $ANDROID_USER@$ANDROID_IP "pkill -f termux-sms-api-server.py || true" sleep 2 # Copy updated server file echo -e "${BLUE}๐Ÿ“ค Uploading updated Termux API server...${NC}" scp -P $ANDROID_PORT android/termux-sms-api-server.py $ANDROID_USER@$ANDROID_IP:$REMOTE_PATH/ # Set permissions echo -e "${BLUE}๐Ÿ”ง Setting permissions...${NC}" ssh -p $ANDROID_PORT $ANDROID_USER@$ANDROID_IP "chmod +x $REMOTE_PATH/termux-sms-api-server.py" # Create logs directory ssh -p $ANDROID_PORT $ANDROID_USER@$ANDROID_IP "mkdir -p ~/logs" # Start updated API server echo -e "${BLUE}๐Ÿš€ Starting updated Termux API server...${NC}" ssh -p $ANDROID_PORT $ANDROID_USER@$ANDROID_IP "cd $REMOTE_PATH && nohup python termux-sms-api-server.py > ~/logs/sms-api-startup.log 2>&1 &" # Wait a moment for startup sleep 3 # Check if server is running echo -e "${BLUE}๐Ÿ” Checking if API server is running...${NC}" if ssh -p $ANDROID_PORT $ANDROID_USER@$ANDROID_IP "pgrep -f termux-sms-api-server.py" >/dev/null; then echo -e "${GREEN}โœ… Termux API server is running${NC}" else echo -e "${RED}โŒ Failed to start Termux API server${NC}" echo -e "${YELLOW}๐Ÿ“‹ Check startup log:${NC}" ssh -p $ANDROID_PORT $ANDROID_USER@$ANDROID_IP "cat ~/logs/sms-api-startup.log" exit 1 fi # Test API endpoint echo -e "${BLUE}๐Ÿงช Testing API endpoint...${NC}" if curl -s -f http://$ANDROID_IP:5001/health >/dev/null; then echo -e "${GREEN}โœ… API endpoint is responding${NC}" else echo -e "${YELLOW}โš ๏ธ API endpoint may still be starting up${NC}" fi echo echo -e "${GREEN}๐ŸŽ‰ Update Complete!${NC}" echo echo -e "${BLUE}๐Ÿ“Š What was updated:${NC}" echo " โœ… Increased max message length from 160 to 1600 characters" echo " โœ… Reduced rate limit delay from 2.0 to 1.0 seconds" echo " โœ… Added contact list endpoints (termux-contact-list)" echo " โœ… Added /api/contacts/test for JSON structure analysis" echo " โœ… Added /api/contacts/list for fetching all contacts" echo " โœ… Added detailed error logging and validation" echo " โœ… Improved phone number cleaning" echo " โœ… Better debugging information" echo echo -e "${BLUE}๐Ÿ“‹ Next steps:${NC}" echo " 1. Rebuild Docker container: docker compose build" echo " 2. Restart Docker container: docker compose up" echo " 3. Test campaign again" echo echo -e "${BLUE}๐Ÿ” Check logs:${NC}" echo " Android API logs: ssh -p 8022 android-dev@10.0.0.193 'tail -f ~/logs/sms-api.log'" echo " Docker logs: docker compose logs -f"