diff options
Diffstat (limited to 'packages/squidGuard/sgerror.php')
-rw-r--r-- | packages/squidGuard/sgerror.php | 284 |
1 files changed, 0 insertions, 284 deletions
diff --git a/packages/squidGuard/sgerror.php b/packages/squidGuard/sgerror.php deleted file mode 100644 index 8084c5c3..00000000 --- a/packages/squidGuard/sgerror.php +++ /dev/null @@ -1,284 +0,0 @@ -<?php -$page_info = <<<EOD -# ---------------------------------------------------------------------------------------------------------------------- -# 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] = "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[] = '<html>'; - $str[] = "<body>\n$body\n</body>"; - $str[] = '</html>'; - 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; - $str = Array(); - - header("HTTP/1.1 " . $err_code[$er_code_id]); - - $str[] = '<html>'; - $str[] = '<body>'; - $str[] = '<h3>Request denied by pfSense proxy: ' . $err_code[$er_code_id] . '</h3>'; - if ($err_msg) $str[] = "<b> Reason: </b> $err_msg"; - $str[] = '<hr size="1" noshade>'; - if ($cl['a']) $str[] = "<b> Client address: </b> {$cl['a']} <br>"; - if ($cl['n']) $str[] = "<b> Client name: </b> {$cl['n']} <br>"; - if ($cl['i']) $str[] = "<b> Client user: </b> {$cl['i']} <br>"; - if ($cl['s']) $str[] = "<b> Client group: </b> {$cl['s']} <br>"; - if ($cl['t']) $str[] = "<b> Target group: </b> {$cl['t']} <br>"; - if ($cl['u']) $str[] = "<b> URL: </b> {$cl['u']} <br>"; - $str[] = '<hr size="1" noshade>'; - $str[] = "</body>"; - $str[] = "</html>"; - - return implode("\n", $str); -} - -function get_about() { - global $err_code; - global $page_info; - $str = Array(); - - // about info - $s = str_replace("\n", "<br>", $page_info); - $str[] = $s; - $str[] = "<br>"; - - $str[] = '<table>'; - $str[] = ' <b>HTTP error codes (ERROR_CODE):</th></tr>'; - foreach($err_code as $val) { - $str []= "<tr><td>$val"; - } - $str[] = '</table>'; - - 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; - } -} -?>
\ No newline at end of file |