#!/bin/bash
# ==========================================
#  PREMIUM TRIAL SSH & ZIVPN (FULL OUTPUT)
#  MODIFIED BY GEMINI AI
# ==========================================

# --- INSTALL DEPENDENCY ---
if ! command -v jq &> /dev/null; then
    echo "Installing JQ..."
    apt-get install jq -y > /dev/null 2>&1
fi

# --- CONFIG VARIABLES ---
ZIVPN_CONFIG="/etc/zivpn/config.json"
ZIVPN_DB="/etc/zivpn/user-db.json"
SERVICE_NAME="zivpn.service"
LOG_FILE="/etc/user-create/user.log"

# --- COLORS (PREMIUM PALETTE) ---
NC='\e[0m'
RED='\033[0;31m'
GREEN='\033[0;32m'
ORANGE='\033[0;33m'
BLUE='\033[0;34m'
PURPLE='\033[0;35m'
CYAN='\033[0;36m'
LIGHT='\033[0;37m'
BOLD='\033[1m'
YELLOW='\033[1;93m'

# --- SYSTEM INFO ---
MYIP=$(curl -sS 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")
domain=$(cat /etc/xray/domain 2>/dev/null || echo "domain.com")
PUB=$(cat /etc/slowdns/server.pub 2>/dev/null || echo "key-not-found")
NS=$(cat /etc/xray/dns 2>/dev/null || echo "ns-not-found")
CHATID=$(grep -E "^#bot# " "/etc/bot/.bot.db" 2>/dev/null | cut -d ' ' -f 3)
KEY=$(grep -E "^#bot# " "/etc/bot/.bot.db" 2>/dev/null | cut -d ' ' -f 2)
URL="https://api.telegram.org/bot$KEY/sendMessage"

# Cek Port ZiVPN
if [[ -f "$ZIVPN_CONFIG" ]]; then
    UDP_ZIVPN=$(grep -o '"listen": *"[^"]*"' $ZIVPN_CONFIG | cut -d'"' -f4 | sed 's/://g' | sed 's/0.0.0.0//g')
else
    UDP_ZIVPN="5667"
fi
[ -z "$UDP_ZIVPN" ] && UDP_ZIVPN="5667"

clear
# --- INPUT VALIDATION (ANGKA ONLY) ---
echo -e "${YELLOW}☉————————————————————————☉${NC}"
echo -e "${BOLD}  CREATE TRIAL SSH & ZIVPN${NC}"
echo -e "${YELLOW}☉————————————————————————☉${NC}"
echo -e " Input Number for expired (Minutes)"
echo -e " Example: 60 for 1 hour"
echo -e ""

while true; do
    echo -ne " ${GREEN}Sett Expired [minutes] : ${NC}"
    read timer
    if [[ "$timer" =~ ^[0-9]+$ ]]; then
        break
    else
        echo -e " ${RED}[!] Error: Input must be a number!${NC}"
    fi
done

# --- GENERATE USER & PASS ---
Login=Trial`</dev/urandom tr -dc 0-9 | head -c4`
Pass=1
iplimit=1
Quota=1
Quota_Show="1 GB"

# --- 1. PROSES SYSTEM & SSH ---
useradd -e `date -d "1 days" +"%Y-%m-%d"` -s /bin/false -m $Login
echo -e "$Pass\n$Pass\n"|passwd $Login &> /dev/null

# Limit IP SSH
mkdir -p /etc/kyt/limit/ssh/ip
echo -e "$iplimit" > /etc/kyt/limit/ssh/ip/$Login

# Quota SSH
if [ -z ${Quota} ]; then Quota="0"; fi
c=$(echo "${Quota}" | sed 's/[^0-9]*//g')
d=$((${c} * 1024 * 1024 * 1024))
if [[ ${c} != "0" ]]; then
    if [ ! -d /etc/ssh ]; then mkdir -p /etc/ssh; fi
    echo "${d}" >/etc/ssh/${Login}
fi

# Database SSH 
expe=$(date -d "+${timer} minutes" +"%H:%M, %d-%b-%Y")
tnggl=$(date +"%d %b, %Y")
exp_date_iso=$(date -d "1 days" +"%Y-%m-%d")

if [ -f /etc/ssh/.ssh.db ]; then
    sed -i "/\b${Login}\b/d" /etc/ssh/.ssh.db
fi
echo "#ssh# ${Login} ${Pass} ${Quota} ${iplimit} ${expe}" >>/etc/ssh/.ssh.db

# --- 2. CRONJOB ---
cat> /etc/cron.d/trialssh-${Login} << END
SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
*/${timer} * * * * root /usr/local/sbin/z9dtrial ssh ${Login} ${timer}
END
service cron reload >/dev/null 2>&1

# --- 3. INTEGRASI ZIVPN ---
if [[ -f "$ZIVPN_CONFIG" ]]; then
    cp "$ZIVPN_CONFIG" "${ZIVPN_CONFIG}.bak"
    if ! jq -e ".auth.config | index(\"$Login\")" "$ZIVPN_CONFIG" > /dev/null; then
          jq --arg user "$Login" '.auth.config += [$user]' "$ZIVPN_CONFIG" > "${ZIVPN_CONFIG}.tmp" && mv "${ZIVPN_CONFIG}.tmp" "$ZIVPN_CONFIG"
    fi
    if [ ! -f "$ZIVPN_DB" ]; then echo "{}" > "$ZIVPN_DB"; fi
    jq --arg u "$Login" --arg e "$exp_date_iso" --arg q "$Quota_Show" --arg i "$iplimit" \
        '.[$u] = {exp: $e, quota: $q, ip: $i}' "$ZIVPN_DB" > "${ZIVPN_DB}.tmp" && mv "${ZIVPN_DB}.tmp" "$ZIVPN_DB"
    systemctl restart "$SERVICE_NAME"
fi

# --- 4. OUTPUT FILE (HTML) ---
cat > /var/www/html/ssh-$Login.txt <<-END
◇━━━━━━━━━━━━━━━━━◇
Format Trial SSH & ZIVPN
◇━━━━━━━━━━━━━━━━━◇
Username         : $Login
Password         : $Pass
ZIVPN Token      : $Login
◇━━━━━━━━━━━━━━━━━◇
IP               : $MYIP
Host             : $domain
Port OpenSSH     : 443, 80, 22
Port Dropbear    : 443, 109
Port SSH WS      : 80, 8080
Port SSH SSL WS  : 443
Port ZIVPN UDP   : $UDP_ZIVPN (All Port)
◇━━━━━━━━━━━━━━━━━◇
Aktif Selama     : $timer Menit (TRIAL)
Dibuat Pada      : $tnggl
Berakhir Pada    : $expe
◇━━━━━━━━━━━━━━━━━◇
Payload WSS: GET wss://BUG.COM/ HTTP/1.1[crlf]Host: $domain[crlf]Upgrade: websocket[crlf][crlf] 
◇━━━━━━━━━━━━━━━━━◇
OVPN Download : https://$domain:81/
◇━━━━━━━━━━━━━━━━━◇
END

# --- 5. OUTPUT TELEGRAM (FULL STYLE) ---
TEXT="
<code>☉——————————————————————————☉</code>
<code>☘️Success Trial SSH & ZIVPN☘️</code>
<code>☉——————————————————————————☉</code>
<code>Username         : </code> <code>$Login</code>
<code>Password         : </code> <code>$Pass</code>
<code>ZIVPN Token      : </code> <code>$Login</code>
<code>Limit Ip         : </code> <code>$iplimit</code>
<code>☉——————————————————————————☉</code>
<code>Host             : </code> <code>$domain</code>
<code>Limit Quota      : </code> <code>$Quota_Show</code>
<code>Host Slowdns     : </code> <code>$NS</code>
<code>IP               : $MYIP</code>
<code>ISP              : $ISP</code>
<code>CITY             : $CITY</code>
<code>Port OpenSSH     : 443, 80, 22</code>
<code>Port Dropbear    : 443, 109</code>
<code>Port SSH WS      : 80, 8080, 8081-9999 </code>
<code>Port SSH UDP     : 1-65535 </code>
<code>Port ZIVPN UDP   : $UDP_ZIVPN </code>
<code>Port SSH SSL WS  : 443</code>
<code>Port SSL/TLS     : 400-900</code>
<code>Port OVPN WS SSL : 443</code>
<code>Port OVPN SSL    : 443</code>
<code>Port OVPN TCP    : 443, 1194</code>
<code>Port OVPN UDP    : 2200</code>
<code>BadVPN UDP       : 7100, 7300, 7300</code>
<code>Pub Key          : </code> <code>$PUB</code>
<code>☉——————————————————————————☉</code>
<code>SSH WS       : </code>
<code>$domain:80@${Login}:${Pass}</code>
<code>SSH SSL      : </code>
<code>$domain:443@${Login}:${Pass}</code>
<code>SSH UDP      : </code>
<code>$domain:1-65535@${Login}:${Pass}</code>
<code>☉——————————————————————————☉</code>
<code>🧿Payload WS        : 🧿</code><code>GET / HTTP/1.1[crlf]host: $domain[crlf]Upgrade: Websocket[crlf][crlf]</code>
<code>☉——————————————————————————☉</code>
<code>🧿Payload WSS       : 🧿</code><code>GET wss://BUG.COM/ HTTP/1.1[crlf]Host: $domain[crlf]Upgrade: websocket[crlf][crlf]</code>
<code>☉——————————————————————————☉</code>
<code>🧿Payload Enhanced : 🧿</code><code>PATCH / HTTP/1.1[crlf]Host: $domain[crlf]Host: bug.com[crlf]Upgrade: websocket[crlf]Connection: Upgrade[crlf][crlf]</code>
<code>☉——————————————————————————☉</code>
OVPN Download : https://$domain:81/
<code>☉——————————————————————————☉</code>
<code>Save Link Account: </code>https://$domain:81/ssh-$Login.txt
<code>☉——————————————————————————☉</code>
Aktif Selama        : $timer Menit (Trial)
Dibuat Pada          : $tnggl
Berakhir Pada        : $expe
<code>☉——————————————————————————☉</code>
"
curl -s --max-time 10 -d "chat_id=$CHATID&disable_web_page_preview=1&text=$TEXT&parse_mode=html" $URL >/dev/null

# --- 6. OUTPUT TERMINAL (FULL PREMIUM STYLE + LOGGING) ---
# Memastikan direktori log ada
mkdir -p /etc/user-create

clear
echo ""
echo -e "${YELLOW}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${NC}" | tee -a $LOG_FILE
echo -e "${CYAN}          SUCCESS TRIAL SSH & ZIVPN              ${NC}" | tee -a $LOG_FILE
echo -e "${YELLOW}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${NC}" | tee -a $LOG_FILE
echo -e "${GREEN} User Information${NC}" | tee -a $LOG_FILE
echo -e "  ● Username      : ${LIGHT}$Login${NC}" | tee -a $LOG_FILE
echo -e "  ● Password      : ${LIGHT}$Pass${NC}" | tee -a $LOG_FILE
echo -e "  ● ZIVPN Token   : ${LIGHT}$Login${NC}" | tee -a $LOG_FILE
echo -e "  ● Limit IP      : ${LIGHT}$iplimit Device${NC}" | tee -a $LOG_FILE
echo -e "${YELLOW}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${NC}" | tee -a $LOG_FILE
echo -e "${GREEN} Server Information${NC}" | tee -a $LOG_FILE
echo -e "  ● Domain        : ${LIGHT}$domain${NC}" | tee -a $LOG_FILE
echo -e "  ● IP Address    : ${LIGHT}$MYIP${NC}" | tee -a $LOG_FILE
echo -e "  ● Limit Quota   : ${LIGHT}$Quota_Show${NC}" | tee -a $LOG_FILE
echo -e "  ● Host Slowdns  : ${LIGHT}$NS${NC}" | tee -a $LOG_FILE
echo -e "  ● ISP           : ${LIGHT}$ISP${NC}" | tee -a $LOG_FILE
echo -e "  ● Location      : ${LIGHT}$CITY${NC}" | tee -a $LOG_FILE
echo -e "${YELLOW}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${NC}" | tee -a $LOG_FILE
echo -e "${GREEN} Port Information${NC}" | tee -a $LOG_FILE
echo -e "  ● OpenSSH       : ${LIGHT}443, 80, 22${NC}" | tee -a $LOG_FILE
echo -e "  ● Dropbear      : ${LIGHT}443, 109${NC}" | tee -a $LOG_FILE
echo -e "  ● SSH WS        : ${LIGHT}80, 8080, 8880, 2082${NC}" | tee -a $LOG_FILE
echo -e "  ● SSH SSL WS    : ${LIGHT}443${NC}" | tee -a $LOG_FILE
echo -e "  ● SSH UDP       : ${LIGHT}1-65535${NC}" | tee -a $LOG_FILE
echo -e "  ● ZIVPN UDP     : ${LIGHT}$UDP_ZIVPN${NC}" | tee -a $LOG_FILE
echo -e "  ● OVPN SSL/TCP  : ${LIGHT}443, 1194${NC}" | tee -a $LOG_FILE
echo -e "  ● OVPN UDP      : ${LIGHT}2200${NC}" | tee -a $LOG_FILE
echo -e "  ● BadVPN UDP    : ${LIGHT}7100, 7300, 7300${NC}" | tee -a $LOG_FILE
echo -e "  ● Pub Key       : ${LIGHT}${PUB}${NC}" | tee -a $LOG_FILE
echo -e "${YELLOW}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${NC}" | tee -a $LOG_FILE
echo -e "${GREEN} Payload Websocket :${NC}" | tee -a $LOG_FILE
echo -e "${LIGHT}GET / HTTP/1.1[crlf]host: $domain[crlf]Upgrade: Websocket[crlf][crlf]${NC}" | tee -a $LOG_FILE
echo -e "${YELLOW}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${NC}" | tee -a $LOG_FILE
echo -e "${GREEN} Payload SSL / TLS :${NC}" | tee -a $LOG_FILE
echo -e "${LIGHT}GET wss://BUG.COM/ HTTP/1.1[crlf]Host: $domain[crlf]Upgrade: websocket[crlf][crlf]${NC}" | tee -a $LOG_FILE
echo -e "${YELLOW}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${NC}" | tee -a $LOG_FILE
echo -e "${GREEN} Payload Enhanced :${NC}" | tee -a $LOG_FILE
echo -e "${LIGHT}PATCH / HTTP/1.1[crlf]Host: $domain[crlf]Host: bug.com[crlf]Upgrade: websocket[crlf]Connection: Upgrade[crlf][crlf]${NC}" | tee -a $LOG_FILE
echo -e "${YELLOW}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${NC}" | tee -a $LOG_FILE
echo -e "  ● OVPN Download : ${BLUE}https://$domain:81/${NC}" | tee -a $LOG_FILE
echo -e "  ● Save Link     : ${BLUE}https://$domain:81/ssh-$Login.txt${NC}" | tee -a $LOG_FILE
echo -e "${YELLOW}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${NC}" | tee -a $LOG_FILE
echo -e "${GREEN} Active For      : ${LIGHT}$timer Menit (Trial)${NC}" | tee -a $LOG_FILE
echo -e "${GREEN} Created On      : ${LIGHT}$tnggl${NC}" | tee -a $LOG_FILE
echo -e "${GREEN} Expires On      : ${LIGHT}$expe${NC}" | tee -a $LOG_FILE
echo -e "${YELLOW}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${NC}" | tee -a $LOG_FILE
echo -e "\033[5m\033[35mTERIMAKASIH \033[34mSUDAH BERBELANJA \033[31mDI HOKAGE LEGEND\033[0m" | tee -a $LOG_FILE
echo ""
read -n 1 -s -r -p "Press any key to back to menu..."
menu