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
152 lines
6.8 KiB
Bash
Executable File
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 ""
|