menu 25 KB

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