1
0

slowdns.sh 4.9 KB

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