#!/bin/bash
# ======================================================
#   HOKAGE LEGEND MAIN MENU (Optimized Gradient)
# ======================================================

# COLOR VALIDATION
clear
y='\033[1;33m' #yellow
BGX="\033[42m"
CYAN="\033[96m"
z="\033[96m"
f="\033[1;97;41m"
RED='\033[0;31m'
NC='\033[0m'
gray="\e[1;30m"
Blue="\033[0;34m"
green='\033[0;32m'
grenbo="\e[92;1m"
purple="\033[1;95m"
YELL='\033[0;33m'

# ==================================================
# FUNGSI GRADASI FAST RENDER (EMAS -> BIRU -> UNGU)
# ==================================================
print_gradient() {
    local text="$1"
    awk -v text="$text" 'BEGIN {
        len = length(text);
        # Definisi Warna: Emas (Gold) -> Biru (Medium Blue) -> Ungu (Blue Violet)
        r_start=255; g_start=215; b_start=0;
        r_mid=0;     g_mid=128;   b_mid=255;
        r_end=138;   g_end=43;    b_end=226;

        for (i=0; i<len; i++) {
            ratio = i / (len-1);
            if (ratio <= 0.5) {
                # Fase 1: Emas ke Biru
                f = ratio * 2;
                r = int(r_start + (r_mid - r_start) * f);
                g = int(g_start + (g_mid - g_start) * f);
                b = int(b_start + (b_mid - b_start) * f);
            } else {
                # Fase 2: Biru ke Ungu
                f = (ratio - 0.5) * 2;
                r = int(r_mid + (r_end - r_mid) * f);
                g = int(g_mid + (g_end - g_mid) * f);
                b = int(b_mid + (b_end - b_mid) * f);
            }
            printf "\033[38;2;%d;%d;%dm%s", r, g, b, substr(text, i+1, 1);
        }
        printf "\033[0m\n";
    }'
}
# ==========================================
#  FUNGSI SPEEDTEST V4 (FIXED LOADING LEAK)
# ==========================================
function run_speedtest_cool() {
    # Definisi Warna (Gunakan \e agar lebih universal di bash)
    local CYAN='\e[0;36m'
    local GREEN='\e[0;32m'
    local RED='\e[0;31m'
    local YELLOW='\e[1;33m'
    local BLUE='\e[0;34m'
    local PURPLE='\e[0;35m'
    local BOLD='\e[1m'
    local WHITE='\e[1;37m'
    local NC='\e[0m'

    # Hapus file lama
    rm -f /tmp/speedtest.txt

    # Header Judul
    echo -e ""
    echo -e " ${CYAN}┌──────────────────────────────────────────┐${NC}"
    echo -e " ${CYAN}│${NC}      ${BOLD}${YELLOW}SPEEDTEST BY HOKAGE LEGEND${NC}          ${CYAN}│${NC}"
    echo -e " ${CYAN}└──────────────────────────────────────────┘${NC}"
    echo -e ""

    # --- ANIMASI LOADING (PERBAIKAN DISINI) ---
    # Kita gunakan %b untuk warna agar tidak bocor jadi teks
    (
        while :; do
            for s in / - \\ \|; do
                printf "\r ${CYAN}[${YELLOW} PROCESS ${CYAN}]${NC} ${BOLD}Sedang mengukur... %b%s%b" "${PURPLE}" "$s" "${NC}" 
                sleep 0.1
            done
        done
    ) &
    SPIN_PID=$!

    # --- JALANKAN SPEEDTEST ---
    # Redirect stderr ke null agar error text tidak merusak tampilan
    speedtest-cli --simple --secure > /tmp/speedtest.txt 2> /dev/null

    # --- MATIKAN ANIMASI ---
    kill $SPIN_PID 2>/dev/null
    wait $SPIN_PID 2>/dev/null
    # Bersihkan baris loading sampai bersih
    printf "\r%s\r" "                                                   "

    # --- AMBIL DATA ---
    if [[ ! -s /tmp/speedtest.txt ]]; then
        echo -e " ${RED}[ ERROR ]${NC} Gagal/Timeout. Cek koneksi internet."
    else
        # Parsing Data
        PING=$(cat /tmp/speedtest.txt | grep "Ping" | awk '{print $2}')
        UNIT_PING=$(cat /tmp/speedtest.txt | grep "Ping" | awk '{print $3}')
        
        DOWN=$(cat /tmp/speedtest.txt | grep "Download" | awk '{print $2}')
        UNIT_DOWN=$(cat /tmp/speedtest.txt | grep "Download" | awk '{print $3}')
        
        UP=$(cat /tmp/speedtest.txt | grep "Upload" | awk '{print $2}')
        UNIT_UP=$(cat /tmp/speedtest.txt | grep "Upload" | awk '{print $3}')

        # --- TAMPILAN HASIL ---
        local HR="════════════════════════════════════════"

        echo -e " ${CYAN}╔${HR}╗${NC}"
        printf " ${CYAN}║${NC}${BOLD}${GREEN}%-40s${NC}${CYAN}║${NC}\n" "              RESULT DATA"
        echo -e " ${CYAN}╠${HR}╣${NC}"
        
        printf " ${CYAN}║${NC}  ${BOLD}%-9s %-15s %-12s${NC} ${CYAN}║${NC}\n" "TIPE" "VALUE" "UNIT"
        
        echo -e " ${CYAN}╠${HR}╣${NC}"
        
        printf " ${CYAN}║${NC}  ${PURPLE}%-9s${NC} ${WHITE}%-15s${NC} ${YELLOW}%-12s${NC} ${CYAN}║${NC}\n" "LATENCY" "$PING" "$UNIT_PING"
        printf " ${CYAN}║${NC}  ${GREEN}%-9s${NC} ${WHITE}%-15s${NC} ${YELLOW}%-12s${NC} ${CYAN}║${NC}\n" "DOWNLOAD" "$DOWN" "$UNIT_DOWN"
        printf " ${CYAN}║${NC}  ${BLUE}%-9s${NC} ${WHITE}%-15s${NC} ${YELLOW}%-12s${NC} ${CYAN}║${NC}\n" "UPLOAD" "$UP" "$UNIT_UP"
        
        echo -e " ${CYAN}╚${HR}╝${NC}"
    fi
    
    rm -f /tmp/speedtest.txt
    echo -e ""
    read -n 1 -s -r -p "Press any key to back..."
}
# SYSTEM INFO GATHERING
# Mengambil data IP dan ISP sekali saja untuk mempercepat loading
IPVPS=$(curl -s ipv4.icanhazip.com)
ISP=$(cat /root/.info/.isp 2>/dev/null || echo "Unknown ISP")
CITY=$(cat /root/.info/.city 2>/dev/null || echo "Unknown City")
NS=$(cat /etc/xray/dns 2>/dev/null)
domain=$(cat /etc/xray/domain 2>/dev/null)
RAM=$(free -m | awk 'NR==2 {print $2}')
# Optimasi pengambilan load CPU agar tidak berat
LOADCPU=$(top -bn1 | grep "Cpu(s)" | sed "s/.*, *\([0-9.]*\)%* id.*/\1/" | awk '{print 100 - $1"%"}')
MODEL=$(cat /etc/os-release | grep -w PRETTY_NAME | head -n1 | sed 's/=//g' | sed 's/"//g' | sed 's/PRETTY_NAME//g')
CORE=$(grep -c cpu[0-9] /proc/stat)
DATEVPS=$(date +'%d-%m-%Y')
TIMEZONE=$(date +'%H-%M-%S')
SERONLINE=$(uptime -p | cut -d " " -f 2-10000)

