#!/bin/bash

GREEN="\e[32m"
YELLOW="\e[33m"
RED="\e[31m"
BOLD="\e[1m"
RESET="\e[0m"

# Ưu tiên link của bạn, nếu lỗi sẽ dùng link dự phòng
SSHPASS_URL="https://centos-repo.htn.cloud/script/sshpass-1.10.tar.gz"
BACKUP_URL="https://sourceforge.net/projects/sshpass/files/sshpass/1.10/sshpass-1.10.tar.gz/download"
TMP_DIR="/tmp/sshpass_build"

echo -e "${BOLD}${GREEN}=== Bắt đầu cài đặt sshpass từ Source Code ===${RESET}"

if [ "$EUID" -ne 0 ]; then 
  echo -e "${RED}[LỖI] Vui lòng chạy bằng quyền root.${RESET}"
  exit 1
fi

# 1. Cài đặt công cụ build
echo -e "${YELLOW}[1/4] Kiểm tra công cụ biên dịch...${RESET}"
if [ -f /etc/centos-release ]; then
    yum install -y gcc make wget tar file
elif [ -f /etc/debian_version ]; then
    apt-get update && apt-get install -y gcc make wget tar file
fi

# 2. Tải source code
echo -e "${YELLOW}[2/4] Đang tải source code...${RESET}"
rm -rf $TMP_DIR && mkdir -p $TMP_DIR
cd $TMP_DIR

# Thử tải từ link chính (bỏ --show-progress để tương thích bản cũ)
wget -L -q $SSHPASS_URL -O sshpass.tar.gz

# Kiểm tra nếu file tải về bị lỗi hoặc trống, thử link dự phòng
if [ ! -s sshpass.tar.gz ] || ! file sshpass.tar.gz | grep -q "gzip compressed data"; then
    echo -e "${YELLOW}[!] Link chính lỗi hoặc không tải được. Đang thử link dự phòng...${RESET}"
    wget -L -q $BACKUP_URL -O sshpass.tar.gz
fi

# Kiểm tra cuối cùng
if [ ! -s sshpass.tar.gz ] || ! file sshpass.tar.gz | grep -q "gzip compressed data"; then
    echo -e "${RED}[LỖI] Không thể tải source code từ bất kỳ nguồn nào.${RESET}"
    echo -e "Vui lòng kiểm tra kết nối internet hoặc lệnh: curl -I $SSHPASS_URL"
    exit 1
fi

# 3. Giải nén và Biên dịch
echo -e "${YELLOW}[3/4] Đang giải nén và biên dịch...${RESET}"
tar -xzf sshpass.tar.gz
cd sshpass-1.10 2>/dev/null || cd $(ls -d */ | head -n 1)

./configure
if [ $? -ne 0 ]; then
    echo -e "${RED}[LỖI] Lệnh ./configure thất bại. Có thể thiếu thư viện build-essential/gcc.${RESET}"
    exit 1
fi

make && make install

# 4. Kiểm tra kết quả
echo -e "${YELLOW}[4/4] Kiểm tra cài đặt...${RESET}"
if command -v sshpass &>/dev/null; then
    echo -e "${BOLD}${GREEN}✅ Thành công! Phiên bản: $(sshpass -V | head -n 1)${RESET}"
    echo -e "Vị trí cài đặt: $(which sshpass)"
else
    echo -e "${RED}[LỖI] Quá trình build có vẻ thành công nhưng không tìm thấy file thực thi.${RESET}"
fi

# Dọn dẹp
rm -rf $TMP_DIR
