| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218 |
- #!/bin/bash
- restart(){
- title "REINICIANDO V2RAY"
- if [[ "$(v2ray restart|awk '{printf $3}')" = "success" ]]; then
- print_center -verd "v2ray restart success !"
- msg -bar
- sleep 3
- else
- print_center -verm2 "v2ray restart fail !"
- msg -bar
- sleep 3
- return
- fi
- }
- list(){
- name=$(printf '%-25s' "$2")
- fecha=$(printf '%-10s' "$3")
- if [[ "$4" = "EXP" ]]; then
- dias=$(msg -verm2 "[$4]")
- else
- dias=$(msg -verd "[$4]")
- fi
- echo -e "$(msg -verd " [$1]") $(msg -verm2 ">") $(msg -azu "$name") $(msg -verm2 "$fecha") $dias"
- }
- userDat(){
- n=$(printf '%-5s' 'N°')
- u=$(printf '%-25s' 'Usuarios')
- f=$(printf '%-10s' 'fech exp')
- msg -azu " $n $u $f dias"
- msg -bar
- }
- list_user(){
- unset seg
- seg=$(date +%s)
- userDat
- users=$(jq '.inbounds[].settings.clients | length' $config)
- for (( i = 0; i < $users; i++ )); do
- user=$(jq -r --argjson a "$i" '.inbounds[].settings.clients[$a].email' < $config)
- fecha=$(jq -r --argjson a "$i" '.inbounds[].settings.clients[$a].date' < $config)
- [[ "$user" = "null" ]] && continue
- seg_exp=$(date +%s --date="$fecha")
- exp="$(($(($seg_exp - $seg)) / 86400))"
- [[ "$exp" -lt "0" ]] && exp="EXP"
- list "$i" "$user" "$fecha" "$exp"
- done
- }
- col2(){
- msg -ne "$1" && msg -ama " $2"
- }
- vmess(){
- ps=$(jq -r .inbounds[].settings.clients[$1].email $config) && [[ $ps = null ]] && ps="default"
- id=$(jq -r .inbounds[].settings.clients[$1].id $config)
- aid=$(jq .inbounds[].settings.clients[$1].alterId $config)
- add=$(jq -r .inbounds[].domain $config) && [[ $add = null ]] && add=$(wget -qO- ipv4.icanhazip.com)
- host=$(jq -r .inbounds[].streamSettings.wsSettings.headers.Host $config) && [[ $host = null ]] && host=''
- net=$(jq -r .inbounds[].streamSettings.network $config)
- path=$(jq -r .inbounds[].streamSettings.wsSettings.path $config) && [[ $path = null ]] && path=''
- port=$(jq .inbounds[].port $config)
- tls=$(jq -r .inbounds[].streamSettings.security $config)
- title "DATOS DE USUARIO: $ps"
- col2 "Remarks:" "$ps"
- col2 "Address:" "$add"
- col2 "Port:" "$port"
- col2 "id:" "$id"
- col2 "alterId:" "$aid"
- col2 "security:" "none"
- col2 "network:" "$net"
- col2 "Head Type:" "none"
- [[ ! $host = '' ]] && col2 "Host/SNI:" "$host"
- [[ ! $path = '' ]] && col2 "Path:" "$path"
- col2 "TLS:" "$tls"
- msg -bar
- var="{\"v\":\"2\",\"ps\":\"$ps\",\"add\":\"$add\",\"port\":$port,\"aid\":$aid,\"type\":\"none\",\"net\":\"$net\",\"path\":\"$path\",\"host\":\"$host\",\"id\":\"$id\",\"tls\":\"$tls\"}"
- msg -ama "vmess://$(echo "$var"|jq -r '.|@base64')"
- msg -bar
- read foo
- }
- newuser(){
- title "CREAR NUEVO USUARIO V2RAY"
- list_user
- back
- in_opcion "Nuevo Usuario"
- opcion=$(echo "$opcion" | tr -d '[[:space:]]')
- if [[ "$opcion" = "0" ]]; then
- return
- elif [[ -z "$opcion" ]]; then
- tput cuu1 && tput dl1
- msg -verm2 " no se puede ingresar campos vacios..."
- sleep 2
- return
- elif [[ ! "$opcion" =~ $tx_num ]]; then
- tput cuu1 && tput dl1
- msg -verm2 " ingrese solo letras y numeros..."
- sleep 2
- return
- elif [[ "${#opcion}" -lt "4" ]]; then
- tput cuu1 && tput dl1
- msg -verm2 " nombre demaciado corto!"
- sleep 2
- return
- elif [[ "$(jq -r '.inbounds[].settings.clients[].email' < $config|grep "$opcion")" ]]; then
- tput cuu1 && tput dl1
- msg -verm2 " este nombe de ususario ya existe..."
- sleep 2
- return
- fi
- email="$opcion"
- in_opcion "Dias de duracion"
- opcion=$(echo "$opcion" | tr -d '[[:space:]]')
- if [[ "$opcion" = "0" ]]; then
- return
- elif [[ ! "$opcion" =~ $numero ]]; then
- tput cuu1 && tput dl1
- msg -verm2 " ingresa solo numeros"
- sleep 2
- return
- fi
- dias=$(date '+%y-%m-%d' -d " +$opcion days")
- alterid=$(jq -r '.inbounds[].settings.clients[0].alterId' < $config)
- uuid=$(uuidgen)
- var="{\"alterId\":"$alterid",\"id\":\"$uuid\",\"email\":\"$email\",\"date\":\"$dias\"}"
-
- mv $config $temp
- jq --argjson a "$users" --argjson b "$var" '.inbounds[].settings.clients[$a] += $b' < $temp > $config
- chmod 777 $config
- rm -rf $temp
- restart
- vmess "$users"
- }
- deluser(){
- title "ELIMINAR USUARIOS"
- list_user
- back
- in_opcion "Opcion"
- opcion=$(echo "$opcion" | tr -d '[[:space:]]')
- if [[ "$opcion" = "0" ]]; then
- return
- elif [[ ! "$opcion" =~ $numero ]]; then
- tput cuu1 && tput dl1
- msg -verm2 " ingresa solo numeros"
- sleep 2
- return
- fi
- mv $config $temp
- jq --argjson a "$opcion" 'del(.inbounds[].settings.clients[$a])' < $temp > $config
- chmod 777 $config
- rm -rf $temp
- restart
- }
- datos(){
- title "DATOS DE USUARIOS"
- list_user
- back
- in_opcion "Opcion"
- vmess "$opcion"
- }
- respaldo(){
- title "COPIAS DE SEGURIDAD DE USUARIOS"
- menu_func "CREAR COPIA DE USUARIOS" "RESTAURAR COPIA DE USUARIO"
- back
- opcion=$(selection_fun 2)
- case $opcion in
- 1)rm -rf /root/User-V2ray.txt
- jq '.inbounds[].settings.clients' < $config > /root/User-V2ray.txt
- title "COPIA REALIZADO CON EXITO"
- msg -ne " Copia: " && msg -ama "/root/User-V2ray.txt"
- msg -bar
- read foo;;
- 2)[[ ! -e "/root/User-V2ray.txt" ]] && msg -verm2 " no hay copia de ususarios!" && sleep 3 && return
- var=$(cat /root/User-V2ray.txt)
- [[ -z "$var" ]] && msg -verm2 " copia de ususarios vacio!" && sleep 3 && return
- mv $config $temp
- jq --argjson a "$var" '.inbounds[].settings += {clients:$a}' < $temp > $config
- chmod 777 $config
- rm -rf $temp
- title "COPIA RESTAURADA CON EXITO"
- sleep 2
- restart;;
- 0)return;;
- esac
- }
- while :
- do
- title "GESTION DE USUARIOS V2RAY"
- menu_func "$(msg -verd "CREAR USUARIOS")" \
- "$(msg -verm2 "ELIMINAR USUARIOS")" \
- "BLOQUEAR USUARIOS $(msg -verm2 "(no diponible!)")" \
- "$(msg -ama "VMESS DE USUARIOS")" \
- "RESPALDO DE SEGURIDAD"
- back
- opcion=$(selection_fun 5)
- case $opcion in
- 1)newuser;;
- 2)deluser;;
- 3);;
- 4)datos;;
- 5)respaldo;;
- 0)break;;
- esac
- done
|