#!/bin/bash
set -e
CHATID=$(cat /root/telebotvpn/idteleowner 2>/dev/null || true)
KEY=$(cat /root/telebotvpn/tokentelebotserver 2>/dev/null || true)
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
[[ "$user" =~ ^[A-Za-z0-9_-]{3,32}$ ]] || { echo "invalid username"; exit 1; }
grep -qE "^### $user " /etc/xray/shadowsocks/.shadowsocks.db 2>/dev/null && { echo "Username sudah terpakai."; exit 1; }
exp=$(date -d "$masaaktif days" +%Y-%m-%d)
password=$(cat /proc/sys/kernel/random/uuid)
method="aes-256-gcm"
sed -i '/#ssws$/a\### '"$user $exp"'\
},{"password": "'"$password"'","method": "'"$method"'","email": "'"$user"'"' /etc/xray/shadowsocks/config.json
sed -i '/#ssgrpc$/a\### '"$user $exp"'\
},{"password": "'"$password"'","method": "'"$method"'","email": "'"$user"'"' /etc/xray/shadowsocks/config.json
mkdir -p /etc/kyt/limit/shadowsocks/ip
[[ "$iplimit" =~ ^[0-9]+$ ]] && [[ "$iplimit" -gt 0 ]] && { echo "$iplimit" >/etc/xray/shadowsocks/${user}IP; echo "$iplimit" >/etc/kyt/limit/shadowsocks/ip/$user; }
Quota=${Quota:-0}; q=$(echo "$Quota"|tr -cd 0-9); q=${q:-0}; [[ "$q" -gt 0 ]] && echo $((q*1024*1024*1024)) >/etc/xray/shadowsocks/$user
sed -i "/^### ${user} /d" /etc/xray/shadowsocks/.shadowsocks.db 2>/dev/null || true
echo "### $user $exp $password" >>/etc/xray/shadowsocks/.shadowsocks.db
enc=$(printf '%s' "$method:$password"|base64 -w0)
ws="ss://${enc}@${domain}:443?plugin=xray-plugin;mux=0;path=/ss-ws;host=${domain};tls;network=ws#${user}-WS"
grpc="ss://${enc}@${domain}:443?plugin=xray-plugin;mux=0;serviceName=ss-grpc;host=${domain};tls#${user}-gRPC"
cat >/var/www/html/shadowsocks-$user.txt <<EOF
Host: $domain
User: $user
Method: $method
Password: $password
WS: $ws
gRPC: $grpc
Expire: $exp
EOF
systemctl restart shadowsocks@config >/dev/null 2>&1 || true
echo "$domain"; echo "$user"; echo "$password"; echo "$ws"; echo "$grpc"; echo "$exp"
