O Endian Firewall é um excelente web firewall, mas como venho do smoothwall 3 express, senti a necessidade das ferramentas de IP e Traceroute do modulo iptools.cgi.
Então peguei parte do codigo do smoothwall e criei esse MOD no Endian 2.4.1. Tive que perder horas pra dar uma fuçada nos cgi do endian, mas felizmente boa parte dele é baseado no smoothwall, então mão a obra, segue o modulo criado:
#!/usr/bin/perl
# Know Works: Endian Firewall Community 2.4.1
# MOD: iptools.cgi
# version: 0.10
#
# Copyright (C) 2011 - Claudemir P. da Luz Jr.
# Email: xmaxmex@gmail.com
#
# Licensed under GPL Version 2.
#
# have many issues, but it works ;)
require '/var/efw/header.pl';
my %cgiparams;
my @inaddrs, @addrs;
my $addr;
my $address;
my $errormessage = '';
my %cgiparams;
&showhttpheaders();
&getcgihash(\%cgiparams);
$selected{'TOOL'}{'PING'} = '';
$selected{'TOOL'}{'TRACEROUTE'} = '';
$selected{'TOOL'}{'ARPING'} = '';
$selected{'TOOL'}{$cgiparams{'TOOL'}} = 'SELECTED';
# Esta função modifica o titulo no Navegador..
&openpage(_('MOD IPTOOLS ver 0.10'), 1, '');
&openbigbox($errormessage, $warnmessage, $notemessage);
print "<FORM METHOD='POST'>\n";
# esta função abre um quadrado na pagina e coloca um cabeçalho..
&openbox('100%', 'left', _('Ferramentas de Teste IP'));
printf <<END
Escolha o a ferramenta de teste, ping icmp ,traceoute ou arping:<p>
arping utilizara a interface eth1 para seus testes<p><p>
<div class="efw-form">
END
;
print <<END
<TABLE WIDTH='100%'>
<TR>
<TD WIDTH='15%' CLASS='base'>Ferramenta: $tr{'toolc'}</TD>
<TD WIDTH='20%'>
<SELECT NAME='TOOL'>
<OPTION VALUE='PING' $selected{'TOOL'}{'PING'}>Ping
<OPTION VALUE='TRACEROUTE' $selected{'TOOL'}{'TRACEROUTE'}>Traceroute
<OPTION VALUE='ARPING' $selected{'TOOL'}{'ARPING'}>ARPing
</SELECT>
</TD>
<TD WIDTH='20%' CLASS='base'>IP ou Hostname: $tr{'ip addresses or hostnames'}</TD>
<TD WIDTH='30%'><INPUT TYPE='text' SIZE='40' NAME='IP' VALUE='$cgiparams{'IP'}'></TD>
<TD WIDTH='15%' ALIGN='CENTER'><INPUT TYPE='submit' NAME='ACTION' VALUE='Executar'></TD>
</TR>
</TABLE>
END
;
printf <<END
<br class="cb" />
</div>
END
;
&closebox();
if ($cgiparams{'ACTION'} eq "Executar")
{
@inaddrs = split(/,/, $cgiparams{'IP'});
#aqui fiz algumas modificações... ta meio bugado ;)
&openbox('100%', 'left', _('Retorno'));
print "<PRE>\n";
# ping with root privileges
if ($cgiparams{'TOOL'} eq 'PING')
{
system('/bin/pingroot', '-n', '-c', '5', $cgiparams{'IP'});
}
if ($cgiparams{'TOOL'} eq 'TRACEROUTE')
{
system('/bin/traceroute', '-n', $cgiparams{'IP'});
}
# arping...very util
if ($cgiparams{'TOOL'} eq 'ARPING')
{
system('/sbin/arpingroot', '-I', 'eth1', '-c', '5', $cgiparams{'IP'});
}
print "</PRE>\n";
&closebox();
}
print "</FORM>\n";
#print "<br>DEBUG 2: ".$cgiparams{'TOOL'};
#print "<br>DEBUG 4: ".$cgiparams{'IP'};
&closebigbox();
&closepage();
#end.<
Basta fazer o upload via ssh para dentro do endian e salvar na pasta /home/httpd/cgi-bin com o nome iptools.cgi Não esquecer de dar permissão de ececução no script para chmod 755 iptools.cgi. Se algums notaram o ping, foi substituido por pingroot, assim como o arping, foi para arpingroot, esse binarios não existem por padrão no endian.
Segue screenshot do modulo:
Espero que tenhan gostado.
Nenhum comentário:
Postar um comentário