Visual Squix

De Gleducar, http://www.gleducar.org.ar

Tabla de contenidos

Introduccion

Visual_Squix es un script que ayuda a usuarios sin muchos conocimientos a manejar las reglas de acl. El script está diseñado para trabajar con archivos de acl webs denegadas y webs siempre permitidas Este archivo contiene las webs bloqueadas y a su vez está definido como reg_expresion en squid.conf.

El Código

#!/bin/bash

echo "" > var1
echo "" > v2
echo "" > var2

# ----------------------------------------------------------------------------- #
# Configuración de SquiX V1.0

# Si no tiene instalado dialog y no desea hacerlo, puede utilizar los sigui-
# entes programas:
# * Xdialog
# * Kdialog
# No olvides que podés user la version NO gráfica de Visual Squix
# Debe colocar su eleccion dentro de las comillas: dialog="<su eleccion>"
dialog="dialog"

# Ruta completa donde tiene su archivo de páginas webs denegadas
prohi=""

# Ruta completa donde tiene su archivo de páginas webs permitidas
permi=""

# Ruta completa donde estarán los backups (bloqueos). Generalmente se usa el mismo donde se encuentran
# los archivos de acl
back=""

# Fin de la configuración
# No haga cambios después de esta línea, salvo que sepa lo que está haciendo.
# ------------------------------------------------------------------------------ #
# Algunas definiciones
titulo="Visual Squix V1.0-0a"
user=$(whoami)
# ------------------------------------------------------------------------------ #

if [ "$user" != "root" ]; then
	clear
	echo "NO ERES ROOT"
	sleep 4
	clear
	exit
fi

	clear
if [ "$dialog" = "" ]; then # TENGO QUE ARREGLAR ESTA BRUTALIDAD, YA! aunque no
			    # quedo tan mal
	if [ "$prohi" = "" -a "$permi" = "" ]; then
		echo "ERROR 1: No tiene configurada la interface del SquiX"
	else
		echo "ERROR 1: No tiene configurada la interface del SquiX"
		exit 0
	fi
fi
if [ "$prohi" = "" ]; then
	if [ "$permi" = "" ]; then
		echo "ERROR 2: Debe configurar su lista de prohibidos"	
	else 
		echo "ERROR 2: Debe configurar su lista de prohibidos"
		exit 0
	fi
fi

if [ "$permi" = "" ]; then
	echo "ERROR 3: Debe configurar su lista de permitidos"
	exit 0
fi

if [ "$back" = "" ]; then
	echo "ERROR 4: Debe configurar su direcctorio de backup's"
	exit 0
fi

function help {
	echo "                    $titulo";
	echo "          -------------------------------------------------"
	echo "          --help, -h        Muestra este mensaje"
	echo "          -l                Muestra todos los bloqueos"
	echo "          -lp               Muestra las webs permitidas"
	echo "          -a <web>          Agrega un bloqueo"
	echo "          -ap <web>         Agrega una web permitida"
	echo "          -b <web>          Busca un bloqueo"
	echo "          -bp <web>         Busca una web permitida"
	echo "          -q                Quita un bloque"
	echo "          -qp               Quita una web permitida"
	echo "          -v                Muestra la version del programa"
	echo "          --backup          Genera un backup de ambas listas"
	echo "          -c                Version Interactiva"
	echo "          -------------------------------------------------"
	echo "                    Acciones sobre el servicio"
	echo "          -e                Estado del Squid-Proxy"
	echo "          -r                Reiniciar Squid-Proxy"
	echo "          -rc               Releer configuracion"
	echo "          -------------------------------------------------"
	echo "          --conf            Configurar Visual Squix"
	echo "          --man             Manual de uso"
	echo "          -------------------------------------------------"
	echo "          Reporte de Bug's a: gaccardo@gmail.com"
}


