Gerenciamento de clientes com cbq,squid e firewall no kurumin.

Publicado por clelton souza silva 06/06/2007

[ Hits: 7.024 ]

Download squid_control




Ggerenciamento de clientes com cbq, squid e firewall no kurumin.

  



Esconder código-fonte

#!/bin/sh
#criado por clelton souza (cleltonss@hotmail.com)

atualiza () {
service squid stop
service squid reload
service squid start
service kurumin-firewall restart
/etc/sysconfig/cbq/./cbq.init compile
/etc/sysconfig/cbq/./cbq.init restart
cliente=""
ip=""
mac=""
tipoc=""
del_cli=""
busca_cli=""
exclusao=""
tipocliente=""
palavra=""
lista=""
ip64=""
}


velocidade(){
ip64=$(dialog --stdout --inputbox  "Defina o endereço de IP:" 0 0)
echo $ip64 >> /lista/rede
velo1=$(dialog --stdout --inputbox  "Defina a velocidade de download para o IP $ip64 :" 0 0)
velo2=$(dialog --stdout --inputbox  "Defina a velocidade de upload para o IP $ip64 :" 0 0 )
x=1

x=`expr ${x} + 1`
info="`echo "$ip64" | sed -e 's/\//_/g'`_"$velo1"Kbits_eth0"

echo "
#  cbq-0${x}.${info}
DEVICE=eth0,10Mbit,1Mbit
RATE="$velo1"Kbit
WEIGHT=8Kbit
PRIO=5
RULE=$ip64,
" >> /etc/sysconfig/cbq/cbq-0${x}.${info}



# Regra de Limite Interface Eth1


x=`expr ${x} + 1`
info="`echo "$ip64" | sed -e 's/\//_/g'`_"$velo2"Kbits_eth1"

echo "
#  cbq-0${x}.${info}
DEVICE=eth1,10Mbit,1Mbit
RATE="$velo2"Kbit
WEIGHT=8Kbit
PRIO=5
RULE=$ip64
" >>/etc/sysconfig/cbq/cbq-0${x}.${info}

rm /lista/rede
atualiza

}

excluir(){
if [ "$del_cli" == "" ]; then

dialog --stdout --msgbox "O campo está em branco. Esta operação será cancelada." 0 0

else

`cat /etc/squid/acesso* | grep -i $del_cli > /tmp/busca` &&
dialog --stdout --title "DADOS DOS CLIENTES QUE SERÃO EXCLUÍDOS" --textbox /tmp/busca 0 0

dialog --stdout --yesno "CONFIRMA A EXCLUSÃO DO CLIENTE?" 0 0

   if [ $? = 0 ]; then
      `cat /etc/squid/acesso_restrito | grep -v $del_cli > /etc/squid/acesso_restrito`
      `cat /etc/squid/acesso_total | grep -v $del_cli > /etc/squid/acesso_total`
      `cat /etc/squid/acesso_dados.txt | grep -v $del_cli > /etc/squid/acesso_dados.txt`
      `cat /etc/squid/acesso_ip | grep -v $del_cli > /etc/squid/acesso_ip`
atualiza
      dialog --stdout --msgbox "O Cliente foi excluído com sucesso!" 0 0
   else
      /etc/squid/squid_reload
   fi

fi;

}






excluirvelo () {
del_velo=$(dialog --stdout --inputbox "Digite o IP do cliente:" 0 0)

`find /etc/sysconfig/cbq/ | grep -i $del_velo > /tmp/busca` &&
dialog --stdout --title "DADOS DOS CLIENTES QUE SERÃO EXCLUÍDOS" --textbox /tmp/busca 0 0

dialog --stdout --yesno "CONFIRMA A EXCLUSÃO DO CLIENTE?" 0 0
   if [ $? = 0 ]; then
rm /etc/sysconfig/cbq/cbq*$del_velo*
# | grep -i $del_velo
#`cat /etc/sysconfig/cbq/* | grep -v $del_velo > /etc/sysconfig/cbq/*`
      #`cat /etc/sysconfig/cbq/* | grep -v $del_velo > /etc/sysconfig/cbq/*`
      atualiza
      dialog --stdout --msgbox "O Cliente foi excluído com sucesso!" 0 0
   else
      /etc/squid/squid_reload
   fi



}

