#!/bin/bash
# https://t.me/gemilangkinasih

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

if grep -qiw "$user" /etc/xray/trojan/config.json 2>/dev/null || grep -qiw "^### $user " /etc/xray/trojan/.trojan.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/trojan /var/www/html /etc/kyt/limit/trojan/ip

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

sed -i '/#trojan$/a\### '"$user $exp"'\
},{"password": "'""$uuid""'","email": "'""$user""'"' /etc/xray/trojan/config.json
sed -i '/#trojangrpc$/a\### '"$user $exp"'\
},{"password": "'""$uuid""'","email": "'""$user""'"' /etc/xray/trojan/config.json

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

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

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

trojanlink1="trojan://${uuid}@${domain}:443?path=/whatever/trojan&security=tls&host=${domain}&type=ws&sni=${domain}#${user}"
trojanlink2="trojan://${uuid}@${domain}:80?path=/whatever/trojan&security=none&host=${domain}&type=ws#${user}"
trojanlink3="trojan://${uuid}@${domain}:443?mode=gun&security=tls&authority=${domain}&type=grpc&serviceName=trojan-grpc&sni=${domain}#${user}"

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

touch /etc/xray/trojan/.trojan.db
sed -i "/\b${user}\b/d" /etc/xray/trojan/.trojan.db 2>/dev/null
echo "### ${user} ${exp} ${uuid}" >> /etc/xray/trojan/.trojan.db

cat >/var/www/html/trojan-$user.txt <<-END
----------------------
Status Create TROJAN Success
----------------------
ISP   : $ISP
City  : $CITY
----------------------
Host  : $domain
User  : $user
UUID  : $uuid
Max   : $iplimit IP
Quota : $Quota GB
Port  : 443, 80
Path  : /whatever/trojan
----------------------
WS    : $trojanlink1
----------------------
Grpc  : $trojanlink3
----------------------
Exp   : $exp_formatted
----------------------
END

clear

TEXT="
──────────────────────
Status Create TROJAN 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>/whatever/trojan</code>
──────────────────────
<code>WS, GRPC Check Link ↴</code>
──────────────────────
<code>✧ Doc   :</code> https://${domain}:81/trojan-$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 trojan@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 "$trojanlink1"
echo "$trojanlink2"
echo "$trojanlink3"
echo "$exp_formatted"