changemaker.lite/termux-sms/setup-api-key.sh
bunker-admin 9321aeb263 Move SMS phone bridge from campaign_connector submodule into main repo
Consolidates the Termux SMS server code (previously in a separate
campaign_connector git submodule) into termux-sms/ at repo root.
Updates phone clone commands to use sparse checkout so only the
termux-sms/ directory is downloaded onto the Android device.

Bunker Admin
2026-03-31 11:04:14 -06:00

152 lines
6.8 KiB
Bash
Executable File

#!/data/data/com.termux/files/usr/bin/bash
#
# Termux SMS API Server - Security Setup Script
# Generates and configures the required SMS_API_SECRET environment variable
#
# Color codes for pretty output
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
CYAN='\033[0;36m'
BOLD='\033[1m'
NC='\033[0m' # No Color
# Banner
clear
echo -e "${CYAN}╔════════════════════════════════════════════════════════════════════════╗${NC}"
echo -e "${CYAN}${NC} ${BOLD}🔐 Termux SMS API Server - Security Setup${NC} ${CYAN}${NC}"
echo -e "${CYAN}╚════════════════════════════════════════════════════════════════════════╝${NC}"
echo ""
# Check if Python is available
if ! command -v python &> /dev/null; then
echo -e "${RED}❌ ERROR: Python is not installed${NC}"
echo -e "${YELLOW}Please install Python: pkg install python${NC}"
exit 1
fi
echo -e "${BLUE}📝 Step 1: Generating secure API key...${NC}"
echo ""
# Generate the API key
API_KEY=$(python -c "import secrets; print(secrets.token_hex(32))")
if [ -z "$API_KEY" ]; then
echo -e "${RED}❌ Failed to generate API key${NC}"
exit 1
fi
echo -e "${GREEN}✅ Secure API key generated successfully!${NC}"
echo ""
# Determine shell config file
SHELL_RC=""
if [ -f "$HOME/.bashrc" ]; then
SHELL_RC="$HOME/.bashrc"
elif [ -f "$HOME/.zshrc" ]; then
SHELL_RC="$HOME/.zshrc"
else
SHELL_RC="$HOME/.bashrc"
touch "$SHELL_RC"
fi
echo -e "${BLUE}📝 Step 2: Saving to ${SHELL_RC}...${NC}"
echo ""
# Check if SMS_API_SECRET already exists in config
if grep -q "SMS_API_SECRET" "$SHELL_RC" 2>/dev/null; then
echo -e "${YELLOW}⚠️ SMS_API_SECRET already exists in ${SHELL_RC}${NC}"
echo -e "${YELLOW}Do you want to replace it? (y/n)${NC}"
read -r response
if [[ "$response" =~ ^[Yy]$ ]]; then
# Remove old entry
sed -i '/export SMS_API_SECRET=/d' "$SHELL_RC"
echo "export SMS_API_SECRET=\"$API_KEY\"" >> "$SHELL_RC"
echo -e "${GREEN}✅ Updated existing API key${NC}"
else
echo -e "${YELLOW}⏭️ Skipping - keeping existing key${NC}"
# Use existing key for display
API_KEY=$(grep "SMS_API_SECRET" "$SHELL_RC" | cut -d'"' -f2)
fi
else
# Add new entry
echo "" >> "$SHELL_RC"
echo "# Termux SMS API Server Authentication" >> "$SHELL_RC"
echo "export SMS_API_SECRET=\"$API_KEY\"" >> "$SHELL_RC"
echo -e "${GREEN}✅ API key saved to ${SHELL_RC}${NC}"
fi
echo ""
echo -e "${BLUE}📝 Step 3: Activating in current session...${NC}"
echo ""
# Export for current session
export SMS_API_SECRET="$API_KEY"
echo -e "${GREEN}✅ API key activated${NC}"
echo ""
# Display summary box
echo -e "${CYAN}╔════════════════════════════════════════════════════════════════════════╗${NC}"
echo -e "${CYAN}${NC} ${BOLD}🎉 Setup Complete!${NC} ${CYAN}${NC}"
echo -e "${CYAN}╠════════════════════════════════════════════════════════════════════════╣${NC}"
echo -e "${CYAN}${NC} ${CYAN}${NC}"
echo -e "${CYAN}${NC} ${BOLD}Your API Key:${NC} ${CYAN}${NC}"
echo -e "${CYAN}${NC} ${GREEN}${API_KEY}${NC} ${CYAN}${NC}"
echo -e "${CYAN}${NC} ${CYAN}${NC}"
echo -e "${CYAN}${NC} ${BOLD}Saved to:${NC} ${YELLOW}${SHELL_RC}${NC}"
# Pad the line to align with box
printf "${CYAN}${NC}\n"
echo -e "${CYAN}${NC} ${CYAN}${NC}"
echo -e "${CYAN}${NC} ${BOLD}Status:${NC} ${CYAN}${NC}"
echo -e "${CYAN}${NC} ${GREEN}✅ Active in current session${NC} ${CYAN}${NC}"
echo -e "${CYAN}${NC} ${GREEN}✅ Will persist across restarts${NC} ${CYAN}${NC}"
echo -e "${CYAN}${NC} ${CYAN}${NC}"
echo -e "${CYAN}╚════════════════════════════════════════════════════════════════════════╝${NC}"
echo ""
# Next steps
echo -e "${BOLD}📋 Next Steps:${NC}"
echo ""
echo -e " ${YELLOW}1.${NC} ${BOLD}Copy this key to your Ubuntu homelab .env file:${NC}"
echo -e " ${CYAN}TERMUX_API_KEY=${API_KEY}${NC}"
echo -e " ${CYAN}SMS_API_SECRET=${API_KEY}${NC}"
echo ""
echo -e " ${YELLOW}2.${NC} ${BOLD}Start the SMS API server:${NC}"
echo -e " ${CYAN}python ~/projects/sms-campaign-manager/android/termux-sms-api-server.py${NC}"
echo ""
echo -e " ${YELLOW}3.${NC} ${BOLD}Or use the service manager:${NC}"
echo -e " ${CYAN}~/bin/sms-service.sh start${NC}"
echo ""
# Verification section
echo -e "${BOLD}🔍 Verification:${NC}"
echo ""
echo -e " Check if key is set: ${CYAN}echo \$SMS_API_SECRET${NC}"
echo -e " Expected output: ${GREEN}${API_KEY}${NC}"
echo ""
# Test the environment variable
CURRENT_VALUE="${SMS_API_SECRET}"
if [ "$CURRENT_VALUE" == "$API_KEY" ]; then
echo -e "${GREEN}✅ Verification passed - API key is correctly set!${NC}"
else
echo -e "${YELLOW}⚠️ Note: New terminal sessions will have the key automatically loaded${NC}"
fi
echo ""
echo -e "${CYAN}═══════════════════════════════════════════════════════════════════════${NC}"
echo -e "${GREEN}${BOLD} Setup complete! Your SMS API server is now secure. 🔒${NC}"
echo -e "${CYAN}═══════════════════════════════════════════════════════════════════════${NC}"
echo ""
# Optional: Save key to a file for easy copying (secured with permissions)
KEY_FILE="$HOME/.sms-api-key"
echo "$API_KEY" > "$KEY_FILE"
chmod 600 "$KEY_FILE"
echo -e "${BLUE}💾 API key also saved to: ${KEY_FILE} (readable only by you)${NC}"
echo ""