campaign watchdog updates
This commit is contained in:
parent
30c2cfeba5
commit
bd5ab484de
74
android/sms-watchdog.sh
Executable file
74
android/sms-watchdog.sh
Executable file
@ -0,0 +1,74 @@
|
|||||||
|
#!/data/data/com.termux/files/usr/bin/bash
|
||||||
|
#
|
||||||
|
# SMS API Server Watchdog
|
||||||
|
# Monitors the Flask server and restarts it if it crashes.
|
||||||
|
# Run this from ~/.termux/boot/start-sms-server or manually.
|
||||||
|
#
|
||||||
|
|
||||||
|
SERVER_SCRIPT="$HOME/sms-server/android/termux-sms-api-server.py"
|
||||||
|
LOG_DIR="$HOME/logs"
|
||||||
|
LOG_FILE="$LOG_DIR/sms-api.log"
|
||||||
|
PID_FILE="$LOG_DIR/sms-api.pid"
|
||||||
|
CHECK_INTERVAL=30 # seconds between health checks
|
||||||
|
|
||||||
|
mkdir -p "$LOG_DIR"
|
||||||
|
|
||||||
|
log() {
|
||||||
|
echo "$(date '+%Y-%m-%d %H:%M:%S') [watchdog] $1" >> "$LOG_FILE"
|
||||||
|
echo "[watchdog] $1"
|
||||||
|
}
|
||||||
|
|
||||||
|
start_server() {
|
||||||
|
if [ -f "$PID_FILE" ]; then
|
||||||
|
local old_pid
|
||||||
|
old_pid=$(cat "$PID_FILE")
|
||||||
|
if kill -0 "$old_pid" 2>/dev/null; then
|
||||||
|
log "Server already running (PID $old_pid)"
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
log "Starting SMS API server..."
|
||||||
|
nohup python "$SERVER_SCRIPT" >> "$LOG_FILE" 2>&1 &
|
||||||
|
echo $! > "$PID_FILE"
|
||||||
|
log "Server started (PID $!)"
|
||||||
|
sleep 3 # Give it time to start
|
||||||
|
}
|
||||||
|
|
||||||
|
check_health() {
|
||||||
|
curl -s --max-time 5 http://127.0.0.1:5001/health > /dev/null 2>&1
|
||||||
|
return $?
|
||||||
|
}
|
||||||
|
|
||||||
|
# Acquire wake lock to prevent Android from killing us
|
||||||
|
termux-wake-lock 2>/dev/null
|
||||||
|
|
||||||
|
log "Watchdog starting..."
|
||||||
|
start_server
|
||||||
|
|
||||||
|
# Main watchdog loop
|
||||||
|
while true; do
|
||||||
|
sleep "$CHECK_INTERVAL"
|
||||||
|
|
||||||
|
if ! check_health; then
|
||||||
|
log "Health check FAILED — restarting server"
|
||||||
|
|
||||||
|
# Kill old process if it exists
|
||||||
|
if [ -f "$PID_FILE" ]; then
|
||||||
|
kill "$(cat "$PID_FILE")" 2>/dev/null
|
||||||
|
sleep 2
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Also kill any orphaned instances
|
||||||
|
pkill -f "termux-sms-api-server.py" 2>/dev/null
|
||||||
|
sleep 1
|
||||||
|
|
||||||
|
start_server
|
||||||
|
|
||||||
|
if check_health; then
|
||||||
|
log "Server restarted successfully"
|
||||||
|
else
|
||||||
|
log "Server failed to restart — will retry in ${CHECK_INTERVAL}s"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
done
|
||||||
@ -19,12 +19,15 @@ import os
|
|||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
from typing import Dict, List, Optional, Any
|
from typing import Dict, List, Optional, Any
|
||||||
|
|
||||||
# Configure logging
|
# Configure logging — ensure log directory exists before creating FileHandler
|
||||||
|
_log_dir = os.path.expanduser('~/logs')
|
||||||
|
os.makedirs(_log_dir, exist_ok=True)
|
||||||
|
|
||||||
logging.basicConfig(
|
logging.basicConfig(
|
||||||
level=logging.INFO,
|
level=logging.INFO,
|
||||||
format='%(asctime)s - %(levelname)s - %(message)s',
|
format='%(asctime)s - %(levelname)s - %(message)s',
|
||||||
handlers=[
|
handlers=[
|
||||||
logging.FileHandler('/data/data/com.termux/files/home/logs/sms-api.log'),
|
logging.FileHandler(os.path.join(_log_dir, 'sms-api.log')),
|
||||||
logging.StreamHandler()
|
logging.StreamHandler()
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
@ -766,8 +769,6 @@ def list_contacts():
|
|||||||
return jsonify({'success': False, 'error': str(e)}), 500
|
return jsonify({'success': False, 'error': str(e)}), 500
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
# Create logs directory
|
|
||||||
os.makedirs('/data/data/com.termux/files/home/logs', exist_ok=True)
|
|
||||||
|
|
||||||
# Validate required configuration
|
# Validate required configuration
|
||||||
if not CONFIG['SECRET_KEY']:
|
if not CONFIG['SECRET_KEY']:
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user