1-instale normalmente o pacote Hotspot do juanillo
2-coloque ele p funcionar:
edit configurations file (criar um usuario)
nome_do_usuario senha IP_do_usuario
ou simplesmente clique em add user e adicione um usuario
lembrando q se vc colocar ALL no lugar do ip, o hotspot irá controlar toda(s) rede(s) ou subrede(s) q vc atribuiu a ele
3-Clica em edit subnet configuratios file
coloque as redes ou subredes q o hotspot irão controlar:
10.0.0 2 254 eth0
******| | | |____Adaptador da subrede
******| | |_______final da faixa de ips q o hotspot irá controlar
******| |__________inicio da faixa de ips q o hotspot irá controlar
******|___________IP da subrede a ser controlada (os ultimos bits ficam fora mesmo)
Neste exemplo acima, o hotspot irá controlar a subrede 10.0.0.1 de 10.0.0.2 até 10.0.0.254 (toda subrede) q esta em eth0
4-clica em edit variables.conf file
port=777 (porta em q o hotspot será usado)
URL_REDIRECT=http://www.google.com.br (toda vez q um usuario logar-se irá ser redirecionado para esta url, pode ser qquer uma )
5-em configuração simplificada do firewall>editar regras personalizadas, adicionar esta linha:
/hotspot/hotspot
esta linha serve p recarregar o hotspot toda vez q o BFW for reiniciado ou o firewall for recarregado
6-faça backup e reinicie o BFW
******ATÉ AQUI SEU HOTSPOT JA ESTA PRONTO PARA FUNCIONAR*********************
Agora as mudanças q este tópico Propôs (Corrigindo falhas):
1-no hotspot edite index.cgi file (/hotspot/http/cgi-bin/index.cgi )
edite a linha 56:
<p align='center' class='style5'><a href="http://$HOSTNAME:$port/login.cgi">Continuar / Go</a><br />
esta linha deverá conter o nome do seu hostname e não o IP, ela tem q estar assim:
<p align='center' class='style5'><a href="http://brazilfw.local.net:$port/login.cgi">Continuar / Go</a><br />
Se o seu hostname(brazilfw.local.net) for outro deverá colocar esta linha de acordo c ele.
2-adicione o conteudo do arquivo continua.cgi dentro do login.cgi, não se esqueça de deletar o arquivo continua.cgi. O arquivo login.cgi tem q ficar assim:
- Código: Selecionar todos
#!/bin/sh
. /var/http/web-functions
. /etc/coyote/coyote.conf
. /tmp/netsubsys.state
. /hotspot/variables.conf
showform(){
cat << CLEOF
<html>
<head>
<meta http-equiv="Expires" content="0">
<meta http-equiv="Last-Modified" content="0">
<meta http-equiv="Cache-Control" content="no-cache, mustrevalidate">
<meta http-equiv="Pragma" content="no-cache">
<title>
HotSpot
</title>
</head>
<body>
<div align="center">
<p> </p>
<p> </p>
<form method="POST" action="login.cgi">
<table border="0" width="35%" cellspacing="1">
<tr>
<td colspan="2" bgcolor="#000080">
<p align="center"><b><font color="#FFFFFF" face="Arial Black">
HOTSPOT</font></b></td>
</tr>
<tr>
<td bgcolor="#6699FF" width="31%">
<font color="#FFFFFF" face="Arial Black" size="2">Usuario</font></td>
<td width="66%" bgcolor="#6699FF"><input type=text name=USUARIO value=""></td>
</tr>
<tr>
<td bgcolor="#6699FF" width="31%">
<font color="#FFFFFF" face="Arial Black" size="2">Password</font></td>
<td width="66%" bgcolor="#6699FF"><input type=password name=PASSWORD value=""></td>
</tr>
<tr>
<td colspan="2" align="center"><input type=submit value="OK" name=OKBTN></td>
</tr>
</table>
</form>
</div>
</body>
</html>
CLEOF
}
continua()
{
/hotspot/http/cgi-bin/eliminaregla $REMOTE_ADDR
cat << CLEOF
<html>
<head>
<meta http-equiv="Expires" content="0">
<meta http-equiv="Last-Modified" content="0">
<meta http-equiv="Cache-Control" content="no-cache, mustrevalidate">
<meta http-equiv="Pragma" content="no-cache">
<META HTTP-EQUIV="REFRESH" CONTENT = "0; URL=$URL_REDIRECT">
<title>
HotSpot
</title>
</head>
<body>
</body>
</html>
CLEOF
}
valido(){
cat << CLEOF
<html>
<head>
<meta http-equiv="Expires" content="0">
<meta http-equiv="Last-Modified" content="0">
<meta http-equiv="Cache-Control" content="no-cache, mustrevalidate">
<meta http-equiv="Pragma" content="no-cache">
<title>
HotSpot
</title>
</head>
<body>
</body>
</html>
CLEOF
continua
}
invalido(){
cat << CLEOF
<html>
<head>
<meta http-equiv="Expires" content="0">
<meta http-equiv="Last-Modified" content="0">
<meta http-equiv="Cache-Control" content="no-cache, mustrevalidate">
<meta http-equiv="Pragma" content="no-cache">
<META HTTP-EQUIV="REFRESH" CONTENT = "5; URL=login.cgi">
<title>
HotSpot
</title>
</head>
<body>
<br />
<br />
<br />
<br />
<div align="center">
<strong>Password or User Error !!!</strong>
<div>
</body>
</html>
CLEOF
}
case "$FORM_OKBTN" in
"OK")
PASS=`cat /hotspot/hotspot.conf |grep $FORM_USUARIO |cut -f 2 -d \ `
IP=`cat /hotspot/hotspot.conf |grep $FORM_USUARIO |cut -f 3 -d \ `
#echo $PASS $FORM_PASSWORD $IP $REMOTE_ADDR > nada.txt
if [ "$PASS" = "@" ]; then
echo "$(date) OK $FORM_USUARIO $REMOTE_ADDR" >> /hotspot/login.log
valido
else
if [ "$PASS" = "$FORM_PASSWORD" ]; then
if [ "$IP" = "ALL" ]; then
echo "$(date) OK $FORM_USUARIO $REMOTE_ADDR" >> /hotspot/login.log
valido
else
if [ "$IP" = "$REMOTE_ADDR" ]; then
echo "$(date) OK $FORM_USUARIO $REMOTE_ADDR" >> /hotspot/login.log
valido
else
echo "$(date) ERR $FORM_USUARIO $REMOTE_ADDR" >> /hotspot/login.log
invalido
fi
fi
else
echo "$(date) ERR $FORM_USUARIO $REMOTE_ADDR" >> /hotspot/login.log
invalido
fi
fi
;;
*)
showform
;;
esac
3-Crie um arquivo(script) c o nome /hotspot/conn tendo o seguinte conteúdo:
- Código: Selecionar todos
#!/bin/sh
. /etc/coyote/coyote.conf
. /hotspot/variables.conf
tab_arp='/hotspot/tab_arp.tmp'
compara_arp='/hotspot/compara_arp.tmp'
ip_off='/hotspot/ip_off.tmp'
#
echo " " > $tab_arp
cat /proc/net/arp | grep 10.0.0 | cut -c1-15 > $tab_arp
#
conta_arp=`cat $tab_arp | sort | wc -l`
conta_comp=`cat $compara_arp | sort | wc -l`
#
if test "$conta_arp" -gt "$conta_comp" ; then
cp $tab_arp $compara_arp
echo " " > $ip_off
fi
#
if test "$conta_arp" -lt "$conta_comp" ; then
for line in `cat $tab_arp` ; do
sed -i "/$line/d" $compara_arp
done
cp $compara_arp $ip_off
cp $tab_arp $compara_arp
fi
##########################################
############desativa todos os ips off-line
##########################################
cat $ip_off | while read line; do
COMMAND1="/usr/sbin/iptables -t nat -A PREROUTING -i eth0 -p tcp -s 10.0.0.$line -j DNAT --to-destination $LOCAL_IPADDR:$port"
echo "$COMMAND1"
$COMMAND1
echo ""
done
#
#
if test "$conta_arp" -eq "$conta_comp" ; then
echo " " > $ip_off
fi
echo""
echo "Listando tab_arp.tmp..."
echo""
cat /hotspot/tab_arp.tmp
echo""
echo "Listando compara_arp.tmp..."
echo""
cat /hotspot/compara_arp.tmp
echo""
echo "Listando a diferença entre tab_arp.tmp e compara_arp.tmp(ip_off.tmp)..."
echo""
cat /hotspot/ip_off.tmp
echo""
na linha 11 (cat /proc/net/arp | grep 10.0.0 | cut -c1-15 > $tab_arp) note q vc deverá colocar o IP da sua rede a ser controlada, se for varias redes tem q ter um script desses p cada uma.
Crie os seguintes arquivos (conteúdo vazio) nos seguintes endereços:
/hotspot/tab_arp.tmp
/hotspot/compara_arp.tmp
/hotspot/ip_off.tmp
Note q na linha 35 (COMMAND1="/usr/sbin/iptables -t nat -A PREROUTING -i eth0 -p tcp -s $line -j DNAT --to-destination )
esta se referindo a placa de rede eth0, se sua rede for em outro adaptador, tem q mudar esse parametro aí.
4-Agora de permissão para esse script poder rodar:
chmod +x conn (tem q estar na pasta /hotspot pdar essa permissão a esse arquivo)
5-Coloque esse script p executar a cada 10 minutos: (ou o tempo q vc preferir)
vá nas tarefas agendadas e adicione:
0,10,20,30,40,50 * * * * /hotspot/conn
Pronto!!!
Faça backup e reinicie.