squid.sh 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575
  1. #!/bin/bash
  2. lshost(){
  3. n=1
  4. for i in `cat $payload|awk -F "/" '{print $1,$2,$3,$4}'`; do
  5. echo -e " $(msg -verd "$n)") $(msg -verm2 ">") $(msg -teal "$i")"
  6. pay[$n]=$i
  7. let n++
  8. done
  9. }
  10. lsexpre(){
  11. n=1
  12. while read line; do
  13. echo -e " $(msg -verd "$n)") $(msg -verm2 ">") $(msg -teal "$line")"
  14. pay[$n]=$line
  15. let n++
  16. done <<< $(cat $payload2)
  17. }
  18. fun_squid(){
  19. if [[ -e /etc/squid/squid.conf ]]; then
  20. var_squid="/etc/squid/squid.conf"
  21. mipatch="/etc/squid"
  22. elif [[ -e /etc/squid3/squid.conf ]]; then
  23. var_squid="/etc/squid3/squid.conf"
  24. mipatch="/etc/squid3"
  25. fi
  26. [[ -e $var_squid ]] && {
  27. clear
  28. msg -bar
  29. print_center -ama "$(fun_trans "REMOVIENDO SQUID")"
  30. print_center -ama "Aguarde un momento!!!"
  31. msg -bar
  32. [[ -d "/etc/squid" ]] && {
  33. service squid stop > /dev/null 2>&1
  34. apt-get remove squid -y >/dev/null 2>&1
  35. apt-get purge squid -y >/dev/null 2>&1
  36. rm -rf /etc/squid >/dev/null 2>&1
  37. }
  38. [[ -d "/etc/squid3" ]] && {
  39. service squid3 stop > /dev/null 2>&1
  40. apt-get remove squid3 -y >/dev/null 2>&1
  41. apt-get purge squid3 -y >/dev/null 2>&1
  42. rm -rf /etc/squid3 >/dev/null 2>&1
  43. }
  44. clear
  45. msg -bar
  46. print_center -verd "$(fun_trans "Squid removido")"
  47. [[ -e $var_squid ]] && rm -rf $var_squid
  48. [[ -e /etc/dominio-denie ]] && rm -rf /etc/dominio-denie
  49. enter
  50. return 1
  51. }
  52. clear
  53. msg -bar
  54. print_center -ama "$(fun_trans "INSTALADOR SQUID ADMRufu")"
  55. msg -bar
  56. print_center -ama " $(fun_trans "Seleccione los puertos en orden secuencial")"
  57. print_center -ama " Ejemplo: \e[32m80 8080 8799 3128"
  58. msg -bar
  59. while [[ -z $PORT ]]; do
  60. msg -ne " $(fun_trans "Digite los Puertos:") "; read PORT
  61. tput cuu1 && tput dl1
  62. [[ $(mportas|grep -w "${PORT}") = "" ]] && {
  63. echo -e "\033[1;33m $(fun_trans "Puerto de squid:")\033[1;32m ${PORT} OK"
  64. } || {
  65. echo -e "\033[1;33m $(fun_trans "Puerto de squid:")\033[1;31m ${PORT} FAIL" && sleep 2
  66. tput cuu1 && tput dl1
  67. unset PORT
  68. }
  69. done
  70. msg -bar
  71. print_center -ama " $(fun_trans "INSTALANDO SQUID")"
  72. msg -bar
  73. fun_bar "apt-get install squid3 -y"
  74. msg -bar
  75. print_center -ama " $(fun_trans "INICIANDO CONFIGURACION")"
  76. cat <<-EOF > /etc/dominio-denie
  77. .ejemplo.com/
  78. EOF
  79. cat <<-EOF > /etc/exprecion-denie
  80. torrent
  81. EOF
  82. unset var_squid
  83. if [[ -d /etc/squid ]]; then
  84. var_squid="/etc/squid/squid.conf"
  85. elif [[ -d /etc/squid3 ]]; then
  86. var_squid="/etc/squid3/squid.conf"
  87. fi
  88. ip=$(fun_ip)
  89. cat <<-EOF > $var_squid
  90. #Configuracion SquiD
  91. acl localhost src 127.0.0.1/32 ::1
  92. acl to_localhost dst 127.0.0.0/8 0.0.0.0/32 ::1
  93. acl SSL_ports port 443
  94. acl Safe_ports port 80
  95. acl Safe_ports port 21
  96. acl Safe_ports port 443
  97. acl Safe_ports port 70
  98. acl Safe_ports port 210
  99. acl Safe_ports port 1025-65535
  100. acl Safe_ports port 280
  101. acl Safe_ports port 488
  102. acl Safe_ports port 591
  103. acl Safe_ports port 777
  104. acl CONNECT method CONNECT
  105. acl SSH dst $ip-$ip/255.255.255.255
  106. acl exprecion-denie url_regex '/etc/exprecion-denie'
  107. acl dominio-denie dstdomain '/etc/dominio-denie'
  108. http_access deny exprecion-denie
  109. http_access deny dominio-denie
  110. http_access allow SSH
  111. http_access allow manager localhost
  112. http_access deny manager
  113. http_access allow localhost
  114. #puertos
  115. EOF
  116. for pts in $(echo -e $PORT); do
  117. echo -e "http_port $pts" >> $var_squid
  118. [[ -f "/usr/sbin/ufw" ]] && ufw allow $pts/tcp &>/dev/null 2>&1
  119. done
  120. cat <<-EOF >> $var_squid
  121. http_access allow all
  122. coredump_dir /var/spool/squid
  123. refresh_pattern ^ftp: 1440 20% 10080
  124. refresh_pattern ^gopher: 1440 0% 1440
  125. refresh_pattern -i (/cgi-bin/|\?) 0 0% 0
  126. refresh_pattern . 0 20% 4320
  127. #Nombre Squid
  128. visible_hostname ADMRufu
  129. EOF
  130. print_center -ama "$(fun_trans "REINICIANDO SERVICIOS")"
  131. [[ -d "/etc/squid/" ]] && {
  132. service ssh restart > /dev/null 2>&1
  133. /etc/init.d/squid start > /dev/null 2>&1
  134. service squid restart > /dev/null 2>&1
  135. }
  136. [[ -d "/etc/squid3/" ]] && {
  137. service ssh restart > /dev/null 2>&1
  138. /etc/init.d/squid3 start > /dev/null 2>&1
  139. service squid3 restart > /dev/null 2>&1
  140. }
  141. sleep 2s
  142. tput cuu1 && tput dl1
  143. print_center -verd "$(fun_trans "SQUID CONFIGURADO")"
  144. enter
  145. }
  146. add_host(){
  147. clear
  148. msg -bar
  149. print_center -ama "$(fun_trans "Hosts Actuales Dentro del Squid")"
  150. msg -bar
  151. lshost
  152. back
  153. while [[ $hos != \.* ]]; do
  154. msg -nazu " $(fun_trans "Digita un nuevo host"): " && read hos
  155. [[ $hos = 0 ]] && return 1
  156. tput cuu1 && tput dl1
  157. [[ $hos = \.* ]] && continue
  158. print_center -ama "$(fun_trans "El host deve comensar con") .punto.com"
  159. sleep 3s
  160. tput cuu1 && tput dl1
  161. done
  162. host="$hos/"
  163. [[ -z $host ]] && return 1
  164. if [[ `grep -c "^$host" $payload` -eq 1 ]]; then
  165. print_center -ama " $(fun_trans "El host ya exciste")"
  166. enter
  167. return 1
  168. fi
  169. echo "$host" >> $payload && grep -v "^$" $payload > /tmp/a && mv /tmp/a $payload
  170. clear
  171. msg -bar
  172. print_center -ama "$(fun_trans "Host Agregado con Exito")"
  173. msg -bar
  174. lshost
  175. msg -bar
  176. print_center -ama "Reiniciando servicios"
  177. if [[ ! -f "/etc/init.d/squid" ]]; then
  178. service squid3 reload &>/dev/null
  179. service squid3 restart &>/dev/null
  180. else
  181. /etc/init.d/squid reload &>/dev/null
  182. service squid restart &>/dev/null
  183. fi
  184. tput cuu1 && tput dl1
  185. tput cuu1 && tput dl1
  186. enter
  187. return 1
  188. }
  189. add_expre(){
  190. clear
  191. msg -bar
  192. print_center -ama "$(fun_trans "Expreciones regulares Dentro de Squid")"
  193. msg -bar
  194. lsexpre
  195. back
  196. while [[ -z $hos ]]; do
  197. msg -nazu " $(fun_trans "Digita una palabla"): " && read hos
  198. [[ $hos = 0 ]] && return 1
  199. tput cuu1 && tput dl1
  200. [[ $hos != "" ]] && continue
  201. print_center -ama "$(fun_trans "Escriba una palabla regular") Ej: torrent"
  202. sleep 3s
  203. tput cuu1 && tput dl1
  204. done
  205. host="$hos"
  206. [[ -z $host ]] && return 1
  207. if [[ `grep -c "^$host" $payload2` -eq 1 ]]; then
  208. print_center -ama " $(fun_trans "Exprecion regular ya exciste")"
  209. enter
  210. return 1
  211. fi
  212. echo "$host" >> $payload2 && grep -v "^$" $payload2 > /tmp/a && mv -f /tmp/a $payload2
  213. clear
  214. msg -bar
  215. print_center -ama "$(fun_trans "Exprecion regular Agregada con Exito")"
  216. msg -bar
  217. lsexpre
  218. msg -bar
  219. print_center -ama "Reiniciando servicios"
  220. if [[ ! -f "/etc/init.d/squid" ]]; then
  221. service squid3 reload &>/dev/null
  222. service squid3 restart &>/dev/null
  223. else
  224. /etc/init.d/squid reload &>/dev/null
  225. service squid restart &>/dev/null
  226. fi
  227. tput cuu1 && tput dl1
  228. tput cuu1 && tput dl1
  229. enter
  230. return 1
  231. }
  232. del_host(){
  233. unset opcion
  234. clear
  235. msg -bar
  236. print_center -ama "$(fun_trans "Hosts Actuales Dentro del Squid")"
  237. msg -bar
  238. lshost
  239. back
  240. while [[ -z $opcion ]]; do
  241. msg -ne " Eliminar el host numero: "
  242. read opcion
  243. if [[ ! $opcion =~ $numero ]]; then
  244. tput cuu1 && tput dl1
  245. print_center -verm2 "ingresa solo numeros"
  246. sleep 2s
  247. tput cuu1 && tput dl1
  248. unset opcion
  249. elif [[ $opcion -gt ${#pay[@]} ]]; then
  250. tput cuu1 && tput dl1
  251. print_center -ama "solo numeros entre 0 y ${#pay[@]}"
  252. sleep 2s
  253. tput cuu1 && tput dl1
  254. unset opcion
  255. fi
  256. done
  257. [[ $opcion = 0 ]] && return 1
  258. host="${pay[$opcion]}/"
  259. [[ -z $host ]] && return 1
  260. [[ `grep -c "^$host" $payload` -ne 1 ]] && print_center -ama "$(fun_trans "Host No Encontrado")" && return 1
  261. grep -v "^$host" $payload > /tmp/a && mv /tmp/a $payload
  262. clear
  263. msg -bar
  264. print_center -ama "$(fun_trans "Host Removido Con Exito")"
  265. msg -bar
  266. lshost
  267. msg -bar
  268. print_center -ama "Reiniciando servicios"
  269. if [[ ! -f "/etc/init.d/squid" ]]; then
  270. service squid3 reload &>/dev/null
  271. service squid3 restart &>/dev/null
  272. else
  273. /etc/init.d/squid reload &>/dev/null
  274. service squid restart &>/dev/null
  275. fi
  276. tput cuu1 && tput dl1
  277. tput cuu1 && tput dl1
  278. enter
  279. return 1
  280. }
  281. del_expre(){
  282. unset opcion
  283. clear
  284. msg -bar
  285. print_center -ama "$(fun_trans "Exprecion regular Dentro del Squid")"
  286. msg -bar
  287. lsexpre
  288. back
  289. while [[ -z $opcion ]]; do
  290. msg -ne " Eliminar la palabra numero: " && read opcion
  291. if [[ ! $opcion =~ $numero ]]; then
  292. tput cuu1 && tput dl1
  293. print_center -verm2 "ingresa solo numeros"
  294. sleep 2s
  295. tput cuu1 && tput dl1
  296. unset opcion
  297. elif [[ $opcion -gt ${#pay[@]} ]]; then
  298. tput cuu1 && tput dl1
  299. print_center -ama "solo numeros entre 0 y ${#pay[@]}"
  300. sleep 2s
  301. tput cuu1 && tput dl1
  302. unset opcion
  303. fi
  304. done
  305. [[ $opcion = 0 ]] && return 1
  306. host="${pay[$opcion]}"
  307. [[ -z $host ]] && return 1
  308. [[ `grep -c "^$host" $payload2` -ne 1 ]] && print_center -ama "$(fun_trans "Palabra No Encontrado")" && return 1
  309. grep -v "^$host" $payload2 > /tmp/a && mv -f /tmp/a $payload2
  310. clear
  311. msg -bar
  312. print_center -ama "$(fun_trans "Palabra Removida Con Exito")"
  313. msg -bar
  314. lsexpre
  315. msg -bar
  316. print_center -ama "Reiniciando servicios"
  317. if [[ ! -f "/etc/init.d/squid" ]]; then
  318. service squid3 reload &>/dev/null
  319. service squid3 restart &>/dev/null
  320. else
  321. /etc/init.d/squid reload &>/dev/null
  322. service squid restart &>/dev/null
  323. fi
  324. tput cuu1 && tput dl1
  325. tput cuu1 && tput dl1
  326. enter
  327. return 1
  328. }
  329. add_port(){
  330. if [[ -e /etc/squid/squid.conf ]]; then
  331. local CONF="/etc/squid/squid.conf"
  332. elif [[ -e /etc/squid3/squid.conf ]]; then
  333. local CONF="/etc/squid3/squid.conf"
  334. fi
  335. local miport=$(cat ${CONF}|grep -w 'http_port'|awk -F ' ' '{print $2}'|tr '\n' ' ')
  336. local line="$(cat ${CONF}|sed -n '/http_port/='|head -1)"
  337. local NEWCONF="$(cat ${CONF}|sed "$line c ADMR_port"|sed '/http_port/d')"
  338. title -ama "$(fun_trans "AGREGAR UN PUERTOS SQUID")"
  339. echo -e " $(msg -verm2 "Ingrese Sus Puertos:") $(msg -verd "80 8080 8799 3128")"
  340. msg -bar
  341. msg -ne " $(fun_trans " Digite Puertos"): " && read DPORT
  342. tput cuu1 && tput dl1
  343. TTOTAL=($DPORT)
  344. for((i=0; i<${#TTOTAL[@]}; i++)); do
  345. [[ $(mportas|grep -v squid|grep -v '>'|grep -w "${TTOTAL[$i]}") = "" ]] && {
  346. echo -e "\033[1;33m Puerto Elegido:\033[1;32m ${TTOTAL[$i]} OK"
  347. PORT="$PORT ${TTOTAL[$i]}"
  348. } || {
  349. echo -e "\033[1;33m Puerto Elegido:\033[1;31m ${TTOTAL[$i]} FAIL"
  350. }
  351. done
  352. [[ -z $PORT ]] && {
  353. msg -bar
  354. print_center -verm2 "Ningun Puerto Valido"
  355. return 1
  356. }
  357. PORT="$miport $PORT"
  358. rm ${CONF}
  359. while read varline; do
  360. if [[ ! -z "$(echo "$varline"|grep 'ADMR_port')" ]]; then
  361. for i in `echo $PORT`; do
  362. echo -e "http_port ${i}" >> ${CONF}
  363. ufw allow $i/tcp &>/dev/null 2>&1
  364. done
  365. continue
  366. fi
  367. echo -e "${varline}" >> ${CONF}
  368. done <<< "${NEWCONF}"
  369. msg -bar
  370. print_center -azu "$(fun_trans "AGUARDE REINICIANDO SERVICIOS")"
  371. [[ -d "/etc/squid/" ]] && {
  372. service ssh restart > /dev/null 2>&1
  373. /etc/init.d/squid start > /dev/null 2>&1
  374. service squid restart > /dev/null 2>&1
  375. }
  376. [[ -d "/etc/squid3/" ]] && {
  377. service ssh restart > /dev/null 2>&1
  378. /etc/init.d/squid3 start > /dev/null 2>&1
  379. service squid3 restart > /dev/null 2>&1
  380. }
  381. sleep 2s
  382. tput cuu1 && tput dl1
  383. print_center -verd "$(fun_trans "PUERTOS AGREGADOS")"
  384. enter
  385. return 1
  386. }
  387. del_port(){
  388. squidport=$(lsof -V -i tcp -P -n | grep -v "ESTABLISHED" |grep -v "COMMAND" | grep "LISTEN"|grep -E 'squid|squid3')
  389. if [[ $(echo "$squidport"|wc -l) -lt '2' ]];then
  390. clear
  391. msg -bar
  392. print_center -ama "Un solo puerto para eliminar\ndesea detener el servicio? "
  393. msg -bar
  394. msg -ne " opcion [S/N]: " && read a
  395. if [[ "$a" = @(S|s) ]]; then
  396. title -ama "AGUARDE DETENIEDO SERVICIOS"
  397. [[ -d "/etc/squid/" ]] && {
  398. if service squid stop &> /dev/null ; then
  399. print_center -verd "Servicio squid detenido"
  400. else
  401. print_center -verm2 "Falla al detener Servicio squid"
  402. fi
  403. }
  404. [[ -d "/etc/squid3/" ]] && {
  405. if service squid3 stop &> /dev/null ; then
  406. print_center -verd "Servicio squid3 detenido"
  407. else
  408. print_center -verm2 "Falla al detener Servicio squid3"
  409. fi
  410. }
  411. fi
  412. enter
  413. return 1
  414. fi
  415. if [[ -e /etc/squid/squid.conf ]]; then
  416. local CONF="/etc/squid/squid.conf"
  417. elif [[ -e /etc/squid3/squid.conf ]]; then
  418. local CONF="/etc/squid3/squid.conf"
  419. fi
  420. title -ama "Quitar un puertos squid"
  421. n=1
  422. while read i; do
  423. port=$(echo $i|awk -F ' ' '{print $9}'|cut -d ':' -f2)
  424. echo -e " $(msg -verd "[$n]") $(msg -verm2 ">") $(msg -azu "$port")"
  425. drop[$n]=$port
  426. num_opc="$n"
  427. let n++
  428. done <<< $(echo "$squidport")
  429. back
  430. while [[ -z $opc ]]; do
  431. msg -ne " opcion: "
  432. read opc
  433. tput cuu1 && tput dl1
  434. if [[ -z $opc ]]; then
  435. msg -verm2 " selecciona una opcion entre 1 y $num_opc"
  436. unset opc
  437. sleep 2
  438. tput cuu1 && tput dl1
  439. continue
  440. elif [[ ! $opc =~ $numero ]]; then
  441. msg -verm2 " selecciona solo numeros entre 1 y $num_opc"
  442. unset opc
  443. sleep 2
  444. tput cuu1 && tput dl1
  445. continue
  446. elif [[ "$opc" -gt "$num_opc" ]]; then
  447. msg -verm2 " selecciona una opcion entre 1 y $num_opc"
  448. sleep 2
  449. tput cuu1 && tput dl1
  450. unset opc
  451. continue
  452. fi
  453. done
  454. sed -i "/http_port ${drop[$opc]}/d" $CONF
  455. print_center -azu "$(fun_trans "AGUARDE REINICIANDO SERVICIOS")"
  456. [[ -d "/etc/squid/" ]] && {
  457. service ssh restart > /dev/null 2>&1
  458. /etc/init.d/squid start > /dev/null 2>&1
  459. service squid restart > /dev/null 2>&1
  460. }
  461. [[ -d "/etc/squid3/" ]] && {
  462. service ssh restart > /dev/null 2>&1
  463. /etc/init.d/squid3 start > /dev/null 2>&1
  464. service squid3 restart > /dev/null 2>&1
  465. }
  466. sleep 2s
  467. tput cuu1 && tput dl1
  468. print_center -verd "$(fun_trans "PUERTO REMOVIDO")"
  469. enter
  470. return 1
  471. }
  472. restart_squid(){
  473. title -ama "AGUARDE REINICIANDO SERVICIOS"
  474. [[ -d "/etc/squid/" ]] && {
  475. service ssh restart > /dev/null 2>&1
  476. /etc/init.d/squid start > /dev/null 2>&1
  477. service squid restart > /dev/null 2>&1
  478. }
  479. [[ -d "/etc/squid3/" ]] && {
  480. service ssh restart > /dev/null 2>&1
  481. /etc/init.d/squid3 start > /dev/null 2>&1
  482. service squid3 restart > /dev/null 2>&1
  483. }
  484. sleep 2s
  485. tput cuu1 && tput dl1
  486. print_center -verd "$(fun_trans "SERVICIO REINICIANDO")"
  487. enter
  488. return 1
  489. }
  490. online_squid(){
  491. payload="/etc/dominio-denie"
  492. payload2="/etc/exprecion-denie"
  493. clear
  494. msg -bar
  495. print_center -ama "$(fun_trans "CONFIGURACION DE SQUID")"
  496. msg -bar
  497. menu_func "Bloquear un host" \
  498. "-bar3 Desbloquear un host" \
  499. "Bloquear exprecion regular" \
  500. "-bar3 Desbloquear exprecion regular" \
  501. "Agregar puerto" \
  502. "-bar Quitar puerto" \
  503. "\e[31mDesinstalar Squid" \
  504. "\e[33mReiniciar squid"
  505. back
  506. opcion=$(selection_fun 8)
  507. case $opcion in
  508. 1)add_host;;
  509. 2)del_host;;
  510. 3)add_expre;;
  511. 4)del_expre;;
  512. 5)add_port;;
  513. 6)del_port;;
  514. 7)fun_squid;;
  515. 8)restart_squid;;
  516. 0)return 1;;
  517. esac
  518. }
  519. if [[ -e /etc/squid/squid.conf ]]; then
  520. online_squid
  521. elif [[ -e /etc/squid3/squid.conf ]]; then
  522. online_squid
  523. else
  524. fun_squid
  525. return 1
  526. fi