slowdns.sh 8.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251
  1. #!/bin/bash
  2. ll="/usr/local/include/snaps" && [[ ! -d ${ll} ]] && exit
  3. l="/usr/local/lib/sped" && [[ ! -d ${l} ]] && exit
  4. #by @rufu99
  5. [[ ! -d /etc/VPS-MX ]] && exit
  6. [[ ! -d /etc/VPS-MX/protocolos ]] && exit
  7. ADM_inst="/etc/VPS-MX/Slow/install" && [[ ! -d ${ADM_inst} ]] && exit
  8. ADM_slow="/etc/VPS-MX/Slow/Key" && [[ ! -d ${ADM_slow} ]] && exit
  9. info(){
  10. clear
  11. nodata(){
  12. msg -bar
  13. msg -ama "!SIN INFORMACION SLOWDNS!"
  14. exit 0
  15. }
  16. if [[ -e ${ADM_slow}/domain_ns ]]; then
  17. ns=$(cat ${ADM_slow}/domain_ns)
  18. if [[ -z "$ns" ]]; then
  19. nodata
  20. exit 0
  21. fi
  22. else
  23. nodata
  24. exit 0
  25. fi
  26. if [[ -e ${ADM_slow}/server.pub ]]; then
  27. key=$(cat ${ADM_slow}/server.pub)
  28. if [[ -z "$key" ]]; then
  29. nodata
  30. exit 0
  31. fi
  32. else
  33. nodata
  34. exit 0
  35. fi
  36. msg -bar
  37. msg -ama "DATOS DE SU CONEXION SLOWDNS"
  38. msg -bar
  39. msg -ama "Su NS (Nameserver): $(cat ${ADM_slow}/domain_ns)"
  40. msg -bar
  41. msg -ama "Su Llave: $(cat ${ADM_slow}/server.pub)"
  42. exit 0
  43. }
  44. drop_port(){
  45. local portasVAR=$(lsof -V -i tcp -P -n | grep -v "ESTABLISHED" |grep -v "COMMAND" | grep "LISTEN")
  46. local NOREPEAT
  47. local reQ
  48. local Port
  49. unset DPB
  50. while read port; do
  51. reQ=$(echo ${port}|awk '{print $1}')
  52. Port=$(echo {$port} | awk '{print $9}' | awk -F ":" '{print $2}')
  53. [[ $(echo -e $NOREPEAT|grep -w "$Port") ]] && continue
  54. NOREPEAT+="$Port\n"
  55. case ${reQ} in
  56. sshd|dropbear|trojan|stunnel4|stunnel|python|python3|v2ray|xray)DPB+=" $reQ:$Port";;
  57. *)continue;;
  58. esac
  59. done <<< "${portasVAR}"
  60. }
  61. ini_slow(){
  62. clear
  63. msg -bar
  64. msg -ama " INSTALADOR SLOWDNS"
  65. msg -bar
  66. echo ""
  67. drop_port
  68. n=1
  69. for i in $DPB; do
  70. proto=$(echo $i|awk -F ":" '{print $1}')
  71. proto2=$(printf '%-12s' "$proto")
  72. port=$(echo $i|awk -F ":" '{print $2}')
  73. echo -e " $(msg -verd "[$n]") $(msg -verm2 ">") $(msg -ama "$proto2")$(msg -azu "$port")"
  74. drop[$n]=$port
  75. dPROT[$n]=$proto2
  76. num_opc="$n"
  77. let n++
  78. done
  79. msg -bar
  80. opc=$(selection_fun $num_opc)
  81. echo "${drop[$opc]}" > ${ADM_slow}/puerto
  82. echo "${dPROT[$opc]}" >${ADM_slow}/puertoloc
  83. PORT=$(cat ${ADM_slow}/puerto)
  84. clear
  85. msg -bar
  86. msg -ama " INSTALADOR SLOWDNS"
  87. msg -bar
  88. echo ""
  89. echo -e " $(msg -ama "Puerto de conexion atraves de SlowDNS:") $(msg -verd "$PORT")"
  90. msg -bar
  91. unset NS
  92. while [[ -z $NS ]]; do
  93. msg -ama " Tu dominio NS: "
  94. read NS
  95. tput cuu1 && tput dl1
  96. done
  97. echo "$NS" > ${ADM_slow}/domain_ns
  98. echo -e " $(msg -ama "Tu dominio NS:") $(msg -verd "$NS")"
  99. msg -bar
  100. if [[ ! -e ${ADM_inst}/dns-server ]]; then
  101. msg -ama " Descargando binario...."
  102. if wget -O ${ADM_inst}/dns-server raw.github.com/lacasitamx/SCRIPTMOD-LACASITA/master/SLOWDNS/dns-server &>/dev/null ; then
  103. chmod +x ${ADM_inst}/dns-server
  104. msg -verd " DESCARGA CON EXITO"
  105. else
  106. msg -verm " DESCARGA FALLIDA"
  107. msg -bar
  108. msg -ama "No se pudo descargar el binario"
  109. msg -verm "Instalacion cancelada"
  110. exit 0
  111. fi
  112. msg -bar
  113. fi
  114. [[ -e "${ADM_slow}/server.pub" ]] && pub=$(cat ${ADM_slow}/server.pub)
  115. if [[ ! -z "$pub" ]]; then
  116. msg -ama " Usar La clave existente [S/N] ?: "
  117. read ex_key
  118. case $ex_key in
  119. s|S|y|Y) tput cuu1 && tput dl1
  120. echo -e " $(msg -ama "Tu clave:") $(msg -verd "$(cat ${ADM_slow}/server.pub)")";;
  121. n|N) tput cuu1 && tput dl1
  122. rm -rf ${ADM_slow}/server.key
  123. rm -rf ${ADM_slow}/server.pub
  124. ${ADM_inst}/dns-server -gen-key -privkey-file ${ADM_slow}/server.key -pubkey-file ${ADM_slow}/server.pub &>/dev/null
  125. echo -e " $(msg -ama "Tu clave:") $(msg -verd "$(cat ${ADM_slow}/server.pub)")";;
  126. *);;
  127. esac
  128. else
  129. rm -rf ${ADM_slow}/server.key
  130. rm -rf ${ADM_slow}/server.pub
  131. ${ADM_inst}/dns-server -gen-key -privkey-file ${ADM_slow}/server.key -pubkey-file ${ADM_slow}/server.pub &>/dev/null
  132. echo -e " $(msg -ama "Tu clave:") $(msg -verd "$(cat ${ADM_slow}/server.pub)")"
  133. fi
  134. msg -bar
  135. msg -ama " INSTALANDO SERVICIO 𝙎𝙇𝙊𝙒𝘿𝙉𝙎 ..." |pv -q 30
  136. apt install ncurses-utils -y &>/dev/null
  137. apt install iptables -y &>/dev/null
  138. #iptables -F >/dev/null 2>&1
  139. iptables -I INPUT -p udp --dport 5300 -j ACCEPT
  140. iptables -t nat -I PREROUTING -p udp --dport 53 -j REDIRECT --to-ports 5300
  141. echo "nameserver 1.1.1.1 " >/etc/resolv.conf
  142. echo "nameserver 1.0.0.1 " >>/etc/resolv.conf
  143. screen -dmS slowdns ${ADM_inst}/dns-server -udp :5300 -privkey-file ${ADM_slow}/server.key $NS 127.0.0.1:$PORT
  144. [[ $(grep -wc "slowdns" /etc/autostart) = '0' ]] && {
  145. echo -e "netstat -au | grep -w 7300 > /dev/null || { screen -r -S 'slowdns' -X quit; screen -dmS slowdns ${ADM_inst}/dns-server -udp :5300 -privkey-file ${ADM_slow}/server.key $NS 127.0.0.1:$PORT ; }" >>/etc/autostart
  146. } || {
  147. sed -i '/slowdns/d' /etc/autostart
  148. echo -e "netstat -au | grep -w 7300 > /dev/null || { screen -r -S 'slowdns' -X quit; screen -dmS slowdns ${ADM_inst}/dns-server -udp :5300 -privkey-file ${ADM_slow}/server.key $NS 127.0.0.1:$PORT ; }" >>/etc/autostart
  149. }
  150. msg -verd " INSTALACION CON EXITO"
  151. exit 0
  152. }
  153. reset_slow(){
  154. clear
  155. msg -bar
  156. msg -verd " Reiniciando 𝙎𝙇𝙊𝙒𝘿𝙉𝙎...."
  157. screen -ls | grep slowdns | cut -d. -f1 | awk '{print $1}' | xargs kill
  158. NS=$(cat ${ADM_slow}/domain_ns)
  159. PORT=$(cat ${ADM_slow}/puerto)
  160. screen -dmS slowdns ${ADM_inst}/dns-server -udp :5300 -privkey-file /root/server.key $NS 127.0.0.1:$PORT
  161. [[ $(grep -wc "slowdns" /etc/autostart) = '0' ]] && {
  162. echo -e "netstat -au | grep -w 7300 > /dev/null || { screen -r -S 'slowdns' -X quit; screen -dmS slowdns ${ADM_inst}/dns-server -udp :5300 -privkey-file ${ADM_slow}/server.key $NS 127.0.0.1:$PORT ; }" >>/etc/autostart
  163. } || {
  164. sed -i '/slowdns/d' /etc/autostart
  165. echo -e "netstat -au | grep -w 7300 > /dev/null || { screen -r -S 'slowdns' -X quit; screen -dmS slowdns ${ADM_inst}/dns-server -udp :5300 -privkey-file ${ADM_slow}/server.key $NS 127.0.0.1:$PORT ; }" >>/etc/autostart
  166. }
  167. msg -verd " SERVICIO SLOW REINICIADO"
  168. exit 0
  169. }
  170. stop_slow(){
  171. clear
  172. msg -bar
  173. msg -ama " Deteniendo SlowDNS...."
  174. if screen -ls | grep slowdns | cut -d. -f1 | awk '{print $1}' | xargs kill ; then
  175. for pidslow in $(screen -ls | grep ".slowdns" | awk {'print $1'}); do
  176. screen -r -S "$pidslow" -X quit
  177. done
  178. [[ $(grep -wc "dns-server" /etc/autostart) != '0' ]] && {
  179. sed -i '/dns-server/d' /etc/autostart
  180. }
  181. screen -wipe >/dev/null
  182. msg -verd " SERVICIO SLOW DETENIDO!!"
  183. rm ${ADM_inst}/dns-server &>/dev/null
  184. rm -rf ${ADM_slow}/* &>/dev/null
  185. else
  186. msg -verm " SERVICIO SLOW NO DETENIDO!"
  187. fi
  188. exit 0
  189. }
  190. portdns(){
  191. proto="dns-serve"
  192. portas=$(lsof -V -i -P -n | grep -v "ESTABLISHED" |grep -v "COMMAND")
  193. for list in $proto; do
  194. case $list in
  195. dns-serve)
  196. portas2=$(echo $portas|grep -w "$list")
  197. [[ $(echo "${portas2}"|grep "$list") ]] && inst[$list]="\033[1;33m[\e[1;92mActivo\e[33m] " || inst[$list]="\033[1;33m[\e[1;91mDesactivado\e[1;33m]";;
  198. esac
  199. done
  200. }
  201. while :
  202. do
  203. clear
  204. portdns
  205. if [[ -e ${ADM_slow}/puertoloc ]]; then LOC=$((cat ${ADM_slow}/puertoloc)|cut -d' ' -f1); else LOC="XX"; fi
  206. if [[ -e ${ADM_slow}/puerto ]]; then PT=$((cat ${ADM_slow}/puerto)|cut -d' ' -f1); else PT="XX"; fi
  207. msg -bar
  208. msg -ama " \e[91m\e[43mMENÚ DE INSTALACION 𝙎𝙇𝙊𝙒𝘿𝙉𝙎 \e[0m"
  209. echo ""
  210. #if [[ -e ${ADM_inst}/dns-server ]]; then
  211. echo -e " \e[91mSlowDNS\e[93m + \e[92m${LOC} \e[97m»» \e[91m${PT} \e[1;97mSERVICIO: ${inst[dns-serv]}\e[0m"
  212. #else
  213. #echo -e " \e[1;97mSERVICIO: ${inst[dns-serv]}"
  214. #fi
  215. msg -bar
  216. echo -e " $(msg -verd "[1]")$(msg -verm2 "➛ ")$(msg -azu "INSTALAR 𝙎𝙇𝙊𝙒𝘿𝙉𝙎 ")"
  217. echo -e " $(msg -verd "[2]")$(msg -verm2 "➛ ")$(msg -azu "REINICIAR 𝙎𝙇𝙊𝙒𝘿𝙉𝙎 ")"
  218. echo -e " $(msg -verd "[3]")$(msg -verm2 "➛ ")$(msg -azu "DETENER 𝙎𝙇𝙊𝙒𝘿𝙉𝙎 ")"
  219. echo -e " $(msg -verd "[4]")$(msg -verm2 "➛ ")$(msg -azu "DATOS DE LA CUENTA")"
  220. echo -e " $(msg -verd "[0]")$(msg -verm2 "➛ ")$(msg -azu "VOLVER")"
  221. msg -bar
  222. echo -ne " \033[1;37mSelecione Una Opcion : "
  223. read opc
  224. case $opc in
  225. 1)ini_slow;;
  226. 2)reset_slow;;
  227. 3)stop_slow;;
  228. 4)info;;
  229. 0)exit;;
  230. esac
  231. done