Fazer página de bloqueio personalizado para SQUID GUARD me de uma LUZ
-
Pessoal,
Tudo bém, estou com um baaaaita problemão mesmo em relação ao squid guard, pois eu bloqueio os sites e tudo é bloqueado imediatamente, só que o problema é em relação a liberar páginas bloqueadas isso não funciona (como já mencionado no meu post anterior https://forum.pfsense.org/index.php?topic=96261.0). Pesquisando eu vi a possibilidade de criar/editar uma página de bloqueio personalizado para o squd guard e talvez possa resolver esse meu problema. Só que tenho um novo problema que para essa parte eu sou um "IGNORANTE TENEBROSO" por gentileza podem me dar um passo a passo para eu aplicar e assim talvez resolva o meu problema, segue o que eu já fiz:- Primeiro eu instalei o winSCP e criei um diretório (no pfsense, /usr/local/www/logo) e coloquei os dois arquivos (as logos) nesse diretório;
- Ai depois eu entrei no arquivo de configuração (sgerror.php) e deixei exatamente como abaixo:
include "globals.inc";
include "config.inc";
$page_info = <<<eod<br>#########################################################
# #
# Página de Erro do SquidGuard customizada - Inicio #
# #
#########################################################~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
IE displayed self-page, if them size > 1024
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
function get_error_page($er_code_id, $err_msg='') {
global $err_code;
global $cl;
global $g;
global $config;
$str = Array();header("HTTP/1.1 " . $err_code[$er_code_id]);
$str[] = '';
$str[] = '';
$str[] = '';
$str[] = '';
$str[] = '';
$str[] = '';
$str[] = '';
$str[] = '';
$str[] = 'O endereço requisitado não pôde ser aberto:
<a style="font-size:80%; font-family:Helvetica; color:#7f7f7f;">The requested address could not be opened:</a>';
$str[] = '';
if ($cl['u']) $str[] = "{$cl['u']}";
$str[] = '';
$str[] = "Motivo - Reason: {$err_code[$er_code_id]}
";
$str[] = '
O controle de acessos identificou este site como inadequado de acordo com nossa organização.
Todo ou qualquer acesso à internet é registrado em nosso sistema de relatórios.';
$str[] = '<a style="font-size:70%; font-family:Helvetica; color:#7f7f7f;">The access control identified this site as inappropriate according to the Organization.
All Internet access is logged into our reporting system.</a>';
$str[] = 'Information Technology - IT
Tel: xxxx-xxxx Ramal xxxx/xxxx - E-mail: admin@empresa.com.br';
$str[] = 'Additional Information:';
$str[] = '';
if ($cl['n']) $str[] = "Client Name: {$cl['n']} | ";
if ($cl['a']) $str[] = "Client IP: {$cl['a']} | ";
if ($cl['i']) $str[] = "Client User: {$cl['i']} | ";
if ($cl['s']) $str[] = "Group: {$cl['s']} | ";
if ($cl['t']) $str[] = "Category: {$cl['t']} ";
$str[] = '';$str[] = "";
$str[] = "";return implode("\n", $str);
}#########################################################
# #
# Página de Erro do SquidGuard customizada - Fim #
# #
#########################################################
EOD;define('ACTION_URL', 'url');
define('ACTION_RES', 'res');
define('ACTION_MSG', 'msg');define('TAG_BLANK', 'blank');
define('TAG_BLANK_IMG', 'blank_img');–--------------------------------------------------------------------------------------------------------------------
?url=EMPTY_IMG
# Use this options for replace baners/ads to transparent picture. Thisbetter for viewing.
----------------------------------------------------------------------------------------------------------------------
NULL GIF file
HEX: 47 49 46 38 39 61 - - -
SYM: G I F 8 9 a 01 00 | 01 00 80 00 00 FF FF FF | 00 00 00 2C 00 00 00 00 | 01 00 01 00 00 02 02 44 | 01 00 3B
----------------------------------------------------------------------------------------------------------------------
define(GIF_BODY, "GIF89a\x01\x00\x01\x00\x80\x00\x00\xFF\xFF\xFF\x00\x00\x00\x2C\x00\x00\x00\x00\x01\x00\x01\x00\x00\x02\x02\x44\x01\x00\x3B");
$url = '';
$msg = '';
$cl = Array(); // squidGuard variables: %a %n %i %s %t %u
$err_code = array();$err_code[301] = "301 Moved Permanently";
$err_code[302] = "302 Found";
$err_code[303] = "303 See Other";
$err_code[305] = "305 Use Proxy";$err_code[400] = "400 Bad Request";
$err_code[401] = "401 Unauthorized";
$err_code[402] = "402 Payment Required";
$err_code[403] = "403 Forbidden";
$err_code[404] = "404 Not Found";
$err_code[405] = "405 Method Not Allowed";
$err_code[406] = "406 Not Acceptable";
$err_code[407] = "407 Proxy Authentication Required";
$err_code[408] = "408 Request Time-out";
$err_code[409] = "409 Conflict";
$err_code[410] = "410 Gone";
$err_code[411] = "411 Length Required";
$err_code[412] = "412 Precondition Failed";
$err_code[413] = "413 Request Entity Too Large";
$err_code[414] = "414 Request-URI Too Large";
$err_code[415] = "415 Unsupported Media Type";
$err_code[416] = "416 Requested range not satisfiable";
$err_code[417] = "417 Expectation Failed";$err_code[500] = "500 Internal Server Error";
$err_code[501] = "501 Not Implemented";
$err_code[502] = "502 Bad Gateway";
$err_code[503] = "503 Service Unavailable";
$err_code[504] = "504 Gateway Time-out";
$err_code[505] = "505 HTTP Version not supported";–--------------------------------------------------------------------------------------------------------------------
check arg's
----------------------------------------------------------------------------------------------------------------------
if (count($_POST)) {
$url = trim($_POST['url']);
$msg = $_POST['msg'];
$cl['a'] = $_POST['a'];
$cl['n'] = $_POST['n'];
$cl['i'] = $_POST['i'];
$cl['s'] = $_POST['s'];
$cl['t'] = $_POST['t'];
$cl['u'] = $_POST['u'];
}
elseif (count($_GET)) {
$url = trim($_GET['url']);
$msg = $_GET['msg'];
$cl['a'] = $_GET['a'];
$cl['n'] = $_GET['n'];
$cl['i'] = $_GET['i'];
$cl['s'] = $_GET['s'];
$cl['t'] = $_GET['t'];
$cl['u'] = $_GET['u'];
}
else {
# Show 'About page'
echo get_page(get_about());
exit();
}----------------------------------------------------------------------------------------------------------------------
url's
----------------------------------------------------------------------------------------------------------------------
if ($url) {
$err_id = 0;// check error code
foreach ($err_code as $key => $val) {
if (strpos(strtolower($url), strval($key)) === 0) {
$err_id = $key;
break;
}
}# blank page
if ($url === TAG_BLANK) {
echo get_page('');
}
# blank image
elseif ($url === TAG_BLANK_IMG) {
$msg = trim($msg);
if(strpos($msg, "maxlen_") !== false) {
$maxlen = intval(trim(str_replace("maxlen_", "", $url)));
filter_by_image_size($cl['u'], $maxlen);
exit();
}
else {
# --------------------------------------------------------------
# return blank image
# --------------------------------------------------------------
header("Content-Type: image/gif;"); // charset=windows-1251");
echo GIF_BODY;
}
}
# error code
elseif ($err_id !== 0) {
$er_msg = strstr($_GET['url'], ' ');
echo get_error_page($err_id, $er_msg);
}
# redirect url
elseif ((strpos(strtolower($url), "http://") === 0) or (strpos(strtolower($url), "https://") === 0)) {
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# redirect to specified url
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
header("HTTP/1.0");
header("Location: $url", '', 302);
}
// error arguments
else {
echo get_page("sgerror: error arguments $url");
}
}
else {
echo get_page($_SERVER['QUERY_STRING']); //$url . implode(" ", $_GET));
# echo get_error_page(500);
}~~~~~~~~~~
Exit
~~~~~~~~~~
exit();
----------------------------------------------------------------------------------------------------------------------
functions
----------------------------------------------------------------------------------------------------------------------
function get_page($body) {
$str = Array();
$str[] = '';
$str[] = "\n$body\n";
$str[] = '';
return implode("\n", $str);
}~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
IE displayed self-page, if them size > 1024
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
function get_error_page($er_code_id, $err_msg='') {
global $err_code;
global $cl;
global $g;
global $config;
$str = Array();header("HTTP/1.1 " . $err_code[$er_code_id]);
$str[] = '';
$str[] = '';
if ($config['installedpackages']['squidguarddefault']['config'][0]['deniedmessage']) {
$str[] = "{$config['installedpackages']['squidguarddefault']['config'][0]['deniedmessage']}: {$err_code[$er_code_id]}
";
} else {
$str[] = "Request denied by {$g['product_name']} proxy: {$err_code[$er_code_id]}
";
}
if ($err_msg) $str[] = " Reason: $err_msg";
$str[] = '
';
if ($cl['a']) $str[] = " Client address: {$cl['a']}
";
if ($cl['n']) $str[] = " Client name: {$cl['n']}
";
if ($cl['i']) $str[] = " Client user: {$cl['i']}
";
if ($cl['s']) $str[] = " Client group: {$cl['s']}
";
if ($cl['t']) $str[] = " Target group: {$cl['t']}
";
if ($cl['u']) $str[] = " URL: {$cl['u']}
";
$str[] = '
';
$str[] = "";
$str[] = "";return implode("\n", $str);
}function get_about() {
global $err_code;
global $page_info;
$str = Array();// about info
$s = str_replace("\n", "
", $page_info);
$str[] = $s;
$str[] = "
";$str[] = '';
$str[] = ' HTTP error codes (ERROR_CODE):';
foreach($err_code as $val) {
$str []= "| $val";
}
$str[] = ' |**';
return implode("\n", $str);
}function filter_by_image_size($url, $val_size) {
# load url header
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_NOBODY, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$hd = curl_exec($ch);
curl_close($ch);$size = 0;
$SKEY = "content-length:";
$s_tmp = strtolower($hd);
$s_tmp = str_replace("\n", " ", $s_tmp); # replace all "\n"
if (strpos($s_tmp, $SKEY) !== false) {
$s_tmp = trim(substr($s_tmp, strpos($s_tmp, $SKEY) + strlen($SKEY)));
$s_tmp = trim(substr($s_tmp, 0, strpos($s_tmp, " ")));
if (is_numeric($s_tmp))
$size = intval($s_tmp);
else $size = 0;
}# === check url type and content size ===
# redirect to specified url
if (($size !== 0) && ($size < $val_size)) {
header("HTTP/1.0");
header("Location: $url", '', 302);
}
# return blank image
else {
header("Content-Type: image/gif;");
echo GIF_BODY;
}
}
?>- Ai assim que eu aplique eu fui bloquear uma pagina (ex: terra.com) e agora nem bloquear bloqueia.
- Já reiniciei, rebootei o servidor mais nada.
Novamente e encarecidamente peço para me ajudarem em um passo a passo bem intuitivo se possível for.
Desde já agradeço a todos.**</eod<br>