campaign_connector/docs/termux-flask-development-setup-guide.md
2025-08-25 09:41:16 -06:00

6.8 KiB

Termux Flask Development Setup Guide

SMS Campaign Manager on Android

Prerequisites

  • Termux installed on Android
  • Termux:API app installed (for Android API access)
  • SSH access configured (optional, for remote development)

Initial Setup

1. Update Termux Packages

pkg update && pkg upgrade

2. Install Required System Packages

# Install Python and development tools
pkg install python python-pip

# Install Node.js (if needed for npm packages)
pkg install nodejs

# Install which command (useful for debugging)
pkg install which

# Install Termux API package
pkg install termux-api

Project Setup

1. Create Project Directory Structure

mkdir -p ~/projects/sms-campaign-manager
cd ~/projects/sms-campaign-manager

2. Install Python Dependencies

pip install flask werkzeug requests

3. Create the Flask Application

Create app.py with the following content:

from flask import Flask, jsonify, render_template_string
import subprocess
import json

app = Flask(__name__)

@app.route('/')
def index():
    return render_template_string('''
    <!DOCTYPE html>
    <html>
    <head>
        <title>SMS Campaign Manager - Termux</title>
        <style>
            body { font-family: Arial, sans-serif; margin: 40px; background: #f5f5f5; }
            .container { background: white; padding: 30px; border-radius: 10px; box-shadow: 0 2px 10px rgba(0,0,0,0.1); }
            .status { background: #e8f5e8; padding: 20px; border-radius: 8px; margin: 20px 0; }
            .api-test { background: #f0f8ff; padding: 15px; border-radius: 5px; margin: 10px 0; }
            a { color: #0066cc; text-decoration: none; }
            a:hover { text-decoration: underline; }
        </style>
    </head>
    <body>
        <div class="container">
            <h1>🚀 SMS Campaign Manager</h1>
            <h2>Running on Termux!</h2>
            
            <div class="status">
                <h3>✅ Flask Server Status: Active</h3>
                <p><strong>Server IP:</strong> 10.0.0.193:5000</p>
                <p><strong>Environment:</strong> Termux on Android</p>
            </div>
            
            <div class="api-test">
                <h3>🔋 Termux API Tests</h3>
                <p><a href="/battery">📱 Battery Status</a></p>
                <p><a href="/notification">🔔 Send Test Notification</a></p>
            </div>
        </div>
    </body>
    </html>
    ''')

@app.route('/battery')
def battery():
    try:
        result = subprocess.run(['termux-battery-status'], capture_output=True, text=True)
        battery_data = json.loads(result.stdout)
        return f"""
        <h2>🔋 Battery Status</h2>
        <pre>{json.dumps(battery_data, indent=2)}</pre>
        <p><a href='/'>← Back</a></p>
        """
    except Exception as e:
        return f"<h2>Error</h2><pre>{str(e)}</pre><p><a href='/'>← Back</a></p>" 

@app.route('/notification')
def notification():
    try:
        subprocess.run(['termux-notification', '--title', 'Flask Test', '--content', 'Hello from SMS Campaign Manager!'], capture_output=True, text=True)
        return f"""
        <h2>🔔 Notification Sent!</h2>
        <p>Check your Android notifications.</p>
        <p><a href='/'>← Back</a></p>
        """
    except Exception as e:
        return f"<h2>Error</h2><pre>{str(e)}</pre><p><a href='/'>← Back</a></p>" 

if __name__ == '__main__':
    print("🚀 Starting SMS Campaign Manager on Termux...")
    print("📱 Device IP: 10.0.0.193")
    print("🌐 Access from Ubuntu: http://10.0.0.193:5000")
    app.run(host='0.0.0.0', port=5000, debug=True)

Running the Application

1. Start the Flask Server

cd ~/projects/sms-campaign-manager
python app.py

2. Access the Application

Features Implemented

  1. Web Interface: Clean, responsive HTML interface
  2. Battery Status API: Uses termux-battery-status to display device battery info
  3. Notification API: Sends test notifications using termux-notification
  4. Network Access: Configured to accept connections from any IP (0.0.0.0)

Useful Commands

Check if server is running

ps aux | grep python

Find your device IP

ifconfig wlan0 | grep inet
# or
ip addr show wlan0

Kill existing Flask processes

pkill -f "python app.py"

Run in background with nohup

nohup python app.py > flask.log 2>&1 &

View logs

tail -f flask.log

SSH Access from Ubuntu

If you want to develop from your Ubuntu machine:

# From Ubuntu, SSH into Termux
ssh android-dev

# Navigate to project
cd ~/projects/sms-campaign-manager

# Edit files with nano or vim
nano app.py

Troubleshooting

Port Already in Use

# Find process using port 5000
lsof -i :5000
# Kill the process
kill -9 <PID>

Permission Issues with Termux API

Make sure you've granted permissions to Termux:API app in Android settings.

Network Access Issues

Ensure your device and Ubuntu machine are on the same network.

Next Steps for SMS Campaign Manager

  1. Add SMS functionality:

    # Send SMS using Termux API
    subprocess.run(['termux-sms-send', '-n', phone_number, message])
    
  2. Add contact list management:

    # Get contacts
    subprocess.run(['termux-contact-list'])
    
  3. Add database support:

    pip install flask-sqlalchemy
    
  4. Add authentication:

    pip install flask-login
    

Code-Server Alternative (Failed Attempt)

Note: Installing code-server on Termux proved problematic due to:

  • Missing native module argon2.node
  • Node version incompatibilities
  • Architecture issues (ARM64)

Recommendation: Use SSH with nano/vim for editing, or use a mobile code editor app like Acode or Termux:Widget for quick edits.

Quick Restart Script

Create restart_server.sh:

#!/data/data/com.termux/files/usr/bin/bash
pkill -f "python app.py"
cd ~/projects/sms-campaign-manager
python app.py

Make it executable:

chmod +x restart_server.sh

Backup Your Work

# Create backup
tar -czf sms-campaign-backup.tar.gz ~/projects/sms-campaign-manager

# Copy to Ubuntu via SCP
scp sms-campaign-backup.tar.gz bunker-admin@10.0.0.9:~/backups/

Summary

You successfully:

  1. Installed Flask and dependencies on Termux
  2. Created a working Flask web application
  3. Integrated Termux API for Android features
  4. Made it accessible from your Ubuntu machine
  5. Tested battery status and notification APIs

The server was running successfully and accepting connections from your Ubuntu machine (10.0.0.9) as shown in the logs.