Portions created by the Initial Developer are Copyright (C) 2008-2012 the Initial Developer. All Rights Reserved. Contributor(s): Mark J Crane James Rose */ include "root.php"; require_once "resources/require.php"; require_once "resources/check_auth.php"; if (permission_exists('log_view')) { //access granted } else { echo "access denied"; exit; } //add multi-lingual support $language = new text; $text = $language->get(); //define variables $c = 0; $row_style["0"] = "row_style0"; $row_style["1"] = "row_style1"; //set a default line number value (off) if (!isset($_POST['ln']) || $_POST['ln'] == '') { $_POST['ln'] = 0; } //set a default ordinal (descending) if (!isset($_POST['ord']) || $_POST['ord'] == '') { $_POST['ord'] = "asc"; } //set a default file size if (!isset($_POST['fs']) || strlen($_POST['fs']) == 0) { $_POST['fs'] = "32"; } //set a default filter if (!isset($_POST['filter'])) { $_POST['filter'] = ""; } if (permission_exists('log_download')) { if (isset($_GET['a']) && $_GET['a'] == "download") { if (isset($_GET['t']) && $_GET['t'] == "logs") { $tmp = $_SESSION['switch']['log']['dir'].'/'; $filename = 'freeswitch.log'; } session_cache_limiter('public'); $fd = fopen($tmp.$filename, "rb"); header("Content-Type: binary/octet-stream"); header("Content-Length: " . filesize($tmp.$filename)); header('Content-Disposition: attachment; filename="'.$filename.'"'); fpassthru($fd); exit; } } require_once "resources/header.php"; echo "\n"; echo " \n"; echo " \n"; echo " \n"; echo " \n"; echo " "; echo " \n"; echo " "; echo " \n"; echo "
\n"; echo " ".$text['label-log-viewer']."
\n"; echo "
\n"; echo "
\n"; echo " ".$text['label-filter']." "; echo " "; echo " "; echo " Display ".$text['label-kb'].""; echo " "; if (permission_exists('log_download')) { echo " \n"; } echo "
\n"; echo "
 
"; if (permission_exists('log_view')) { $MAXEL = 3; //pattern2, pattern3|color2, color3 etc... $user_filesize = '0'; $default_color = '#fff'; $default_type = 'normal'; $default_font = 'monospace'; $default_fsize = '512000'; $log_file = $_SESSION['switch']['log']['dir']."/freeswitch.log"; //put the color matches here... $arr_filter[0]['pattern'] = '[NOTICE]'; $arr_filter[0]['color'] = 'cyan'; $arr_filter[0]['type'] = 'normal'; $arr_filter[0]['font'] = 'monospace'; $arr_filter[1]['pattern'] = '[INFO]'; $arr_filter[1]['color'] = 'chartreuse'; $arr_filter[1]['type'] = 'normal'; $arr_filter[1]['font'] = 'monospace'; $arr_filter[2]['pattern'] = 'Dialplan:'; $arr_filter[2]['color'] = 'burlywood'; $arr_filter[2]['type'] = 'normal'; $arr_filter[2]['font'] = 'monospace'; $arr_filter[2]['pattern2'] = 'Regex (PASS)'; $arr_filter[2]['color2'] = 'chartreuse'; $arr_filter[2]['pattern3'] = 'Regex (FAIL)'; $arr_filter[2]['color3'] = 'red'; $arr_filter[3]['pattern'] = '[WARNING]'; $arr_filter[3]['color'] = 'fuchsia'; $arr_filter[3]['type'] = 'normal'; $arr_filter[3]['font'] = 'monospace'; $arr_filter[4]['pattern'] = '[ERR]'; $arr_filter[4]['color'] = 'red'; $arr_filter[4]['type'] = 'bold'; $arr_filter[4]['font'] = 'monospace'; $arr_filter[5]['pattern'] = '[DEBUG]'; $arr_filter[5]['color'] = 'gold'; $arr_filter[5]['type'] = 'bold'; $arr_filter[5]['font'] = 'monospace'; $file_size = filesize($log_file); /* // removed: duplicate of above if (isset($_POST['submit'])) { if (strlen($_POST['fs']) == 0) { $_POST['fs'] = "32"; } } */ echo " "; echo " "; $user_filesize = '32768'; if (isset($_POST['submit'])) { if (!is_numeric($_POST['fs'])){ //should generate log warning here... $user_filesize=1024 * 32; } else { $user_filesize = $_POST['fs'] * 1024; } if (strlen($_REQUEST['filter']) > 0){ $uuid_filter = $_REQUEST['filter']; echo " "; } } //echo "Log File Size: " . $file_size . " bytes.
"; echo " "; echo " "; echo "
".$text['description-filter']." ".$uuid_filter."".$text['label-displaying']." ".number_format($user_filesize,0,'.',',')." of ".number_format($file_size,0,'.',',')." ".$text['label-bytes'].".
"; echo "
"; $file = fopen($log_file, "r") or exit($text['error-open-file']); //set pointer in file if ($user_filesize >= '0') { if ($user_filesize == '0'){ $user_filesize = $default_fsize; } if ( $file_size >= $user_filesize ){ //set an offset on fopen $bytecount=$file_size-$user_filesize; fseek($file, $bytecount); //echo "opening at " . $bytecount . " bytes
"; } else { if ( $file_size >= $default_fsize ){ //set an offset on fopen $bytecount=$file_size-$default_fsize; fseek($file, $bytecount); echo $text['label-open-at']." " . $bytecount . " ".$text['label-bytes']."
"; } else { //open the file $bytecount='0'; fseek($file, 0); echo "
".$text['label-open-file']."
"; } } } else { if ( $file_size >= $default_fsize ){ //set an offset on fopen $bytecount=$file_size-$default_fsize; fseek($file, $bytecount); echo $text['label-open-at']." " . $bytecount . " ".$text['label-bytes']."
"; } else { //open the file $bytecount='0'; fseek($file, 0); echo "
".$text['label-open-file']."
"; } } //start processing $byte_count = 0; while(!feof($file)) { $log_line = fgets($file); $byte_count++; $noprint = false; $skip_line = false; if (!empty($uuid_filter) ) { $uuid_match = strpos($log_line, $uuid_filter); if ($uuid_match === false) { $skip_line = true; } else { $skip_line = false; } } if ($skip_line === false) { foreach ($arr_filter as $v1) { $pos = strpos($log_line, $v1['pattern']); //echo "
POS is: '$pos'
"; if ($pos !== false){ //color adjustments on words in log line for ($i=2; $i<=$MAXEL; $i++){ if (isset ($v1["pattern".$i])) { $log_line = str_replace($v1["pattern".$i], "".$v1["pattern".$i]."", $log_line); } } $ary_output[] = "".$log_line."
"; $noprint = true; } } if ($noprint !== true){ $ary_output[] = "".htmlentities($log_line)."
"; } } } // output according to ordinal selected if ($_POST['ord'] == 'desc') { $ary_output = array_reverse($ary_output); $adj_index = 0; } else { $adj_index = 1; } foreach ($ary_output as $index => $line) { $line_num = ""; if ($line != "
") { if ($_POST['ln']) { $line_num = "".($index + $adj_index)."   "; } echo $line_num." ".$line; } } fclose($file); echo " "; } echo "
\n"; require_once "resources/footer.php"; ?>