clear
MYIP=$(curl -sS ipv4.icanhazip.com)
echo ""

# LICENSING CHECK (Sederhana)
izinsc="https://raw.githubusercontent.com/hokagelegend9999/ijin/refs/heads/main/alpha"
# Ambil semua data user sekali jalan untuk mengurangi request curl
USER_DATA=$(curl -s ${izinsc} | grep $MYIP)
username=$(echo "$USER_DATA" | awk '{print $2}')
valid=$(echo "$USER_DATA" | awk '{print $3}')

# Simpan ke file lokal (opsional, untuk cache)
echo "$username" >/usr/bin/user
echo "$valid" >/usr/bin/e

# DETAIL ORDER
oid=$(cat /usr/bin/ver 2>/dev/null)
exp=$valid

# CERTIFICATE STATUS
today=$(date +"%Y-%m-%d")
d1=$(date -d "$valid" +%s)
d2=$(date -d "$today" +%s)
certifacate=$(((d1 - d2) / 86400))

# Status Expired Or Active
if [[ "$d1" -ge "$d2" ]]; then
    sts="${green}Active${NC}"
else
    sts="${RED}Expired${NC}"
fi

# Getting CPU & RAM Info
tram=$( free -m | awk 'NR==2 {print $2}' )
uram=$( free -m | awk 'NR==2 {print $3}' )
fram=$( free -m | awk 'NR==2 {print $4}' )

