Portions created by the Initial Developer are Copyright (C) 2008-2019 the Initial Developer. All Rights Reserved. Contributor(s): Mark J Crane James Rose */ //includes include "root.php"; require_once "resources/require.php"; require_once "resources/check_auth.php"; //check permissions 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['line_number']) || $_POST['line_number'] == '') { $_POST['line_number'] = 0; } //set a default ordinal (descending) if (!isset($_POST['sort']) || $_POST['sort'] == '') { $_POST['sort'] = "asc"; } //set a default file size if (!isset($_POST['size']) || strlen($_POST['size']) == 0) { $_POST['size'] = "32"; } //set a default filter if (!isset($_POST['filter'])) { $_POST['filter'] = ""; } //download the log 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="'.escape($filename).'"'); fpassthru($fd); exit; } } //include the header $document['title'] = $text['title-log_viewer']; require_once "resources/header.php"; //show the content echo "\n"; echo " \n"; echo " \n"; echo " \n"; echo " \n"; echo " "; echo " \n"; echo " "; echo " \n"; echo "
\n"; echo " ".$text['title-log_viewer']."
\n"; echo "
\n"; echo "
\n"; echo " ".$text['label-filter']." "; echo " "; echo " "; echo " Display ".$text['label-size'].""; echo " "; if (permission_exists('log_download')) { echo " \n"; } echo "
\n"; echo "
 
"; if (permission_exists('log_view')) { $MAXEL = 3; //pattern2, pattern3|color2, color3 etc... $user_file_size = '0'; $default_color = '#fff'; $default_type = 'normal'; $default_font = 'monospace'; $default_file_size = '512000'; $log_file = $_SESSION['switch']['log']['dir']."/freeswitch.log"; //put the color matches here... $array_filter[0]['pattern'] = '[NOTICE]'; $array_filter[0]['color'] = 'cyan'; $array_filter[0]['type'] = 'normal'; $array_filter[0]['font'] = 'monospace'; $array_filter[1]['pattern'] = '[INFO]'; $array_filter[1]['color'] = 'chartreuse'; $array_filter[1]['type'] = 'normal'; $array_filter[1]['font'] = 'monospace'; $array_filter[2]['pattern'] = 'Dialplan:'; $array_filter[2]['color'] = 'burlywood'; $array_filter[2]['type'] = 'normal'; $array_filter[2]['font'] = 'monospace'; $array_filter[2]['pattern2'] = 'Regex (PASS)'; $array_filter[2]['color2'] = 'chartreuse'; $array_filter[2]['pattern3'] = 'Regex (FAIL)'; $array_filter[2]['color3'] = 'red'; $array_filter[3]['pattern'] = '[WARNING]'; $array_filter[3]['color'] = 'fuchsia'; $array_filter[3]['type'] = 'normal'; $array_filter[3]['font'] = 'monospace'; $array_filter[4]['pattern'] = '[ERR]'; $array_filter[4]['color'] = 'red'; $array_filter[4]['type'] = 'bold'; $array_filter[4]['font'] = 'monospace'; $array_filter[5]['pattern'] = '[DEBUG]'; $array_filter[5]['color'] = 'gold'; $array_filter[5]['type'] = 'bold'; $array_filter[5]['font'] = 'monospace'; $array_filter[6]['pattern'] = '[CRIT]'; $array_filter[6]['color'] = 'red'; $array_filter[6]['type'] = 'bold'; $array_filter[6]['font'] = 'monospace'; $file_size = filesize($log_file); /* // removed: duplicate of above if (isset($_POST['submit'])) { if (strlen($_POST['size']) == 0) { $_POST['size'] = "32"; } } */ echo " "; echo " "; $user_file_size = '32768'; if (isset($_POST['submit'])) { if (!is_numeric($_POST['size'])) { //should generate log warning here... $user_file_size = 1024 * 32; } else { $user_file_size = $_POST['size'] * 1024; } if (strlen($_REQUEST['filter']) > 0) { $uuid_filter = $_REQUEST['filter']; echo " "; } } //echo "Log File Size: " . $file_size . " bytes.
"; echo " "; echo " "; echo "
".$text['description-filter']." ".escape($uuid_filter)."".$text['label-displaying']." ".number_format($user_file_size,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_file_size >= '0') { if ($user_file_size == '0') { $user_file_size = $default_file_size; } if ($file_size >= $user_file_size) { //set an offset on fopen $byte_count=$file_size-$user_file_size; fseek($file, $byte_count); //echo "opening at " . $byte_count . " bytes
"; } else { if ($file_size >= $default_file_size) { //set an offset on fopen $byte_count=$file_size-$default_file_size; fseek($file, $byte_count); echo $text['label-open_at']." " . $byte_count . " ".$text['label-bytes']."
"; } else { //open the file $byte_count='0'; fseek($file, 0); echo "
".$text['label-open_file']."
"; } } } else { if ( $file_size >= $default_file_size ) { //set an offset on fopen $byte_count = $file_size - $default_file_size; fseek($file, $byte_count); echo $text['label-open_at']." " . $byte_count . " ".$text['label-bytes']."
"; } else { //open the file $byte_count='0'; fseek($file, 0); echo "
".$text['label-open_file']."
"; } } //start processing $byte_count = 0; while(!feof($file)) { $log_line = escape(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 ($array_filter as $v1) { $pos = strpos($log_line, escape($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(escape($v1["pattern".$i]), "".$v1["pattern".$i]."", $log_line); } } $array_output[] = "".$log_line."
"; $noprint = true; } } if ($noprint !== true) { $array_output[] = "".$log_line."
"; } } } // output according to ordinal selected if ($_POST['sort'] == 'desc') { $array_output = array_reverse($array_output); $adj_index = 0; } else { $adj_index = 1; } foreach ($array_output as $index => $line) { $line_num = ""; if ($line != "
") { if ($_POST['line_number']) { $line_num = "".($index + $adj_index)."   "; } echo $line_num." ".$line; } } fclose($file); echo " "; } echo "
\n"; //include the footer require_once "resources/footer.php"; ?>