slowdns.sh 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191
  1. #!/bin/bash
  2. #by @rufu99
  3. ADM_inst="/etc/VPS-MX/Slow/install" && [[ ! -d ${ADM_inst} ]] && exit
  4. ADM_slow="/etc/VPS-MX/Slow/Key" && [[ ! -d ${ADM_slow} ]] && exit
  5. info(){
  6. clear
  7. nodata(){
  8. msg -bar
  9. msg -ama "!SIN INFORMACION SLOWDNS!"
  10. exit 0
  11. }
  12. if [[ -e ${ADM_slow}/domain_ns ]]; then
  13. ns=$(cat ${ADM_slow}/domain_ns)
  14. if [[ -z "$ns" ]]; then
  15. nodata
  16. exit 0
  17. fi
  18. else
  19. nodata
  20. exit 0
  21. fi
  22. if [[ -e ${ADM_slow}/server.pub ]]; then
  23. key=$(cat ${ADM_slow}/server.pub)
  24. if [[ -z "$key" ]]; then
  25. nodata
  26. exit 0
  27. fi
  28. else
  29. nodata
  30. exit 0
  31. fi
  32. msg -bar
  33. msg -ama "DATOS DE SU CONECCION SLOWDNS"
  34. msg -bar
  35. msg -ama "Su NS (Nameserver): $(cat ${ADM_slow}/domain_ns)"
  36. msg -bar
  37. msg -ama "Su Llave: $(cat ${ADM_slow}/server.pub)"
  38. exit 0
  39. }
  40. drop_port(){
  41. local portasVAR=$(lsof -V -i tcp -P -n | grep -v "ESTABLISHED" |grep -v "COMMAND" | grep "LISTEN")
  42. local NOREPEAT
  43. local reQ
  44. local Port
  45. unset DPB
  46. while read port; do
  47. reQ=$(echo ${port}|awk '{print $1}')
  48. Port=$(echo {$port} | awk '{print $9}' | awk -F ":" '{print $2}')
  49. [[ $(echo -e $NOREPEAT|grep -w "$Port") ]] && continue
  50. NOREPEAT+="$Port\n"
  51. case ${reQ} in
  52. sshd|dropbear|stunnel4|stunnel|python|python3)DPB+=" $reQ:$Port";;
  53. *)continue;;
  54. esac
  55. done <<< "${portasVAR}"
  56. }
  57. ini_slow(){
  58. msg -bra "INSTALADOR SLOWDNS"
  59. drop_port
  60. n=1
  61. for i in $DPB; do
  62. proto=$(echo $i|awk -F ":" '{print $1}')
  63. proto2=$(printf '%-12s' "$proto")
  64. port=$(echo $i|awk -F ":" '{print $2}')
  65. echo -e " $(msg -verd "[$n]") $(msg -verm2 ">") $(msg -ama "$proto2")$(msg -azu "$port")"
  66. drop[$n]=$port
  67. num_opc="$n"
  68. let n++
  69. done
  70. msg -bar
  71. opc=$(selection_fun $num_opc)
  72. echo "${drop[$opc]}" > ${ADM_slow}/puerto
  73. PORT=$(cat ${ADM_slow}/puerto)
  74. msg -bra "INSTALADOR SLOWDNS"
  75. echo -e " $(msg -ama "Puerto de coneccion atraves de SlowDNS:") $(msg -verd "$PORT")"
  76. msg -bar
  77. unset NS
  78. while [[ -z $NS ]]; do
  79. msg -ama " Tu dominio NS: "
  80. read NS
  81. tput cuu1 && tput dl1
  82. done
  83. echo "$NS" > ${ADM_slow}/domain_ns
  84. echo -e " $(msg -ama "Tu dominio NS:") $(msg -verd "$NS")"
  85. msg -bar
  86. if [[ ! -e ${ADM_inst}/dns-server ]]; then
  87. msg -ama " Descargando binario...."
  88. if wget -O ${ADM_inst}/dns-server https://raw.githubusercontent.com/NetVPS/VPS-MX_Oficial/master/LINKS-LIBRERIAS/dns-server &>/dev/null ; then
  89. chmod +x ${ADM_inst}/dns-server
  90. msg -verd "[OK]"
  91. else
  92. msg -verm "[fail]"
  93. msg -bar
  94. msg -ama "No se pudo descargar el binario"
  95. msg -verm "Instalacion canselada"
  96. exit 0
  97. fi
  98. msg -bar
  99. fi
  100. [[ -e "${ADM_slow}/server.pub" ]] && pub=$(cat ${ADM_slow}/server.pub)
  101. if [[ ! -z "$pub" ]]; then
  102. msg -ama " Usar clave existente [S/N]: "
  103. read ex_key
  104. case $ex_key in
  105. s|S|y|Y) tput cuu1 && tput dl1
  106. echo -e " $(msg -ama "Tu clave:") $(msg -verd "$(cat ${ADM_slow}/server.pub)")";;
  107. n|N) tput cuu1 && tput dl1
  108. rm -rf ${ADM_slow}/server.key
  109. rm -rf ${ADM_slow}/server.pub
  110. ${ADM_inst}/dns-server -gen-key -privkey-file ${ADM_slow}/server.key -pubkey-file ${ADM_slow}/server.pub &>/dev/null
  111. echo -e " $(msg -ama "Tu clave:") $(msg -verd "$(cat ${ADM_slow}/server.pub)")";;
  112. *);;
  113. esac
  114. else
  115. rm -rf ${ADM_slow}/server.key
  116. rm -rf ${ADM_slow}/server.pub
  117. ${ADM_inst}/dns-server -gen-key -privkey-file ${ADM_slow}/server.key -pubkey-file ${ADM_slow}/server.pub &>/dev/null
  118. echo -e " $(msg -ama "Tu clave:") $(msg -verd "$(cat ${ADM_slow}/server.pub)")"
  119. fi
  120. msg -bar
  121. msg -ama " Iniciando SlowDNS...."
  122. iptables -I INPUT -p udp --dport 5300 -j ACCEPT
  123. iptables -t nat -I PREROUTING -p udp --dport 53 -j REDIRECT --to-ports 5300
  124. if screen -dmS slowdns ${ADM_inst}/dns-server -udp :5300 -privkey-file ${ADM_slow}/server.key $NS 127.0.0.1:$PORT ; then
  125. msg -verd "Con exito!!!"
  126. else
  127. msg -verm "Con fallo!!!"
  128. fi
  129. exit 0
  130. }
  131. reset_slow(){
  132. clear
  133. msg -bar
  134. msg -ama " Reiniciando SlowDNS...."
  135. screen -ls | grep slowdns | cut -d. -f1 | awk '{print $1}' | xargs kill
  136. NS=$(cat ${ADM_slow}/domain_ns)
  137. PORT=$(cat ${ADM_slow}/puerto)
  138. if screen -dmS slowdns /etc/slowdns/dns-server -udp :5300 -privkey-file /root/server.key $NS 127.0.0.1:$PORT ;then
  139. msg -verd "Con exito!!!"
  140. else
  141. msg -verm "Con fallo!!!"
  142. fi
  143. exit 0
  144. }
  145. stop_slow(){
  146. clear
  147. msg -bar
  148. msg -ama " Deteniendo SlowDNS...."
  149. if screen -ls | grep slowdns | cut -d. -f1 | awk '{print $1}' | xargs kill ; then
  150. msg -verd "Con exito!!!"
  151. else
  152. msg -verm "Con fallo!!!"
  153. fi
  154. exit 0
  155. }
  156. while :
  157. do
  158. clear
  159. msg -bar
  160. msg -ama "INSTALADOR SLOWDNS"
  161. msg -bar
  162. menu_func "Ver Informacion\n$(msg -bar3)" "$(msg -verd "Iniciar SlowDNS")" "$(msg -ama "Reiniciar SlowDNS")" "$(msg -verm2 "Detener SlowDNS")"
  163. msg -bar
  164. opcion=$(selection_fun 5)
  165. case $opcion in
  166. 1)info;;
  167. 2)ini_slow;;
  168. 3)reset_slow;;
  169. 4)stop_slow;;
  170. 0)exit;;
  171. esac
  172. done