case "$1" in
	-v)
		echo "$titulo ---> Version: 1.0-0a"
		exit
		;;
	-h)
		clear
		help
		exit
		;;
	--man)
		clear
		less ayuda.txt
		exit
		;;
	--help)
		clear
		help
		exit
		;;
	-r)
		clear
		echo "$titulo!"
		echo "Reiniciar proxi"
		/etc/init.d/squid restart
		;;
	--conf)
		clear
		echo "$titulo"
		echo "Configuración"
		echo "Utilice su editor preferido y edite visual_squix, adentro encontrará la configuración"
		exit
		;;
	-e)
		clear
		echo "$titulo"
		estado=$(ps aufx | grep "squid" -c)
		if [ "$estado" -ge "1" ]; then
			echo "Estado: Funcionando"
		else
			echo "Estado: Detenido"
		fi
		;;
	-rc) 
		clear
		echo "$titulo"
		echo "Releer configuracion del Proxi"
		/etc/init.d/squid reload
		;;
		
	-q)
		echo $titulo
		echo "Quitar un bloqueo"
		read -p "Seguro de desar quitar de la lista: $2 > SI - NO --> " sn
		if [ "$sn" = "si" ]; then
			grep "$2" -v "$prohi" > denegado_2.list
			rm $prohi
			cp denegado_2.list $prohi
			rm denegado_2.list
		elif [ "$sn" = "SI" ]; then
			grep "$2" -v "$prohi" > denegado_2.list
			rm $prohi
			cp denegado_2.list $prohi
			rm denegado_2.list
		elif [ "$sn" = "no" ]; then
			echo "Accion Cancelada"
		elif [ "$sn" = "NO" ]; then
			echo "Accion Cancelada"
		fi					
		;;
	-qp)
		echo $titulo
		echo "Quitar una web permitida"
		read -p "Seguro de desar quitar de la lista: $2 > SI - NO --> " sn
		if [ "$sn" = "si" ]; then
			grep "$2" -v "$permi" > permitido_2.list
			rm $permi
			cp permitido_2.list $permi
			rm permitido_2.list
		elif [ "$sn" = "SI" ]; then
			grep "$2" -v "$permi" > permitido_2.list
			rm $permi
			cp permitido_2.list $permi
			rm permitido_2.list
		elif [ "$sn" = "no" ]; then
			echo "Accion Cancelada"
		elif [ "$sn" = "NO" ]; then
			echo "Accion Cancelada"
		fi					
		;;
	-l)
		clear
		echo $titulo
		echo "Lista de bloqueos"
		cat $prohi
		;;
	-lp)
		clear
		echo $titulo
		echo "Lista de webs permitidas"
		cat $permi
		;;
	-a)
		clear
		echo $titulo
		echo "Agregar un bloqueo"
		echo "$2" >> "$prohi"
		echo "$2 Fue agredaga con exito"
		;;
	-ap)	
		clear
		echo $titulo
		echo "Agregar una web permitida"
		echo "$2" >> "$permi"
		echo "$2 Fue agredaga con exito"
		;;
	-b)
		clear
		w=$(grep "$2" "$prohi" -c)
		echo $titulo
		echo "Buscar Bloqueos"
		if [ "$w" = "1" ]; then
			echo -e $2 "\033[1;31m  esta bloqueada\033[0;0m"
		else
			echo -e $2 "\033[1;33m  no está bloqueada\033[0;0m"
		fi
		;;
	-bp)
		clear
		w=$(grep "$2" "$prohi" -c)
		echo $titulo
		echo "Buscar una web permitida"
		if [ "$w" = "1" ]; then
			echo -e $2 "\033[1;31m  esta permitida\033[0;0m"
		else
			echo -e $2 "\033[1;33m  no está permitida\033[0;0m"
		fi
		;;
	--backup)
		clear
		echo $titulo
		echo "Generando los backup's"
		cp $prohi $back/prohi.list.bk
		cp $permi $back/permi.list.bk
		clear
		echo "."
		sleep 1
		clear
		echo ".."
		sleep 1
		clear
		echo "..."
		sleep 1
		clear
		echo "...."
		sleep 1
		clear
		echo "....."
		sleep 1
		clear
		echo ".....OK"
		sleep 1
		clear
		echo "backup's generados"
		;;
	-c)	
	$dialog --backtitle "$titulo" --title "Bienvenido" \
	--infobox "Bienvenido a SquiX V1.0-0a      Manejador de Squid-Proxi" 10 35 
	sleep 3
	
	$dialog --backtitle "$titulo" --title "Menu Principal" \
	--menu "Opciones" 20 40 8 \
	"Buscar" "" \
	"Agregar" "" \
	"Quitar" "" \
	"Lista" "" \
	"Servicio" "" \
	"Imprimir" "" \
	"Ayuda" "" \
	"Salir" "" 2> var1
	  
	mante=$(cat var1)
	
	if [ "$mante" = "Salir" ]; then
		$dialog --backtitle "$titulo" --title "Gracias por usar SquiX" \
		--msgbox "Gracias por usar SquiX V1.0" 10 35
		clear
	fi
	
	while [ "$mante" != "Salir" ]; do
	
		if [ "$mante" = "Buscar" ]; then
			$dialog --backtitle "$titulo" --title "Menu Buscar" \
			--menu "Buscar en..." 20 40 8 \
			"Denegadas" "" \
			"Permitidas" "" \
			"Volver" "" 2> var2
			
			mante2=$(cat var2)
	
			while [ "$mante2" != "Volver" ]; do
				if [ "$mante2" = "Denegadas" ]; then
					$dialog --backtitle "$titulo" --title "Buscar: " \
					--inputbox "Ingrese una Web" 10 35 2> v2
					web=$(cat v2)
					result=$(grep $web $prohi -c)
					if [ "$result" = "1" ]; then
						$dialog --backtitle "$titulo" --title "ENCONTRADA" \
						--msgbox "Página web encontrada" 10 35
					elif [ "$result" = "0" ]; then
						$dialog --backtitle "$titulo" --title "NO ENCONTRADA" \
						--msgbox "Página web NO encontrada" 10 35
					fi
				elif [ "$mante2" = "Permitidas" ]; then
					$dialog --backtitle "$titulo" --title "Buscar: " \
					--inputbox "Ingrese una Web" 10 35 2> v2
					web=$(cat v2)
					result=$(grep $web $permi -c)
					if [ "$result" = "1" ]; then
						$dialog --backtitle "$titulo" --title "ENCONTRADA" \
						--msgbox "Página web encontrada" 10 35
					elif [ "$result" = "0" ]; then
						$dialog --backtitle "$titulo" --title "NO ENCONTRADA" \
						--msgbox "Página web NO encontrada" 10 35
					fi
				fi
	
				$dialog --backtitle "$titulo" --title "Menu Buscar" \
				--menu "Buscar en..." 20 40 8 \
				"Denegadas" "" \
				"Permitidas" "" \
				"Volver" "" 2> var2
	
				mante2=$(cat var2)
			done
		elif [ "$mante" = "Agregar" ]; then
			$dialog --backtitle "$titulo" --title "Agregar Webs" \
			--menu "Agregar" 20 40 8 \
			"Denegadas" "" \
			"Permitidas" "" \
			"Volver" "" 2> v3
			mante3=$(cat v3)
			while [ "$mante3" != "Volver" ]; do
				if [ "$mante3" = "Denegadas" ]; then
					 $dialog --backtitle "$titulo" --title "Denegadas" \
					 --inputbox "Agregar" 10 35 2> v4
					 web=$(cat v4)
					 result=$(grep $web $prohi -c)
					 if [ "$result" = "1" ]; then
					 	$dialog --backtitle "$titulo" --title "ERROR" \
						--msgbox "La página ya fue agregada" 10 35
					else
						echo "$web" >> "$prohi"
					fi
				elif [ "$mante3" = "Permitidas" ]; then
					$dialog --bactitle "$titulo" --title "Permitidas" \
					--msgbox "Ya vuelvo" 10 35
				fi
	
				$dialog --backtitle "$titulo" --title "Agregar Webs" \
				--menu "Agregar" 20 40 8 \
				"Denegadas" "" \
				"Permitidas" "" \
				"Volver" "" 2> v3
				mante3=$(cat v3)
			done
		elif [ "$mante" = "Lista" ]; then
			$dialog --backtitle "$titulo" --title "Lista de webs" \
			--textbox $prohi 25 55
		elif [ "$mante" = "Servicio" ]; then
	 		$dialog --backtitle "$titulo" --title "Menu Buscar" \
			--menu "Buscar en..." 20 40 8 \
			"Estado" "" \
			"Reiniciar" "" \
			"Reload" "" \
			"Volver" "" 2> var2
			
			mante2=$(cat var2)
	
			while [ "$mante2" != "Volver" ]; do
				if [ "$mante2" = "Estado" ]; then
					estado=$(ps aufx | grep "squid" -c)
					if [ "$estado" -ge "1" ]; then
						status="Funcionando"
					else
						status="Detenido"
					fi
					$dialog --backtitle "$titulo" --title "Proxy-Server Squid" \
					--msgbox "Estado: $status" 10 35
				elif [ "$mante2" = "Reiniciar" ]; then
					/etc/init.d/squid restart
					$dialog --backtitle "$titulo" --title "Proxy-Server Squid" \
					--msgbox "Reinicio Exitoso" 10 35
				elif [ "$mante2" = "Reload" ]; then
					/etc/init.d/squid reload
					$dialog --backtitle "$titulo" --title "Proxy-Server Squid" \
					--msgbox "Reconfiguración exitosa" 10 35
				fi
	
				$dialog --backtitle "$titulo" --title "Menu Buscar" \
				--menu "Buscar en..." 20 40 8 \
				"Estado" "" \
				"Reiniciar" "" \
				"Reload" "" \
				"Volver" "" 2> var2
	
				mante2=$(cat var2)
			done
		elif [ "$mante" = "Ayuda" ]; then
			$dialog --backtitle "$titulo" --title "Ayuda" \
			--textbox "ayuda.txt" 30 58
		elif [ "$mante" = "Quitar" ]; then
			$dialog --backtitle "$titulo" --title "Quitar Webs" \
			--menu "Quitar" 20 40 8 \
			"Denegadas" "" \
			"Permitidas" "" \
			"Volver" "" 2> v3
			mante3=$(cat v3)
			while [ "$mante3" != "Volver" ]; do
				if [ "$mante3" = "Denegadas" ]; then
					 $dialog --backtitle "$titulo" --title "Denegadas" \
					 --inputbox "Quitar" 10 35 2> v4
					 web=$(cat v4)
					 grep "$web" -v "$prohi" > denegado_2.list
					 rm $prohi
					 cp denegado_2.list $prohi
					 rm denegado_2.list
				elif [ "$mante3" = "Permitidas" ]; then
					 grep "$2" -v "$permi" > permitido_2.list
					 rm $permi
					 cp permitido_2.list $permi
					 rm permitido_2.list
				fi	
				$dialog --backtitle "$titulo" --title "Quitar Webs" \
				--menu "Quitar" 20 40 8 \
				"Denegadas" "" \
				"Permitidas" "" \
				"Volver" "" 2> v3
				mante3=$(cat v3)
			done
		elif [ "$mante" = "Imprimir" ]; then
			$dialog --backtitle "$titulo" --title "Imprimir" \
			--msgbox "Imprimir cualquiera de las 2 listas" 10 35
		fi
	
		$dialog --backtitle "$titulo" --title "Menu Principal" \
		--menu "Opciones" 20 40 8 \
		"Buscar" "" \
		"Agregar" "" \
		"Quitar" "" \
		"Lista" "" \
		"Servicio" "" \
		"Imprimir" "" \
		"Ayuda" "" \
		"Salir" "" 2> var1
		
		mante=$(cat var1)
	
		if [ "$mante" = "Salir" ]; then
			$dialog --backtitle "$titulo" --title "Gracias por usar SquiX" \
			--msgbox "Gracias por usar SquiX V1.0-0a" 10 35
			clear
		fi
	done
	;;
	*)
		if [ "$1" = "" ]; then
			clear
			echo "          Debes ingresar una opcion"
		else
			clear
			echo "          $1: Opcion no reconocida"
		fi
	
		help
		exit
		;;
esac

# Este programa es Software Libre. Podés hacer con el lo que quieras!!!
# Bug's a Guido Accardo <gaccardo@gmail.com>, www.guidoaccardo.com.ar, www.cabezza.com.ar

Si modificás el código, agregá un comentario de lo que hiciste para que todos podamos saber

  • Modificaciones:

Archivo de ayuda

------------- Ayuda de Visual Squix ---------------

   Visual Squix es un script diseñado para manejar el
cache-proxy Squid. El script fue diseñado principal-
mente para el usuario sin muchos conocimientos, ya 
que Visual Squix solo "emula" funciones de edición y
comandos ya existentes.
   
-------------- Requerimientos ---------------------

Para la sección visual:           dialog o kdialog
Para la sección entrada standard: ninguna

---------------------------------------------------

   Visual Squix fue diseñado dando por hecho que el 
usuario ha creado 2 reglas de acls. Bloqueos y 
Permisos.

Utilizacion

El código del script debe ser copiado y pegado en un archivo llamado visual_squix (aunque no es necesario usar ese nombre). El mismo debes tener permisos de escritura y ejecución solo como root (chmod 744).

Recuerden que es Software Libre, pueden hacer con el lo que quieran