#!/bin/bash

vps_ip=$(wget -qO- ipv4.icanhazip.com)
data_acc=$(awk '/^### / {print $3; exit}' /etc/interflazz/access 2>/dev/null)

if [ -n "$data_acc" ]; then

  expiry_date=$(date -d "$data_acc" +%s)
  current_date=$(date +%s)
  remaining_days=$(( (expiry_date - current_date) / 86400 ))

if [ $expiry_date -gt $current_date ]; then

# colors
red="\e[91m"
green="\e[92m"
yellow="\e[93m"
blue="\e[94m"
purple="\e[95m"
cyan="\e[96m"
white="\e[97m"
reset="\e[0m"

# Function to print rainbow text
print_rainbow() {
    local text="$1"
    local length=${#text}
    local start_color=(255 255 0) # yellow
    local mid_color=(0 255 0)     # green
    local end_color=(255 255 0)   # yellow

    for ((i = 0; i < length; i++)); do
        local progress=$((i * 100 / (length - 1)))

        if [ $progress -lt 50 ]; then
            local factor=$((progress * 2))
            r=$((start_color[0] * (100 - factor) / 100 + mid_color[0] * factor / 100))
            g=$((start_color[1] * (100 - factor) / 100 + mid_color[1] * factor / 100))
            b=$((start_color[2] * (100 - factor) / 100 + mid_color[2] * factor / 100))
        else
            local factor=$(((progress - 50) * 2))
            r=$((mid_color[0] * (100 - factor) / 100 + end_color[0] * factor / 100))
            g=$((mid_color[1] * (100 - factor) / 100 + end_color[1] * factor / 100))
            b=$((mid_color[2] * (100 - factor) / 100 + end_color[2] * factor / 100))
        fi

        printf "\e[38;2;%d;%d;%dm%s" "$r" "$g" "$b" "${text:$i:1}"
    done
    echo -e "$reset"
}
# variable
domain=$(cat /etc/xray/domain 2>/dev/null || hostname -f)
clear

print_rainbow "┌─────────────────────────────────────────┐"
print_rainbow "│        DELETE SSH OVPN ACCOUNT          │"
print_rainbow "└─────────────────────────────────────────┘"

account_count=$(grep -c -E "^### " "/etc/ssh/.ssh.db")
if [[ ${account_count} == '0' ]]; then
    echo ""
    echo "         No accounts available"
    echo ""
    exit 0
fi

echo -e "${yellow}choose how to delete the account:${reset}"
echo -e "${green}1) select by number${reset}"
echo -e "${green}2) enter username manually${reset}"
read -p "your choice [1-2]: " delete_choice

case $delete_choice in
    1)
        clear
        print_rainbow "┌─────────────────────────────────────────┐"
        print_rainbow "│        DELETE SSH OVPN ACCOUNT          │"
        print_rainbow "└─────────────────────────────────────────┘"
        echo " ┌────┬────────────────────┬─────────────┐"
        echo " │ No │ Username           │  Days Left  │"
        echo " ├────┼────────────────────┼─────────────┤"
        grep -E "^### " "/etc/ssh/.ssh.db" | awk '{
            cmd = "date -d \"" $3 "\" +%s"
            cmd | getline exp_timestamp
            close(cmd)
            current_timestamp = systime()
            days_left = int((exp_timestamp - current_timestamp) / 86400)
            if (days_left < 0) days_left = 0
            printf " │ %-2d │ %-18s │ %-11s │\n", NR, $2, days_left " days"
        }'
        echo " └────┴────────────────────┴─────────────┘"
        echo ""
        
        until [[ $client_number =~ ^[0-9]+$ && $client_number -ge 1 && $client_number -le $account_count ]]; do
            read -rp "select account number [1-${account_count}]: " client_number
        done
        
        user=$(grep -E "^### " "/etc/ssh/.ssh.db" | cut -d ' ' -f 2 | sed -n "${client_number}"p)
        exp=$(grep -E "^### " "/etc/ssh/.ssh.db" | cut -d ' ' -f 3 | sed -n "${client_number}"p)
        ;;
    2)
        read -rp "Enter username: " user
        if ! grep -qE "^### $user " "/etc/ssh/.ssh.db"; then
            echo "Username not found"
            exit 1
        fi
        exp=$(grep -E "^### $user " "/etc/ssh/.ssh.db" | cut -d ' ' -f 3)
        ;;
    *)
        echo "Invalid choice"
        exit 1
        ;;
esac

# Deletion confirmation
read -p "Are you sure you want to delete the account $user? (y/n): " confirm
if [[ $confirm != "y" && $confirm != "Y" ]]; then
    echo "Account deletion cancelled"
    exit 0
fi

# Deletion process
if userdel -f $user 2>/dev/null; then
    sed -i "/^### $user/d" /etc/ssh/.ssh.db
    rm -f /etc/xray/log-createssh-$user.log
    
    clear
    print_rainbow "┌─────────────────────────────────────────┐"
    print_rainbow "│  SSH/OVPN ACCOUNT DELETED SUCCESSFULLY  │"
    print_rainbow "└─────────────────────────────────────────┘"
    echo -e "  Username : $user"
    echo -e "  Expiration Date : $exp"
    print_rainbow "  ───────────────────────────"
else
    echo "Failed to delete account. Please check if the username is correct."
fi

echo ""
else
    echo -e "\e[38;5;130m────────────────────────────────────────────\033[0m"
    echo -e "\e[38;5;82m             AUTOSCRIPT INTERFLAZZ ID             \033[0m"
    echo -e "\e[38;5;130m────────────────────────────────────────────\033[0m"
    echo -e ""
    echo -e "            \033[31mPERMISSION DENIED !\033[0m"
    echo -e "   \033[0;33mYour VPS\033[0m $(wget -qO- ipv4.icanhazip.com) \033[0;33mHas been Banned\033[0m"
    echo -e "     \033[0;33mBuy access permissions for scripts\033[0m"
    echo -e "             \033[0;33mContact Admin :\033[0m"
    echo -e "      \033[0;32mWhatsApp\033[0m wa.me/+6285196156105"
    echo -e "      \033[0;96mTelegram\033[0m t.me/interflazzid"
    echo -e "\e[38;5;130m────────────────────────────────────────────\033[0m"
    exit
fi
else
    echo -e "\e[38;5;130m────────────────────────────────────────────\033[0m"
    echo -e "\e[38;5;82m             AUTOSCRIPT INTERFLAZZ ID             \033[0m"
    echo -e "\e[38;5;130m────────────────────────────────────────────\033[0m"
    echo -e ""
    echo -e "            \033[31mPERMISSION DENIED !\033[0m"
    echo -e "   \033[0;33mYour VPS\033[0m $(wget -qO- ipv4.icanhazip.com) \033[0;33mHas been Banned\033[0m"
    echo -e "     \033[0;33mBuy access permissions for scripts\033[0m"
    echo -e "             \033[0;33mContact Admin :\033[0m"
    echo -e "      \033[0;32mWhatsApp\033[0m wa.me/+6285196156105"
    echo -e "      \033[0;96mTelegram\033[0m t.me/interflazzid"
    echo -e "\e[38;5;130m────────────────────────────────────────────\033[0m"
    exit
fi