clear
# SERVICE STATUS CHECK
# Menggunakan systemctl is-active untuk cek lebih cepat & akurat daripada grep text
cek_service() {
    if systemctl is-active --quiet "$1"; then
        echo "${green}ON🟢${NC}"
    else
        echo "${RED}🔴${NC} "
    fi
}

# Cek WS ePro manual karena service name mungkin beda (ws)
ssh_ws_status=$(systemctl is-active --quiet ws && echo "${green}ON🟢${NC}" || echo "${RED}🔴${NC} ")

status_ssh=$(cek_service ssh)
status_haproxy=$(cek_service haproxy)
status_xray=$(cek_service xray)
status_nginx=$(cek_service nginx)
status_dropbear=$(cek_service dropbear)
status_zivpn=$(cek_service zivpn)
status_udp_custom=$(cek_service udp-custom)

# INFO AKUN (XRAY)
# Menggunakan grep -c langsung tanpa loop
vla=$(grep -c -E "^#& " "/etc/xray/config.json" 2>/dev/null || echo 0)
let vla=$vla/2
vma=$(grep -c -E "^### " "/etc/xray/config.json" 2>/dev/null || echo 0)
let vma=$vma/2
trb=$(grep -c -E "^#! " "/etc/xray/config.json" 2>/dev/null || echo 0)
let trb=$trb/2
ssa=$(grep -c -E "^#ss# " "/etc/xray/config.json" 2>/dev/null || echo 0)
let ssa=$ssa/2
ssh1=$(awk -F: '$3 >= 1000 && $1 != "nobody" {print $1}' /etc/passwd | wc -l)

# VISUAL ASSETS
KANAN="\033[1;32m<\033[1;33m<\033[1;31m<\033[1;31m$NC"
KIRI="\033[1;32m>\033[1;33m>\033[1;31m>\033[1;31m$NC"
r="\033[1;31m" 
a=" ${CYAN}ACCOUNT PREMIUM" 

