Pagina de erro personalizada do Squid - Com direito a MySQL

Publicado por Marcos Carraro em 20/04/2012

[ Hits: 10.662 ]

 


Pagina de erro personalizada do Squid - Com direito a MySQL



Tive a ilustre ideia de desenvolver uma página totalmente diferente, com os meus dotes em programação, que são iguais aos de culinária (hahaha!).

Fiz uma página em PHP que tem a seguinte função:
  • Pegar IP do usuário;
  • Pegar URL do site;
  • Mostrar dia hora do acesso;
  • Gravar automaticamente esta entrada no MySQL, para ter um relatório de sites acessados bloqueados.

Não sei se conseguiram entender, mas a ideia ficou muito 'massa'. A página é uma cópia do layout do 'Avast! 7', sim do 'Avast!' (já falei que programei essa página como faço comida!!!!).

Na página de erro do Squid (ERR_ACCESS_DENIED)

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>ERRO: A URL requisitada não pôde ser recuperada</title> </head> <body> <form name="bloquear" action="http://proxy_erro_page.php" method="post"> <input type="hidden" name="url" value="%U"> <input name="grava" type="submit" value="grava"> </form> <script language="javascript"> document.bloquear.submit(); </script> </body> </html>


Código da página PHP

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML><HEAD> <META content="text/html; charset=utf-8" http-equiv=Content-Type> <STYLE>BODY { PADDING-BOTTOM: 30px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; PADDING-TOP: 30px } H1 { MARGIN: 0cm 0cm 0pt; FONT-FAMILY: "Segoe UI", Calibri, Arial, Verdana; COLOR: #808080; FONT-SIZE: 8pt; FONT-WEIGHT: normal } H2 { TEXT-TRANSFORM: uppercase; MARGIN: 0cm 0cm 5pt; FONT-FAMILY: "Segoe UI", Calibri, Arial, Verdana; COLOR: #ffa500; FONT-SIZE: 19pt; FONT- WEIGHT: normal } H3 { PADDING-BOTTOM: 5.4pt; TEXT-TRANSFORM: uppercase; MARGIN: 0cm 0cm 0pt; FONT-FAMILY: "Segoe UI", Calibri, Arial, Verdana; FONT-SIZE: 10pt; FONT-WEIGHT: normal; PADDING-TOP: 30pt } A:link { COLOR: #ffa500; TEXT-DECORATION: underline; text-underline: single } A:visited { COLOR: purple; TEXT-DECORATION: underline; text-underline: single } .text { MARGIN: 0px 0px 1pt; FONT-FAMILY: "Segoe UI", Calibri, Arial, Verdana; FONT-SIZE: 8pt; PADDING-TOP: 10pt } .footer { MARGIN-TOP: 60pt; FONT-FAMILY: "Segoe UI", Calibri, Arial, Verdana; COLOR: gray; FONT-SIZE: 8pt } TD { PADDING-BOTTOM: 0cm; LINE-HEIGHT: 14pt; PADDING-LEFT: 5.4pt; PADDING-RIGHT: 5.4pt; FONT-SIZE: 8pt; PADDING-TOP: 0cm } TD.header { WIDTH: 75pt; FONT-FAMILY: "Segoe UI", Calibri, Arial, Verdana; FONT-WEIGHT: bold } TD.value { FONT-FAMILY: "Segoe UI", Calibri, Arial, Verdana; FONT-WEIGHT: normal } </STYLE> <META name=GENERATOR content="MSHTML 9.00.8112.16421"></HEAD> <BODY> <TABLE> <TBODY> <TR> <TD><IMG src="gfx/erro_proxy.png"> </TD> <TD> <H1>Alerta de proteção!</H1> <H2>Site bloqueado</H2></TD></TR> <TR> <TD> <TD> <P class=text>O site a seguir foi bloqueado devido a politica da empresa.</P> <H3>Detalhes</H3> <TABLE> <TBODY> <TR> <TD class=header>URL:</TD> <TD class=value><?php $urlatual=$_POST['url']; echo $urlatual; ?></TD></TR> <TR> <TD class=header>Acessado em:</TD> <TD class=value><?php date_default_timezone_set('America/Sao_Paulo'); echo date('d/m/Y - h:i'); ? ></TD></TR></TBODY></TABLE> <P class=footer>Se você não concorda com esse bloqueio entre em contado com o suporte: suporte@escolainfoserv.com.br.</P></TD></TR> </TBODY></TABLE></BODY></HTML> <?php include ('inc/conf.inc.php'); //Fazendo a conexão com o servidor MySQL para pegar resultado $conexao = mysql_connect($servidor,$usuario,$senha) or die($msg[0]); mysql_select_db($banco,$conexao) or die($msg[1]); $ip_cliente=$_SERVER["REMOTE_ADDR"]; $dia_hora=date('d/m/Y - h:i'); // Inserindo a url no banco $string_sql = "INSERT INTO proxy_bloqueados (`id` ,`url` ,`ip` ,`hora`)VALUES ('null', '$urlatual', '$ip_cliente', '$dia_hora')"; mysql_query($string_sql,$conexao); if(mysql_affected_rows() == 1){ } else { echo "Erro, não possível inserir no banco de dados"; } ?> <?php /* /usr/share/squid/errors/pt-br/ERR_ACCESS_DENIED <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>ERRO: A URL requisitada não pôde ser recuperada</title> </head> <body> <iframe scrolling="no" frameborder="0" width=800px height=800px src="http://172.16.1.252/infoweb/projetos/desenvolvimento/A/magneto_admin/proxy_erro_page.php? url=%U"></iframe> </body> </html> */ ?>


Estrutura MySQL

-- phpMyAdmin SQL Dump -- version 3.4.6 -- http://www.phpmyadmin.net -- -- Servidor: 172.16.1.251:3306 -- Tempo de Geração: 15/03/2012 às 04h02min -- Versão do Servidor: 5.5.18 -- Versão do PHP: 5.3.8 SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO"; SET time_zone = "+00:00"; /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; /*!40101 SET NAMES utf8 */; -- -- Banco de Dados: `painel` -- -- -------------------------------------------------------- -- -- Estrutura da tabela `proxy_bloqueados` -- CREATE TABLE IF NOT EXISTS `proxy_bloqueados` ( `id` int(11) NOT NULL, `url` text NOT NULL, `ip` text NOT NULL, `hora` text NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=latin1; -- -- Extraindo dados da tabela `proxy_bloqueados` -- INSERT INTO `proxy_bloqueados` (`id`, `url`, `ip`, `hora`) VALUES (0, 'http://terra.com.br', '172.16.1.1', '15/03/2012 - 03:14'), (0, 'http://172.16.1.252/......................................../proxy_erro_page.php', '172.16.1.209', '15/03/2012 - 03:55'), (0, 'http://172.16.1.252//........................................//proxy_erro_page.php', '172.16.1.209', '15/03/2012 - 03:56'), (0, 'http://172.16.1.252//........................................//proxy_erro_page.php', '172.16.1.102', '15/03/2012 - 03:57'); /*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; /*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;


Depois disso, é so largar no Squid, como página de erro padrão.

- deny_info: http://IPDOSERVIDOR/proxy_error_page.php (MINHAS ACL)


Se alguém tiver mais dicas, ou ideais mirabolantes, estou aberto a novos projetos.

Abraços,
Marcos Carraro

Outras dicas deste autor

TS rdesktop + impressora local LPT1

Desativar tty extra no Ubuntu 10.04

Trocar senha do webmin via console

Compilando Apache 2.4.3 no CentOS 6.3

Gerenciar Squid via web com Carraro DashBoard

Leitura recomendada

MATE Desktop no Debian Wheezy

Obtendo informações do sistema com o script INXI

Novo portal Linux: Open SCRIPT

Criando um usuário root sem ser o root

Jogo estilo Super Metroid: Cave Story (rodando em Linux)

  

Comentários
[1] Comentário enviado por danniel-lara em 20/04/2012 - 13:06h

Boa dica , já add nos meu Favoritos



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts