# !/bin/bash
# ████████╗░█████╗░██╗░░██╗░█████╗░██╗░░░██╗██████╗░███╗░░██╗
# ╚══██╔══╝██╔══██╗██║░██╔╝██╔══██╗██║░░░██║██╔══██╗████╗░██║
# ░░░██║░░░██║░░██║█████═╝░██║░░██║╚██╗░██╔╝██████╔╝██╔██╗██║
# ░░░██║░░░██║░░██║██╔═██╗░██║░░██║░╚████╔╝░██╔═══╝░██║╚████║
# ░░░██║░░░╚█████╔╝██║░╚██╗╚█████╔╝░░╚██╔╝░░██║░░░░░██║░╚███║
# ░░░╚═╝░░░░╚════╝░╚═╝░░╚═╝░╚════╝░░░░╚═╝░░░╚═╝░░░░░╚═╝░░╚══╝

BICyan='\033[1;96m'       # Cyan
BIWhite='\033[1;97m'      # White
UWhite='\033[4;37m'       # White
BIYellow='\033[1;93m'     # Yellow
BGWHITE='\E[40;1;37m'     # Bgwhite

RED="\033[31m"
NC='\e[0m'
GREEN='\033[0;32m'
ORANGE='\033[0;33m'
YELL='\033[0;33m'

CHATID=$(grep -E "^#bot# " "/etc/bot/.bot.db" | cut -d ' ' -f 3)
KEY=$(grep -E "^#bot# " "/etc/bot/.bot.db" | cut -d ' ' -f 2)
TIME="10"
URL="https://api.telegram.org/bot$KEY/sendMessage"
ISP=$(cat /etc/xray/isp)
CITY=$(cat /etc/xray/city)
IP=$(cat /etc/xray/ipvps)
MYIP=$(cat /etc/xray/ipvps)
domain=$(cat /etc/xray/domain)

clear
echo -e "${BIYellow}───────────────────────────────────${NC}"
echo -e "${BGWHITE}     CREATE V2RAY VMESS ACCOUNT    ${NC}"
echo -e "${BIYellow}───────────────────────────────────${NC}"
read -p "Username  : " user
if grep -qiw "$user" /etc/xray/config.json; then
clear
echo -e "${BIYellow}───────────────────────────────────${NC}"
echo -e "${BGWHITE}     CREATE V2RAY VMESS ACCOUNT    ${NC}"
echo -e "${BIYellow}───────────────────────────────────${NC}"
echo -e ""
echo -e "Username has been used."
echo -e ""
echo -e "${BIYellow}───────────────────────────────────${NC}"
echo -e ""
read -n 1 -s -r -p "Press any key to back"
m-vmess
fi

read -p "Limit Ip  : " iplimit
read -p "Max Quota : " Quota
read -p "Expired   : " masaaktif

generateRandomString() {
    # Generate string acak menggunakan /dev/urandom
    string=$(LC_CTYPE=C tr -dc 'a-zA-Z0-9' < /dev/urandom | fold -w "$1" | head -n 1)
    # Return string acak
    echo "xrayvmess$string"
}

# Panggil fungsi generateRandomString dengan panjang 15 karakter
uuid=$(generateRandomString 15)

tgl=$(date -d "$masaaktif days" +"%d")
bln=$(date -d "$masaaktif days" +"%b")
bln1=$(date -d "$masaaktif days" +"%m")
thn=$(date -d "$masaaktif days" +"%Y")
expe="$tgl $bln, $thn"
exp_formatted="$thn-$bln1-$tgl"
tgl2=$(date +"%d")
bln2=$(date +"%b")
thn2=$(date +"%Y")
tnggl="$tgl2 $bln2, $thn2"
exp=`date -d "$masaaktif days" +"%Y-%m-%d"`
sed -i '/#vmess$/a\### '"$user $exp"'\
},{"id": "'""$uuid""'","alterId": '"0"',"email": "'""$user""'"' /etc/xray/config.json
sed -i '/#vmessgrpc$/a\### '"$user $exp"'\
},{"id": "'""$uuid""'","alterId": '"0"',"email": "'""$user""'"' /etc/xray/config.json

asu=`cat<<EOF
      {
      "v": "2",
      "ps": "${user}",
      "add": "${domain}",
      "port": "443",
      "id": "${uuid}",
      "aid": "0",
      "net": "ws",
      "path": "/vmess",
      "type": "none",
      "host": "${domain}",
      "tls": "tls"
}
EOF`
ask=`cat<<EOF
      {
      "v": "2",
      "ps": "${user}",
      "add": "${domain}",
      "port": "80",
      "id": "${uuid}",
      "aid": "0",
      "net": "ws",
      "path": "/vmess",
      "type": "none",
      "host": "${domain}",
      "tls": "none"
}
EOF`
grpc=`cat<<EOF
      {
      "v": "2",
      "ps": "${user}",
      "add": "${domain}",
      "port": "443",
      "id": "${uuid}",
      "aid": "0",
      "net": "grpc",
      "path": "vmess-grpc",
      "type": "none",
      "host": "${domain}",
      "tls": "tls"
}
EOF`

