#!/bin/bash
# AUTOSCRIPT INTERFLAZZ ID

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=$(cat /root/telebotvpn/idteleowner 2>/dev/null)
KEY=$(cat /root/telebotvpn/tokentelebotserver 2>/dev/null)
TIME="10"
URL="https://api.telegram.org/bot$KEY/sendMessage"
ISP=$(cat /etc/xray/isp 2>/dev/null || echo "Unknown ISP")
CITY=$(cat /etc/xray/city 2>/dev/null || echo "Unknown City")
IP=$(cat /etc/xray/ipvps 2>/dev/null || wget -qO- ipv4.icanhazip.com)
MYIP=$(cat /etc/xray/ipvps 2>/dev/null || wget -qO- ipv4.icanhazip.com)
domain=$(cat /etc/xray/domain 2>/dev/null || hostname -f)

read -p "Username : " user
read -p "Limit Ip : " iplimit
read -p "Mx Quota : " Quota
read -p "Expireed : " masaaktif

# Check if user already exists
if grep -qiw "$user" /etc/xray/vmess/config.json 2>/dev/null || grep -qiw "^### $user " /etc/xray/vmess/.vmess.db 2>/dev/null; then
    echo -e "Username sudah terpakai."
    exit 0
fi

uuid=$(cat /proc/sys/kernel/random/uuid)

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"`

mkdir -p /etc/xray/vmess /var/www/html /etc/kyt/limit/vmess/ip

if [ ! -f "/etc/xray/vmess/config.json" ]; then
    echo '{"inbounds": []}' > /etc/xray/vmess/config.json
fi

sed -i '/#vmess$/a\### '"$user $exp"'\
},{"id": "'""$uuid""'","email": "'""$user""'"' /etc/xray/vmess/config.json
sed -i '/#vmessgrpc$/a\### '"$user $exp"'\
},{"id": "'""$uuid""'","email": "'""$user""'"' /etc/xray/vmess/config.json

cat >/etc/xray/vmess/$user-tls.json <<EOF
{
    "v": "2",
    "ps": "$user WS (CDN) TLS",
    "add": "${domain}",
    "port": "443",
    "id": "${uuid}",
    "aid": "0",
    "net": "ws",
    "path": "/vmess",
    "type": "none",
    "host": "${domain}",
    "tls": "tls"
}
EOF

cat >/etc/xray/vmess/$user-non.json <<EOF
{
    "v": "2",
    "ps": "$user WS (CDN) NTLS",
    "add": "${domain}",
    "port": "80",
    "id": "${uuid}",
    "aid": "0",
    "net": "ws",
    "path": "/vmess",
    "type": "none",
    "host": "${domain}",
    "tls": "none"
}
EOF

cat >/etc/xray/vmess/$user-grpc.json <<EOF
{
    "v": "2",
    "ps": "$user (SNI) GRPC",
    "add": "${domain}",
    "port": "443",
    "id": "${uuid}",
    "aid": "0",
    "net": "grpc",
    "path": "vmess-grpc",
    "type": "none",
    "host": "${domain}",
    "tls": "tls"
}
EOF

vmesslink1="vmess://$(base64 -w 0 /etc/xray/vmess/$user-tls.json)"
vmesslink2="vmess://$(base64 -w 0 /etc/xray/vmess/$user-non.json)"
vmesslink3="vmess://$(base64 -w 0 /etc/xray/vmess/$user-grpc.json)"

if [[ $iplimit -gt 0 ]]; then
    echo -e "$iplimit" > /etc/xray/vmess/${user}IP
    echo -e "$iplimit" > /etc/kyt/limit/vmess/ip/$user
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/xray/vmess/${user}
fi

touch /etc/xray/vmess/.vmess.db
sed -i "/\b${user}\b/d" /etc/xray/vmess/.vmess.db 2>/dev/null
echo "### ${user} ${exp} ${uuid}" >> /etc/xray/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 vmess@config > /dev/null 2>&1
atq | awk '{print $1}' | while read job; do at -c "$job" | grep -q "autobackupbot" && atrm "$job"; done &> /dev/null
echo "autobackupbot" | at now + 30 minutes &> /dev/null

echo "$ISP"
echo "$CITY"
echo "$domain"
echo "$user"
echo "$uuid"
echo "$vmesslink1"
echo "$vmesslink2"
echo "$vmesslink3"
echo "$exp_formatted"