menu 25 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779
  1. #!/bin/bash
  2. # -*- ENCODING: UTF-8 -*-
  3. rm -rf instalscript.sh &>/dev/null
  4. module="/etc/ADMRufu/module"
  5. [[ ! -e ${module} ]] && exit
  6. source ${module}
  7. export _hora=$(printf '%(%H:%M:%S)T')
  8. export _fecha=$(printf '%(%D)T')
  9. export ADMRufu="/etc/ADMRufu" && [[ ! -d ${ADMRufu} ]] && mkdir ${ADMRufu}
  10. export ADM_inst="${ADMRufu}/install" && [[ ! -d ${ADM_inst} ]] && mkdir ${ADM_inst}
  11. export ADM_src="${ADMRufu}/source" && [[ ! -d ${ADM_src} ]] && mkdir ${ADM_src}
  12. export ADM_crt="${ADM_src}/cert" && [[ ! -d ${ADM_crt} ]] && mkdir ${ADM_crt}
  13. export ADM_slow="${ADM_src}/slowdns" && [[ ! -d ${ADM_slow} ]] && mkdir ${ADM_slow}
  14. export ADM_user="${ADMRufu}/user" && [[ ! -d ${ADM_user} ]] && mkdir ${ADM_user}
  15. export ADM_tmp="${ADMRufu}/tmp" && [[ ! -d ${ADM_tmp} ]] && mkdir ${ADM_tmp}
  16. export numero='^[0-9]+$'
  17. export letra='^[A-Za-z]+$'
  18. export tx_num='^[A-Za-z0-9]+$'
  19. export v2rdir="${ADMRufu}/v2r" && [[ ! -d ${v2rdir} ]] && mkdir ${v2rdir}
  20. export user_conf="${v2rdir}/user" && [[ ! -e $user_conf ]] && touch $user_conf
  21. export backdir="${v2rdir}/back" && [[ ! -d ${backdir} ]] && mkdir ${backdir}
  22. export tmpdir="$backdir/tmp"
  23. export config="/etc/v2ray/config.json"
  24. export temp="/etc/v2ray/temp.json"
  25. export fstab="/etc/fstab"
  26. export sysctl="/etc/sysctl.conf"
  27. export swap="/swapfile"
  28. #======cloudflare========
  29. export correo='tellooou@gmail.com'
  30. export _dns='2473a8a21bd6a727d7d6eed58a6751a0'
  31. export apikey='7928850c217279ed8c0227313d2f3c7c0d5ef'
  32. export _domain='admrufu.online'
  33. export url='https://api.cloudflare.com/client/v4/zones'
  34. #========================
  35. #PROCESSADOR
  36. export _core=$(printf '%-1s' "$(grep -c cpu[0-9] /proc/stat)")
  37. export _usop=$(printf '%-1s' "$(top -bn1 | awk '/Cpu/ { cpu = "" 100 - $8 "%" }; END { print cpu }')")
  38. #SISTEMA-USO DA CPU-MEMORIA RAM
  39. export ram1=$(free -h | grep -i mem | awk {'print $2'})
  40. export ram2=$(free -h | grep -i mem | awk {'print $4'})
  41. export ram3=$(free -h | grep -i mem | awk {'print $3'})
  42. export _ram=$(printf ' %-9s' "$(free -h | grep -i mem | awk {'print $2'})")
  43. export _usor=$(printf '%-8s' "$(free -m | awk 'NR==2{printf "%.2f%%", $3*100/$2 }')")
  44. if [[ ! -f ${ADM_tmp}/style ]]; then
  45. echo -e "infsys 1\nport 0\nresel 0\ncontador 1\nlimit 0" > ${ADM_tmp}/style
  46. fi
  47. if [[ ! $(id -u) = 0 ]]; then
  48. clear
  49. msg -bar
  50. print_center -ama "ERROR DE EJECUCION"
  51. msg -bar
  52. print_center -ama "DEVE EJECUTAR DESDE EL USUSRIO ROOT"
  53. echo ''
  54. print_center -ama 'TAMBIEN "sudo su"'
  55. print_center -ama 'O BIEN'
  56. print_center -ama '"sudo menu"'
  57. msg -bar
  58. exit
  59. fi
  60. if [[ ! $(cat '/etc/passwd'|grep 'root'|grep -v 'false'|awk -F ':' '{print $2}') = 'x' ]]; then
  61. msg -bar
  62. print_center -ama 'CAMBIO DE CONTRASEÑA ROOT REQUERIDO'
  63. msg -bar
  64. msg -ne " Ingrese la Nueva Contraseña: "
  65. read opcion
  66. pwconv
  67. (echo "$opcion" ; echo "$opcion")|passwd root &>/dev/null
  68. tput cuu1 && tput dl1
  69. print_center -verd "SE CAMBIO LA CONTRASEÑA ROOT"
  70. enter
  71. fi
  72. [[ ! -e "/var/spool/cron/crontabs/root" ]] && touch /var/spool/cron/crontabs/root
  73. #======BODY=========
  74. in_opcion(){
  75. msg -ne " $1: "
  76. read opcion
  77. }
  78. fun_trans(){
  79. local texto
  80. local retorno
  81. declare -A texto
  82. SCPidioma="${ADM_tmp}/idioma"
  83. [[ ! -e ${SCPidioma} ]] && touch ${SCPidioma}
  84. local LINGUAGE=$(cat ${SCPidioma})
  85. [[ -z $LINGUAGE ]] && LINGUAGE=es
  86. [[ $LINGUAGE = "es" ]] && echo "$@" && return
  87. [[ ! -e /usr/bin/trans ]] && wget -O /usr/bin/trans https://raw.githubusercontent.com/rudi9999/VPS-MX-8.0/master/ArchivosUtilitarios/trans &> /dev/null
  88. [[ ! -e ${ADM_tmp}/texto-adm ]] && touch ${ADM_tmp}/texto-adm
  89. source ${ADM_tmp}/texto-adm
  90. if [[ -z "$(echo ${texto[$@]})" ]]; then
  91. #ENGINES=(aspell google deepl bing spell hunspell apertium yandex)
  92. #NUM="$(($RANDOM%${#ENGINES[@]}))"
  93. retorno="$(source trans -e bing -b es:${LINGUAGE} "$@"|sed -e 's/[^a-z0-9 -]//ig' 2>/dev/null)"
  94. echo "texto[$@]='$retorno'" >> ${ADM_tmp}/texto-adm
  95. echo "$retorno"
  96. else
  97. echo "${texto[$@]}"
  98. fi
  99. }
  100. mine_port(){
  101. unset puertos
  102. declare -A port
  103. local portasVAR=$(lsof -V -i tcp -P -n | grep -v "ESTABLISHED" |grep -v "COMMAND" | grep "LISTEN" | grep -E 'squid|apache|dropbear|ssh|openvpn|stunnel|python|node|v2ray|badvpn-ud')
  104. local NOREPEAT
  105. local reQ
  106. local Port
  107. while read port; do
  108. reQ=$(echo ${port}|awk '{print $1}')
  109. Port=$(echo ${port} | awk '{print $9}' | awk -F ":" '{print $2}')
  110. [[ $(echo -e $NOREPEAT|grep -w "$Port") ]] && continue
  111. NOREPEAT+="$Port\n"
  112. case ${reQ} in
  113. squid|squid3)
  114. [[ -z ${port[SQD]} ]] && local port[SQD]="\033[1;31m SQUID: \033[1;32m"
  115. port[SQD]+="$Port ";;
  116. apache|apache2)
  117. [[ -z ${port[APC]} ]] && local port[APC]="\033[1;31m APACHE: \033[1;32m"
  118. port[APC]+="$Port ";;
  119. ssh|sshd)
  120. [[ -z ${port[SSH]} ]] && local port[SSH]="\033[1;31m SSH: \033[1;32m"
  121. port[SSH]+="$Port ";;
  122. dropbear)
  123. [[ -z ${port[DPB]} ]] && local port[DPB]="\033[1;31m DROPBEAR: \033[1;32m"
  124. port[DPB]+="$Port ";;
  125. ssserver|ss-server)
  126. [[ -z ${port[SSV]} ]] && local port[SSV]="\033[1;31m SHADOWSOCKS: \033[1;32m"
  127. port[SSV]+="$Port ";;
  128. openvpn)
  129. [[ -z ${port[OVPN]} ]] && local port[OVPN]="\033[1;31m OPENVPN(TCP): \033[1;32m"
  130. port[OVPN]+="$Port ";;
  131. stunnel4|stunnel)
  132. [[ -z ${port[SSL]} ]] && local port[SSL]="\033[1;31m SSL: \033[1;32m"
  133. port[SSL]+="$Port ";;
  134. python|python3)
  135. [[ -z ${port[PY3]} ]] && local port[PY3]="\033[1;31m PYTHON: \033[1;32m"
  136. port[PY3]+="$Port ";;
  137. node|nodejs)
  138. [[ -z ${port[WS]} ]] && local port[WS]="\033[1;31m WEBSOCKET: \033[1;32m"
  139. port[WS]+="$Port ";;
  140. v2ray)
  141. [[ -z ${port[V2R]} ]] && local port[V2R]="\033[1;31m V2RAY: \033[1;32m"
  142. port[V2R]+="$Port ";;
  143. badvpn-ud)
  144. [[ -z ${port[BAD]} ]] && local port[BAD]="\033[1;31m BADVPN: \033[1;32m"
  145. port[BAD]+="$Port ";;
  146. esac
  147. done <<< "${portasVAR}"
  148. #UDP
  149. local portasVAR=$(lsof -V -i UDP -P -n | grep -v "ESTABLISHED" |grep -v "COMMAND"|grep -E 'openvpn|dns-serve|v2ray')
  150. local NOREPEAT
  151. local reQ
  152. local Port
  153. while read port; do
  154. reQ=$(echo ${port}|awk '{print $1}')
  155. Port=$(echo ${port} | awk '{print $9}' | awk -F ":" '{print $2}')
  156. [[ $(echo -e $NOREPEAT|grep -w "$Port") ]] && continue
  157. NOREPEAT+="$Port\n"
  158. case ${reQ} in
  159. openvpn)
  160. [[ -z ${port[OVPN]} ]] && local port[OVPN]="\033[1;31m OPENVPN(UDP): \033[1;32m"
  161. port[OVPN]+="$Port ";;
  162. dns-serve)
  163. [[ -z ${port[SLOW]} ]] && local port[SLOW]="\033[1;31m SlowDNS: \033[1;32m"
  164. port[SLOW]+="$Port ";;
  165. #v2ray)
  166. #[[ -z ${port[V2R]} ]] && local port[V2R]="\033[1;31m V2RAY(UDP): \033[1;32m"
  167. #port[V2R]+="$Port ";;
  168. esac
  169. done <<< "${portasVAR}"
  170. k=1
  171. for line in "${port[@]}"; do
  172. [[ -z "$line" ]] && continue
  173. let RESTO=k%2
  174. if [[ $RESTO -eq 0 ]]; then
  175. puertos+="$line\n"
  176. else
  177. puertos+="$line-"
  178. fi
  179. let k++
  180. done
  181. echo -e "$puertos"|column -t -s '-'
  182. }
  183. ofus () {
  184. unset server
  185. server=$(echo ${txt_ofuscatw}|cut -d':' -f1)
  186. unset txtofus
  187. number=$(expr length $1)
  188. for((i=1; i<$number+1; i++)); do
  189. txt[$i]=$(echo "$1" | cut -b $i)
  190. case ${txt[$i]} in
  191. ".")txt[$i]="*";;
  192. "*")txt[$i]=".";;
  193. "_")txt[$i]="@";;
  194. "@")txt[$i]="_";;
  195. #"1")txt[$i]="@";;
  196. #"@")txt[$i]="1";;
  197. #"2")txt[$i]="?";;
  198. #"?")txt[$i]="2";;
  199. #"4")txt[$i]="%";;
  200. #"%")txt[$i]="4";;
  201. "-")txt[$i]="K";;
  202. "K")txt[$i]="-";;
  203. "1")txt[$i]="f";;
  204. "2")txt[$i]="e";;
  205. "3")txt[$i]="d";;
  206. "4")txt[$i]="c";;
  207. "5")txt[$i]="b";;
  208. "6")txt[$i]="a";;
  209. "7")txt[$i]="9";;
  210. "8")txt[$i]="8";;
  211. "9")txt[$i]="7";;
  212. "a")txt[$i]="6";;
  213. "b")txt[$i]="5";;
  214. "c")txt[$i]="4";;
  215. "d")txt[$i]="3";;
  216. "e")txt[$i]="2";;
  217. "f")txt[$i]="1";;
  218. esac
  219. txtofus+="${txt[$i]}"
  220. done
  221. echo "$txtofus" | rev
  222. }
  223. fun_bar(){
  224. comando="$1"
  225. txt="$2"
  226. _=$(
  227. $comando > /dev/null 2>&1
  228. ) & > /dev/null
  229. pid=$!
  230. while [[ -d /proc/$pid ]]; do
  231. echo -ne " \033[1;33m$txt["
  232. for((i=0; i<10; i++)); do
  233. echo -ne "\033[1;31m##"
  234. sleep 0.2
  235. done
  236. echo -ne "\033[1;33m]"
  237. sleep 1s
  238. echo
  239. tput cuu1 && tput dl1
  240. done
  241. echo -e " \033[1;33m$txt[\033[1;31m####################\033[1;33m] - \033[1;32m100%\033[0m"
  242. sleep 1s
  243. }
  244. fun_ip(){
  245. if [[ -e ${ADM_tmp}/MEUIPADM ]]; then
  246. echo "$(cat ${ADM_tmp}/MEUIPADM)"
  247. else
  248. MEU_IP=$(ip addr | grep 'inet' | grep -v inet6 | grep -vE '127\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}' | grep -o -E '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}' | head -1)
  249. MEU_IP2=$(wget -qO- ipv4.icanhazip.com)
  250. [[ "$MEU_IP" != "$MEU_IP2" ]] && IP="$MEU_IP2" && echo "$MEU_IP2" || IP="$MEU_IP" && echo "$MEU_IP"
  251. echo "$MEU_IP2" > ${ADM_tmp}/MEUIPADM
  252. fi
  253. }
  254. fun_eth(){
  255. eth=$(ifconfig | grep -v inet6 | grep -v lo | grep -v 127.0.0.1 | grep "encap:Ethernet" | awk '{print $1}')
  256. [[ $eth != "" ]] && {
  257. msg -bar
  258. msg -ama " $(fun_trans "Aplicar el sistema para mejorar los paquetes SSH?")"
  259. msg -ama " $(fun_trans "Opciones para usuarios avanzados")"
  260. msg -bar
  261. read -p " [S/N]: " -e -i n sshsn
  262. [[ "$sshsn" = @(s|S|y|Y) ]] && {
  263. echo -e "${cor[1]} $(fun_trans "Correccion de problemas de paquetes en SSH ...")"
  264. echo -e " $(fun_trans "¿Cual es la tasa RX?")"
  265. echo -ne "[ 1 - 999999999 ]: "; read rx
  266. [[ "$rx" = "" ]] && rx="999999999"
  267. echo -e " $(fun_trans "¿Cual es la tasa TX?")"
  268. echo -ne "[ 1 - 999999999 ]: "; read tx
  269. [[ "$tx" = "" ]] && tx="999999999"
  270. apt-get install ethtool -y > /dev/null 2>&1
  271. ethtool -G $eth rx $rx tx $tx > /dev/null 2>&1
  272. }
  273. msg -bar
  274. }
  275. }
  276. mportas2(){
  277. unset portas
  278. portas_var=$(lsof -V -i tcp -P -n | grep -v "ESTABLISHED" |grep -v "COMMAND" | grep "LISTEN")
  279. while read port; do
  280. var1=$(echo $port | awk '{print $1}') && var2=$(echo $port | awk '{print $9}' | awk -F ":" '{print $2}')
  281. [[ "$(echo -e $portas|grep "$var1 $var2")" ]] || portas+="$var1 $var2\n"
  282. done <<< "$portas_var"
  283. i=1
  284. echo -e "$portas"
  285. }
  286. mportas(){
  287. unset portas
  288. portas_var=$(lsof -V -i -P -n | grep -v "ESTABLISHED" |grep -v "COMMAND")
  289. while read port; do
  290. var1=$(echo $port | awk '{print $1}') && var2=$(echo $port | awk '{print $9}' | awk -F ":" '{print $2}')
  291. [[ "$(echo -e $portas|grep "$var1 $var2")" ]] || portas+="$var1 $var2\n"
  292. done <<< "$portas_var"
  293. i=1
  294. echo -e "$portas"
  295. }
  296. os_system(){
  297. system=$(echo $(cat -n /etc/issue |grep 1 |cut -d' ' -f6,7,8 |sed 's/1//' |sed 's/ //'))
  298. echo $system|awk '{print $1, $2}'
  299. }
  300. reiniciar_vps () {
  301. echo -ne " \033[1;31m[ ! ] Sudo Reboot"
  302. sleep 3s
  303. echo -e "\033[1;32m [OK]"
  304. (
  305. sudo reboot
  306. ) > /dev/null 2>&1
  307. msg -bar
  308. return
  309. }
  310. # Menu Ferramentas
  311. systen_info(){
  312. msg -ama "$(fun_trans "DETALLES DEL SISTEMA")"
  313. null="\033[1;31m"
  314. msg -bar
  315. if [ ! /proc/cpuinfo ]; then msg -verm "$(fun_trans "Sistema No Soportado")" && msg -bar; return 1; fi
  316. if [ ! /etc/issue.net ]; then msg -verm "$(fun_trans "Sistema No Soportado")" && msg -bar; return 1; fi
  317. if [ ! /proc/meminfo ]; then msg -verm "$(fun_trans "Sistema No Soportado")" && msg -bar; return 1; fi
  318. totalram=$(free | grep Mem | awk '{print $2}')
  319. usedram=$(free | grep Mem | awk '{print $3}')
  320. freeram=$(free | grep Mem | awk '{print $4}')
  321. swapram=$(cat /proc/meminfo | grep SwapTotal | awk '{print $2}')
  322. system=$(cat /etc/issue.net)
  323. clock=$(lscpu | grep "CPU MHz" | awk '{print $3}')
  324. based=$(cat /etc/*release | grep ID_LIKE | awk -F "=" '{print $2}')
  325. processor=$(cat /proc/cpuinfo | grep "model name" | uniq | awk -F ":" '{print $2}')
  326. cpus=$(cat /proc/cpuinfo | grep processor | wc -l)
  327. [[ "$system" ]] && msg -ama "$(fun_trans "Sistema"): ${null}$system" || msg -ama "$(fun_trans "Sistema"): ${null}???"
  328. [[ "$based" ]] && msg -ama "$(fun_trans "Base"): ${null}$based" || msg -ama "$(fun_trans "Base"): ${null}???"
  329. [[ "$processor" ]] && msg -ama "$(fun_trans "Procesador"): ${null}$processor x$cpus" || msg -ama "$(fun_trans "Procesador"): ${null}???"
  330. [[ "$clock" ]] && msg -ama "$(fun_trans "Frecuencia de Operacion"): ${null}$clock MHz" || msg -ama "$(fun_trans "Frecuencia de Operacion"): ${null}???"
  331. msg -ama "$(fun_trans "Uso del Procesador"): ${null}$(ps aux | awk 'BEGIN { sum = 0 } { sum += sprintf("%f",$3) }; END { printf " " "%.2f" "%%", sum}')"
  332. msg -ama "$(fun_trans "Memoria Virtual Total"): ${null}$(($totalram / 1024))"
  333. msg -ama "$(fun_trans "Memoria Virtual En Uso"): ${null}$(($usedram / 1024))"
  334. msg -ama "$(fun_trans "Memoria Virtual Libre"): ${null}$(($freeram / 1024))"
  335. msg -ama "$(fun_trans "Memoria Virtual Swap"): ${null}$(($swapram / 1024))MB"
  336. msg -ama "$(fun_trans "Tempo Online"): ${null}$(uptime)"
  337. msg -ama "$(fun_trans "Nombre De La Maquina"): ${null}$(hostname)"
  338. msg -ama "$(fun_trans "IP De La Maquina"): ${null}$(ip addr | grep inet | grep -v inet6 | grep -v "host lo" | awk '{print $2}' | awk -F "/" '{print $1}')"
  339. msg -ama "$(fun_trans "Version de Kernel"): ${null}$(uname -r)"
  340. msg -ama "$(fun_trans "Arquitectura"): ${null}$(uname -m)"
  341. msg -bar
  342. return 0
  343. }
  344. # Menu Instalaciones
  345. pid_inst(){
  346. [[ $1 = "" ]] && echo -e "\033[1;31m[OFF]" && return 0
  347. unset portas
  348. portas_var=$(lsof -V -i -P -n | grep -v "ESTABLISHED" |grep -v "COMMAND")
  349. i=0
  350. while read port; do
  351. var1=$(echo $port | awk '{print $1}') && var2=$(echo $port | awk '{print $9}' | awk -F ":" '{print $2}')
  352. [[ "$(echo -e ${portas[@]}|grep "$var1 $var2")" ]] || {
  353. portas[$i]="$var1 $var2\n"
  354. let i++
  355. }
  356. done <<< "$portas_var"
  357. [[ $(echo "${portas[@]}"|grep "$1") ]] && echo -e "\033[1;32m[ON]" || echo -e "\033[1;31m[OFF]"
  358. }
  359. info_sys(){
  360. #v=$(date '+%s' -d $(cat $ADMRufu/vercion)))
  361. info_so=$(printf '%-17s' "$(os_system)")
  362. info_ip=$(printf '%-18s' "$(fun_ip)")
  363. info_ram1=$(printf '%-7s' "${ram1}")
  364. info_ram2=$(printf '%-7s' "${ram2}")
  365. info_ram3=$(printf '%-7s' "${ram3}")
  366. info_fecha=$(printf '%-15s' "${_fecha}")
  367. info_hora=$(printf '%-15s' "${_hora}")
  368. systema=$(printf '%-23s' 'SISTEMA')
  369. systema+=$(printf '%-16s' 'MEMORIA')
  370. systema+='PROSESADOR'
  371. msg -verd " $systema"
  372. echo -e " $(msg -teal "S.O:") $(msg -azu "$info_so") $(msg -teal "RAM:") $(msg -verd "$info_ram1") $(msg -teal "CPU:") $(msg -verd "$_core")"
  373. echo -e " $(msg -teal "IP:") $(msg -azu "$info_ip") $(msg -teal "USADA:") $(msg -verd "$info_ram3") $(msg -teal "EN USO:")$(msg -verd "$_usop")"
  374. echo -e " $(msg -teal "FECHA:") $(msg -azu "$info_fecha") $(msg -teal "LIBRE:") $(msg -verd "$info_ram2")"
  375. echo -e " $(msg -teal "HORA:") $(msg -azu "$info_hora") $(msg -teal "EN USO:") $(msg -verd "$_usor")"
  376. }
  377. cabesera(){
  378. msg -bar
  379. print_center -azu "=====>>>> ADMRufu <<<<====="|lolcat
  380. msg -bar
  381. }
  382. droppids(){
  383. port_dropbear=`ps aux|grep 'dropbear'|awk NR==1|awk '{print $17;}'`
  384. log=/var/log/auth.log
  385. loginsukses='Password auth succeeded'
  386. pids=`ps ax|grep 'dropbear'|grep " $port_dropbear"|awk -F " " '{print $1}'`
  387. for pid in $pids; do
  388. pidlogs=`grep $pid $log |grep "$loginsukses" |awk -F" " '{print $3}'`
  389. i=0
  390. for pidend in $pidlogs; do
  391. let i=i+1
  392. done
  393. if [ $pidend ];then
  394. login=`grep $pid $log |grep "$pidend" |grep "$loginsukses"`
  395. PID=$pid
  396. user=`echo $login |awk -F" " '{print $10}' | sed -r "s/'/ /g"`
  397. waktu=`echo $login |awk -F" " '{print $2"-"$1,$3}'`
  398. while [ ${#waktu} -lt 13 ]; do
  399. waktu=$waktu" "
  400. done
  401. while [ ${#user} -lt 16 ]; do
  402. user=$user" "
  403. done
  404. while [ ${#PID} -lt 8 ]; do
  405. PID=$PID" "
  406. done
  407. echo "$user $PID $waktu"
  408. fi
  409. done
  410. }
  411. contador(){
  412. users=$(cat /etc/passwd|grep 'home'|grep 'false'|grep -v 'syslog'|awk -F ':' '{print $1}')
  413. dpids=$(droppids)
  414. time=$(date +%s)
  415. [[ -e /etc/openvpn/openvpn-status.log ]] && ovpn_log=$(cat /etc/openvpn/openvpn-status.log)
  416. n='0'
  417. i='0'
  418. conect='0'
  419. for _user in $users; do
  420. [[ -z "$(ps -u $_user|grep sshd)" ]] && sqd=0 || sqd=1
  421. [[ -z "$(echo $ovpn_log|grep -E ,"$_user",)" ]] && ovp=0 || ovp=1
  422. [[ -z "$(echo $dpids|grep -w "$_user")" ]] && drop=0 || drop=1
  423. conex=$(($sqd + $ovp + $drop))
  424. [[ $conex -ne 0 ]] && let conect++
  425. if [[ $(chage -l $_user |grep 'Account expires' |awk -F ': ' '{print $2}') != never ]]; then
  426. [[ $time -gt $(date '+%s' -d "$(chage -l $_user |grep "Account expires" |awk -F ': ' '{print $2}')") ]] && let n++
  427. fi
  428. [[ $(passwd --status $_user|cut -d ' ' -f2) = "L" ]] && let i++
  429. done
  430. _onlin=$(printf '%-7s' "$conect")
  431. _userexp=$(printf '%-7s' "$n")
  432. _lok=$(printf '%-7s' "$i")
  433. _tuser=$(echo "$users"|sed '/^$/d'|wc -l)
  434. echo -e " $(msg -verd "ONLI:") $(msg -azu "$_onlin") $(msg -verm2 "EXP:") $(msg -azu "$_userexp") $(msg -teal "LOK:") $(msg -azu "$_lok") $(msg -ama "TOTAL:") $(msg -azu "$_tuser")"
  435. }
  436. lou(){
  437. source <(echo -e "$(cat /etc/bash.bashrc)\nTMOUT=1")
  438. }
  439. ULK_ALF(){
  440. title "Desactivar contraseñas Alfanumericas"
  441. msg -ama " Esto desactivara el uso de contraseñas Alfanumericas\n en vps de VULTR, y otros. Permitiendo usar cualquier\n combinacion de caracteres mayor a 4 digitos."
  442. msg -bar
  443. msg -ne " Continuar? [S/N]: "
  444. read opcion
  445. [[ "$opcion" != @(s|S|y|Y) ]] && return
  446. tput cuu1 && tput dl1
  447. apt-get install libpam-cracklib -y > /dev/null 2>&1
  448. echo -e '#
  449. password [success=1 default=ignore] pam_unix.so obscure sha512
  450. password requisite pam_deny.so
  451. password required pam_permit.so' > /etc/pam.d/common-password
  452. chmod +x /etc/pam.d/common-password
  453. print_center -verd "Contraseña Alfanumerica Desactivada"
  454. msg -bar
  455. print_center -ama "►► Presione enter para continuar ◄◄"
  456. read
  457. }
  458. backup(){
  459. bkusr(){
  460. all_user=$(cat /etc/passwd|grep 'home'|grep 'false'|grep -v 'syslog')
  461. all_name=('' $(echo "$all_user"|awk -F ':' '{print $1}'))
  462. clear
  463. msg -bar
  464. if [[ -z ${all_name[@]} ]]; then
  465. print_center -ama "No se encontraron usuarios"
  466. msg -bar
  467. enter
  468. return
  469. fi
  470. print_center -ama "CREANDO COPIA DE SEGURIDAD"
  471. msg -bar
  472. sleep 2
  473. local userback
  474. for u in `echo ${all_name[@]}`; do
  475. dat=$(echo "$all_user"|grep -w "$u"|cut -d ':' -f5)
  476. Limit_mode=$(echo "$dat"|cut -d ',' -f1)
  477. case $Limit_mode in
  478. token)pass=$(cat ${ADM_user}/passwd_token);;
  479. hwid)pass="$u";;
  480. *)pass=$(echo "$dat"|cut -d ',' -f2);;
  481. esac
  482. fecha=$(chage -l "$u"|sed -n '4p'|awk -F ': ' '{print $2}')
  483. EXPTIME="$(($(($(date '+%s' -d "${fecha}") - $(date +%s))) / 86400))"
  484. stat=$(passwd --status $u|cut -d ' ' -f2)
  485. userback+="$u|$pass|$EXPTIME|$dat|$stat\n"
  486. done
  487. echo -e "$userback" > ${ADM_tmp}/userback.txt
  488. echo -e "$userback" > /root/userback.txt
  489. openssl enc -aes-128-cbc -salt -in ${ADM_tmp}/userback.txt -pass pass:ADMRufu -out ${ADM_tmp}/userback.enc > /dev/null 2>&1
  490. mv ${ADM_tmp}/userback.enc /root/user_$(printf '%(%d-%m-%y_%H:%M:%S)T').ADMRufu
  491. rm ${ADM_tmp}/userback.txt
  492. print_center -verd "Copia de seguridad creada."
  493. enter
  494. return
  495. }
  496. restor(){
  497. openssl enc -aes-128-cbc -d -in ${ADM_tmp}/userback.enc -pass pass:ADMRufu -out ${ADM_tmp}/userback.txt &>/dev/null 2>&1
  498. msg -nama " Eliminar todos los usuarios? [S/N]: " && read del_all
  499. [[ "$del_all" != @(S|s) ]] && msg -nama " Sobrescrivir usuarios exixtentes? [S/N]: " && read reset_user
  500. all_user=$(cat /etc/passwd|grep 'home'|grep 'false'|grep -v 'syslog')
  501. if [[ "$del_all" = @(S|s) ]]; then
  502. service dropbear stop &>/dev/null
  503. service sshd stop &>/dev/null
  504. service ssh stop &>/dev/null
  505. service stunnel4 stop &>/dev/null
  506. service squid stop &>/dev/null
  507. title -ama "ELIMINADO TODOS LO USUARIOS...."
  508. for user_d in `echo "$all_user"|awk -F ':' '{print $1}'`; do
  509. userpid=$(ps -u $user_d |awk {'print $1'})
  510. kill "$userpid" 2>/dev/null
  511. userdel --force $user_d
  512. done
  513. service sshd restart &>/dev/null
  514. service ssh restart &>/dev/null
  515. service dropbear start &>/dev/null
  516. service stunnel4 start &>/dev/null
  517. service squid restart &>/dev/null
  518. fi
  519. clear
  520. msg -bar
  521. print_center -ama "RESTAURANDO COPIA"
  522. msg -bar
  523. all_name=($(echo "$all_user"|awk -F ':' '{print $1}'))
  524. while read line; do
  525. user=$(echo $line|cut -d '|' -f1)
  526. pass=$(echo $line|cut -d '|' -f2)
  527. dias=$(( $(echo $line|cut -d '|' -f3) + 1 ))
  528. if [[ "$dias" -lt 1 ]]; then dias=0 ;fi
  529. dat=$(echo $line|cut -d '|' -f4)
  530. stat=$(echo $line|cut -d '|' -f5)
  531. if [[ $(echo "${all_name[@]}"|grep "$user") = "" ]]; then
  532. valid=$(date '+%C%y-%m-%d' -d " +$dias days")
  533. msg -nama " $user"
  534. if useradd -M -s /bin/false -e ${valid} -K PASS_MAX_DAYS=$dias -p $(openssl passwd -6 $pass) -c $dat $user ; then
  535. [[ "$stat" = "P" ]] && usermod -U $user || usermod -L $user
  536. msg -verd " $(fun_trans "Restaurado")"
  537. else
  538. msg -verm2 " $(fun_trans "NO, Usuario no Restaurado")"
  539. fi
  540. else
  541. if [[ "$reset_user" = @(S|s) ]]; then
  542. userpid=$(ps -u $user |awk {'print $1'})
  543. kill "$userpid" 2>/dev/null
  544. userdel --force $user
  545. if useradd -M -s /bin/false -e ${valid} -K PASS_MAX_DAYS=$dias -p $(openssl passwd -6 $pass) -c $dat $user ; then
  546. [[ "$stat" = "P" ]] && usermod -U $user || usermod -L $user
  547. msg -verd " $(fun_trans "Restaurado")"
  548. else
  549. msg -verm2 " $(fun_trans "NO, Usuario no Restaurado")"
  550. fi
  551. else
  552. echo -e " $(msg -ama "$user") $(msg -verm2 "Ya Existe")"
  553. fi
  554. fi
  555. done <<< $(cat "${ADM_tmp}/userback.txt")
  556. rm ${ADM_tmp}/userback.enc
  557. rm ${ADM_tmp}/userback.txt
  558. enter
  559. }
  560. rsurs(){
  561. clear
  562. msg -bar
  563. print_center -ama "RESTAURAR COPIA DE SEGURIDAD"
  564. msg -bar
  565. n=0
  566. for i in ${backls[@]}; do
  567. let n++
  568. echo -e " $(msg -verd "[$n]") $(msg -verm2 ">") $(msg -azu "$i")"
  569. done
  570. back
  571. opcion=$(selection_fun $n)
  572. [[ "$opcion" = "0" ]] && return
  573. let opcion--
  574. cp /root/${backls[$opcion]} ${ADM_tmp}/userback.enc
  575. restor
  576. return
  577. }
  578. clbk(){
  579. rm -rf /root/*.ADMRufu
  580. clear
  581. msg -bar
  582. print_center -ama "REGITRO DE COPIAS ELIMINADO"
  583. enter
  584. }
  585. rest_online(){
  586. title -ama "URL DE COPIA EN LINEA"
  587. echo -e " $(msg -verm3 "╭╼╼╼╼╼╼╼╼╼╼╼╼╼╼╼╼[")$(msg -azu "INGRESA EL URL")$(msg -verm3 "]")"
  588. echo -ne " $(msg -verm3 "╰╼")\033[37;1m> " && read url
  589. [[ -z "$url" ]] && return
  590. wget -O ${ADM_tmp}/userback.enc "${url}" &>/dev/null; chmod +x ${ADM_tmp}/userback.enc
  591. restor
  592. return
  593. }
  594. backls=($(ls /root|grep '.ADMRufu'))
  595. var="${#backls[@]}"
  596. [[ ${var} = "0" ]] && bkusr && return
  597. title "RESPALDO DE USUARIOS"
  598. menu_func "CREAR NUEVO RESPALDO DE USUARIOS" "RESTAURAR RESPALDO DE USUARIOS" "RESPALDO EN LINEA $(msg -verm2 "beta")" "LIMPIAR REGISTRO DE COPIAS"
  599. back
  600. msg -ne " opcion: "
  601. read opcion
  602. case $opcion in
  603. 1)bkusr;;
  604. 2)rsurs;;
  605. 3)rest_online;;
  606. 4)clbk;;
  607. 0)return;;
  608. esac
  609. }
  610. remove_script(){
  611. title "REMOVER SCRIPT ADMRufu"
  612. in_opcion "Remover script [S/N]"
  613. [[ "$opcion" != @(s|S|y|Y) ]] && return
  614. sed -i '/Rufu/d' /root/.bashrc
  615. sed -i '/Rufu/d' /etc/bash.bashrc
  616. rm -rf /usr/bin/menu
  617. rm -rf /usr/bin/adm
  618. rm -rf /usr/bin/ADMRufu
  619. rm -rf /etc/ADMRufu
  620. echo "SCRIPT REMOVIDO, REINICIANDO VPS"
  621. sleep 5
  622. reboot
  623. }
  624. update(){
  625. title "ESTA POR ACTUALIZAR ADMRufu"
  626. print_center -ama "Para actualizar ADMRufu, requiere de una key"
  627. msg -bar
  628. in_opcion "DESA CONTINUAR [S/N]"
  629. if [[ "$opcion" = @(s|S|y|Y) ]]; then
  630. rm -rf /root/install.sh*
  631. wget -O /root/install.sh https://raw.githubusercontent.com/rudi9999/ADMRufu/main/install.sh &>/dev/null
  632. chmod +x /root/install.sh*
  633. /root/install.sh --update
  634. fi
  635. }
  636. acount_mode(){
  637. [[ ! -e ${ADM_user}/userMODE ]] && echo "userSSH" > ${ADM_user}/userMODE
  638. mode=$(cat ${ADM_user}/userMODE)
  639. case $mode in
  640. userSSH)${ADM_inst}/userSSH;;
  641. userHWID)${ADM_inst}/userHWID;;
  642. userTOKEN)${ADM_inst}/userTOKEN;;
  643. esac
  644. }
  645. # EXECUCION DE MENU
  646. export -f fun_trans
  647. export -f fun_ip
  648. export -f info_sys
  649. export -f mine_port
  650. export -f os_system
  651. export -f fun_bar
  652. export -f fun_eth
  653. export -f mportas
  654. export -f in_opcion
  655. export -f droppids
  656. export -f backup
  657. export -f ULK_ALF
  658. clear
  659. #########VISUALIZACION DE MENU
  660. cabesera
  661. if [[ $(cat ${ADM_tmp}/style|grep -w "infsys"|awk '{print $2}') = "1" ]] ; then
  662. info_sys
  663. msg -bar
  664. fi
  665. if [[ $(cat ${ADM_tmp}/style|grep -w "port"|awk '{print $2}') = "1" ]] ; then
  666. mine_port
  667. msg -bar
  668. fi
  669. if [[ $(cat ${ADM_tmp}/style|grep -w "resel"|awk '{print $2}') = "1" ]] ; then
  670. echo -e "\033[1;34m $(cat ${ADM_tmp}/message.txt)\033[0m"
  671. msg -bar
  672. fi
  673. if [[ $(cat ${ADM_tmp}/style|grep -w "contador"|awk '{print $2}') = "1" ]] ; then
  674. contador
  675. msg -bar
  676. fi
  677. v=$(cat $ADMRufu/vercion)
  678. up=$v && [[ -e "$ADMRufu/new_vercion" ]] && up=$(cat $ADMRufu/new_vercion)
  679. menu_func "ADMINISTRAR CUENTAS (SSH/DROPBEAR)" \
  680. "-bar3 ADMINISTRAR CUENTAS (V2ray)" \
  681. "-bar3 \033[1;100mPREPARACION DEL SISTEMA\033[0m" \
  682. "-vm DESINSTALAR PANEL"
  683. r='5'; u='u'
  684. if [[ "$(date '+%s' -d "$up")" -gt "$(date '+%s' -d "$v")" ]]; then
  685. msg -bar3
  686. r='6'; u='5'
  687. echo -e "$(msg -verd " [$u]") $(msg -verm2 ">") $(msg -azu "ACTUALIZAR:") $(msg -ama "$v") $(msg -verm2 ">>>") $(msg -verd "$up")"
  688. fi
  689. msg -bar && echo -ne "$(msg -verd " [0]") $(msg -verm2 ">") $(msg -bra "\033[1;41m SALIR DEL SCRIPT ")" && echo -e "$(msg -verd " [$r]") $(msg -verm2 ">") $(msg -bra "\033[1;44m REINICIAR VPS \033[0m")"
  690. msg -bar
  691. selection=$(selection_fun -nama $r)
  692. case ${selection} in
  693. 1)acount_mode;;
  694. 2)${ADM_inst}/userV2ray.sh;;
  695. 3)${ADMRufu}/menu_inst.sh;;
  696. 4)remove_script;;
  697. "$r")reiniciar_vps;;
  698. "$u")update;;
  699. 0)clear && cd $HOME && exit 0;;
  700. esac
  701. ${ADMRufu}/menu