vmess_base641=$( base64 -w 0 <<< $vmess_json1)
vmess_base642=$( base64 -w 0 <<< $vmess_json2)
vmess_base643=$( base64 -w 0 <<< $vmess_json3)
vmesslink1="vmess://$(echo $asu | base64 -w 0)"
vmesslink2="vmess://$(echo $ask | base64 -w 0)"
vmesslink3="vmess://$(echo $grpc | base64 -w 0)"

if [ ! -e /etc/vmess ]; then
  mkdir -p /etc/vmess
fi

if [[ $iplimit -gt 0 ]]; then
mkdir -p /etc/kyt/limit/vmess/ip
echo -e "$iplimit" > /etc/kyt/limit/vmess/ip/$user
else
echo > /dev/null
fi

if [ -z ${Quota} ]; then
  Quota="0"
fi

c=$(echo "${Quota}" | sed 's/[^0-9]*//g')
d=$((${c} * 1024 * 1024 * 1024))

if [[ ${c} != "0" ]]; then
  echo "${d}" >/etc/vmess/${user}
fi

DATADB=$(cat /etc/vmess/.vmess.db | grep "^###" | grep -w "${user}" | awk '{print $2}')
if [[ "${DATADB}" != '' ]]; then
  sed -i "/\b${user}\b/d" /etc/vmess/.vmess.db
fi
echo "### ${user} ${exp} ${uuid}" >> /etc/vmess/.vmess.db

cat > /var/www/html/vmess-$user.txt <<-END
----------------------
Status Create VMESS Success
----------------------
ISP   : $ISP
City  : $CITY
----------------------
Host  : $domain
User  : $user
UUID  : $uuid
Max   : $iplimit IP
Quota : $Quota GB
Port  : 443, 80
Path  : /vmess
----------------------
Tls   : $vmesslink1
----------------------
nTls  : $vmesslink2
----------------------
Grpc  : $vmesslink3
----------------------
Exp   : $exp_formatted
----------------------
END

clear

TEXT="
──────────────────────
Status Create VMESS Success
──────────────────────
<code>✧ ISP   :</code> <code>$ISP</code>
<code>✧ City  :</code> <code>$CITY</code>
──────────────────────
<code>✧ Host  :</code> <code>$domain</code>
<code>✧ IP    :</code> <code>$MYIP</code>
<code>✧ User  :</code> <code>$user</code>
<code>✧ UUID  :</code> <code>$uuid</code>
<code>✧ Max   :</code> <code>$iplimit IP</code>
<code>✧ Quota :</code> <code>$Quota GB</code>
<code>✧ Port  :</code> <code>443, 80</code>
<code>✧ Path  :</code> <code>/vmess</code>
──────────────────────
<code>✧ Tls   :</code> <code>$vmesslink1</code>
──────────────────────
<code>✧ nTls  :</code> <code>$vmesslink2</code>
──────────────────────
<code>✧ Grpc  :</code> <code>$vmesslink3</code>
──────────────────────
<code>✧ Doc   :</code> https://${domain}:81/vmess-$user.txt
──────────────────────
<code>✧ Exp   :</code> <code>$exp_formatted</code>
────────────────────── "

curl -s --max-time $TIME -d "chat_id=$CHATID&disable_web_page_preview=1&text=$TEXT&parse_mode=html" $URL >/dev/null

systemctl restart xray > /dev/null 2>&1
clear
echo -e "${BIYellow}───────────────────────────────────${NC}"
echo -e "${NC}Status Create VMESS Success${NC}"
echo -e "${BIYellow}───────────────────────────────────${NC}"
echo -e "${NC}✧ ISP   : $ISP${NC}"
echo -e "${NC}✧ City  : $CITY${NC}"
echo -e "${BIYellow}───────────────────────────────────${NC}"
echo -e "${NC}✧ Host  : $domain${NC}"
echo -e "${NC}✧ IP    : $MYIP${NC}"
echo -e "${NC}✧ User  : $user${NC}"
echo -e "${NC}✧ UUID  : $uuid${NC}"
echo -e "${NC}✧ Max   : $iplimit IP${NC}"
echo -e "${NC}✧ Quota : $Quota GB${NC}"
echo -e "${NC}✧ Port  : 443, 80${NC}"
echo -e "${NC}✧ Path  : /vmess${NC}"
echo -e "${BIYellow}───────────────────────────────────${NC}"
echo -e "${NC}✧ TLS   : $vmesslink1${NC}"
echo -e "${BIYellow}───────────────────────────────────${NC}"
echo -e "${NC}✧ nTLS  : $vmesslink2${NC}"
echo -e "${BIYellow}───────────────────────────────────${NC}"
echo -e "${NC}✧ Grpc  : $vmesslink3${NC}"
echo -e "${BIYellow}───────────────────────────────────${NC}"
echo -e "${NC}✧ Doc   : https://${domain}:81/vmess-$user.txt${NC}"
echo -e "${BIYellow}───────────────────────────────────${NC}"
echo -e "${NC}✧ Exp   : $exp_formatted${NC}"
echo -e "${BIYellow}───────────────────────────────────${NC}"
echo -e ""
read -n 1 -s -r -p "Press any key to back"
m-vmess