Portions created by the Initial Developer are Copyright (C) 2008-2024 the Initial Developer. All Rights Reserved. Contributor(s): Mark J Crane James Rose */ //includes files require_once dirname(__DIR__, 2) . "/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(); //get the ID $xml_cdr_uuid = $_GET['id'] ?? ''; $action = $_GET['a'] ?? ''; //get the cdr json from the database $sql = "select * from v_xml_cdr_logs "; if (permission_exists('xml_cdr_all')) { $sql .= "where xml_cdr_uuid = :xml_cdr_uuid "; } else { $sql .= "where xml_cdr_uuid = :xml_cdr_uuid "; $sql .= "and domain_uuid = :domain_uuid "; $parameters['domain_uuid'] = $domain_uuid; } $parameters['xml_cdr_uuid'] = $xml_cdr_uuid; $database = new database; $row = $database->select($sql, $parameters, 'row'); if (!empty($row) && is_array($row) && @sizeof($row) != 0) { $log_content = trim($row["log_content"]); } unset($sql, $parameters, $row); //start processing $byte_count = strlen($log_content); //download the log if (permission_exists('log_download')) { $file_name = 'call_log.txt'; if (isset($file_name) && $action == 'download' && isset($log_content)) { header("Content-Type: binary/octet-stream"); header("Content-Length: " . strlen($log_content)); header('Content-Disposition: attachment; filename="'.basename($file_name).'"'); echo $log_content; exit; } } //define the variables $MAXEL = 3; //pattern2, pattern3|color2, color3 etc... $user_file_size = '0'; $default_color = '#fff'; $default_type = 'normal'; $default_font = 'monospace'; $default_file_size = '512000'; //create the filter array, 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'; //include the header $document['title'] = $text['label-call_log']; require_once "resources/header.php"; //show the content echo "
\n"; echo "
".$text['label-call_log']."
\n"; echo "
\n"; echo button::create(['type'=>'button','label'=>$text['button-back'],'icon'=>$_SESSION['theme']['button_icon_back'],'style'=>'margin-left: 15px;','link'=>'xml_cdr_details.php?id='.$xml_cdr_uuid]); if (permission_exists('log_download')) { echo button::create(['type'=>'button','label'=>$text['button-download'],'icon'=>$_SESSION['theme']['button_icon_download'],'style'=>'margin-left: 15px;','link'=>'xml_cdr_log.php?id='.$xml_cdr_uuid.'&a=download']); } echo "
\n"; echo "
\n"; echo "
\n"; echo "
\n"; echo "\n"; echo " \n"; echo " "; echo " \n"; echo "
"; if (!empty($log_content)) { $log_array = explode("\n", $log_content); foreach ($log_array as $log_line) { $log_line = escape($log_line); $noprint = false; $skip_line = false; if (!empty($filter)) { $uuid_match = strpos($log_line, $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 (isset($_POST['sort']) && $_POST['sort'] == 'desc') { $array_output = array_reverse($array_output); $adj_index = 0; } else { $adj_index = 1; } if (!empty($array_output) && is_array($array_output)) { foreach ($array_output as $index => $line) { $line_num = ""; if ($line != "
") { if (isset($_POST['line_number']) && $_POST['line_number']) { $line_num = "".($index + $adj_index)."   "; } echo $line_num." ".$line; } } } echo " "; echo "
\n"; echo "
\n"; //include the footer require_once "resources/footer.php"; ?>