#!/data/data/com.termux/files/usr/bin/bash # Instalador de Samba + mDNS para Termux # Uso: bash install.sh set -e RED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[1;33m' NC='\033[0m' SAMBA_DIR="$HOME/.config/samba" SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)" info() { echo -e "${GREEN}[+]${NC} $1"; } warn() { echo -e "${YELLOW}[!]${NC} $1"; } error() { echo -e "${RED}[x]${NC} $1"; exit 1; } # 1. Verificar Termux [ -n "$PREFIX" ] || error "No es Termux. Este script solo funciona en Termux." # 2. Instalar dependencias info "Instalando paquetes..." pkg install -y samba python 2>/dev/null pip install -q zeroconf 2>/dev/null # 3. Crear directorios info "Creando directorios..." mkdir -p "$SAMBA_DIR"/{private,lock,state,cache} chmod 0755 "$SAMBA_DIR"/{lock,state,cache} # 4. Copiar config info "Copiando smb.conf..." cp "$SCRIPT_DIR/smb.conf" "$SAMBA_DIR/smb.conf" # 5. Copiar script mDNS info "Instalando mdns-publish.py..." mkdir -p "$HOME/.local/bin" cp "$SCRIPT_DIR/mdns-publish.py" "$HOME/.local/bin/mdns-publish.py" chmod +x "$HOME/.local/bin/mdns-publish.py" # 6. Crear usuario Samba info "Configurando usuario Samba..." read -p "Usuario Samba [andres]: " SMB_USER SMB_USER="${SMB_USER:-andres}" read -s -p "Contrasena Samba: " SMB_PASS echo "" printf '%s\n%s\n' "$SMB_PASS" "$SMB_PASS" | \ smbpasswd -L -s -c "$SAMBA_DIR/smb.conf" -a "$SMB_USER" 2>/dev/null || \ printf '%s\n%s\n' "$SMB_PASS" "$SMB_PASS" | \ smbpasswd -L -s -c "$SAMBA_DIR/smb.conf" "$SMB_USER" # 7. Verificar storage if [ ! -d "/storage/emulated/0" ]; then warn "Storage no accesible. Ejecuta: termux-setup-storage" fi # 8. Agregar a .bashrc si no existe if ! grep -q "smbd" "$HOME/.bashrc" 2>/dev/null; then info "Agregando autostart a .bashrc..." cat "$SCRIPT_DIR/bashrc-snippet.sh" >> "$HOME/.bashrc" else warn "Autostart ya existe en .bashrc, no se modifica" fi # 9. Iniciar servicios info "Iniciando Samba..." pkill smbd 2>/dev/null || true sleep 1 smbd -D -s "$SAMBA_DIR/smb.conf" info "Iniciando mDNS..." pkill -f mdns-publish.py 2>/dev/null || true sleep 1 nohup python "$HOME/.local/bin/mdns-publish.py" > /dev/null 2>&1 & disown # 10. Verificar sleep 2 if pgrep -x smbd > /dev/null && pgrep -f mdns-publish > /dev/null; then info "Todo corriendo." echo "" echo " Nombre en red: movil" echo " Puerto: 4450" echo " Usuario: $SMB_USER" echo "" echo " Desde Linux: smb://movil.local:4450/" echo " Desde Windows: \\\\IP:4450\\" echo "" else error "Algo fallo. Revisa: smb-status / mdns-status" fi