Personalizar tela de bloqueio



  • Prezados bom dia.

    Sou novo n PFsense.

    Estou tentando personalizar tela de bloqueio. Tenho pfsense versão 2.2.6 amd.

    Vi tutoriais que editam o arquivo sgerror.php. Segui tudo conforme mas não funciona.. Tenho os pacotes Squid 3, SquidGuard, LightSquid instalados.

    Onde estou errando?

    Serei muito grato se puderem ajudar!!

    Abraços,



  • Edição da tela de bloqueio.

    Bloqueio personalizado do SquidGuard, edit o arquivo.

    sgerror.php<<

    Bloqueio personalizado do Squid, edit o arquivo.

    ERR_ACCESS_DENIED<<



  • @andrezaomac:

    Edição da tela de bloqueio.

    Bloqueio personalizado do SquidGuard, edit o arquivo.

    sgerror.php<<

    Bloqueio personalizado do Squid, edit o arquivo.

    ERR_ACCESS_DENIED<<

    Boa tarde.

    Não entendi sua resposta..

    o arquivo sgerror.php aparecia lá e edit, mas agora não aparece mais, coloco o camino, clico em LOAD mas não acha o arquivo.. Usei o WinSCP mas dentro do pfsense nao consigo buscar o arquivo…

    Já a segunda opção não sei onde fica.





  • @ttercio:

    segue esse tutorial aqui:

    https://forum.pfsense.org/index.php?topic=54533.0

    Amigo, agradeço de coração tua dica. Mas neste trecho abaixo em diante, que está meu problema também! Não acho o arquivo..

    "Trocando a Página de Erro do Squid

    Agora vamos de fato trocar a página de erro do Squid. Para isso vamos logar na Interface Gráfica. Vamos até o menu "Diagnostics" e escolhemos a opção "Edit File". No campo "Save / Load from path:" vamos colocar esse endereço: "/usr/local/etc/squid/errors/Portuguese/ERR_ACCESS_DENIED" e então apertar o botão "LOAD"."

    Não sei o que há de errado com meu PFsense.. :/



  • E aí pessoal…

    Mais alguma sugestão??



  • Se eu não me engano o caminho correto é este.

    "/usr/local/etc/squid/errors/pt-br



  • Caso não encontre o arquivo no sistema. Pegue esse abaixo.
    https://forum.pfsense.org/index.php?topic=51016.msg278787#msg278787



  • @andrezaomac:

    Se eu não me engano o caminho correto é este.

    "/usr/local/etc/squid/errors/pt-br

    Mestre bom dia.

    Pior que não achou.. :/



  • @empbilly:

    Caso não encontre o arquivo no sistema. Pegue esse abaixo.
    https://forum.pfsense.org/index.php?topic=51016.msg278787#msg278787

    Valeu, vou tentar..



  • @empbilly:

    Caso não encontre o arquivo no sistema. Pegue esse abaixo.
    https://forum.pfsense.org/index.php?topic=51016.msg278787#msg278787

    Na verdade tenho o arquivo .php que peguei na internet…... Já o adicionei na pasta mas não aparece...



  • @Pipe_RS:

    @empbilly:

    Caso não encontre o arquivo no sistema. Pegue esse abaixo.
    https://forum.pfsense.org/index.php?topic=51016.msg278787#msg278787

    Na verdade tenho o arquivo .php que peguei na internet…... Já o adicionei na pasta mas não aparece...

    Cara isso é estranho demais, nunca vi isso,
    ja tentou reinstalar os pacotes Squid e SquidGuard?



  • Bom dia amigos!

    Fiz o seguinte procedimento:

    Renomeei o arquivo sgerror.php para sgerror.old localizado em /usr/local/www
    Neste mesmo local, inseri o arquivo de logo da empresa (extensão jpg)
    Criei um novo arquivo com o nome sgerror.php
    Inseri o código abaixo

    ?include "globals.inc";
    include "config.inc";
    $page_info = <<<eod<br># ----------------------------------------------------------------------------------------------------------------------
    # SquidGuard error page generator
    # (C)2006-2007 Serg Dvoriancev
    # ----------------------------------------------------------------------------------------------------------------------
    # This programm processed redirection to specified URL or generated error page for standart HTTP error code.
    # Redirection supported http and https protocols.
    # ----------------------------------------------------------------------------------------------------------------------
    # Format:
    #        sgerror.php?url=[http://myurl]or[https://myurl]or[error_code[space_code]output-message][incoming SquidGuard variables]
    # Incoming SquidGuard variables:
    #        a=client_address
    #        n=client_name
    #        i=client_user
    #        s=client_group
    #        t=target_group
    #        u=client_url
    # Example:
    #        sgerror.php?url=http://myurl.com&a=..&n=..&i=..&s=..&t=..&u=..
    #        sgerror.php?url=https://myurl.com&a=..&n=..&i=..&s=..&t=..&u=..
    #        sgerror.php?url=404%20output-message&a=..&n=..&i=..&s=..&t=..&u=..
    # ----------------------------------------------------------------------------------------------------------------------
    # Tags:
    #        myurl and output messages can include Tags
    #                [a] - client address
    #                [n] - client name
    #                [i] - client user
    #                [s] - client group
    #                [t] - target group
    #                [u] - client url
    # Example:
    #         sgerror.php?url=401 Unauthorized access to URL [u] for client [n]
    #      sgerror.php?url=http://my_error_page.php?cladr=%5Ba%5D&clname=%5Bn%5D // %5b=[ %d=]
    # ----------------------------------------------------------------------------------------------------------------------
    # Special Tags:
    #      blank     - get blank page
    #        blank_img - get one-pixel transparent image (for replace banners and etc.)
    # Example:
    #        sgerror.php?url=blank
    #        sgerror.php?url=blank_img
    # ----------------------------------------------------------------------------------------------------------------------
    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] = "Acesso Indevido";
    $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);
    }
    
    #########################################################
    #                                                       #
    #  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();
    
        $str[] = '';
            $str[] = '';
        $str[] = '';
            $str[] = '';
        $str[] = '';
        $str[] = '';
        $str[] = '';
        $str[] = '![logo](http://192.168.1.1/logo.jpg)';
        $str[] = '
    
    O endereço requisitado não pôde ser aberto:
    <a style="font-size:80%; font-family:Helvetica; color:#7f7f7f;"></a>';
        $str[] = '
    
    ';
                if ($cl['u'])        $str[] = "**{$cl['u']}**";
        $str[] = '';
        $str[] = "
    
    Motivo:   {$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[] = '
    
    ';
        $str[] = 'Informa��es do Bloqueio:';
        $str[] = '';
                if ($cl['n'])        $str[] = "Nome do Cliente: {$cl['n']} | ";
                if ($cl['a'])        $str[] = "IP do Cliente: {$cl['a']} | ";
                if ($cl['i'])        $str[] = "Usu�rio: {$cl['i']} | ";
                if ($cl['s'])        $str[] = "Grupo: {$cl['s']} | ";
                if ($cl['t'])        $str[] = "Categoria: {$cl['t']} ";
        $str[] = '';
    
        $str[] = "";
            $str[] = "";
    
            return implode("\n", $str);
    }
    
    #########################################################
    #                                                       #
    #  P�gina de Erro do SquidGuard customizada   - Fim     #
    #                                                       #
    #########################################################
    
    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;
             }
    }
    ?>
    
    Depois destes procedimentos, manda aplicar no Squidguard pra ele assumir a nova configuração e faz o teste.
    
    Espero ter ajudado.[/u][/u][/s][/i]</eod<br>
    


  • Para descontrair…

    Já que você é novo no pfSense, porque não usa a versão mais recente?

    2.3.3  ;)



  • @brunok:

    Para descontrair…

    Já que você é novo no pfSense, porque não usa a versão mais recente?

    2.3.3  ;)

    Bom dia.

    Vc sugere que eu atualize ?