adicionar_total () {
echo "$ip" >> /etc/squid/acesso_total
echo "iptables -t filter -A FORWARD -d 0/0 -s $ip -m mac --mac-source $mac -j ACCEPT" >> /etc/squid/acesso_ip
echo "iptables -t filter -A FORWARD -d $ip -s 0/0 -j ACCEPT" >> /etc/squid/acesso_ip
echo "iptables -t filter -A INPUT -s $ip -d 0/0 -m mac --mac-source $mac -j ACCEPT" >> /etc/squid/acesso_ip
echo "iptables -t nat -A POSTROUTING -s $ip -o eth0 -j MASQUERADE" >> /etc/squid/acesso_ip

echo $cliente";"$ip";"$mac";"$end";"$mail";"$tel >> /etc/squid/acesso_dados.txt
 
atualiza
dialog --stdout --msgbox "O Cliente foi adicionado com sucesso!" 0 0
}

adicionar_restrito () {
echo "$ip" >> /etc/squid/acesso_restrito
atualiza
dialog --stdout --msgbox "O Cliente foi adicionado com sucesso!" 0 0
}   


#dialog --msgbox "Verificar se o erro que está acontecendo na hora de excluir dados no meio de um alista é por causa do comando /etc/squid/squid_control, que reabre o form. Criar uma variável com o nome início, onde as variáveis são zeradas e substituir dos os /etc/squid/squid_config" 0 0

abertura=$(dialog --stdout --backtitle "SQUID CONTROL VERSÃO 0.1" --title 'MENU PRINCIPAL' --menu "Controle do Squid Proxy - Radio Connect" 0 0 0  1 'ADICIONAR CLIENTE' 2 'REMOVER CLIENTE' 3 'VISUALIZAR CLIENTES' 4 'ADICIONAR PALAVRAS (BLOQUEIOS/EXCEÇÕES)' 5 'REMOVER PALAVRAS (BLOQUEIOS/EXCEÇÕES)' 6 'VISUALIZAR (BLOQUEIOS/EXCEÇÕES)' 7 'TESTE DE CONEXÃO' 8 'Controle de Banda' 9 'Listar conectados' 0 'FECHAR')

#########################################################################

if [ "$abertura" == '1' ]; then

   cliente=$(dialog --stdout --inputbox "Digite o NOME do cliente: " 0 0)
   ip=$(dialog --stdout --inputbox   "Digite o IP do cliente:" 0 0)
   mac=$(dialog --stdout --inputbox "Digite o MAC do cliente:" 0 0)
   tel=$(dialog --stdout --inputbox "Digite o telefone do cliente:" 0 0)
   end=$(dialog --stdout --inputbox "Digite o endereco do cliente:" 0 0)
   mail=$(dialog --stdout --inputbox "Digite o e-mail do cliente:" 0 0)
   


tipoc=$(dialog --stdout --menu "Escolha o tipo de acesso para o cliente: $cliente" 0 0 0  1 'Acesso total à internet' 2 'Acesso restrito à internet')

# CHECANDO CAMPOS EM BRANCO
   
   if [ "$cliente" == "" ]; then
      dialog --stdout --msgbox "O nome do cliente está em branco. Tente novamente." 0 0
      /etc/squid/squid_control

   elif [ "$ip" == "" ]; then
      dialog --stdout --msgbox "O IP do cliente está em branco. Tente novamente." 0 0
      /etc/squid/squid_control

   elif [ "$mac" == "" ]; then
      dialog --stdout --msgbox "O MAC do cliente está em branco. Tente novamente." 0 0
      /etc/squid/squid_control

   elif [ "$tipoc" == "" ]; then
      dialog --stdout --msgbox "O tipo de acesso  do cliente está em branco. Tente novamente." 0 0
      /etc/squid/squid_control

   else
      if [ "$tipoc" == '1' ]; then
         adicionar_total
      elif [ "$tipoc" == '2' ]; then
         adicionar_restrito
      fi;
   fi

/etc/squid/squid_control

#########################################################################

elif [ "$abertura" == '2' ]; then

   exclusao=$(dialog --stdout --menu "BUSCA DE CLIENTES PARA EXCLUSAO:" 0 0 0  1 'POR IP' 2 'POR MAC' 3 'PESQUISAR NOME')


   if [ "$exclusao" == '1' ]; then

      del_cli=$(dialog --stdout --inputbox "Digite o IP do cliente:" 0 0)
      excluir

   elif [ "$exclusao" == '2' ]; then

      del_cli=$(dialog --stdout --inputbox "Digite o MAC do cliente:" 0 0)
      excluir

   elif [ "$exclusao" == '3' ]; then

      busca_cli=$(dialog --stdout --inputbox "Digite o nome do cliente ou ou apenas parte dele." 0 0)
      `cat /etc/squid/acesso* | grep -i $busca_cli > /tmp/busca` &&
      dialog --stdout --textbox /tmp/busca 0 0
   fi


/etc/squid/squid_control

#########################################################################