# ==================================================
# HEADER MENU
# ==================================================
echo -e " "
print_gradient "╭══════════════════════════════════════════════════════════╮"
print_gradient "│    WELCOME TO  HOKAGE LEGEND STORE AUTOSCRIPT PREMIUM    │"
print_gradient "╰══════════════════════════════════════════════════════════╯"
echo -e " ${z}══════════════════════════════════════════════════════════${NC}"
echo -e " ${z}$NC$r ⇲ $NC$y System OS ${NC}        $Blue=$NC $MODEL${NC}"
echo -e " ${z}$NC$r ⇲ $NC$y ISP ${NC}              $Blue=$NC $ISP${NC}"
echo -e " ${z}$NC$r ⇲ $NC$y CITY ${NC}             $Blue=$NC $CITY${NC}"
echo -e " ${z}$NC$r ⇲ $NC$y Server RAM ${NC}       $Blue=$NC $tram MB $NC"
echo -e " ${z}$NC$r ⇲ $NC$y Core Cpu ${NC}         $Blue=$NC $CORE${NC}"
echo -e " ${z}$NC$r ⇲ $NC$y Uptime Server ${NC}    $Blue=$NC $SERONLINE${NC}"
echo -e " ${z}$NC$r ⇲ $NC$y Date ${NC}             $Blue=$NC $DATEVPS${NC}"
echo -e " ${z}$NC$r ⇲ $NC$y Time ${NC}             $Blue=$NC $TIMEZONE${NC}"
echo -e " ${z}$NC$r ⇲ $NC$y Domain ${NC}           $Blue=$NC $domain${NC}"
echo -e " ${z}══════════════════════════════════════════════════════════${NC}"
echo -e "             ${KIRI} ${Blue}INFORMATION ACCOUNT ON VPS${NC} ${KANAN}"
echo -e "           ${NC}┌─────────────────────────────────────┐${NC}"
echo -e "                 ${CYAN}ACCOUNT SSH/OVPN/UDP${NC}   $y=$NC $ssh1${NC}"
echo -e "                 ${CYAN}ACCOUNT VMESS/WS/GRPC${NC}  $y=$NC $vma$NC"
echo -e "                 ${CYAN}ACCOUNT VLESS/WS/GRPC${NC}  $y=$NC $vla$NC" 
echo -e "                 ${CYAN}ACCOUNT TROJAN/WS/GRPC${NC} $y=$NC $trb${NC}"
echo -e "                 ${CYAN}ACCOUNT SHADOW/WS/GRPC${NC} $y=$NC $ssa${NC}"
echo -e "           ${NC}└─────────────────────────────────────┘${NC}"
echo -e "               ${KIRI} ${RED} HOKAGE LEGEND STORE TUNNELING  ${NC} ${KANAN}"
echo -e " ${z}╭════════════════╮╭══════════════════╮╭════════════════════╮${NC}"
echo -e " ${z}│${NC}$y SSH$NC     : $status_ssh" "  $y NGINX$NC      : $status_nginx" "    $y XRAY$NC    : $status_xray  $NC${z}│$NC" 
echo -e " ${z}│${NC}$y WS-ePRO$NC : $ssh_ws_status"  " $y  DROPBEAR$NC   : $status_dropbear" "    $y HAPROXY$NC : $status_haproxy  $NC${z}│$NC" 
echo -e " ${z}│${NC}$y ZiVPN$NC   : $status_zivpn"    "  $y UDP-CUSTOM$NC : $status_udp_custom" "                     $NC${z}│$NC" 
echo -e " ${z}╰════════════════╯╰══════════════════╯╰════════════════════╯${NC}"
echo -e "             ${KIRI} ${grenbo}⇱ ALL FITUR SC TUNNELING ⇲${NC} ${KANAN}"
echo -e "    ${z}══════════════════════════════════════════════════════${NC}"
echo -e "             ${z}$NC [${r}01${NC}]$green MENU SSH$NC        ${z}│$NC [${r}06${NC}]$green MENU TRIAL$NC     ${z} $NC"
echo -e "             ${z}$NC [${r}02${NC}]$green MENU VMESS$NC      ${z}│$NC [${r}07${NC}]$green SPEEDTEST$NC    ${z} $NC"
echo -e "             ${z}$NC [${r}03${NC}]$green MENU VLESS$NC      ${z}│$NC [${r}08${NC}]$green MENU UTILITY$NC   ${z} $NC"
echo -e "             ${z}$NC [${r}04${NC}]$green MENU TROJAN$NC     ${z}│$NC [${r}09${NC}]$green MENU ZIVPN$NC     ${z} $NC"
echo -e "             ${z}$NC [${r}05${NC}]$green MENU SSWS$NC       ${z}│$NC [${r}10${NC}]$green CEK VPS$NC        ${z} $NC"
echo -e "    ${z}══════════════════════════════════════════════════════${NC}"
echo -e "             ${KIRI}${z} INFORMATION YOUR ACTIVE PERIOD ${z}${KANAN}"
echo -e " ${z}╭══════════════════════════════════════════════════════════╮${NC}"
echo -e " ${z}    $NC${z} Developer$NC  ${z} =$NC HOKAGE LEGEND STORE"
echo -e " ${z}    $NC${z} Telegram$NC   ${z} =$NC https://t.me/hokagelegend1"
echo -e " ${z}    $NC${z} IP ADDRESS ${z} =$NC $IPVPS${NC}"
echo -e " ${z}    $NC${z} User$NC       ${z} =$NC $username"
echo -e " ${z}    $NC${z} Exp Script$NC ${z} =$NC $exp $certifacate Days$NC $sts"
echo -e " ${z}╰══════════════════════════════════════════════════════════╯${NC}"
echo -e "         ${KIRI}\033[5m\033[35mTHANKS YOU FOR \033[34mUSING SCRIPT \033[31mHOKAGE LEGEND\033[0m${KANAN}"
echo -e ""
read -p " PILIH MENU DENGAN CARA KETIK 1/10 : " opt
echo -e ""
case $opt in
1 | 01) clear ; m-sshws ;;
2 | 02) clear ; m-vmess ;;
3 | 03) clear ; m-vless ;;
4 | 04) clear ; m-trojan ;;
5 | 05) clear ; m-ssws ;;
6 | 06) clear ; m-trial ;;
7 | 07) clear ; run_speedtest_cool ; menu ;;
8 | 08) clear ; menu-x ;;
9 | 09) clear ; zivpn-menu ;;
10 | 10) clear ; cek-vps ;;
0 | 00) exit ;;
x) menu ;;
*) clear ; echo -e ; menu ;;
esac
