1
0

chekuser.sh 8.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310
  1. #!/bin/bash
  2. l="/usr/local/lib/sped" && [[ ! -d ${l} ]] && exit
  3. clear
  4. clear
  5. declare -A cor=( [0]="\033[1;37m" [1]="\033[1;34m" [2]="\033[1;31m" [3]="\033[1;33m" [4]="\033[1;32m" )
  6. SCPdir="/etc/VPS-MX"
  7. SCPfrm="${SCPdir}/herramientas" && [[ ! -d ${SCPfrm} ]] && exit
  8. SCPinst="${SCPdir}/protocolos"&& [[ ! -d ${SCPinst} ]] && exit
  9. chk_ip=$(wget -qO- ifconfig.me)
  10. mportas(){
  11. unset portas
  12. portas_var=$(lsof -V -i -P -n | grep -v "ESTABLISHED" |grep -v "COMMAND")
  13. while read port; do
  14. var1=$(echo $port | awk '{print $1}') && var2=$(echo $port | awk '{print $9}' | awk -F ":" '{print $2}')
  15. [[ "$(echo -e $portas|grep "$var1 $var2")" ]] || portas+="$var1 $var2\n"
  16. done <<< "$portas_var"
  17. i=1
  18. echo -e "$portas"
  19. }
  20. title(){
  21. clear
  22. msg -bar
  23. if [[ -z $2 ]]; then
  24. print_center -azu "$1"
  25. else
  26. print_center "$1" "$2"
  27. fi
  28. msg -bar
  29. }
  30. back(){
  31. msg -bar
  32. echo -ne "$(msg -verd " [0]") $(msg -verm2 ">") " && msg -bra "\033[1;41mVOLVER"
  33. msg -bar
  34. }
  35. export numero='^[0-9]+$'
  36. del(){
  37. for (( i = 0; i < $1; i++ )); do
  38. tput cuu1 && tput dl1
  39. done
  40. }
  41. selection_fun () {
  42. local selection="null"
  43. local range
  44. for((i=0; i<=$1; i++)); do range[$i]="$i "; done
  45. while [[ ! $(echo ${range[*]}|grep -w "$selection") ]]; do
  46. echo -ne "\033[1;37m$(fun_trans " ► Selecione una Opcion"): " >&2
  47. read selection
  48. tput cuu1 >&2 && tput dl1 >&2
  49. done
  50. echo $selection
  51. }
  52. in_opcion(){
  53. unset opcion
  54. if [[ -z $2 ]]; then
  55. msg -azu " $1: " >&2
  56. else
  57. msg $1 " $2: " >&2
  58. fi
  59. read opcion
  60. #echo "$opcion"
  61. }
  62. print_center(){
  63. if [[ -z $2 ]]; then
  64. text="$1"
  65. else
  66. col="$1"
  67. text="$2"
  68. fi
  69. while read line; do
  70. unset space
  71. x=$(( ( 54 - ${#line}) / 2))
  72. for (( i = 0; i < $x; i++ )); do
  73. space+=' '
  74. done
  75. space+="$line"
  76. if [[ -z $2 ]]; then
  77. msg -azu "$space"
  78. else
  79. msg "$col" "$space"
  80. fi
  81. done <<< $(echo -e "$text")
  82. }
  83. menu_func(){
  84. local options=${#@}
  85. local array
  86. for((num=1; num<=$options; num++)); do
  87. echo -ne "$(msg -verd " [$num]") $(msg -verm2 ">") "
  88. array=(${!num})
  89. case ${array[0]} in
  90. "-vd")echo -e "\033[1;33m[!]\033[1;32m ${array[@]:1}";;
  91. "-vm")echo -e "\033[1;33m[!]\033[1;31m ${array[@]:1}";;
  92. "-fi")echo -e "${array[@]:2} ${array[1]}";;
  93. # -bar|-bar2|-bar3|-bar4)echo -e "\033[1;37m${array[@]:1}\n$(msg ${array[0]})";;
  94. *)echo -e "\033[1;37m${array[@]}";;
  95. esac
  96. done
  97. }
  98. start(){
  99. if [[ $(systemctl is-active chekuser) = "active" ]]; then
  100. msg -azu "DESABILITANDO CHEKUSER"
  101. systemctl stop chekuser &>/dev/null
  102. systemctl disable chekuser &>/dev/null
  103. rm -rf /etc/systemd/system/chekuser.service
  104. msg -verd 'chekuser, se desactivo con exito!'
  105. enter
  106. return
  107. fi
  108. while true; do
  109. echo -ne "\033[1;37m"
  110. read -p " INGRESE UN PUERTO: " chekuser
  111. echo ""
  112. [[ $(mportas|grep -w "$chekuser") ]] || break
  113. echo -e "\033[1;33m Este puerto está en uso"
  114. unset chekuser
  115. done
  116. echo " $(msg -ama "Puerto") $(msg -verd "$chekuser")"
  117. msg -bar
  118. print_center 'SELECCIONA UN FORMATO DE FECHA'
  119. msg -bar
  120. menu_func 'YYYY/MM/DD' 'DD/MM/YYYY'
  121. msg -bar
  122. date=$(selection_fun 2)
  123. case $date in
  124. 1)fecha="YYYY/MM/DD";;
  125. 2)fecha="DD/MM/YYYY";;
  126. esac
  127. [[ $date = 0 ]] && return
  128. del 5
  129. echo " $(msg -ama "Formato") $(msg -verd "$fecha")"
  130. # enter
  131. del 2
  132. print_center -ama 'Instalandon python3-pip'
  133. if apt install -y python3-pip &>/dev/null; then
  134. del 1
  135. print_center -verd 'Instalandon python3-pip ok'
  136. else
  137. del 1
  138. print_center -verm2 'falla al instalar python3-pip\nintente instalar manualmente\n\ncomando manual >> apt install -y python3-pip\n\nresuelva esta falla para luego intentar'
  139. # enter
  140. return
  141. fi
  142. print_center -ama 'Instalandon flask'
  143. if pip3 install flask &>/dev/null; then
  144. del 1
  145. print_center -verd 'Instalandon flask ok'
  146. else
  147. del 1
  148. print_center -verm2 '\nfalla al instalar flask\nintente instalar manualmente\n\ncomando manual >> pip3 install flask\n\nresuelva esta falla para luego intentar'
  149. # enter
  150. return
  151. fi
  152. print_center -ama 'Iniciando servicio'
  153. if [[ $(systemctl is-active chekuser) = "active" ]]; then
  154. systemctl stop chekuser &>/dev/null
  155. systemctl disable chekuser &>/dev/null
  156. fi
  157. rm -rf /etc/systemd/system/chekuser.service
  158. echo -e "[Unit]
  159. Description=chekuser Service by @Rufu99
  160. After=network.target
  161. StartLimitIntervalSec=0
  162. [Service]
  163. Type=simple
  164. User=root
  165. WorkingDirectory=/root
  166. ExecStart=/usr/bin/python3 /etc/VPS-MX/protocolos/chekuser.py $chekuser $date
  167. Restart=always
  168. RestartSec=3s
  169. [Install]
  170. WantedBy=multi-user.target" > /etc/systemd/system/chekuser.service
  171. # ExecStart=/usr/bin/python3 ${ADM_inst}/chekuser.py $chekuser $date
  172. # ps x|grep -v grep|grep chekuser.py|awk '{print $7}'
  173. systemctl enable chekuser &>/dev/null
  174. systemctl start chekuser &>/dev/null
  175. if [[ $(systemctl is-active chekuser) = "active" ]]; then
  176. title -verd 'Instalacion completa'
  177. print_center -ama "URL: http://$chk_ip:$chekuser/checkUser"
  178. else
  179. systemctl stop chekuser &>/dev/null
  180. systemctl disable chekuser &>/dev/null
  181. rm -rf /etc/systemd/system/chekuser.service
  182. print_center -verm2 'falla al iniciar servicio chekuser'
  183. fi
  184. #enter
  185. }
  186. mod_port(){
  187. while true; do
  188. echo -ne "\033[1;37m"
  189. read -p " INGRESE UN PUERTO: " chekuser
  190. echo ""
  191. [[ $(mportas|grep -w "$chekuser") ]] || break
  192. echo -e "\033[1;33m Este puerto está en uso"
  193. unset chekuser
  194. done
  195. echo " $(msg -ama "Puerto") $(msg -verd "$chekuser")"
  196. enter
  197. port_chek=$(ps x|grep -v grep|grep chekuser.py|awk '{print $7}')
  198. systemctl stop chekuser &>/dev/null
  199. systemctl disable chekuser &>/dev/null
  200. sed -i "s/$port_chek/$chekuser/g" /etc/systemd/system/chekuser.service
  201. systemctl enable chekuser &>/dev/null
  202. systemctl start chekuser &>/dev/null
  203. if [[ $(systemctl is-active chekuser) = "active" ]]; then
  204. title -verd 'puerto modificado'
  205. print_center -ama "URL: http://$chk_ip:$chekuser/checkUser"
  206. else
  207. systemctl stop chekuser &>/dev/null
  208. systemctl disable chekuser &>/dev/null
  209. rm -rf /etc/systemd/system/chekuser.service
  210. print_center -verm2 'algo salio mal\nfalla al iniciar servicio chekuser'
  211. fi
  212. #enter
  213. }
  214. mod_fdate(){
  215. title 'SELECCIONA UN FORMATO DE FECHA'
  216. menu_func 'YYYY/MM/DD' 'DD/MM/YYYY'
  217. msg -bar
  218. date=$(selection_fun 2)
  219. case $date in
  220. 1)fecha="YYYY/MM/DD";;
  221. 2)fecha="DD/MM/YYYY";;
  222. esac
  223. [[ $date = 0 ]] && return
  224. del 3
  225. echo " $(msg -ama "Formato") $(msg -verd "$fecha")"
  226. enter
  227. formato=$(ps x|grep -v grep|grep chekuser.py|awk '{print $8}')
  228. systemctl stop chekuser &>/dev/null
  229. systemctl disable chekuser &>/dev/null
  230. sed -i "s/$formato/$date/g" /etc/systemd/system/chekuser.service
  231. systemctl enable chekuser &>/dev/null
  232. systemctl start chekuser &>/dev/null
  233. if [[ $(systemctl is-active chekuser) = "active" ]]; then
  234. title -verd 'formato de fecha modificado'
  235. print_center -ama "FORMATO: $fecha"
  236. else
  237. systemctl stop chekuser &>/dev/null
  238. systemctl disable chekuser &>/dev/null
  239. rm -rf /etc/systemd/system/chekuser.service
  240. print_center -verm2 'algo salio mal\nfalla al iniciar servicio chekuser'
  241. fi
  242. #enter
  243. }
  244. menu_chekuser(){
  245. title 'VERIFICACION DE USUARIOS ONLINE'
  246. num=1
  247. if [[ $(systemctl is-active chekuser) = "active" ]]; then
  248. formato=$(ps x|grep -v grep|grep chekuser.py|awk '{print $8}')
  249. case $formato in
  250. 1)fecha_data="YYYY/MM/DD";;
  251. 2)fecha_data="DD/MM/YYYY";;
  252. esac
  253. msg -tit
  254. fecha_data=$(printf '%15s' "$fecha_data")
  255. port_chek=$(ps x|grep -v grep|grep chekuser.py|awk '{print $7}')
  256. msg -ama "\e[93mURL: http://$chk_ip:$port_chek/checkUser"
  257. port_chek=$(printf '%8s' "$port_chek")
  258. echo " $(msg -verd '[1]') $(msg -verm2 '>') $(msg -verm2 'DESACTIVAR') $(msg -azu 'CHEKUSER')"
  259. echo " $(msg -verd '[2]') $(msg -verm2 '>') $(msg -azu 'MODIFICAR PUERTO') $(msg -verd "$port_chek")"
  260. echo " $(msg -verd '[3]') $(msg -verm2 '>') $(msg -azu 'MODIFICAR FORMATO') $(msg -verd "$fecha_data")"
  261. msg -bar
  262. num=3
  263. else
  264. msg -tit
  265. print_center -verm2 'ADVERTENCIA!!!\nesto puede generar consumo de ram/cpu\nen metodos de coneccion inestables\nse recomienda no usar chekuser en esos casos'
  266. msg -bar
  267. echo " $(msg -verd '[1]') $(msg -verm2 '>') $(msg -verd 'ACTIVAR') $(msg -azu 'CHEKUSER')"
  268. msg -bar
  269. fi
  270. back
  271. opcion=$(selection_fun $num)
  272. case $opcion in
  273. 1)start;;
  274. 2)mod_port;;
  275. 3)mod_fdate;;
  276. 0)return 1;;
  277. esac
  278. }
  279. while [[ $? -eq 0 ]]; do
  280. menu_chekuser
  281. done