elif [ "$abertura" == "3" ]; then

   tipocliente=$(dialog --stdout --menu "Escolha o tipo de clientes" 0 0 0  1 'Clientes com acesso total à internet' 2 'Clientes com acesso restrito à internet')

      if [ "$tipocliente" == '1' ]; then
         dialog --textbox /etc/squid/acesso_dados.txt 0 0


      elif [ "$tipocliente" == '2' ]; then
         dialog --textbox /etc/squid/acesso_restrito 0 0
   
      fi;

/etc/squid/squid_control


########################################################################

elif [ "$abertura" == "4" ]; then

 #  tipopalavra=$(dialog --stdout --menu "Escolha a lista que deseja adicionar palavras:" 0 0 0 1 'BLOQUEIOS' 2 'EXCEÇÕES')
#
 #     if [ "$tipopalavra" == '1' ]; then
  #    palavra=$(dialog --stdout --inputbox "Digite a palavra que deseja adicionar à lista de bloqueios: " 0 0)
   #   echo "$palavra" >> /etc/squid/proibido
   #   atualiza


#      elif [ "$tipopalavra" == '2' ]; then
#      palavra=$(dialog --stdout --inputbox "Digite a palavra que deseja adicionar à lista de exceções: " 0 0)
#      echo "$palavra" >> /etc/squid/liberado
 #     atualiza

  #    fi

      /etc/squid/squid_control

########################################################################

elif [ "$abertura" == "5" ]; then

   tipopalavra=$(dialog --stdout --menu "Escolha a lista que deseja remover palavras:" 0 0 0 1 'BLOQUEIOS' 2 'EXCEÇÕES')

      if [ "$tipopalavra" == '1' ]; then
      palavra=$(dialog --stdout --inputbox "Digite a palavra que deseja remover da  lista de bloqueios: " 0 0)
      `cat /etc/squid/bloqueado | grep -v $palavra > /etc/squid/bloqueado`
      atualiza

      elif [ "$tipopalavra" == '2' ]; then
      palavra=$(dialog --stdout --inputbox "Digite a palavra que deseja remover da  lista de exceções: " 0 0)
      `cat /etc/squid/liberado | grep -v $palavra > /etc/squid/liberado`
      atualiza

      fi

      /etc/squid/squid_control

#########################################################################

elif [ "$abertura" == "6" ]; then

   lista=$(dialog --stdout --menu "Escolha a lista que deseja visualizar" 0 0 0  1 'Lista de palavras bloqueadas' 2 'Lista de Excessões')

      if [ "$lista" == '1' ]; then
         dialog --textbox /etc/squid/bloqueado 0 0

      elif [ "$lista" == '2' ]; then
         dialog --textbox /etc/squid/liberado 0 0
      
      fi;

/etc/squid/squid_control

#########################################################################

elif [ "$abertura" == "7" ]; then


destino=$(dialog --stdout --inputbox  "Defina o endereço de destino:" 0 0 "200.253.131.10")
quant=$(dialog --stdout --inputbox "Defina a quantidade de pings enviados:" 0 0 "10")
tamanho=$(dialog --stdout --inputbox "Defina o tamanho dos pacotes:" 0 0 "64")
dialog --infobox "Aguarde enquanto o teste é realizado." 0 0

#if [ "$destino == "" ]; then
#dialog --msgbox "O valor do destino não foi definido." 0 0

#elif [ "$tamanho == "" ]; then
#dialog --msgbox "O valor do tamanho dos pacotes não foi definido." 0 0

#elif [ "$quant == "" ]; then
#dialog --msgbox "O valor da quantidade de pacotes não foi definido." 0 0

#else
   ping -c $quant -s $tamanho $destino > /tmp/testping
   dialog --title "RESULTADO DO TESTE" --textbox /tmp/testping 0 0

#fi

   
/etc/squid/squid_control

#########################################################################

elif [ "$abertura" == "8" ]; then

tipo=$(dialog --stdout --menu "Escolha a opçao" 0 0 0  1 'Cadastrar' 2 'Remover')

      if [ "$tipo" == '1' ]; then
velocidade

      elif [ "$tipo" == '2' ]; then
excluirvelo
      fi;


   /etc/squid/squid_control

#########################################################################

elif [ "$abertura" == "9" ]; then
arp -ea | more > /tmp/listaconec
dialog --title "RESULTADO DO TESTE" --textbox /tmp/listaconec 0 0

fi
  /etc/squid/squid_control


elif [ "$abertura" == "0" ]; then
clear

fi



# Regras para o botão cancelar do menu principal
#clear  

Scripts recomendados

Firewall Iptables

Instalação e uso do mdadm

Administração servidor WEB com Dialog

Gerência do tempo de inicialização das MFs de uma nuvem privada com o OpenNebula

Monitorando espaço em disco com IP dinâmico.


  

Comentários

Nenhum comentário foi encontrado.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts