#!/bin/bash

# --- Color Definitions ---
RED="\033[0;31m"
GREEN="\033[1;32m"
BLUE="\033[1;34m"
CYAN="\033[1;36m"
YELLOW="\033[1;33m"
MAGENTA="\033[1;35m"
BOLD="\033[1m"
NC="\033[0m" # No Color

# --- SSH Credentials ---
USERNAME="root"
PASSWORD="ADMIN"
SESSION_NAME="multi_ssh_tmux"

# --- Check sshpass ---
echo -e "${CYAN}🔍 Checking for sshpass...${NC}"
if ! command -v sshpass &>/dev/null; then
    echo -e "${YELLOW}📦 Installing sshpass...${NC}"
    if command -v apt-get &>/dev/null; then
        sudo apt-get update && sudo apt-get install -y sshpass
    elif command -v yum &>/dev/null; then
        sudo yum install -y sshpass
    else
        echo -e "${RED}❌ Unsupported package manager. Please install sshpass manually.${NC}"
        exit 1
    fi
else
    echo -e "${GREEN}✅ sshpass is installed.${NC}"
fi

# --- Get IPs from User ---
echo -e "${MAGENTA}${BOLD}📥 Enter IP addresses (one per line). Press CTRL+D when done:${NC}"
mapfile -t IP_LIST

if [ "${#IP_LIST[@]}" -eq 0 ]; then
    echo -e "${RED}❌ No IPs provided. Exiting.${NC}"
    exit 1
fi

# --- Start tmux Session ---
echo -e "${GREEN}🚀 Creating tmux session '${SESSION_NAME}'...${NC}"
tmux new-session -d -s "$SESSION_NAME" -n ssh_broadcast

# --- Enable Pane Labels in tmux ---
tmux set-option -t "$SESSION_NAME" pane-border-status top
tmux set-option -t "$SESSION_NAME" pane-border-format "#[fg=cyan,bold]Pane #{pane_index} #[fg=yellow]#{pane_title}"

# --- SSH into First IP ---
FIRST_IP="${IP_LIST[0]}"
echo -e "${BLUE}🌐 Connecting to ${FIRST_IP}...${NC}"
tmux send-keys -t "$SESSION_NAME" "clear && exec sshpass -p '$PASSWORD' ssh -o StrictHostKeyChecking=no $USERNAME@$FIRST_IP" C-m
tmux select-pane -T "$FIRST_IP"

# --- SSH into Remaining IPs ---
for i in "${!IP_LIST[@]}"; do
    [ "$i" -eq 0 ] && continue
    IP="${IP_LIST[$i]}"
    echo -e "${BLUE}🌐 Connecting to ${IP}...${NC}"
    tmux split-window -h -t "$SESSION_NAME"
    tmux select-layout -t "$SESSION_NAME" tiled
    tmux send-keys -t "$SESSION_NAME" "clear && exec sshpass -p '$PASSWORD' ssh -o StrictHostKeyChecking=no $USERNAME@$IP" C-m
    tmux select-pane -T "$IP"
done

# --- Enable Broadcast Mode ---
tmux setw -t "$SESSION_NAME" synchronize-panes on

# --- Focus on First Pane ---
tmux select-pane -t "$SESSION_NAME".0

# --- Final Message ---
echo -e "${GREEN}🎉 tmux session '${SESSION_NAME}' is ready!${NC}"
echo -e "${BLUE}⌨️  Broadcasting is ${YELLOW}ON${BLUE}. Commands will be sent to all panes.${NC}"
echo -e "${CYAN}🔁 Each pane is labeled with its IP for clarity.${NC}"
echo -e "${YELLOW}🧠 Tip: Press Ctrl+B then ':' and type ${BOLD}setw synchronize-panes off${NC}${YELLOW} to stop broadcasting.${NC}"

# --- Attach to tmux Session ---
tmux attach-session -t "$SESSION_NAME"
