usercodes 41 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297
  1. #!/bin/bash
  2. #27/01/2021
  3. clear
  4. clear
  5. msg -bar
  6. myip=`ifconfig | grep -Eo 'inet (addr:)?([0-9]*\.){3}[0-9]*' | grep -Eo '([0-9]*\.){3}[0-9]*' | grep -v '127.0.0' | head -n1`;
  7. myint=`ifconfig | grep -B1 "inet addr:$myip" | head -n1 | awk '{print $1}'`;
  8. NOM=`less /etc/VPS-MX/controlador/nombre.log` > /dev/null 2>&1
  9. NOM1=`echo $NOM` > /dev/null 2>&1
  10. IDB=`less /etc/VPS-MX/controlador/IDT.log` > /dev/null 2>&1
  11. IDB1=`echo $IDB` > /dev/null 2>&1
  12. declare -A TIMEUS
  13. SCPdir="/etc/VPS-MX"
  14. SCPdir2="${SCPdir}/herramientas"
  15. SCPusr="${SCPdir}/controlador"
  16. MyPID="${SCPusr}/pid-vps-mx"
  17. MyTIME="${SCPusr}/time-vps-mx"
  18. USRdatabase="${SCPdir}/VPS-MXuser"
  19. VERY="$(ps aux|grep "${SCPusr}/usercodes verificar"| grep -v grep)"
  20. VERY2="$(ps aux|grep "${SCPusr}/usercodes desbloqueo"| grep -v grep)"
  21. dirapache="/usr/local/lib/ubuntn/apache/ver" && [[ ! -d ${dirapache} ]] && exit
  22. [[ -e ${MyPID} ]] && source ${MyPID} || touch ${MyPID}
  23. [[ -e ${MyTIME} ]] && source ${MyTIME} || touch ${MyTIME}
  24. [[ ! -e ${USRdatabase} ]] && touch ${USRdatabase}
  25. sort ${USRdatabase} | uniq > ${USRdatabase}tmp
  26. mv -f ${USRdatabase}tmp ${USRdatabase}
  27. # Open VPN
  28. newclient () {
  29. #Nome #Senha
  30. usermod -p $(openssl passwd -1 $2) $1
  31. while [[ ${newfile} != @(s|S|y|Y|n|N) ]]; do
  32. msg -bar
  33. read -p "Crear Archivo OpenVPN? [S/N]: " -e -i S newfile
  34. tput cuu1 && tput dl1
  35. done
  36. if [[ ${newfile} = @(s|S) ]]; then
  37. # Generates the custom client.ovpn
  38. rm -rf /etc/openvpn/easy-rsa/pki/reqs/$1.req
  39. rm -rf /etc/openvpn/easy-rsa/pki/issued/$1.crt
  40. rm -rf /etc/openvpn/easy-rsa/pki/private/$1.key
  41. cd /etc/openvpn/easy-rsa/
  42. ./easyrsa build-client-full $1 nopass > /dev/null 2>&1
  43. cd
  44. cp /etc/openvpn/client-common.txt ~/$1.ovpn
  45. echo "<ca>" >> ~/$1.ovpn
  46. cat /etc/openvpn/easy-rsa/pki/ca.crt >> ~/$1.ovpn
  47. echo "</ca>" >> ~/$1.ovpn
  48. echo "<cert>" >> ~/$1.ovpn
  49. cat /etc/openvpn/easy-rsa/pki/issued/$1.crt >> ~/$1.ovpn
  50. echo "</cert>" >> ~/$1.ovpn
  51. echo "<key>" >> ~/$1.ovpn
  52. cat /etc/openvpn/easy-rsa/pki/private/$1.key >> ~/$1.ovpn
  53. echo "</key>" >> ~/$1.ovpn
  54. echo "<tls-auth>" >> ~/$1.ovpn
  55. cat /etc/openvpn/ta.key >> ~/$1.ovpn
  56. echo "</tls-auth>" >> ~/$1.ovpn
  57. while [[ ${ovpnauth} != @(s|S|y|Y|n|N) ]]; do
  58. read -p "$(fun_trans "Colocar autenticacion de usuario en el archivo")? [S/N]: " -e -i S ovpnauth
  59. tput cuu1 && tput dl1
  60. done
  61. [[ ${ovpnauth} = @(s|S) ]] && sed -i "s;auth-user-pass;<auth-user-pass>\n$1\n$2\n</auth-user-pass>;g" ~/$1.ovpn
  62. cd $HOME
  63. zip ./$1.zip ./$1.ovpn > /dev/null 2>&1
  64. rm ./$1.ovpn > /dev/null 2>&1
  65. echo -e "\033[1;31m$(fun_trans "Archivo creado"): ($HOME/$1.zip)"
  66. fi
  67. }
  68. unlockall2 () {
  69. for user in $(cat /etc/passwd |awk -F : '$3 > 900 {print $1}' |grep -v "rick" |grep -vi "nobody")
  70. do
  71. userpid=$(ps -u $user |awk {'print $1'})
  72. usermod -U $user &>/dev/null
  73. done
  74. }
  75. eliminar_all () {
  76. clear
  77. clear
  78. msg -bar
  79. msg -tit
  80. echo -e "\033[1;31m BORRAR TODOS LOS USUARIOS REGISTRADOS"
  81. msg -bar
  82. read -p " ►► Enter para Continuar o CTRL + C Cancelar ◄◄"
  83. echo ""
  84. service dropbear stop &>/dev/null
  85. service sshd stop &>/dev/null
  86. service ssh stop &>/dev/null
  87. service stunnel4 stop &>/dev/null
  88. service squid stop &>/dev/null
  89. for user in $(cat /etc/passwd |awk -F : '$3 > 900 {print $1}' |grep -v "rick" |grep -vi "nobody")
  90. do
  91. userpid=$(ps -u $user |awk {'print $1'})
  92. kill "$userpid" 2>/dev/null
  93. userdel $user
  94. echo -e "\033[1;32mUSUARIO:\033[1;33m $user \033[1;31mEliminado"
  95. done
  96. rm -rf ${SCPdir}/VPS-MXuser
  97. service sshd restart &>/dev/null
  98. service ssh restart &>/dev/null
  99. service dropbear start &>/dev/null
  100. service stunnel4 start &>/dev/null
  101. service squid restart &>/dev/null
  102. rm -rf ${SCPdir}/VPS-MX-userlock &>/dev/null
  103. rm -rf /etc/VPS-MX/controlador/Limiter.log &>/dev/null
  104. unlockall2
  105. msg -bar
  106. msg -ne " Enter Para Continuar" && read enter
  107. ${SCPusr}/usercodes
  108. }
  109. reset_contador () {
  110. clear
  111. clear
  112. msg -bar
  113. msg -tit
  114. echo -e "\033[1;33m REINICIAR CONTADOR DE BLOQUEOS"
  115. msg -bar
  116. echo -e "\033[1;97m !! Usar unicamente cuando en el apartado del contador\nmarque alguna cantidad erronea. ¡¡"
  117. echo ""
  118. echo -e "\033[1;91m ## Cancelar Precione CTRL+C"
  119. msg -bar
  120. read -p " ►► Presione enter para continuar ◄◄"
  121. rm -rf /etc/VPS-MX/VPS-MX-userlock
  122. rm -rf /etc/VPS-MX/controlador/Limiter.log
  123. unlockall2
  124. msg -bar
  125. echo -e "\033[1;92m ¡¡CONTADORES REINICIADOS!!"
  126. msg -bar
  127. msg -ne " Enter Para Continuar" && read enter
  128. ${SCPusr}/usercodes
  129. }
  130. SPR &
  131. droppids () {
  132. local pids
  133. local portasVAR=$(lsof -V -i tcp -P -n | grep -v "ESTABLISHED" |grep -v "COMMAND" | grep "LISTEN")
  134. local NOREPEAT
  135. local reQ
  136. local Port
  137. while read port; do
  138. reQ=$(echo ${port}|awk '{print $1}')
  139. Port=$(echo {$port} | awk '{print $9}' | awk -F ":" '{print $2}')
  140. [[ $(echo -e $NOREPEAT|grep -w "$Port") ]] && continue
  141. NOREPEAT+="$Port\n"
  142. case ${reQ} in
  143. dropbear)
  144. [[ -z $DPB ]] && local DPB="\033[1;31m DROPBEAR: \033[1;32m"
  145. DPB+="$Port ";;
  146. esac
  147. done <<< "${portasVAR}"
  148. [[ ! -z $DPB ]] && echo -e $DPB
  149. local port_dropbear="$DPB"
  150. #cat /var/log/auth.log|grep "$(date|cut -d' ' -f2,3)" > /var/log/authday.log
  151. cat /var/log/auth.log|tail -1000 > /var/log/authday.log
  152. local log=/var/log/authday.log
  153. local loginsukses='Password auth succeeded'
  154. [[ -z $port_dropbear ]] && return 1
  155. for port in `echo $port_dropbear`; do
  156. for pidx in $(ps ax |grep dropbear |grep "$port" |awk -F" " '{print $1}'); do
  157. pids="${pids}$pidx\n"
  158. done
  159. done
  160. for pid in `echo -e "$pids"`; do
  161. pidlogs=`grep $pid $log |grep "$loginsukses" |awk -F" " '{print $3}'`
  162. i=0
  163. for pidend in $pidlogs; do
  164. let i++
  165. done
  166. if [[ $pidend ]]; then
  167. login=$(grep $pid $log |grep "$pidend" |grep "$loginsukses")
  168. PID=$pid
  169. user=`echo $login |awk -F" " '{print $10}' | sed -r "s/'//g"`
  170. waktu=$(echo $login |awk -F" " '{print $2"-"$1,$3}')
  171. [[ -z $user ]] && continue
  172. echo "$user|$PID|$waktu"
  173. fi
  174. done
  175. }
  176. block_userfun () {
  177. local USRloked="/etc/VPS-MX/VPS-MX-userlock"
  178. local LIMITERLOG="${USRdatabase}/Limiter.log"
  179. local LIMITERLOG2="${USRdatabase}/Limiter2.log"
  180. if [[ $2 = "-loked" ]]; then
  181. [[ $(cat ${USRloked}|grep -w "$1") ]] && return 1
  182. echo " $1 (BLOCK-MULTILOGIN) $(date +%r--%d/%m/%y)"
  183. limseg="$(less /etc/VPS-MX/controlador/tiemdes.log)"
  184. KEY="862633455:AAGJ9BBJanzV6yYwLSemNAZAVwn7EyjrtcY"
  185. URL="https://api.telegram.org/bot$KEY/sendMessage"
  186. MSG="⚠️ AVISO DE VPS: $NOM1 ⚠️
  187. 🔹 CUENTA: $1
  188. ❗️📵 BLOCK FIJO/TEMPORAL 📵❗️
  189. 🔓( AUTOUNLOCK EN $limseg SEGUNDOS) 🔓"
  190. curl -s --max-time 10 -d "chat_id=$IDB1&disable_web_page_preview=1&text=$MSG" $URL &>/dev/null
  191. pkill -u $1 &>/dev/null
  192. fi
  193. if [[ $(cat ${USRloked}|grep -w "$1") ]]; then
  194. usermod -U "$1" &>/dev/null
  195. [[ -e ${USRloked} ]] && {
  196. newbase=$(cat ${USRloked}|grep -w -v "$1")
  197. [[ -e ${USRloked} ]] && rm ${USRloked}
  198. for value in `echo ${newbase}`; do
  199. echo $value >> ${USRloked}
  200. done
  201. }
  202. [[ -e ${LIMITERLOG} ]] && [[ $(cat ${LIMITERLOG}|grep -w "$1") ]] && {
  203. newbase=$(cat ${LIMITERLOG}|grep -w -v "$1")
  204. [[ -e ${LIMITERLOG} ]] && rm ${LIMITERLOG}
  205. for value in `echo ${newbase}`; do
  206. echo $value >> ${LIMITERLOG}
  207. echo $value >> ${LIMITERLOG}
  208. done
  209. }
  210. return 1
  211. else
  212. usermod -L "$1" &>/dev/null
  213. pkill -u $1 &>/dev/null
  214. # droplim=`droppids|grep -w "$1"|cut -d'|' -f2`
  215. # kill -9 $droplim &>/dev/null
  216. droplim=`dropbear_pids|grep -w "$1"|cut -d'|' -f2`
  217. kill -9 $droplim &>/dev/null
  218. echo $1 >> ${USRloked}
  219. #notifi &>/dev/null
  220. return 0
  221. fi
  222. }
  223. block_user () {
  224. clear
  225. clear
  226. msg -bar
  227. local USRloked="/etc/VPS-MX/VPS-MX-userlock"
  228. [[ ! -e ${USRloked} ]] && touch ${USRloked}
  229. usuarios_ativos=($(mostrar_usuarios))
  230. if [[ -z ${usuarios_ativos[@]} ]]; then
  231. msg -tit
  232. msg -verm "$(fun_trans " BLOCK/UNBLOCK | Ningun Usuario Registrado")"
  233. msg -bar
  234. return 1
  235. else
  236. msg -tit
  237. msg -ama "$(fun_trans " BLOCK/UNBLOCK | Usuarios Activos del Servidor")"
  238. msg -bar
  239. Numb=0
  240. for us in $(echo ${usuarios_ativos[@]}); do
  241. if [[ $(cat ${USRloked}|grep -w "${us}") ]]; then
  242. msg -ne "[$Numb] ->" && echo -e "\033[1;33m ${us} \033[1;31m[Loked]"
  243. else
  244. msg -ne "[$Numb] ->" && echo -e "\033[1;33m ${us} \033[1;32m[Unlocked]"
  245. fi
  246. let Numb++
  247. done
  248. msg -bar
  249. fi
  250. msg -ama "$(fun_trans "Escriba o Seleccione Un Usuario")"
  251. msg -bar
  252. unset selection
  253. while [[ ${selection} = "" ]]; do
  254. echo -ne "\033[1;37mSeleccione: " && read selection
  255. tput cuu1 && tput dl1
  256. done
  257. if [[ ! $(echo "${selection}" | egrep '[^0-9]') ]]; then
  258. usuario_del="${usuarios_ativos[$selection]}"
  259. else
  260. usuario_del="$selection"
  261. fi
  262. [[ -z $usuario_del ]] && {
  263. msg -verm "$(fun_trans "Error, Usuario Invalido")"
  264. msg -bar
  265. return 1
  266. }
  267. [[ ! $(echo ${usuarios_ativos[@]}|grep -w "$usuario_del") ]] && {
  268. msg -verm "$(fun_trans "Error, Usuario Invalido")"
  269. msg -bar
  270. return 1
  271. }
  272. msg -ne "$(fun_trans "Usuario Seleccionado"): " && echo -ne "$usuario_del "
  273. block_userfun "$usuario_del" && msg -verm "[$(fun_trans "Bloqueado")]" || msg -verd "[$(fun_trans "Desbloqueado")]"
  274. msg -bar
  275. msg -ne " Enter Para Continuar" && read enter
  276. ${SCPusr}/usercodes
  277. }
  278. msg -bar3
  279. add_user () {
  280. Fecha=`date +%d-%m-%y-%R`
  281. #nome senha Dias limite
  282. [[ $(cat /etc/passwd |grep $1: |grep -vi [a-z]$1 |grep -v [0-9]$1 > /dev/null) ]] && return 1
  283. valid=$(date '+%C%y-%m-%d' -d " +$3 days") && datexp=$(date "+%F" -d " + $3 days")
  284. useradd -M -s /bin/false $1 -e ${valid} > /dev/null 2>&1 || return 1
  285. (echo $2; echo $2)|passwd $1 2>/dev/null || {
  286. userdel --force $1
  287. return 1
  288. }
  289. [[ -e ${USRdatabase} ]] && {
  290. newbase=$(cat ${USRdatabase}|grep -w -v "$1")
  291. echo "$1|$2|${datexp}|$4" > ${USRdatabase}
  292. for value in `echo ${newbase}`; do
  293. echo $value >> ${USRdatabase}
  294. echo $value >> ${SCPdir}/B-VPS-MXuser/VPS-MXuser-"$Fecha"
  295. done
  296. } || echo "$1|$2|${datexp}|$4" > ${USRdatabase}
  297. }
  298. renew_user_fun () {
  299. #nome dias
  300. datexp=$(date "+%F" -d " + $2 days") && valid=$(date '+%C%y-%m-%d' -d " + $2 days")
  301. chage -E $valid $1 2> /dev/null || return 1
  302. [[ -e ${USRdatabase} ]] && {
  303. newbase=$(cat ${USRdatabase}|grep -w -v "$1")
  304. useredit=$(cat ${USRdatabase}|grep -w "$1")
  305. pass=$(echo $useredit|cut -d'|' -f2)
  306. limit=$(echo $useredit|cut -d'|' -f4)
  307. echo "$1|$pass|${datexp}|$limit" > ${USRdatabase}
  308. for value in `echo ${newbase}`; do
  309. echo $value >> ${USRdatabase}
  310. done
  311. }
  312. }
  313. edit_user_fun () {
  314. #nome senha dias limite
  315. (echo "$2" ; echo "$2" ) |passwd $1 > /dev/null 2>&1 || return 1
  316. datexp=$(date "+%F" -d " + $3 days") && valid=$(date '+%C%y-%m-%d' -d " + $3 days")
  317. chage -E $valid $1 2> /dev/null || return 1
  318. [[ -e ${USRdatabase} ]] && {
  319. newbase=$(cat ${USRdatabase}|grep -w -v "$1")
  320. echo "$1|$2|${datexp}|$4" > ${USRdatabase}
  321. for value in `echo ${newbase}`; do
  322. echo $value >> ${USRdatabase}
  323. done
  324. } || echo "$1|$2|${datexp}|$4" > ${USRdatabase}
  325. }
  326. rm_user () {
  327. #nome
  328. userdel --force "$1" &>/dev/null || return 1
  329. [[ -e ${USRdatabase} ]] && {
  330. newbase=$(cat ${USRdatabase}|grep -w -v "$1")
  331. for value in `echo ${newbase}`; do
  332. echo $value >> ${USRdatabase}
  333. done
  334. }
  335. }
  336. mostrar_usuarios () {
  337. for u in `awk -F : '$3 > 900 { print $1 }' /etc/passwd | grep -v "nobody" |grep -vi polkitd |grep -vi system-`; do
  338. echo "$u"
  339. done
  340. }
  341. dropbear_pids () {
  342. local pids
  343. local portasVAR=$(lsof -V -i tcp -P -n | grep -v "ESTABLISHED" |grep -v "COMMAND" | grep "LISTEN")
  344. local NOREPEAT
  345. local reQ
  346. local Port
  347. while read port; do
  348. reQ=$(echo ${port}|awk '{print $1}')
  349. Port=$(echo {$port} | awk '{print $9}' | awk -F ":" '{print $2}')
  350. [[ $(echo -e $NOREPEAT|grep -w "$Port") ]] && continue
  351. NOREPEAT+="$Port\n"
  352. case ${reQ} in
  353. dropbear)
  354. [[ -z $DPB ]] && local DPB=""
  355. DPB+="$Port ";;
  356. esac
  357. done <<< "${portasVAR}"
  358. [[ ! -z $DPB ]] && echo -e $DPB
  359. local port_dropbear="$DPB"
  360. #cat /var/log/auth.log|grep "$(date|cut -d' ' -f2,3)" > /var/log/authday.log
  361. cat /var/log/auth.log|tail -1000 > /var/log/authday.log
  362. local log=/var/log/authday.log
  363. local loginsukses='Password auth succeeded'
  364. [[ -z $port_dropbear ]] && return 1
  365. for port in `echo $port_dropbear`; do
  366. for pidx in $(ps ax |grep dropbear |grep "$port" |awk -F" " '{print $1}'); do
  367. pids="${pids}$pidx\n"
  368. done
  369. done
  370. for pid in `echo -e "$pids"`; do
  371. pidlogs=`grep $pid $log |grep "$loginsukses" |awk -F" " '{print $3}'`
  372. i=0
  373. for pidend in $pidlogs; do
  374. let i++
  375. done
  376. if [[ $pidend ]]; then
  377. login=$(grep $pid $log |grep "$pidend" |grep "$loginsukses")
  378. PID=$pid
  379. user=`echo $login |awk -F" " '{print $10}' | sed -r "s/'//g"`
  380. waktu=$(echo $login |awk -F" " '{print $2"-"$1,$3}')
  381. [[ -z $user ]] && continue
  382. echo "$user|$PID|$waktu"
  383. fi
  384. done
  385. }
  386. openvpn_pids () {
  387. #nome|#loguin|#rcv|#snd|#time
  388. byte () {
  389. while read B dummy; do
  390. [[ "$B" -lt 1024 ]] && echo "${B} bytes" && break
  391. KB=$(((B+512)/1024))
  392. [[ "$KB" -lt 1024 ]] && echo "${KB} Kb" && break
  393. MB=$(((KB+512)/1024))
  394. [[ "$MB" -lt 1024 ]] && echo "${MB} Mb" && break
  395. GB=$(((MB+512)/1024))
  396. [[ "$GB" -lt 1024 ]] && echo "${GB} Gb" && break
  397. echo $(((GB+512)/1024)) terabytes
  398. done
  399. }
  400. for user in $(mostrar_usuarios); do
  401. user="$(echo $user|sed -e 's/[^a-z0-9 -]//ig')"
  402. [[ ! $(sed -n "/^${user},/p" /etc/openvpn/openvpn-status.log) ]] && continue
  403. i=0
  404. unset RECIVED; unset SEND; unset HOUR
  405. while read line; do
  406. IDLOCAL=$(echo ${line}|cut -d',' -f2)
  407. RECIVED+="$(echo ${line}|cut -d',' -f3)+"
  408. SEND+="$(echo ${line}|cut -d',' -f4)+"
  409. DATESEC=$(date +%s --date="$(echo ${line}|cut -d',' -f5|cut -d' ' -f1,2,3,4)")
  410. TIMEON="$(($(date +%s)-${DATESEC}))"
  411. MIN=$(($TIMEON/60)) && SEC=$(($TIMEON-$MIN*60)) && HOR=$(($MIN/60)) && MIN=$(($MIN-$HOR*60))
  412. HOUR+="${HOR}h:${MIN}m:${SEC}s\n"
  413. let i++
  414. done <<< "$(sed -n "/^${user},/p" /etc/openvpn/openvpn-status.log)"
  415. RECIVED=$(echo $(echo ${RECIVED}0|bc)|byte)
  416. SEND=$(echo $(echo ${SEND}0|bc)|byte)
  417. HOUR=$(echo -e $HOUR|sort -n|tail -1)
  418. echo -e "$user|$i|$RECIVED|$SEND|$HOUR"
  419. done
  420. }
  421. err_fun () {
  422. case $1 in
  423. 1)msg -verm "$(fun_trans "Usuario Nulo")"; sleep 2s; tput cuu1; tput dl1; tput cuu1; tput dl1;;
  424. 2)msg -verm "$(fun_trans "Usuario con nombre muy corto")"; sleep 2s; tput cuu1; tput dl1; tput cuu1; tput dl1;;
  425. 3)msg -verm "$(fun_trans "Usuario con nombre muy grande")"; sleep 2s; tput cuu1; tput dl1; tput cuu1; tput dl1;;
  426. 4)msg -verm "$(fun_trans "Contraseña Nula")"; sleep 2s; tput cuu1; tput dl1; tput cuu1; tput dl1;;
  427. 5)msg -verm "$(fun_trans "Contraseña muy corta")"; sleep 2s; tput cuu1; tput dl1; tput cuu1; tput dl1;;
  428. 6)msg -verm "$(fun_trans "Contraseña muy grande")"; sleep 2s; tput cuu1; tput dl1; tput cuu1; tput dl1;;
  429. 7)msg -verm "$(fun_trans "Duracion Nula")"; sleep 2s; tput cuu1; tput dl1; tput cuu1; tput dl1;;
  430. 8)msg -verm "$(fun_trans "Duracion invalida utilize numeros")"; sleep 2s; tput cuu1; tput dl1; tput cuu1; tput dl1;;
  431. 9)msg -verm "$(fun_trans "Duracion maxima y de un año")"; sleep 2s; tput cuu1; tput dl1; tput cuu1; tput dl1;;
  432. 11)msg -verm "$(fun_trans "Limite Nulo")"; sleep 2s; tput cuu1; tput dl1; tput cuu1; tput dl1;;
  433. 12)msg -verm "$(fun_trans "Limite invalido utilize numeros")"; sleep 2s; tput cuu1; tput dl1; tput cuu1; tput dl1;;
  434. 13)msg -verm "$(fun_trans "Limite maximo de 999")"; sleep 2s; tput cuu1; tput dl1; tput cuu1; tput dl1;;
  435. 14)msg -verm "$(fun_trans "Usuario Ya Existe")"; sleep 2s; tput cuu1; tput dl1; tput cuu1; tput dl1;;
  436. esac
  437. }
  438. new_user () {
  439. clear
  440. clear
  441. msg -bar
  442. usuarios_ativos=($(mostrar_usuarios))
  443. if [[ -z ${usuarios_ativos[@]} ]]; then
  444. msg -tit
  445. msg -ama " AGREGAR USUARIO | Ningun Usuario Registrado"
  446. msg -bar
  447. else
  448. msg -tit
  449. msg -ama " AGREGAR USUARIO | Usuarios Activos en Servidor"
  450. msg -bar
  451. for us in $(echo ${usuarios_ativos[@]}); do
  452. msg -ne " >> Usuario: " && echo "${us}"
  453. done
  454. msg -bar
  455. fi
  456. while true; do
  457. msg -ne "$(fun_trans "Nombre Del Nuevo Usuario")"
  458. read -p ": " nomeuser
  459. nomeuser="$(echo $nomeuser|sed -e 's/[^a-z0-9 -]//ig')"
  460. if [[ -z $nomeuser ]]; then
  461. err_fun 1 && continue
  462. elif [[ "${#nomeuser}" -lt "4" ]]; then
  463. err_fun 2 && continue
  464. elif [[ "${#nomeuser}" -gt "24" ]]; then
  465. err_fun 3 && continue
  466. elif [[ "$(echo ${usuarios_ativos[@]}|grep -w "$nomeuser")" ]]; then
  467. err_fun 14 && continue
  468. fi
  469. break
  470. done
  471. while true; do
  472. msg -ne "$(fun_trans "Contraseña Del Nuevo Usuario")"
  473. read -p ": " senhauser
  474. if [[ -z $senhauser ]]; then
  475. err_fun 4 && continue
  476. elif [[ "${#senhauser}" -lt "6" ]]; then
  477. err_fun 5 && continue
  478. elif [[ "${#senhauser}" -gt "20" ]]; then
  479. err_fun 6 && continue
  480. fi
  481. break
  482. done
  483. while true; do
  484. msg -ne "$(fun_trans "Tiempo de Duracion del Nuevo Usuario")"
  485. read -p ": " diasuser
  486. if [[ -z "$diasuser" ]]; then
  487. err_fun 7 && continue
  488. elif [[ "$diasuser" != +([0-9]) ]]; then
  489. err_fun 8 && continue
  490. elif [[ "$diasuser" -gt "360" ]]; then
  491. err_fun 9 && continue
  492. fi
  493. break
  494. done
  495. while true; do
  496. msg -ne "$(fun_trans "Limite de Conexiones del Nuevo Usuario")"
  497. read -p ": " limiteuser
  498. if [[ -z "$limiteuser" ]]; then
  499. err_fun 11 && continue
  500. elif [[ "$limiteuser" != +([0-9]) ]]; then
  501. err_fun 12 && continue
  502. elif [[ "$limiteuser" -gt "999" ]]; then
  503. err_fun 13 && continue
  504. fi
  505. break
  506. done
  507. tput cuu1 && tput dl1
  508. tput cuu1 && tput dl1
  509. tput cuu1 && tput dl1
  510. tput cuu1 && tput dl1
  511. msg -ne "$(fun_trans " >> IP del Servidor"): " && echo -e "$(meu_ip)"
  512. msg -ne "$(fun_trans " >> Usuario"): " && echo -e "$nomeuser"
  513. msg -ne "$(fun_trans " >> Contraseña"): " && echo -e "$senhauser"
  514. msg -ne "$(fun_trans " >> Dias de Duracion"): " && echo -e "$diasuser"
  515. msg -ne "$(fun_trans " >> Fecha de Expiracion"): " && echo -e "$(date "+%F" -d " + $diasuser days")"
  516. msg -ne "$(fun_trans " >> Limite de Conexion"): " && echo -e "$limiteuser"
  517. msg -bar
  518. diasuser2="$(echo "$diasuser"|bc)+1"
  519. echo "${diasuser2}"|bc > /etc/VPS-MX/controlador/DIAS.log
  520. diasuser3="$(less /etc/VPS-MX/controlador/DIAS.log)"
  521. add_user "${nomeuser}" "${senhauser}" "${diasuser3}" "${limiteuser}" && msg -ama "$(fun_trans " Usuario Creado con Exito")" || msg -verm "$(fun_trans " Error, Usuario no creado")"
  522. [[ $(dpkg --get-selections|grep -w "openvpn"|head -1) ]] && [[ -e /etc/openvpn/openvpn-status.log ]] && newclient "$nomeuser" "$senhauser"
  523. msg -bar
  524. msg -ne " Enter Para Continuar" && read enter
  525. ${SCPusr}/usercodes
  526. }
  527. remove_user () {
  528. clear
  529. clear
  530. msg -bar
  531. usuarios_ativos=($(mostrar_usuarios))
  532. if [[ -z ${usuarios_ativos[@]} ]]; then
  533. msg -tit
  534. msg -verm "$(fun_trans " BORAR USUARIO | Ningun usuario registrado")"
  535. msg -bar
  536. return 1
  537. else
  538. msg -tit
  539. msg -ama "$(fun_trans " BORAR USUARIO | Usuarios Activos del Servidor")"
  540. msg -bar
  541. i=0
  542. for us in $(echo ${usuarios_ativos[@]}); do
  543. msg -ne "[$i] ->" && echo -e "\033[1;33m ${us}"
  544. let i++
  545. done
  546. msg -bar
  547. fi
  548. msg -ama "$(fun_trans "Escriba o Seleccione un Usuario")"
  549. msg -bar
  550. msg -ama "\033[1;31mSe recomienda desbloquear todas las cuentas \nbloqueadas antes de borrar algun usuario."
  551. msg -bar
  552. unset selection
  553. while [[ -z ${selection} ]]; do
  554. echo -ne "\033[1;37m$(fun_trans "Seleccione Una Opcion"): " && read selection
  555. tput cuu1 && tput dl1
  556. done
  557. if [[ ! $(echo "${selection}" | egrep '[^0-9]') ]]; then
  558. usuario_del="${usuarios_ativos[$selection]}"
  559. else
  560. usuario_del="$selection"
  561. fi
  562. [[ -z $usuario_del ]] && {
  563. msg -verm "$(fun_trans "Error, Usuario Invalido")"
  564. msg -bar
  565. return 1
  566. }
  567. [[ ! $(echo ${usuarios_ativos[@]}|grep -w "$usuario_del") ]] && {
  568. msg -verm "$(fun_trans "Error, Usuario Invalido")"
  569. msg -bar
  570. return 1
  571. }
  572. msg -ne "$(fun_trans "Usuario Seleccionado"): " && echo -ne "$usuario_del"
  573. pkill -u $usuario_del
  574. droplim=`dropbear_pids|grep -w "$usuario_del"|cut -d'|' -f2`
  575. kill -9 $droplim &>/dev/null
  576. # droplim=`droppids|grep -w "$usuario_del"|cut -d'|' -f2`
  577. # kill -9 $droplim &>/dev/null
  578. rm_user "$usuario_del" && msg -verd " [$(fun_trans "Removido")]" || msg -verm " [$(fun_trans "No Removido")]"
  579. rm -rf /etc/VPS-MX/VPS-MX-userlock
  580. rm -rf /etc/VPS-MX/controlador/Limiter.log
  581. unlockall2
  582. msg -bar
  583. msg -ne " Enter Para Continuar" && read enter
  584. ${SCPusr}/usercodes
  585. }
  586. renew_user () {
  587. clear
  588. clear
  589. msg -bar
  590. usuarios_ativos=($(mostrar_usuarios))
  591. if [[ -z ${usuarios_ativos[@]} ]]; then
  592. msg -tit
  593. msg -verm "$(fun_trans " EDITAR USUARIO | Ningun usuario registrado")"
  594. msg -bar
  595. return 1
  596. else
  597. msg -tit
  598. msg -ama "$(fun_trans " EDITAR USUARIO | Usuarios Activos en el Servidor")"
  599. msg -bar
  600. i=0
  601. for us in $(echo ${usuarios_ativos[@]}); do
  602. msg -ne "[$i] ->" && echo -e "\033[1;33m ${us}"
  603. let i++
  604. done
  605. msg -bar
  606. fi
  607. msg -ama "$(fun_trans "Escriba o seleccione un Usuario")"
  608. msg -bar
  609. unset selection
  610. while [[ -z ${selection} ]]; do
  611. echo -ne "\033[1;37m$(fun_trans "Seleccione una Opcion"): " && read selection
  612. tput cuu1
  613. tput dl1
  614. done
  615. if [[ ! $(echo "${selection}" | egrep '[^0-9]') ]]; then
  616. useredit="${usuarios_ativos[$selection]}"
  617. else
  618. useredit="$selection"
  619. fi
  620. [[ -z $useredit ]] && {
  621. msg -verm "$(fun_trans "Error, Usuario Invalido")"
  622. msg -bar
  623. return 1
  624. }
  625. [[ ! $(echo ${usuarios_ativos[@]}|grep -w "$useredit") ]] && {
  626. msg -verm "$(fun_trans "Error, Usuario Invalido")"
  627. msg -bar
  628. return 1
  629. }
  630. while true; do
  631. msg -ne "Nuevo Tiempo de Duracion de:\033[1;33m $useredit"
  632. read -p ": " diasuser
  633. if [[ -z "$diasuser" ]]; then
  634. echo -e '\n\n\n'
  635. err_fun 7 && continue
  636. elif [[ "$diasuser" != +([0-9]) ]]; then
  637. echo -e '\n\n\n'
  638. err_fun 8 && continue
  639. elif [[ "$diasuser" -gt "360" ]]; then
  640. echo -e '\n\n\n'
  641. err_fun 9 && continue
  642. fi
  643. break
  644. done
  645. msg -bar
  646. renew_user_fun "${useredit}" "${diasuser}" && msg -ama "$(fun_trans "Usuario Modificado Con Exito")" || msg -verm "$(fun_trans "Error, Usuario no Modificado")"
  647. msg -bar
  648. msg -ne " Enter Para Continuar" && read enter
  649. ${SCPusr}/usercodes
  650. }
  651. edit_user () {
  652. clear
  653. clear
  654. msg -bar
  655. usuarios_ativos=($(mostrar_usuarios))
  656. if [[ -z ${usuarios_ativos[@]} ]]; then
  657. msg -tit
  658. msg -verm "$(fun_trans " EDITTAR USER | Ningun usuario registrado")"
  659. msg -bar
  660. return 1
  661. else
  662. msg -tit
  663. msg -ama "$(fun_trans " EDITTAR USER | Usuarios Activos del Servidor")"
  664. msg -bar
  665. i=0
  666. for us in $(echo ${usuarios_ativos[@]}); do
  667. msg -ne "[$i] ->" && echo -e "\033[1;33m ${us}"
  668. let i++
  669. done
  670. msg -bar
  671. fi
  672. msg -ama "$(fun_trans "Escriba o seleccione un Usuario")"
  673. msg -bar
  674. unset selection
  675. while [[ -z ${selection} ]]; do
  676. echo -ne "\033[1;37m$(fun_trans "Seleccione una Opcion"): " && read selection
  677. tput cuu1; tput dl1
  678. done
  679. if [[ ! $(echo "${selection}" | egrep '[^0-9]') ]]; then
  680. useredit="${usuarios_ativos[$selection]}"
  681. else
  682. useredit="$selection"
  683. fi
  684. [[ -z $useredit ]] && {
  685. msg -verm "$(fun_trans "Error, Usuario Invalido")"
  686. msg -bar
  687. return 1
  688. }
  689. [[ ! $(echo ${usuarios_ativos[@]}|grep -w "$useredit") ]] && {
  690. msg -verm "$(fun_trans "Error, Usuario Invalido")"
  691. msg -bar
  692. return 1
  693. }
  694. while true; do
  695. msg -ne "$(fun_trans "Usuario Seleccionado"): " && echo -e "$useredit"
  696. msg -ne "Nueva Contraseña de:\033[1;33m $useredit"
  697. read -p ": " senhauser
  698. if [[ -z "$senhauser" ]]; then
  699. err_fun 4 && continue
  700. elif [[ "${#senhauser}" -lt "6" ]]; then
  701. err_fun 5 && continue
  702. elif [[ "${#senhauser}" -gt "20" ]]; then
  703. err_fun 6 && continue
  704. fi
  705. break
  706. done
  707. while true; do
  708. msg -ne "Dias de Duracion de:\033[1;33m $useredit"
  709. read -p ": " diasuser
  710. if [[ -z "$diasuser" ]]; then
  711. err_fun 7 && continue
  712. elif [[ "$diasuser" != +([0-9]) ]]; then
  713. err_fun 8 && continue
  714. elif [[ "$diasuser" -gt "360" ]]; then
  715. err_fun 9 && continue
  716. fi
  717. break
  718. done
  719. while true; do
  720. msg -ne "Nuevo Limite de Conexion de:\033[1;33m $useredit"
  721. read -p ": " limiteuser
  722. if [[ -z "$limiteuser" ]]; then
  723. err_fun 11 && continue
  724. elif [[ "$limiteuser" != +([0-9]) ]]; then
  725. err_fun 12 && continue
  726. elif [[ "$limiteuser" -gt "999" ]]; then
  727. err_fun 13 && continue
  728. fi
  729. break
  730. done
  731. tput cuu1 && tput dl1
  732. tput cuu1 && tput dl1
  733. tput cuu1 && tput dl1
  734. tput cuu1 && tput dl1
  735. msg -ne "$(fun_trans " >> Usuario"): " && echo -e "$useredit"
  736. msg -ne "$(fun_trans " >> Contraseña"): " && echo -e "$senhauser"
  737. msg -ne "$(fun_trans " >> Dias de Duracion"): " && echo -e "$diasuser"
  738. msg -ne "$(fun_trans " >> Fecha de Expiracion"): " && echo -e "$(date "+%F" -d " + $diasuser days")"
  739. msg -ne "$(fun_trans " >> Limite de Conexion"): " && echo -e "$limiteuser"
  740. msg -bar
  741. edit_user_fun "${useredit}" "${senhauser}" "${diasuser}" "${limiteuser}" && msg -ama "$(fun_trans "Usuario Modificado Con Exito")" && rm -rf ${SCPusr}/Limiter.log || msg -verm "$(fun_trans "Error, Usuario nao Modificado")"
  742. msg -bar
  743. msg -ne " Enter Para Continuar" && read enter
  744. ${SCPusr}/usercodes
  745. }
  746. detail_user () {
  747. clear
  748. clear
  749. msg -bar2
  750. msg -tit
  751. msg -ama "$(fun_trans " INFORMACION DE USUARIOS REGISTRADOS ")"
  752. msg -bar2
  753. red=$(tput setaf 1)
  754. gren=$(tput setaf 2)
  755. yellow=$(tput setaf 3)
  756. if [[ ! -e "${USRdatabase}" ]]; then
  757. msg -verm "$(fun_trans "No se ha identificado una base de datos con los Usuarios")"
  758. msg -verm "$(fun_trans "Los Usuarios a Seguir No contiene Ninguna Informacion")"
  759. msg -bar2
  760. fi
  761. txtvar=$(printf '%-15s' "USUARIO")
  762. txtvar+=$(printf '%-20s' "CONTRASEÑA")
  763. txtvar+=$(printf '%-13s' "FECHA")
  764. txtvar+=$(printf '%-10s' "LIMITE")
  765. echo -e "\033[1;33m${txtvar}"
  766. msg -bar2
  767. VPSsec=$(date +%s)
  768. while read user; do
  769. unset txtvar
  770. data_user=$(chage -l "$user" |grep -i co |awk -F ":" '{print $2}')
  771. txtvar=$(printf '%-21s' "${yellow}$user")
  772. if [[ -e "${USRdatabase}" ]]; then
  773. if [[ $(cat ${USRdatabase}|grep -w "${user}") ]]; then
  774. txtvar+="$(printf '%-21s' "${yellow}$(cat ${USRdatabase}|grep -w "${user}"|cut -d'|' -f2)")"
  775. DateExp="$(cat ${USRdatabase}|grep -w "${user}"|cut -d'|' -f3)"
  776. DataSec=$(date +%s --date="$DateExp")
  777. if [[ "$VPSsec" -gt "$DataSec" ]]; then
  778. EXPTIME="${red}[Exp]"
  779. else
  780. EXPTIME="${gren}[$(($(($DataSec - $VPSsec)) / 86400))]"
  781. fi
  782. txtvar+="$(printf '%-29s' "${yellow}${DateExp}${EXPTIME}")"
  783. txtvar+="$(printf '%-5s' "${yellow}$(cat ${USRdatabase}|grep -w "${user}"|cut -d'|' -f4)")"
  784. else
  785. txtvar+="$(printf '%-21s' "${red}???")"
  786. txtvar+="$(printf '%-29s' "${red}???")"
  787. txtvar+="$(printf '%-11s' "${red}???")"
  788. fi
  789. fi
  790. echo -e "$txtvar"
  791. done <<< "$(mostrar_usuarios)"
  792. msg -bar2
  793. msg -ne " Enter Para Continuar" && read enter
  794. ${SCPusr}/usercodes
  795. }
  796. monit_user () {
  797. clear
  798. clear
  799. msg -bar
  800. yellow=$(tput setaf 3)
  801. gren=$(tput setaf 2)
  802. msg -tit
  803. echo -e "$(fun_trans "\e[93m MONITOR DE CONEXIONES SSH/DROPBEAR/SSL/OPENVPN")"
  804. msg -bar
  805. txtvar=$(printf '%-20s' " USUARIO")
  806. txtvar+=$(printf '%-19s' "CONEXIONES")
  807. txtvar+=$(printf '%-16s' "TIME/ON")
  808. echo -e "\033[1;92m${txtvar}"
  809. msg -bar
  810. while read user; do
  811. _=$(
  812. PID="0+"
  813. [[ $(dpkg --get-selections|grep -w "openssh"|head -1) ]] && PID+="$(ps aux|grep -v grep|grep sshd|grep -w "$user"|grep -v root|wc -l)+"
  814. [[ $(dpkg --get-selections|grep -w "dropbear"|head -1) ]] && PID+="$(dropbear_pids|grep -w "${user}"|wc -l)+"
  815. [[ $(dpkg --get-selections|grep -w "openvpn"|head -1) ]] && [[ -e /etc/openvpn/openvpn-status.log ]] && [[ $(openvpn_pids|grep -w "$user"|cut -d'|' -f2) ]] && PID+="$(openvpn_pids|grep -w "$user"|cut -d'|' -f2)+"
  816. PID+="0"
  817. TIMEON="${TIMEUS[$user]}"
  818. [[ -z $TIMEON ]] && TIMEON=0
  819. MIN=$(($TIMEON/60))
  820. SEC=$(($TIMEON-$MIN*60))
  821. HOR=$(($MIN/60))
  822. MIN=$(($MIN-$HOR*60))
  823. HOUR="${HOR}h:${MIN}m:${SEC}s"
  824. [[ -z $(cat ${USRdatabase}|grep -w "${user}") ]] && MAXUSER="?" || MAXUSER="$(cat ${USRdatabase}|grep -w "${user}"|cut -d'|' -f4)"
  825. [[ $(echo $PID|bc) -gt 0 ]] && user="$user [\033[1;32m ON \033[0m${yellow}]" || user="$user [\033[1;31m OFF \033[0m${yellow}]"
  826. TOTALPID="$(echo $PID|bc)/$MAXUSER"
  827. while [[ ${#user} -lt 45 ]]; do
  828. user=$user" "
  829. done
  830. while [[ ${#TOTALPID} -lt 13 ]]; do
  831. TOTALPID=$TOTALPID" "
  832. done
  833. while [[ ${#HOUR} -lt 8 ]]; do
  834. HOUR=$HOUR" "
  835. done
  836. echo -e "${yellow}$user $TOTALPID $HOUR" >&2
  837. ) &
  838. pid=$!
  839. sleep 0.5s
  840. done <<< "$(mostrar_usuarios)"
  841. while [[ -d /proc/$pid ]]; do
  842. sleep 3s
  843. done
  844. msg -bar
  845. msg -ne " Enter Para Continuar" && read enter
  846. ${SCPusr}/usercodes
  847. }
  848. rm_vencidos () {
  849. clear
  850. clear
  851. msg -bar
  852. msg -tit
  853. echo -e "$(fun_trans "\e[93m BORRANDO USUARIOS VENCIDOS ")"
  854. msg -bar
  855. red=$(tput setaf 1)
  856. gren=$(tput setaf 2)
  857. yellow=$(tput setaf 3)
  858. txtvar=$(printf '%-25s' " USUARIO")
  859. txtvar+=$(printf '%-25s' " VALIDIDEZ")
  860. echo -e "\033[1;92m${txtvar}"
  861. msg -bar
  862. expired="${red}$(fun_trans "Usuario Expirado")"
  863. valid="${gren}$(fun_trans " Usuario Vigente")"
  864. never="${yellow}$(fun_trans "Usuario Ilimitado")"
  865. removido="${red}$(fun_trans "Eliminado")"
  866. DataVPS=$(date +%s)
  867. while read user; do
  868. DataUser=$(chage -l "${user}" |grep -i co|awk -F ":" '{print $2}')
  869. usr=$user
  870. while [[ ${#usr} -lt 20 ]]; do
  871. usr=$usr" "
  872. done
  873. [[ "$DataUser" = " never" ]] && {
  874. echo -e "${yellow}$usr $never"
  875. continue
  876. }
  877. DataSEC=$(date +%s --date="$DataUser")
  878. if [[ "$DataSEC" -lt "$DataVPS" ]]; then
  879. echo -ne "${yellow}$usr $expired"
  880. rm_user "$user" && echo -e "($removido)"
  881. else
  882. echo -e "${yellow}$usr $valid"
  883. fi
  884. done <<< "$(mostrar_usuarios)"
  885. rm -rf /etc/VPS-MX/VPS-MX-userlock
  886. rm -rf /etc/VPS-MX/controlador/Limiter.log
  887. unlockall2
  888. msg -bar
  889. msg -ne " Enter Para Continuar" && read enter
  890. ${SCPusr}/usercodes
  891. }
  892. verif_fun () {
  893. # DECLARANDO VARIAVEIS PRIMARIAS
  894. local conexao
  895. local limite
  896. local TIMEUS
  897. declare -A conexao
  898. declare -A limite
  899. declare -A TIMEUS
  900. local LIMITERLOG="${SCPusr}/Limiter.log"
  901. local LIMITERLOG2="${SCPusr}/Limiter2.log"
  902. [[ $(dpkg --get-selections|grep -w "openssh"|head -1) ]] && local SSH=ON || local SSH=OFF
  903. [[ $(dpkg --get-selections|grep -w "dropbear"|head -1) ]] && local DROP=ON || local DROP=OFF
  904. [[ $(dpkg --get-selections|grep -w "openvpn"|head -1) ]] && [[ -e /etc/openvpn/openvpn-status.log ]] && local OPEN=ON || local OPEN=OFF
  905. while true; do
  906. unset EXPIRED
  907. unset ONLINES
  908. unset BLOQUEADO
  909. #[[ -e ${MyTIME} ]] && source ${MyTIME}
  910. local TimeNOW=$(date +%s)
  911. # INICIA VERIFICAȃO
  912. while read user; do
  913. echo -ne "\033[1;33mUSUARIO: \033[1;32m$user "
  914. if [[ ! $(echo $(mostrar_usuarios)|grep -w "$user") ]]; then
  915. echo -e "\033[1;31mNO EXISTE"
  916. continue
  917. fi
  918. local DataUser=$(chage -l "${user}" |grep -i co|awk -F ":" '{print $2}')
  919. if [[ ! -z "$(echo $DataUser|grep never)" ]]; then
  920. echo -e "\033[1;31mILIMITADO"
  921. continue
  922. fi
  923. local DataSEC=$(date +%s --date="$DataUser")
  924. if [[ "$DataSEC" -lt "$TimeNOW" ]]; then
  925. EXPIRED="1+"
  926. block_userfun $user -loked && echo " $user (EXPIRADO) $(date +%r--%d/%m/%y)" >> $LIMITERLOG && echo " $user (EXPIRADO) $(date +%r--%d/%m/%y)" >> $LIMITERLOG2 && KEY="862633455:AAGJ9BBJanzV6yYwLSemNAZAVwn7EyjrtcY"
  927. URL="https://api.telegram.org/bot$KEY/sendMessage"
  928. MSG="⚠️ AVISO DE VPS: $NOM1 ⚠️
  929. 🔹 CUENTA: $user
  930. ❗️ 📵 EXPIRADA 📵 ❗️"
  931. curl -s --max-time 10 -d "chat_id=$IDB1&disable_web_page_preview=1&text=$MSG" $URL && pkill -u $user
  932. echo -e "\033[1;31m EXPIRADO"
  933. continue
  934. fi
  935. local PID="0+"
  936. [[ $SSH = ON ]] && PID+="$(ps aux|grep -v grep|grep sshd|grep -w "$user"|grep -v root|wc -l 2>/dev/null)+"
  937. [[ $DROP = ON ]] && PID+="$(dropbear_pids|grep -w "$user"|wc -l 2>/dev/null)+"
  938. [[ $OPEN = ON ]] && [[ $(openvpn_pids|grep -w "$user"|cut -d'|' -f2) ]] && PID+="$(openvpn_pids|grep -w "$user"|cut -d'|' -f2)+"
  939. local ONLINES+="$(echo ${PID}0|bc)+"
  940. local conexao[$user]="$(echo ${PID}0|bc)"
  941. if [[ ${conexao[$user]} -gt '0' ]]; then #CONTADOR DE TEMPO ONLINE
  942. [[ -z "${TIMEUS[$user]}" ]] && local TIMEUS[$user]=0
  943. [[ "${TIMEUS[$user]}" != +([0-9]) ]] && local TIMEUS[$user]=0
  944. local TIMEUS[$user]="$((300+${TIMEUS[$user]}))"
  945. local VARS="$(cat ${MyTIME}|grep -w -v "$user")"
  946. echo "TIMEUS[$user]='${TIMEUS[$user]}'" > ${MyTIME}
  947. for variavel in $(echo ${VARS}); do echo "${variavel}" >> ${MyTIME}; done
  948. fi
  949. local limite[$user]="$(cat ${USRdatabase}|grep -w "${user}"|cut -d'|' -f4)"
  950. [[ -z "${limite[$user]}" ]] && continue
  951. [[ "${limite[$user]}" != +([0-9]) ]] && continue
  952. if [[ "${conexao[$user]}" -gt "${limite[$user]}" ]]; then
  953. local lock=$(block_userfun $user -loked)
  954. pkill -u $user
  955. droplim=`dropbear_pids|grep -w "$user"|cut -d'|' -f2`
  956. kill -9 $droplim &>/dev/null
  957. openlim=`openvpn_pids|grep -w "$user"|cut -d'|' -f2`
  958. kill -9 $openlim &>/dev/null
  959. echo "$lock" >> $LIMITERLOG && echo "$lock" >> $LIMITERLOG2
  960. echo -e "\033[1;31m ULTRAPASO LIMITE"
  961. continue
  962. fi
  963. echo -e "\033[1;33m OK! \033[1;31m${conexao[$user]} CONEXIONESS"
  964. BLOQUEADO="$(wc -l /etc/VPS-MX/VPS-MX-userlock | awk '{print $1}')"
  965. #BLOQUEADO="$(grep -c BLOCK-MULTILOGIN /etc/VPS-MX/controlador/Limiter.log)"
  966. BLOQUEADO2="$(echo ${BLOQUEADO}|bc)0"
  967. BLOQUEADO3="/10"
  968. EXPIRADO="$(grep -c EXPIRADO /etc/VPS-MX/controlador/Limiter.log)"
  969. EXPIRADO2="$(echo ${EXPIRADO}|bc)0"
  970. EXPIRADO3="/10"
  971. done <<< "$(mostrar_usuarios)"
  972. echo "${ONLINES}0"|bc > ${SCPdir}/USRonlines
  973. #echo "${EXPIRED}0"|bc > ${SCPdir}/USRexpired
  974. echo "${EXPIRADO2}${EXPIRADO3}"|bc > ${SCPdir}/USRexpired
  975. echo "${BLOQUEADO2}${BLOQUEADO3}"|bc > ${SCPdir}/USRbloqueados
  976. limseg="$(less /etc/VPS-MX/controlador/tiemlim.log)"
  977. sleep $limseg # TEMPO DE ESPERA DO LOOP
  978. clear
  979. done
  980. }
  981. SPR &
  982. backup_fun () {
  983. clear
  984. clear
  985. msg -bar
  986. msg -tit
  987. msg -ama "$(fun_trans " HERRAMIENTA DE BACKUP DE USUARIOS")"
  988. msg -bar
  989. menu_func "CREAR BACKUP" "RESTAURAR BACKUP"
  990. msg -bar
  991. unset selection
  992. while [[ ${selection} != @([1-2]) ]]; do
  993. echo -ne "\033[1;37m$(fun_trans "Seleccione una Opcion"): " && read selection
  994. tput cuu1 && tput dl1
  995. done
  996. case ${selection} in
  997. 1)
  998. cp ${USRdatabase} $HOME/VPS-MX-Backup
  999. msg -azu "$(fun_trans "Procedimiento Hecho con Exito, Guardado en:")"
  1000. echo ""
  1001. echo -e "\033[1;31mBACKUP > [\033[1;32m$HOME/VPS-MX-Backup\033[1;31m]"
  1002. echo ""
  1003. ;;
  1004. 2)
  1005. while [[ ! -e ${dirbackup} ]]; do
  1006. echo -ne "\033[1;37m ¡¡Recomiendo DESACTIVAR Limitador si es que lo tine ACTIVO!!\n"
  1007. echo -ne "\033[1;37m Escriba la ubicacion de la copia de seguridad\n"
  1008. msg -bar
  1009. echo -ne "\033[1;37m ENTER: para ruta predeterminada /root/VPS-MX-Backup: " && read dirbackup
  1010. echo ""
  1011. echo "---------- RESTAURANDO CUENTAS ESPERE "
  1012. echo ""
  1013. msg -bar
  1014. [[ -z "${dirbackup}" ]] && dirbackup="/root/VPS-MX-Backup"
  1015. tput cuu1 && tput dl1
  1016. done
  1017. VPSsec=$(date +%s)
  1018. while read line; do
  1019. nome=$(echo ${line}|cut -d'|' -f1)
  1020. [[ $(echo $(mostrar_usuarios)|grep -w "$nome") ]] && { msg -verm "$nome [ERROR]"
  1021. continue
  1022. }
  1023. senha=$(echo ${line}|cut -d'|' -f2)
  1024. DateExp=$(echo ${line}|cut -d'|' -f3)
  1025. DataSec=$(date +%s --date="$DateExp")
  1026. [[ "$VPSsec" -lt "$DataSec" ]] && dias="$(($(($DataSec - $VPSsec)) / 86400))" || dias="NP"
  1027. limite=$(echo ${line}|cut -d'|' -f4)
  1028. add_user "$nome" "$senha" "$dias" "$limite" &>/dev/null && msg -verd "$nome [CUENTA VALIDA]" || msg -verm "$nome [CUENTA INVALIDA FECHA EXPIRADA]"
  1029. done < ${dirbackup}
  1030. ;;
  1031. esac
  1032. echo ""
  1033. msg -bar
  1034. msg -ne " Enter Para Continuar" && read enter
  1035. ${SCPusr}/usercodes
  1036. }
  1037. ##LIMITADOR
  1038. verif_funx () {
  1039. clear
  1040. clear
  1041. msg -bar
  1042. msg -tit
  1043. echo -e "\033[1;32m LIMITADOR DE CUENTAS"
  1044. msg -bar
  1045. echo -e "Esta Opcion Limita las Conexiones de SSH/SSL/DROPBEAR"
  1046. PIDVRF="$(ps aux|grep "${SCPusr}/usercodes verificar"|grep -v grep|awk '{print $2}')"
  1047. if [[ -z $PIDVRF ]]; then
  1048. msg -bar
  1049. echo -ne "\033[1;96m ¿Cada cuantos segundos ejecutar el limitador?\n\033[1;97m +Segundos = -Uso de CPU | -Segundos = +Uso de CPU\033[0;92m \n Predeterminado:\033[1;37m 120s\n Cuantos Segundos (Numeros Unicamente): " && read tiemlim
  1050. [[ -z "$tiemlim" ]] && tiemlim="120"
  1051. echo "${tiemlim}" > /etc/VPS-MX/controlador/tiemlim.log
  1052. cd ${SCPusr}
  1053. screen -dmS very ${SCPusr}/usercodes verificar
  1054. else
  1055. for pid in $(echo $PIDVRF); do
  1056. kill -9 $pid &>/dev/null
  1057. done
  1058. [[ -e ${SCPdir}/USRonlines ]] && rm ${SCPdir}/USRonlines
  1059. [[ -e ${SCPdir}/USRexpired ]] && rm ${SCPdir}/USRexpired
  1060. [[ -e ${SCPdir}/USRbloqueados ]] && rm ${SCPdir}/USRbloqueados
  1061. fi
  1062. msg -bar
  1063. [[ -z ${VERY} ]] && verificar="\033[1;32m ACTIVADO " || verificar="\033[1;31m DESACTIVADO "
  1064. echo -e " $verificar -- CON EXITO"
  1065. msg -bar
  1066. msg -ne " Enter Para Continuar" && read enter
  1067. ${SCPusr}/usercodes
  1068. }
  1069. ##DESBLOEUEAR
  1070. verif2_funx () {
  1071. clear
  1072. clear
  1073. msg -bar
  1074. msg -tit
  1075. echo -e "\033[1;32m DESBLOQUEO AUT. Y LIMPIADOR DE EXPIARDOS"
  1076. msg -bar
  1077. echo -e "Esta opcion desbloquea cada 60 segundos a usuarios\nbloqueados por el limitador y limpia los usuarios expirados"
  1078. PIDVRF2="$(ps aux|grep "${SCPusr}/usercodes desbloqueo"|grep -v grep|awk '{print $2}')"
  1079. if [[ -z $PIDVRF2 ]]; then
  1080. msg -bar
  1081. echo -ne "\033[1;96m ¿Cada cuantos segundos ejecutar el desbloqueador?\n\033[1;97m +Segundos = -Uso de CPU | -Segundos = +Uso de CPU\033[0;92m \n Predeterminado:\033[1;37m 300s\n Cuantos Segundos (Numeros Unicamente): " && read tiemdes
  1082. [[ -z "$tiemdes" ]] && tiemdes="300"
  1083. echo "${tiemdes}" > /etc/VPS-MX/controlador/tiemdes.log
  1084. cd ${SCPusr}
  1085. screen -dmS very2 ${SCPusr}/usercodes desbloqueo
  1086. else
  1087. for pid in $(echo $PIDVRF2); do
  1088. kill -9 $pid &>/dev/null
  1089. done
  1090. fi
  1091. msg -bar
  1092. [[ -z ${VERY2} ]] && desbloqueo="\033[1;32m ACTIVADO " || desbloqueo="\033[1;31m DESACTIVADO "
  1093. echo -e " $desbloqueo -- CON EXITO"
  1094. msg -bar
  1095. msg -ne " Enter Para Continuar" && read enter
  1096. ${SCPusr}/usercodes
  1097. }
  1098. baner_fun () {
  1099. banner_on () {
  1100. clear
  1101. clear
  1102. local="/etc/VPS-MX/bannerssh"
  1103. rm -rf $local > /dev/null 2>&1
  1104. local2="/etc/dropbear/banner"
  1105. chk=$(cat /etc/ssh/sshd_config | grep Banner)
  1106. if [ "$(echo "$chk" | grep -v "#Banner" | grep Banner)" != "" ]; then
  1107. local=$(echo "$chk" |grep -v "#Banner" | grep Banner | awk '{print $2}')
  1108. else
  1109. echo "" >> /etc/ssh/sshd_config
  1110. echo "Banner /etc/VPS-MX/bannerssh" >> /etc/ssh/sshd_config
  1111. local="/etc/VPS-MX/bannerssh"
  1112. fi
  1113. msg -bar
  1114. msg -tit
  1115. msg -ama " AGREGAR BANNER SSH/SSL/DROPBEAR"
  1116. msg -bar
  1117. msg -ne "$(fun_trans "Inserte el BANNER de preferencia en HTML sin saltos"): \n\n" && read ban_ner
  1118. echo ""
  1119. msg -bar
  1120. credi="$(less /etc/VPS-MX/message.txt)"
  1121. echo "$ban_ner" >> $local
  1122. echo '<p style="text-align: center;"><span style="color: #0000ff;"><strong>'$credi'</strong></span><br /><em><span style="color: #ff0000;"><strong>SCRIPT - VPS&bull;MX</strong></span></em></p>' >> $local
  1123. if [[ -e "$local2" ]]; then
  1124. rm $local2 > /dev/null 2>&1
  1125. cp $local $local2 > /dev/null 2>&1
  1126. fi
  1127. msg -verd "$(fun_trans " BANNER AGREGADO CON !! EXITO ¡¡" )" && msg -bar
  1128. service dropbear stop 2>/dev/null
  1129. service ssh restart 2>/dev/null
  1130. service dropbear restart 2>/dev/null
  1131. }
  1132. banner_off () {
  1133. clear
  1134. clear
  1135. msg -bar
  1136. msg -tit
  1137. msg -ama " ELIMINANDO BANNER SSH/SSL/DROPBEAR"
  1138. msg -bar
  1139. sed -i '/'Banner'/d' /etc/ssh/sshd_config
  1140. sed -i -e 's/^[ \t]*//; s/[ \t]*$//; /^$/d' /etc/ssh/sshd_config
  1141. echo "" >> /etc/ssh/sshd_config
  1142. rm -rf /etc/dropbear/banner > /dev/null 2>&1
  1143. echo "" > /etc/dropbear/banner > /dev/null 2>&1
  1144. service dropbear stop 2>/dev/null
  1145. service ssh restart 2>/dev/null
  1146. service dropbear restart 2>/dev/null
  1147. echo -e "\033[1;92m BANNER ELIMINADO !! EXITO ¡¡ "
  1148. msg -bar
  1149. }
  1150. clear
  1151. clear
  1152. msg -bar
  1153. msg -tit
  1154. msg -ama " AGREGAR BANNER SSH/SSL/DROPBEAR"
  1155. msg -bar
  1156. echo -e "${cor[1]} Escoja la opcion deseada."
  1157. msg -bar
  1158. echo -e "\033[1;92m 1).- \033[1;37m AGREGAR BANNER SSH/SSL/DROPBEAR "
  1159. echo -e "\033[1;92m 2).- \033[1;37m ELIMINAR Y DESACTIVAR BANNER "
  1160. msg -bar
  1161. echo -ne "\033[1;37mDigite solo el numero segun su respuesta: \033[1;32m"
  1162. read opcao
  1163. case $opcao in
  1164. 1)
  1165. msg -bar
  1166. banner_on
  1167. ;;
  1168. 2)
  1169. msg -bar
  1170. banner_off
  1171. ;;
  1172. esac
  1173. msg -ne " Enter Para Continuar" && read enter
  1174. ${SCPusr}/usercodes
  1175. }
  1176. desbloqueo_auto () {
  1177. while true; do
  1178. Desbloqueo.sh 2>/dev/null
  1179. tiemdes="$(less /etc/VPS-MX/controlador/tiemdes.log)"
  1180. sleep $tiemdes
  1181. done
  1182. }
  1183. rec_total () {
  1184. clear
  1185. clear
  1186. msg -bar
  1187. msg -tit
  1188. echo -e "\033[1;32m REGISTRO TOTAL DE CUENTAS VIEJAS Y NUEVAS"
  1189. msg -bar
  1190. cat /etc/VPS-MX/VPS-MXuser
  1191. msg -bar
  1192. msg -ne " Enter Para Continuar" && read enter
  1193. ${SCPusr}/usercodes
  1194. }
  1195. # LIMITADOR AUTO
  1196. if [[ "$1" = "verificar" ]]; then
  1197. verif_fun
  1198. exit
  1199. fi
  1200. [[ -z ${VERY} ]] && verificar="\033[1;31m[DESACTIVADO]" || verificar="\033[1;32m[ACTIVO]"
  1201. # DESBLOQUEO AUTO
  1202. if [[ "$1" = "desbloqueo" ]]; then
  1203. desbloqueo_auto
  1204. exit
  1205. fi
  1206. [[ -z ${VERY2} ]] && desbloqueo="\033[1;31m[DESACTIVADO]" || desbloqueo="\033[1;32m[ACTIVO]"
  1207. msg -tit
  1208. msg -ama " MENU ADMINISTRACION DE USUARIOS SSL/SSH/DROPBEAR"
  1209. msg -bar
  1210. msg -bar3
  1211. menu_func "CREAR NUEVO USUARIO" "CREAR USUARIO TEMPORAL" "REMOVER USUARIO" "BLOQUEAR O DESBLOQUEAR USUARIO" "REINICIAR CONTADOR DE BLOQUEADOS y EXPIRADOS" "EDITAR USUARIO" "RENOVAR USUARIO" "DETALLES DE TODOS USUARIOS" "MONITOR DE USUARIOS CONECTADOS" "ELIMINAR USUARIOS VENCIDOS" "BACKUP USUARIOS" "AGREGAR/ELIMINAR BANNER " "\033[1;31m⚠️ELIMINAR TODOS LOS USUARIOS⚠️ \n" " -fi ${verificar} \033[1;97m🔒 LIMITADOR-DE-CUENTAS 🔒 -" " -fi ${desbloqueo} \033[1;97m🔓 DESBLOQUEO-AUTOMATICO 🔓 -" "\033[1;92mLOG DE CUENTAS REGISTRADAS" "LIMPIAR LOG DE LIMITADOR"
  1212. [[ -e "${SCPusr}/Limiter2.log" ]] && echo -ne "$(msg -verd " [18]") $(msg -verm2 "==>") " && msg -azu "$(fun_trans "\033[1;93mVER LOG DE LIMITADOR")"
  1213. echo -ne ""$(msg -bar)" \n$(msg -verd " [0]") $(msg -verm2 "==>")" && msg -bra " \e[97m\033[1;41m VOLVER \033[1;37m"
  1214. msg -bar
  1215. selection=$(selection_fun 18)
  1216. case ${selection} in
  1217. 1)new_user;;
  1218. 2)${SCPdir2}/Crear-Demo.sh "${idioma}";;
  1219. 3)remove_user;;
  1220. 4)block_user;;
  1221. 5)reset_contador;;
  1222. 6)edit_user;;
  1223. 7)renew_user;;
  1224. 8)detail_user;;
  1225. 9)monit_user;;
  1226. 10)rm_vencidos;;
  1227. 11)backup_fun;;
  1228. 12)baner_fun;;
  1229. 13)eliminar_all;;
  1230. 14)verif_funx;;
  1231. 15)verif2_funx;;
  1232. 16)rec_total;;
  1233. 17)
  1234. rm -rf ${SCPusr}/Limiter2.log
  1235. echo -e "\033[1;32m LOG ELIMINADO CON EXITO"
  1236. msg -bar
  1237. msg -ne " Enter Para Continuar" && read enter
  1238. ${SCPusr}/usercodes
  1239. ;;
  1240. 18)
  1241. clear
  1242. clear
  1243. msg -bar
  1244. sed -i -e 's/^[ \t]*//; s/[ \t]*$//; /^$/d' /etc/VPS-MX/controlador/Limiter2.log
  1245. [[ -e "${SCPusr}/Limiter2.log" ]] && {
  1246. msg -tit
  1247. msg -ama " REGISTRO DEL LIMITADOR "
  1248. cat ${SCPusr}/Limiter2.log
  1249. msg -bar
  1250. }
  1251. msg -ne " Enter Para Continuar" && read enter
  1252. ${SCPusr}/usercodes
  1253. ;;
  1254. esac