saimod_sys_log new layout, more info
This commit is contained in:
parent
a9102b3663
commit
fdbdc73b1e
26
dbd/tbl/system_log.php
Normal file
26
dbd/tbl/system_log.php
Normal file
@ -0,0 +1,26 @@
|
||||
<?php
|
||||
namespace SYSTEM\DBD;
|
||||
|
||||
class system_log {
|
||||
const NAME_PG = 'system.log';
|
||||
const NAME_MYS = 'system_log';
|
||||
|
||||
const FIELD_ID = 'ID';
|
||||
const FIELD_CLASS = 'class';
|
||||
const FIELD_MESSAGE = 'message';
|
||||
const FIELD_CODE = 'code';
|
||||
const FIELD_FILE = 'file';
|
||||
const FIELD_LINE = 'line';
|
||||
const FIELD_TRACE = 'trace';
|
||||
const FIELD_IP = 'ip';
|
||||
const FIELD_QUERYTIME = 'querytime';
|
||||
const FIELD_TIME = 'time';
|
||||
const FIELD_SERVER_NAME = 'server_name';
|
||||
const FIELD_SERVER_PORT = 'server_port';
|
||||
const FIELD_REQUEST_URI = 'request_uri';
|
||||
const FIELD_POST = 'post';
|
||||
const FIELD_HTTP_REFERER = 'http_referer';
|
||||
const FIELD_HTTP_USER_AGENT = 'http_user_agent';
|
||||
const FIELD_USER = 'user';
|
||||
const FIELD_THROWN = 'thrown';
|
||||
}
|
||||
@ -2,7 +2,7 @@
|
||||
|
||||
namespace SYSTEM\DBD;
|
||||
|
||||
class UserTable {
|
||||
class system_user {
|
||||
|
||||
const NAME_PG = 'system.user';
|
||||
const NAME_MYS = 'system_user';
|
||||
@ -8,20 +8,38 @@ class error_handler_dbwriter extends \SYSTEM\LOG\error_handler {
|
||||
public static function CALL(\Exception $E, $thrown){
|
||||
try{
|
||||
if(\property_exists(get_class($E), 'logged') && $E->logged){
|
||||
return false;} //alrdy logged
|
||||
return false;} //alrdy logged(this prevents proper thrown value for every system exception)
|
||||
|
||||
if(\SYSTEM\system::isSystemDbInfoPG()){
|
||||
$con = new \SYSTEM\DB\Connection(\SYSTEM\system::getSystemDBInfo());
|
||||
$con->prepare( 'sysLogStmt', 'INSERT INTO system.sys_log '.
|
||||
'(class, message, code, file, line, trace, ip, querytime) '.
|
||||
'VALUES ($1, $2, $3, $4, $5, $6, $7, $8);',
|
||||
$con->prepare( 'sysLogStmt', 'INSERT INTO '.\SYSTEM\DBD\system_log::NAME_PG.
|
||||
'('.\SYSTEM\DBD\system_log::FIELD_CLASS.','.\SYSTEM\DBD\system_log::FIELD_MESSAGE.','.
|
||||
\SYSTEM\DBD\system_log::FIELD_CODE.','.\SYSTEM\DBD\system_log::FIELD_FILE.','.
|
||||
\SYSTEM\DBD\system_log::FIELD_LINE.','.\SYSTEM\DBD\system_log::FIELD_TRACE.','.
|
||||
\SYSTEM\DBD\system_log::FIELD_IP.','.\SYSTEM\DBD\system_log::FIELD_QUERYTIME.','.
|
||||
\SYSTEM\DBD\system_log::FIELD_SERVER_NAME.','.\SYSTEM\DBD\system_log::FIELD_SERVER_PORT.','.
|
||||
\SYSTEM\DBD\system_log::FIELD_REQUEST_URI.','.\SYSTEM\DBD\system_log::FIELD_POST.','.
|
||||
\SYSTEM\DBD\system_log::FIELD_HTTP_REFERER.','.\SYSTEM\DBD\system_log::FIELD_HTTP_USER_AGENT.','.
|
||||
\SYSTEM\DBD\system_log::FIELD_USER.','.\SYSTEM\DBD\system_log::FIELD_THROWN.')'.
|
||||
'VALUES($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12, $13, $14, $15, $16);',
|
||||
array( get_class($E), $E->getMessage(), $E->getCode(), $E->getFile(), $E->getLine(), $E->getTraceAsString(),
|
||||
getenv('REMOTE_ADDR'),round(microtime(true) - \SYSTEM\time::getStartTime(),5)));
|
||||
getenv('REMOTE_ADDR'),round(microtime(true) - \SYSTEM\time::getStartTime(),5),
|
||||
$_SERVER["SERVER_NAME"],$_SERVER["SERVER_PORT"],$_SERVER['REQUEST_URI'], serialize($_POST),
|
||||
array_key_exists('HTTP_REFERER', $_SERVER) ? $_SERVER['HTTP_REFERER'] : null,$_SERVER['HTTP_USER_AGENT'],
|
||||
($user = \SYSTEM\SECURITY\Security::getUser()) ? $user->id : null,$thrown));
|
||||
} else {
|
||||
$con = new \SYSTEM\DB\Connection(\SYSTEM\system::getSystemDBInfo());
|
||||
$con->prepare( 'sysLogStmt', 'INSERT INTO system_log '.
|
||||
'(class, message, code, file, line, trace, ip, querytime, time, server_name, server_port, request_uri, post, http_referer, http_user_agent, user, thrown) '.
|
||||
'VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?);',
|
||||
$con->prepare( 'sysLogStmt', 'INSERT INTO '.\SYSTEM\DBD\system_log::NAME_MYS.
|
||||
'('.\SYSTEM\DBD\system_log::FIELD_CLASS.','.\SYSTEM\DBD\system_log::FIELD_MESSAGE.','.
|
||||
\SYSTEM\DBD\system_log::FIELD_CODE.','.\SYSTEM\DBD\system_log::FIELD_FILE.','.
|
||||
\SYSTEM\DBD\system_log::FIELD_LINE.','.\SYSTEM\DBD\system_log::FIELD_TRACE.','.
|
||||
\SYSTEM\DBD\system_log::FIELD_IP.','.\SYSTEM\DBD\system_log::FIELD_QUERYTIME.','.
|
||||
\SYSTEM\DBD\system_log::FIELD_TIME.','.\SYSTEM\DBD\system_log::FIELD_SERVER_NAME.','.
|
||||
\SYSTEM\DBD\system_log::FIELD_SERVER_PORT.','.\SYSTEM\DBD\system_log::FIELD_REQUEST_URI.','.
|
||||
\SYSTEM\DBD\system_log::FIELD_POST.','.\SYSTEM\DBD\system_log::FIELD_HTTP_REFERER.','.
|
||||
\SYSTEM\DBD\system_log::FIELD_HTTP_USER_AGENT.','.\SYSTEM\DBD\system_log::FIELD_USER.','.
|
||||
\SYSTEM\DBD\system_log::FIELD_THROWN.')'.
|
||||
'VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?);',
|
||||
array( get_class($E), $E->getMessage(), $E->getCode(), $E->getFile(), $E->getLine(), $E->getTraceAsString(),
|
||||
getenv('REMOTE_ADDR'),round(microtime(true) - \SYSTEM\time::getStartTime(),5),date('Y-m-d H:i:s', microtime(true)),
|
||||
$_SERVER["SERVER_NAME"],$_SERVER["SERVER_PORT"],$_SERVER['REQUEST_URI'], serialize($_POST),
|
||||
|
||||
@ -1,10 +1,4 @@
|
||||
<?php
|
||||
namespace SYSTEM\LOG;
|
||||
|
||||
class ErrorException extends \ErrorException {
|
||||
public $logged = false;
|
||||
public function __construct($message = "", $code = 1, $severity = 0, $filename = "", $lineno = 0, $previous = NULL){
|
||||
parent::__construct($message, $code, $severity, $filename, $lineno, $previous);
|
||||
\SYSTEM\LOG\log::__exception_handler($this,false);
|
||||
}
|
||||
}
|
||||
class ERROR_EXCEPTION extends \SYSTEM\LOG\SYSTEM_ERROR_EXCEPTION{}
|
||||
@ -39,7 +39,7 @@ class JsonResult extends \SYSTEM\LOG\AbstractResult {
|
||||
$error['code'] = $e->getCode();
|
||||
$error['file'] = $e->getFile();
|
||||
$error['line'] = $e->getLine();
|
||||
$error['trace'] = array_slice(explode('#', $e->getTraceAsString()), 1, -1);;
|
||||
$error['trace'] = array_slice(explode('#', $e->getTraceAsString()), 1, -1);
|
||||
|
||||
return self::toString($error, self::JSONRESULT_ERROR);
|
||||
}
|
||||
|
||||
@ -1,4 +1,65 @@
|
||||
function init__SYSTEM_SAI_saimod_sys_log() {
|
||||
function init__SYSTEM_SAI_saimod_sys_log() {
|
||||
$('#tabs_log a').click(function (e) {
|
||||
e.preventDefault();
|
||||
$(this).tab('show');
|
||||
load_log_tab($(this).attr('action'));
|
||||
});
|
||||
|
||||
load_log_tab("log");
|
||||
};
|
||||
|
||||
function load_log_tab(action){
|
||||
$('img#loader').show();
|
||||
switch(action){
|
||||
case 'log':
|
||||
$('#tab_log').load(SAI_ENDPOINT+'sai_mod=.SYSTEM.SAI.saimod_sys_log&action='+action, function(){
|
||||
register_log();
|
||||
register_error();
|
||||
$('img#loader').hide();});
|
||||
return;
|
||||
case 'stats':
|
||||
$('#tab_stats').load(SAI_ENDPOINT+'sai_mod=.SYSTEM.SAI.saimod_sys_log&action='+action, function(){
|
||||
drawVisualization();
|
||||
$('img#loader').hide();});
|
||||
return;
|
||||
case 'admin':
|
||||
$('#tab_admin').load(SAI_ENDPOINT+'sai_mod=.SYSTEM.SAI.saimod_sys_log&action='+action, function(){
|
||||
register_admin();
|
||||
$('img#loader').hide();});
|
||||
return;
|
||||
default:
|
||||
$('img#loader').hide();
|
||||
}
|
||||
}
|
||||
|
||||
function register_error(){
|
||||
$('.sai_log_error').click(function(){
|
||||
$('img#loader').show();
|
||||
$('#table_log').load(SAI_ENDPOINT+'sai_mod=.SYSTEM.SAI.saimod_sys_log&action=error&error='+$(this).attr('error'), function(){
|
||||
$('img#loader').hide();})});
|
||||
}
|
||||
|
||||
function load_table_log(filter){
|
||||
$('img#loader').show();
|
||||
$('#table_log').load(SAI_ENDPOINT+'sai_mod=.SYSTEM.SAI.saimod_sys_log&action=filter&filter='+filter, function(){
|
||||
register_error();
|
||||
$('img#loader').hide();});
|
||||
}
|
||||
|
||||
var filter = "";
|
||||
function register_log(){
|
||||
$('#refresh_error_table').click(function(){
|
||||
load_table_log(filter);});
|
||||
$("#error_filter a").click(function(){
|
||||
$('#error_filter li').each(function(){
|
||||
$(this).removeClass('active');});
|
||||
$(this).parent().addClass('active');
|
||||
filter = $(this).attr('filter');
|
||||
load_table_log($(this).attr('filter'));
|
||||
});
|
||||
}
|
||||
|
||||
function register_admin(){
|
||||
$('#truncate_table').click(function(){
|
||||
$.ajax({ type :'GET',
|
||||
url : SAI_ENDPOINT+'sai_mod=.SYSTEM.SAI.saimod_sys_log&action=truncate',
|
||||
@ -13,31 +74,13 @@ function init__SYSTEM_SAI_saimod_sys_log() {
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
$('#refresh_error_table').live("click", (function(){
|
||||
do_filter("");}));
|
||||
|
||||
$("#filter-error button").live("click", (function(){
|
||||
$('#filter-error button').each(function(){
|
||||
$(this).removeClass('active');});
|
||||
$(this).addClass('active');
|
||||
do_filter($(this).attr('filter'));}));
|
||||
|
||||
$('#show_visualtization').live("click", (function(){
|
||||
drawVisualization();
|
||||
}));
|
||||
|
||||
do_filter("");
|
||||
};
|
||||
}
|
||||
|
||||
function drawVisualization() {
|
||||
$('img#loader').show();
|
||||
console.log(SAI_ENDPOINT+'sai_mod=.SYSTEM.SAI.saimod_sys_log&action=visualization');
|
||||
$.getJSON(SAI_ENDPOINT+'sai_mod=.SYSTEM.SAI.saimod_sys_log&action=visualization',function(json){
|
||||
if(json.status != true){
|
||||
$('img#loader').hide();
|
||||
$('#visualization').hide();
|
||||
if(!json || json.status != true){
|
||||
$('img#loader').hide();
|
||||
return;
|
||||
}
|
||||
json = json.result;
|
||||
@ -110,8 +153,7 @@ function drawVisualization() {
|
||||
parseInt(value.class_system_log_warning)+0.5,
|
||||
parseInt(value.class_system_log_error)+0.5,
|
||||
parseInt(value.class_system_log_errorexception)+0.5,
|
||||
parseInt(value.class_system_log_shutdownexception)+0.5,
|
||||
]);
|
||||
parseInt(value.class_system_log_shutdownexception)+0.5]);
|
||||
data5.addRow([ new Date(value.day),
|
||||
parseInt(value.count),
|
||||
parseInt(value.class_exception)+0.5,
|
||||
@ -135,17 +177,6 @@ function drawVisualization() {
|
||||
new google.visualization.LineChart(document.getElementById('visualization5')).draw(data5, options);
|
||||
|
||||
$('img#loader').hide();
|
||||
$('#table-wrapper').hide();
|
||||
$('#visualization').show();
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
function do_filter(filter){
|
||||
$('img#loader').show();
|
||||
$('#visualization').hide();
|
||||
$(this).parents().children().removeClass('active');
|
||||
$(this).addClass('active');
|
||||
console.log(SAI_ENDPOINT+'sai_mod=.SYSTEM.SAI.saimod_sys_log&action=filter&filter='+filter);
|
||||
$('#table-wrapper').load(SAI_ENDPOINT+'sai_mod=.SYSTEM.SAI.saimod_sys_log&action=filter&filter='+filter,function(){$('#table-wrapper').show(); $('img#loader').hide();});
|
||||
}
|
||||
@ -5,75 +5,87 @@ namespace SYSTEM\SAI;
|
||||
|
||||
class saimod_sys_log extends \SYSTEM\SAI\SaiModule {
|
||||
|
||||
public static function sai_mod__SYSTEM_SAI_saimod_sys_log_action_truncate(){
|
||||
if(\SYSTEM\SECURITY\Security::check(\SYSTEM\SECURITY\RIGHTS::SYS_SAI)){
|
||||
$con = new \SYSTEM\DB\Connection(\SYSTEM\system::getSystemDBInfo());
|
||||
$res = $con->query('TRUNCATE system.sys_log;');
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
public static function sai_mod__SYSTEM_SAI_saimod_sys_log_action_truncate(){
|
||||
$con = new \SYSTEM\DB\Connection(\SYSTEM\system::getSystemDBInfo());
|
||||
if(\SYSTEM\system::isSystemDbInfoPG()){
|
||||
$con->query('TRUNCATE '.\SYSTEM\DBD\system_log::NAME_PG.';');
|
||||
} else {
|
||||
$con->query('TRUNCATE '.\SYSTEM\DBD\system_log::NAME_MYS.';');}
|
||||
return \SYSTEM\LOG\JsonResult::ok();
|
||||
}
|
||||
|
||||
public static function sai_mod__SYSTEM_SAI_saimod_sys_log_action_stats(){
|
||||
$vars = array();
|
||||
return \SYSTEM\PAGE\replace::replaceFile(\SYSTEM\SERVERPATH(new \SYSTEM\PSAI(),'modules/saimod_sys_log/saimod_sys_log_stats.tpl'), $vars);
|
||||
}
|
||||
|
||||
public static function sai_mod__SYSTEM_SAI_saimod_sys_log_action_admin(){
|
||||
$vars = array();
|
||||
return \SYSTEM\PAGE\replace::replaceFile(\SYSTEM\SERVERPATH(new \SYSTEM\PSAI(),'modules/saimod_sys_log/saimod_sys_log_admin.tpl'), $vars);
|
||||
}
|
||||
|
||||
public static function sai_mod__SYSTEM_SAI_saimod_sys_log_action_visualization(){
|
||||
$con = new \SYSTEM\DB\Connection(\SYSTEM\system::getSystemDBInfo());
|
||||
if(\SYSTEM\system::isSystemDbInfoPG()){
|
||||
$res = $con->query('SELECT time::date as day,
|
||||
min(time) as time_min, max(time) as time_max,
|
||||
count(*) as count,
|
||||
avg(querytime) as querytime_avg,
|
||||
max(querytime) as querytime_max,
|
||||
min(querytime) as querytime_min,
|
||||
count(distinct file) as file_unique,
|
||||
count(distinct ip) as ip_unique,
|
||||
count(distinct message) as text_unique,
|
||||
count(distinct class) as class_unique,
|
||||
sum(case when class = \'INFO\' then 1 else 0 end) class_INFO,
|
||||
sum(case when class = \'DEPRECATED\' then 1 else 0 end) class_DEPRECATED,
|
||||
sum(case when class = \'WARNING\' then 1 else 0 end) class_WARNING,
|
||||
sum(case when class = \'ERROR\' then 1 else 0 end) class_ERROR,
|
||||
sum(case when class = \'AppError\' then 1 else 0 end) class_AppError,
|
||||
sum(case when class = \'SYSTEM\LOG\INFO\' then 1 else 0 end) class_SYSTEM_LOG_INFO,
|
||||
sum(case when class = \'SYSTEM\LOG\DEPRECATED\' then 1 else 0 end) class_SYSTEM_LOG_DEPRECATED,
|
||||
sum(case when class = \'SYSTEM\LOG\WARNING\' then 1 else 0 end) class_SYSTEM_LOG_WARNING,
|
||||
sum(case when class = \'SYSTEM\LOG\ERROR\' then 1 else 0 end) class_SYSTEM_LOG_ERROR,
|
||||
sum(case when class = \'SYSTEM\LOG\ErrorException\' then 1 else 0 end) class_SYSTEM_LOG_ErrorException,
|
||||
sum(case when class = \'SYSTEM\LOG\ShutdownException\' then 1 else 0 end) class_SYSTEM_LOG_ShutdownException,
|
||||
sum(case when class = \'Exception\' then 1 else 0 end) class_Exception,
|
||||
sum(case when class = \'RuntimeException\' then 1 else 0 end) class_RuntimeException,
|
||||
sum(case when class = \'ErrorException\' then 1 else 0 end) class_ErrorException
|
||||
from system.sys_log
|
||||
group by day
|
||||
order by day desc
|
||||
limit 365;');
|
||||
$res = $con->query('SELECT '.\SYSTEM\DBD\system_log::FIELD_TIME.'::date as day,'
|
||||
.'min('.\SYSTEM\DBD\system_log::FIELD_TIME.') as time_min,'
|
||||
.'max('.\SYSTEM\DBD\system_log::FIELD_TIME.') as time_max,'
|
||||
.'count(*) as count,'
|
||||
.'avg('.\SYSTEM\DBD\system_log::FIELD_QUERYTIME.') as querytime_avg,'
|
||||
.'max('.\SYSTEM\DBD\system_log::FIELD_QUERYTIME.') as querytime_max,'
|
||||
.'min('.\SYSTEM\DBD\system_log::FIELD_QUERYTIME.') as querytime_min,'
|
||||
.'count(distinct '.\SYSTEM\DBD\system_log::FIELD_FILE.') as file_unique,'
|
||||
.'count(distinct '.\SYSTEM\DBD\system_log::FIELD_IP.') as ip_unique,'
|
||||
.'count(distinct '.\SYSTEM\DBD\system_log::FIELD_MESSAGE.') as text_unique,'
|
||||
.'count(distinct '.\SYSTEM\DBD\system_log::FIELD_CLASS.') as class_unique,'
|
||||
.'sum(case when '.\SYSTEM\DBD\system_log::FIELD_CLASS.' = \'INFO\' then 1 else 0 end) class_INFO,'
|
||||
.'sum(case when '.\SYSTEM\DBD\system_log::FIELD_CLASS.' = \'DEPRECATED\' then 1 else 0 end) class_DEPRECATED,'
|
||||
.'sum(case when '.\SYSTEM\DBD\system_log::FIELD_CLASS.' = \'WARNING\' then 1 else 0 end) class_WARNING,'
|
||||
.'sum(case when '.\SYSTEM\DBD\system_log::FIELD_CLASS.' = \'ERROR\' then 1 else 0 end) class_ERROR,'
|
||||
.'sum(case when '.\SYSTEM\DBD\system_log::FIELD_CLASS.' = \'AppError\' then 1 else 0 end) class_AppError,'
|
||||
.'sum(case when '.\SYSTEM\DBD\system_log::FIELD_CLASS.' = \'SYSTEM\LOG\INFO\' then 1 else 0 end) class_SYSTEM_LOG_INFO,'
|
||||
.'sum(case when '.\SYSTEM\DBD\system_log::FIELD_CLASS.' = \'SYSTEM\LOG\DEPRECATED\' then 1 else 0 end) class_SYSTEM_LOG_DEPRECATED,'
|
||||
.'sum(case when '.\SYSTEM\DBD\system_log::FIELD_CLASS.' = \'SYSTEM\LOG\WARNING\' then 1 else 0 end) class_SYSTEM_LOG_WARNING,'
|
||||
.'sum(case when '.\SYSTEM\DBD\system_log::FIELD_CLASS.' = \'SYSTEM\LOG\ERROR\' then 1 else 0 end) class_SYSTEM_LOG_ERROR,'
|
||||
.'sum(case when '.\SYSTEM\DBD\system_log::FIELD_CLASS.' = \'SYSTEM\LOG\ERROR_EXCEPTION\' then 1 else 0 end) class_SYSTEM_LOG_ERROR_EXCEPTION,'
|
||||
.'sum(case when '.\SYSTEM\DBD\system_log::FIELD_CLASS.' = \'SYSTEM\LOG\SHUTDOWN_EXCEPTION\' then 1 else 0 end) class_SYSTEM_LOG_SHUTDOWN_EXCEPTION,'
|
||||
.'sum(case when '.\SYSTEM\DBD\system_log::FIELD_CLASS.' = \'Exception\' then 1 else 0 end) class_Exception,'
|
||||
.'sum(case when '.\SYSTEM\DBD\system_log::FIELD_CLASS.' = \'RuntimeException\' then 1 else 0 end) class_RuntimeException,'
|
||||
.'sum(case when '.\SYSTEM\DBD\system_log::FIELD_CLASS.' = \'ErrorException\' then 1 else 0 end) class_ErrorException'
|
||||
.'FROM '.\SYSTEM\DBD\system_log::NAME_PG
|
||||
.' GROUP BY day'
|
||||
.' ORDER BY day DESC'
|
||||
.' LIMIT 365;');
|
||||
} else {
|
||||
$res = $con->query('SELECT DATE(time) as day,
|
||||
min(time) as time_min, max(time) as time_max,
|
||||
count(*) as count,
|
||||
avg(querytime) as querytime_avg,
|
||||
max(querytime) as querytime_max,
|
||||
min(querytime) as querytime_min,
|
||||
count(distinct file) as file_unique,
|
||||
count(distinct ip) as ip_unique,
|
||||
count(distinct message) as text_unique,
|
||||
count(distinct class) as class_unique,
|
||||
sum(case when class = \'INFO\' then 1 else 0 end) class_INFO,
|
||||
sum(case when class = \'DEPRECATED\' then 1 else 0 end) class_DEPRECATED,
|
||||
sum(case when class = \'WARNING\' then 1 else 0 end) class_WARNING,
|
||||
sum(case when class = \'ERROR\' then 1 else 0 end) class_ERROR,
|
||||
sum(case when class = \'AppError\' then 1 else 0 end) class_AppError,
|
||||
sum(case when class = \'SYSTEM\LOG\INFO\' then 1 else 0 end) class_SYSTEM_LOG_INFO,
|
||||
sum(case when class = \'SYSTEM\LOG\DEPRECATED\' then 1 else 0 end) class_SYSTEM_LOG_DEPRECATED,
|
||||
sum(case when class = \'SYSTEM\LOG\WARNING\' then 1 else 0 end) class_SYSTEM_LOG_WARNING,
|
||||
sum(case when class = \'SYSTEM\LOG\ERROR\' then 1 else 0 end) class_SYSTEM_LOG_ERROR,
|
||||
sum(case when class = \'SYSTEM\LOG\ErrorException\' then 1 else 0 end) class_SYSTEM_LOG_ErrorException,
|
||||
sum(case when class = \'SYSTEM\LOG\ShutdownException\' then 1 else 0 end) class_SYSTEM_LOG_ShutdownException,
|
||||
sum(case when class = \'Exception\' then 1 else 0 end) class_Exception,
|
||||
sum(case when class = \'RuntimeException\' then 1 else 0 end) class_RuntimeException,
|
||||
sum(case when class = \'ErrorException\' then 1 else 0 end) class_ErrorException
|
||||
from system_log
|
||||
group by day
|
||||
order by day desc
|
||||
limit 365;');
|
||||
$res = $con->query('SELECT DATE('.\SYSTEM\DBD\system_log::FIELD_TIME.') as day,'
|
||||
.'min('.\SYSTEM\DBD\system_log::FIELD_TIME.') as time_min,'
|
||||
.'max('.\SYSTEM\DBD\system_log::FIELD_TIME.') as time_max,'
|
||||
.'count(*) as count,'
|
||||
.'avg('.\SYSTEM\DBD\system_log::FIELD_QUERYTIME.') as querytime_avg,'
|
||||
.'max('.\SYSTEM\DBD\system_log::FIELD_QUERYTIME.') as querytime_max,'
|
||||
.'min('.\SYSTEM\DBD\system_log::FIELD_QUERYTIME.') as querytime_min,'
|
||||
.'count(distinct '.\SYSTEM\DBD\system_log::FIELD_FILE.') as file_unique,'
|
||||
.'count(distinct '.\SYSTEM\DBD\system_log::FIELD_IP.') as ip_unique,'
|
||||
.'count(distinct '.\SYSTEM\DBD\system_log::FIELD_MESSAGE.') as text_unique,'
|
||||
.'count(distinct '.\SYSTEM\DBD\system_log::FIELD_CLASS.') as class_unique,'
|
||||
.'sum(case when '.\SYSTEM\DBD\system_log::FIELD_CLASS.' = \'INFO\' then 1 else 0 end) class_INFO,'
|
||||
.'sum(case when '.\SYSTEM\DBD\system_log::FIELD_CLASS.' = \'DEPRECATED\' then 1 else 0 end) class_DEPRECATED,'
|
||||
.'sum(case when '.\SYSTEM\DBD\system_log::FIELD_CLASS.' = \'WARNING\' then 1 else 0 end) class_WARNING,'
|
||||
.'sum(case when '.\SYSTEM\DBD\system_log::FIELD_CLASS.' = \'ERROR\' then 1 else 0 end) class_ERROR,'
|
||||
.'sum(case when '.\SYSTEM\DBD\system_log::FIELD_CLASS.' = \'AppError\' then 1 else 0 end) class_AppError,'
|
||||
.'sum(case when '.\SYSTEM\DBD\system_log::FIELD_CLASS.' = \'SYSTEM\LOG\INFO\' then 1 else 0 end) class_SYSTEM_LOG_INFO,'
|
||||
.'sum(case when '.\SYSTEM\DBD\system_log::FIELD_CLASS.' = \'SYSTEM\LOG\DEPRECATED\' then 1 else 0 end) class_SYSTEM_LOG_DEPRECATED,'
|
||||
.'sum(case when '.\SYSTEM\DBD\system_log::FIELD_CLASS.' = \'SYSTEM\LOG\WARNING\' then 1 else 0 end) class_SYSTEM_LOG_WARNING,'
|
||||
.'sum(case when '.\SYSTEM\DBD\system_log::FIELD_CLASS.' = \'SYSTEM\LOG\ERROR\' then 1 else 0 end) class_SYSTEM_LOG_ERROR,'
|
||||
.'sum(case when '.\SYSTEM\DBD\system_log::FIELD_CLASS.' = \'SYSTEM\LOG\ERROR_EXCEPTION\' then 1 else 0 end) class_SYSTEM_LOG_ERROR_EXCEPTION,'
|
||||
.'sum(case when '.\SYSTEM\DBD\system_log::FIELD_CLASS.' = \'SYSTEM\LOG\SHUTDOWN_EXCEPTION\' then 1 else 0 end) class_SYSTEM_LOG_SHUTDOWN_EXCEPTION,'
|
||||
.'sum(case when '.\SYSTEM\DBD\system_log::FIELD_CLASS.' = \'Exception\' then 1 else 0 end) class_Exception,'
|
||||
.'sum(case when '.\SYSTEM\DBD\system_log::FIELD_CLASS.' = \'RuntimeException\' then 1 else 0 end) class_RuntimeException,'
|
||||
.'sum(case when '.\SYSTEM\DBD\system_log::FIELD_CLASS.' = \'ErrorException\' then 1 else 0 end) class_ErrorException'
|
||||
.' FROM '.\SYSTEM\DBD\system_log::NAME_MYS
|
||||
.' GROUP BY day'
|
||||
.' ORDER BY day DESC'
|
||||
.' LIMIT 365;');
|
||||
}
|
||||
$result = array();
|
||||
while($row = $res->next()){
|
||||
@ -82,34 +94,92 @@ class saimod_sys_log extends \SYSTEM\SAI\SaiModule {
|
||||
return \SYSTEM\LOG\JsonResult::toString($result);
|
||||
}
|
||||
|
||||
public static function sai_mod__SYSTEM_SAI_saimod_sys_log_action_error($error){
|
||||
$con = new \SYSTEM\DB\Connection(\SYSTEM\system::getSystemDBInfo());
|
||||
if(\SYSTEM\system::isSystemDbInfoPG()){
|
||||
$res = $con->prepare( 'selectSysLogError',
|
||||
'SELECT * FROM '.\SYSTEM\DBD\system_log::NAME_PG.
|
||||
' LEFT JOIN '.\SYSTEM\DBD\system_user::NAME_PG.
|
||||
' ON '.\SYSTEM\DBD\system_log::NAME_PG.'.'.\SYSTEM\DBD\system_log::FIELD_USER.
|
||||
' = '.\SYSTEM\DBD\system_user::NAME_PG.'.'.\SYSTEM\DBD\system_user::FIELD_ID.
|
||||
' WHERE '.\SYSTEM\DBD\system_log::NAME_PG.'.'.\SYSTEM\DBD\system_log::FIELD_ID.' = $1;',
|
||||
array($error));
|
||||
} else {
|
||||
$res = $con->prepare( 'selectSysLogError',
|
||||
'SELECT * FROM '.\SYSTEM\DBD\system_log::NAME_MYS.
|
||||
' LEFT JOIN '.\SYSTEM\DBD\system_user::NAME_MYS.
|
||||
' ON '.\SYSTEM\DBD\system_log::NAME_MYS.'.'.\SYSTEM\DBD\system_log::FIELD_USER.
|
||||
' = '.\SYSTEM\DBD\system_user::NAME_MYS.'.'.\SYSTEM\DBD\system_user::FIELD_ID.
|
||||
' WHERE '.\SYSTEM\DBD\system_log::NAME_MYS.'.'.\SYSTEM\DBD\system_log::FIELD_ID.' = ?;',
|
||||
array($error));
|
||||
}
|
||||
|
||||
$vars = $res->next();
|
||||
$vars['trace'] = implode('</br>', array_slice(explode('#', $vars['trace']), 1, -1));
|
||||
return \SYSTEM\PAGE\replace::replaceFile(\SYSTEM\SERVERPATH(new \SYSTEM\PSAI(),'modules/saimod_sys_log/saimod_sys_log_error.tpl'), $vars);
|
||||
}
|
||||
|
||||
public static function sai_mod__SYSTEM_SAI_saimod_sys_log_action_filter($filter = ""){
|
||||
$con = new \SYSTEM\DB\Connection(\SYSTEM\system::getSystemDBInfo());
|
||||
$res = null;
|
||||
if($filter !== ""){
|
||||
if(\SYSTEM\system::isSystemDbInfoPG()){
|
||||
if(\SYSTEM\system::isSystemDbInfoPG()){
|
||||
$res = $con->prepare( 'selectCountSysLogFilter',
|
||||
'SELECT COUNT(*) as count FROM '.\SYSTEM\DBD\system_log::NAME_PG.'WHERE '.\SYSTEM\DBD\system_log::FIELD_CLASS.' LIKE $1;',
|
||||
array(mysql_escape_string($filter)))->next();
|
||||
$count = $res['count'];
|
||||
$res = $con->prepare( 'selectSysLogFilter',
|
||||
'SELECT * FROM system.sys_log WHERE class ILIKE $1 ORDER BY time DESC LIMIT 100;',
|
||||
array($filter));
|
||||
'SELECT * FROM '.\SYSTEM\DBD\system_log::NAME_PG.
|
||||
' LEFT JOIN '.\SYSTEM\DBD\system_user::NAME_PG.
|
||||
' ON '.\SYSTEM\DBD\system_log::NAME_PG.'.'.\SYSTEM\DBD\system_log::FIELD_USER.
|
||||
' = '.\SYSTEM\DBD\system_user::NAME_PG.'.'.\SYSTEM\DBD\system_user::FIELD_ID.
|
||||
' WHERE '.\SYSTEM\DBD\system_log::FIELD_CLASS.' LIKE $1'.
|
||||
' ORDER BY '.\SYSTEM\DBD\system_log::FIELD_TIME.' DESC LIMIT 100;',
|
||||
array(mysql_escape_string($filter)));
|
||||
} else {
|
||||
$res = $con->prepare( 'selectCountSysLogFilter',
|
||||
'SELECT COUNT(*) as count'.
|
||||
' FROM '.\SYSTEM\DBD\system_log::NAME_MYS.
|
||||
' WHERE '.\SYSTEM\DBD\system_log::FIELD_CLASS.' LIKE ?;',
|
||||
array(mysql_escape_string($filter)))->next();
|
||||
$count = $res['count'];
|
||||
$res = $con->prepare( 'selectSysLogFilter',
|
||||
'SELECT * FROM system_log LEFT JOIN system_user ON system_log.user = system_user.id WHERE class LIKE ? ORDER BY time DESC LIMIT 100;',
|
||||
'SELECT * FROM '.\SYSTEM\DBD\system_log::NAME_MYS.
|
||||
' LEFT JOIN '.\SYSTEM\DBD\system_user::NAME_MYS.
|
||||
' ON '.\SYSTEM\DBD\system_log::NAME_MYS.'.'.\SYSTEM\DBD\system_log::FIELD_USER.
|
||||
' = '.\SYSTEM\DBD\system_user::NAME_MYS.'.'.\SYSTEM\DBD\system_user::FIELD_ID.
|
||||
' WHERE '.\SYSTEM\DBD\system_log::FIELD_CLASS.' LIKE ?'.
|
||||
' ORDER BY '.\SYSTEM\DBD\system_log::FIELD_TIME.' DESC LIMIT 100;',
|
||||
array(mysql_escape_string($filter)));
|
||||
}
|
||||
} else {
|
||||
if(\SYSTEM\system::isSystemDbInfoPG()){
|
||||
$res = $con->query('SELECT * FROM system.sys_log ORDER BY time DESC LIMIT 100;');
|
||||
if(\SYSTEM\system::isSystemDbInfoPG()){
|
||||
$res = $con->query('SELECT COUNT(*) as count FROM '.\SYSTEM\DBD\system_log::NAME_PG)->next();
|
||||
$count = $res['count'];
|
||||
$res = $con->query( 'SELECT * FROM '.\SYSTEM\DBD\system_log::NAME_PG.
|
||||
' LEFT JOIN '.\SYSTEM\DBD\system_user::NAME_PG.
|
||||
' ON '.\SYSTEM\DBD\system_log::NAME_PG.'.'.\SYSTEM\DBD\system_log::FIELD_USER.
|
||||
' = '.\SYSTEM\DBD\system_user::NAME_PG.'.'.\SYSTEM\DBD\system_user::FIELD_ID.
|
||||
' ORDER BY '.\SYSTEM\DBD\system_log::FIELD_TIME.
|
||||
' DESC LIMIT 100;');
|
||||
} else {
|
||||
$res = $con->query('SELECT * FROM system_log LEFT JOIN system_user ON system_log.user = system_user.id ORDER BY time DESC LIMIT 100;');
|
||||
$res = $con->query('SELECT COUNT(*) as count FROM '.\SYSTEM\DBD\system_log::NAME_MYS)->next();
|
||||
$count = $res['count'];
|
||||
$res = $con->query( 'SELECT * FROM '.\SYSTEM\DBD\system_log::NAME_MYS.
|
||||
' LEFT JOIN '.\SYSTEM\DBD\system_user::NAME_MYS.
|
||||
' ON '.\SYSTEM\DBD\system_log::NAME_MYS.'.'.\SYSTEM\DBD\system_log::FIELD_USER.
|
||||
' = '.\SYSTEM\DBD\system_user::NAME_MYS.'.'.\SYSTEM\DBD\system_user::FIELD_ID.
|
||||
' ORDER BY '.\SYSTEM\DBD\system_log::FIELD_TIME.
|
||||
' DESC LIMIT 100;');
|
||||
}
|
||||
}
|
||||
|
||||
$now = microtime(true);
|
||||
|
||||
$result = '<table class="table table-hover table-condensed">'.
|
||||
'<tr>'.'<th>'.'time ago'.'</th>'.'<th>'.'class'.'</th>'.'<th>'.'message'.'</th>'.'<th>'.'file'.'</th>'.'<th>'.'line'.'</th>'.'<th>'.'ip'.'</th>'.'<th>'.'url'.'</th>'.'<th>'.'user'.'</th>'.'<th>'.'querytime'.'</tr>';
|
||||
$table='';
|
||||
while($r = $res->next()){
|
||||
//print_r($r);
|
||||
$result .= '<tr class="sai_log_error '.self::tablerow_class($r['class']).'" error="'.$r['ID'].'">'.
|
||||
$table .= '<tr class="sai_log_error '.self::tablerow_class($r['class']).'" error="'.$r['ID'].'">'.
|
||||
'<td>'.self::time_elapsed_string(strtotime($r['time'])).'</td>'.
|
||||
'<td>'.$r['class'].'</td>'.
|
||||
'<td style="word-break: break-all;">'.substr($r['message'],0,255).'</td>'.
|
||||
@ -120,11 +190,18 @@ class saimod_sys_log extends \SYSTEM\SAI\SaiModule {
|
||||
'<td>'.$r['username'].'</td>'.
|
||||
'<td>'.$r['querytime'].'</td>'.
|
||||
'</tr>';
|
||||
}
|
||||
$result .= '</table>';
|
||||
|
||||
return $result;
|
||||
|
||||
}
|
||||
$vars = array();
|
||||
$vars['count'] = $count;
|
||||
$vars['table'] = $table;
|
||||
return \SYSTEM\PAGE\replace::replaceFile(\SYSTEM\SERVERPATH(new \SYSTEM\PSAI(),'modules/saimod_sys_log/saimod_sys_log_table.tpl'), $vars);
|
||||
}
|
||||
|
||||
public static function sai_mod__SYSTEM_SAI_saimod_sys_log_action_log(){
|
||||
$vars = array();
|
||||
$vars['table'] = self::sai_mod__SYSTEM_SAI_saimod_sys_log_action_filter();
|
||||
$vars['error_filter'] = self::generate_error_filters();
|
||||
return \SYSTEM\PAGE\replace::replaceFile(\SYSTEM\SERVERPATH(new \SYSTEM\PSAI(),'modules/saimod_sys_log/saimod_sys_log_filter.tpl'), $vars);
|
||||
}
|
||||
|
||||
private static function time_elapsed_string($ptime){
|
||||
@ -150,33 +227,37 @@ class saimod_sys_log extends \SYSTEM\SAI\SaiModule {
|
||||
private static function generate_error_filters(){
|
||||
$con = new \SYSTEM\DB\Connection(\SYSTEM\system::getSystemDBInfo());
|
||||
if(\SYSTEM\system::isSystemDbInfoPG()){
|
||||
$res = $con->query("SELECT class FROM system.sys_log GROUP BY class ORDER BY class;");
|
||||
$res = $con->query( 'SELECT '.\SYSTEM\DBD\system_log::FIELD_CLASS.
|
||||
' FROM '.\SYSTEM\DBD\system_log::NAME_PG.
|
||||
' GROUP BY '.\SYSTEM\DBD\system_log::FIELD_CLASS.
|
||||
' ORDER BY '.\SYSTEM\DBD\system_log::FIELD_CLASS.';');
|
||||
}else{
|
||||
$res = $con->query("SELECT class FROM system_log GROUP BY class ORDER BY class;");
|
||||
$res = $con->query( 'SELECT '.\SYSTEM\DBD\system_log::FIELD_CLASS.
|
||||
' FROM '.\SYSTEM\DBD\system_log::NAME_MYS.
|
||||
' GROUP BY '.\SYSTEM\DBD\system_log::FIELD_CLASS.
|
||||
' ORDER BY '.\SYSTEM\DBD\system_log::FIELD_CLASS.';');
|
||||
}
|
||||
|
||||
$result = "";
|
||||
$i = 1;
|
||||
$result = '';
|
||||
while($row = $res->next()){
|
||||
$result .= '<button class="btn" href="#" filter="'.$row['class'].'">'.$row['class'].'</button>'.(($i++ % 6 == 0) ? '</br>' : '');}
|
||||
|
||||
$result .= '<li><a href="#" filter="'.$row['class'].'">'.$row['class'].'</a></li>';}
|
||||
return $result;
|
||||
}
|
||||
|
||||
public static function sai_mod__SYSTEM_SAI_saimod_sys_log(){
|
||||
$vars = array();
|
||||
$vars['error_filter'] = self::generate_error_filters();
|
||||
$vars = array();
|
||||
$vars['PICPATH'] = \SYSTEM\WEBPATH(new \SYSTEM\PSAI(), 'modules/saimod_sys_log/img/');
|
||||
return \SYSTEM\PAGE\replace::replaceFile(\SYSTEM\SERVERPATH(new \SYSTEM\PSAI(),'modules/saimod_sys_log/saimod_sys_log.tpl'), $vars);
|
||||
}
|
||||
|
||||
private static function tablerow_class($class){
|
||||
switch($class){
|
||||
case 'SYSTEM\LOG\INFO': case 'INFO':
|
||||
case 'SYSTEM\LOG\INFO': case 'INFO': case 'SYSTEM\LOG\COUNTER':
|
||||
return 'success';
|
||||
case 'SYSTEM\LOG\DEPRECATED': case 'DEPRECATED':
|
||||
return 'info';
|
||||
case 'SYSTEM\LOG\ERROR': case 'ERROR':
|
||||
case 'SYSTEM\LOG\ERROR': case 'ERROR': case 'Exception': case 'SYSTEM\LOG\ERROR_EXCEPTION':
|
||||
case 'ErrorException': case 'SYSTEM\LOG\SHUTDOWN_EXCEPTION':
|
||||
return 'error';
|
||||
case 'SYSTEM\LOG\WARNING': case 'WARNING':
|
||||
return 'warning';
|
||||
|
||||
@ -1,34 +1,13 @@
|
||||
<div id="truncate_modal" class="modal hide fade">
|
||||
<div class="modal-header">
|
||||
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
|
||||
<h3>Truncate table system.sys_log</h3>
|
||||
<div class="tabbable">
|
||||
<ul class="nav nav-tabs" id="tabs_log">
|
||||
<li class="active"><a href="#tab_log" action="log">Log</a></li>
|
||||
<li><a href="#tab_stats" action="stats">Statistics</a></li>
|
||||
<li><a href="#tab_admin" action="admin">Administration</a></li>
|
||||
<img id="loader" src="${PICPATH}ajax-loader.gif" style="margin-left: 10px; margin-top: 10px; display: none; float: left"/>
|
||||
</ul>
|
||||
<div class="tab-content">
|
||||
<div class="tab-pane active" id="tab_log"></div>
|
||||
<div class="tab-pane" id="tab_stats" style="overflow: hidden;"></div>
|
||||
<div class="tab-pane" id="tab_admin"></div>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<p>This action will delete all error messages from database. <br /> Are you sure?</p>
|
||||
<span id="info_box" />
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<a href="#" class="btn" data-dismiss="modal">Cancel</a>
|
||||
<a href="#" class="btn btn-danger" id="truncate_table">Yes, delete all!</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<button id="refresh_error_table" class="btn" style="height: 32px; font-size: 13px; float: left">Refresh</button>
|
||||
<img id="loader" src="${PICPATH}ajax-loader.gif" style="margin-left: 10px; display: none; float: left"/>
|
||||
<div id="filter-error" class="btn-group" style="left: 60px; float: left;">
|
||||
<button class="btn active" href="#" filter="">All</button>
|
||||
${error_filter}
|
||||
<br/><br/>
|
||||
</div>
|
||||
<button data-toggle="modal" href="#truncate_modal" class="btn" style="height: 32px; font-size: 13px; float: right;">Truncate Table</button>
|
||||
<button id="show_visualtization" class="btn" style="height: 32px; font-size: 13px; float: right;">Show Stats</button>
|
||||
<br/><br/>
|
||||
<div id="table-wrapper"></div>
|
||||
<br/><br/>
|
||||
<div id="visualization" style="width: 100%; height: 100%; display: none;">
|
||||
<div id="visualization1"></div>
|
||||
<div id="visualization2"></div>
|
||||
<div id="visualization3"></div>
|
||||
<div id="visualization4"></div>
|
||||
<div id="visualization5"></div>
|
||||
</div>
|
||||
3
sai/modules/saimod_sys_log/saimod_sys_log_admin.tpl
Normal file
3
sai/modules/saimod_sys_log/saimod_sys_log_admin.tpl
Normal file
@ -0,0 +1,3 @@
|
||||
<h3>Truncate table system.sys_log</h3>
|
||||
<p>This action will delete all error messages from database. <br /> Are you sure?</p>
|
||||
<a href="#" class="btn btn-danger" id="truncate_table">Yes, delete all!</a>
|
||||
23
sai/modules/saimod_sys_log/saimod_sys_log_error.tpl
Normal file
23
sai/modules/saimod_sys_log/saimod_sys_log_error.tpl
Normal file
@ -0,0 +1,23 @@
|
||||
<h3>Error ${ID}</h3>
|
||||
<table class="table table-hover table-condensed">
|
||||
<tr><th>Property</th><th>Value</th></tr>
|
||||
<tr><td>ID</td><td>${ID}</td></tr>
|
||||
<tr><td>class</td><td>${class}</td></tr>
|
||||
<tr><td>code</td><td>${code}</td></tr>
|
||||
<tr><td>file</td><td>${file}</td></tr>
|
||||
<tr><td>line</td><td>${line}</td></tr>
|
||||
<tr><td>trace</td><td>${trace}</td></tr>
|
||||
<tr><td>ip</td><td>${ip}</td></tr>
|
||||
<tr><td>querytime</td><td>${querytime}</td></tr>
|
||||
<tr><td>time</td><td>${time}</td></tr>
|
||||
<tr><td>server_name</td><td>${server_name}</td></tr>
|
||||
<tr><td>server_port</td><td>${server_port}</td></tr>
|
||||
<tr><td>request_uri</td><td>${request_uri}</td></tr>
|
||||
<tr><td>url</td><td><a href="${server_name}:${server_port}${request_uri}">${server_name}:${server_port}${request_uri}</a></td></tr>
|
||||
<tr><td>post</td><td>${post}</td></tr>
|
||||
<tr><td>http_referer</td><td>${http_referer}</td></tr>
|
||||
<tr><td>http_user_agent</td><td>${http_user_agent}</td></tr>
|
||||
<tr><td>user</td><td>${username}</td></tr>
|
||||
<tr><td>thrown</td><td>${thrown}</td></tr>
|
||||
<tr><td>message</td><td>${message}</td></tr>
|
||||
</table>
|
||||
6
sai/modules/saimod_sys_log/saimod_sys_log_filter.tpl
Normal file
6
sai/modules/saimod_sys_log/saimod_sys_log_filter.tpl
Normal file
@ -0,0 +1,6 @@
|
||||
<ul class="nav nav-pills" id="error_filter">
|
||||
<button id="refresh_error_table" class="btn" style="height: 32px; font-size: 13px; float: right;">Refresh</button>
|
||||
<li class="active"><a href="#" filter="">All</a></li>
|
||||
${error_filter}
|
||||
</ul>
|
||||
<div id="table_log">${table}</div>
|
||||
5
sai/modules/saimod_sys_log/saimod_sys_log_stats.tpl
Normal file
5
sai/modules/saimod_sys_log/saimod_sys_log_stats.tpl
Normal file
@ -0,0 +1,5 @@
|
||||
<div id="visualization1"></div>
|
||||
<div id="visualization2"></div>
|
||||
<div id="visualization3"></div>
|
||||
<div id="visualization4"></div>
|
||||
<div id="visualization5"></div>
|
||||
15
sai/modules/saimod_sys_log/saimod_sys_log_table.tpl
Normal file
15
sai/modules/saimod_sys_log/saimod_sys_log_table.tpl
Normal file
@ -0,0 +1,15 @@
|
||||
Rows: ${count}
|
||||
<table class="table table-hover table-condensed">
|
||||
<tr>
|
||||
<th>time ago</th>
|
||||
<th>class</th>
|
||||
<th>message</th>
|
||||
<th>file</th>
|
||||
<th>line</th>
|
||||
<th>ip</th>
|
||||
<th>url</th>
|
||||
<th>user</th>
|
||||
<th>querytime</th>
|
||||
</tr>
|
||||
${table}
|
||||
</table>
|
||||
@ -24,15 +24,15 @@ class Security {
|
||||
|
||||
$con = new \SYSTEM\DB\Connection(\SYSTEM\system::getSystemDBInfo());
|
||||
if(\SYSTEM\system::isSystemDbInfoPG()){
|
||||
$result = $con->prepare('createAccountStmt','INSERT INTO '.\SYSTEM\DBD\UserTable::NAME_PG.
|
||||
' ('.\SYSTEM\DBD\UserTable::FIELD_USERNAME.','.\SYSTEM\DBD\UserTable::FIELD_PASSWORD_SHA.','
|
||||
.\SYSTEM\DBD\UserTable::FIELD_EMAIL.','.\SYSTEM\DBD\UserTable::FIELD_LOCALE.','.\SYSTEM\DBD\UserTable::FIELD_ACCOUNT_FLAG.')'.
|
||||
$result = $con->prepare('createAccountStmt','INSERT INTO '.\SYSTEM\DBD\system_user::NAME_PG.
|
||||
' ('.\SYSTEM\DBD\system_user::FIELD_USERNAME.','.\SYSTEM\DBD\system_user::FIELD_PASSWORD_SHA.','
|
||||
.\SYSTEM\DBD\system_user::FIELD_EMAIL.','.\SYSTEM\DBD\system_user::FIELD_LOCALE.','.\SYSTEM\DBD\system_user::FIELD_ACCOUNT_FLAG.')'.
|
||||
' VALUES ($1, $2, $3, $4, $5) RETURNING *;',
|
||||
array( $username , $password, $email, $locale, 1 ));
|
||||
} else {
|
||||
$result = $con->prepare('createAccountStmt','INSERT INTO '.\SYSTEM\DBD\UserTable::NAME_MYS.
|
||||
' ('.\SYSTEM\DBD\UserTable::FIELD_USERNAME.','.\SYSTEM\DBD\UserTable::FIELD_PASSWORD_SHA.','
|
||||
.\SYSTEM\DBD\UserTable::FIELD_EMAIL.','.\SYSTEM\DBD\UserTable::FIELD_LOCALE.','.\SYSTEM\DBD\UserTable::FIELD_ACCOUNT_FLAG.')'.
|
||||
$result = $con->prepare('createAccountStmt','INSERT INTO '.\SYSTEM\DBD\system_user::NAME_MYS.
|
||||
' ('.\SYSTEM\DBD\system_user::FIELD_USERNAME.','.\SYSTEM\DBD\system_user::FIELD_PASSWORD_SHA.','
|
||||
.\SYSTEM\DBD\system_user::FIELD_EMAIL.','.\SYSTEM\DBD\system_user::FIELD_LOCALE.','.\SYSTEM\DBD\system_user::FIELD_ACCOUNT_FLAG.')'.
|
||||
' VALUES (?, ?, ?, ?, ?);',
|
||||
array( $username , $password, $email, $locale, 1 ));
|
||||
}
|
||||
@ -49,9 +49,9 @@ class Security {
|
||||
$con = new \SYSTEM\DB\Connection(\SYSTEM\system::getSystemDBInfo());
|
||||
if(\SYSTEM\system::isSystemDbInfoPG()){
|
||||
$result = $con->prepare('',
|
||||
'SELECT id FROM '.\SYSTEM\DBD\UserTable::NAME_PG.
|
||||
' WHERE lower('.\SYSTEM\DBD\UserTable::FIELD_USERNAME.') LIKE lower($1)'.
|
||||
' AND '.\SYSTEM\DBD\UserTable::FIELD_PASSWORD_SHA.' = $2;',
|
||||
'SELECT id FROM '.\SYSTEM\DBD\system_user::NAME_PG.
|
||||
' WHERE lower('.\SYSTEM\DBD\system_user::FIELD_USERNAME.') LIKE lower($1)'.
|
||||
' AND '.\SYSTEM\DBD\system_user::FIELD_PASSWORD_SHA.' = $2;',
|
||||
array($username, $password_sha_old) );
|
||||
|
||||
}else{
|
||||
@ -67,8 +67,8 @@ class Security {
|
||||
$userID = $row['id'];
|
||||
if(\SYSTEM\system::isSystemDbInfoPG()){
|
||||
$result = $con->prepare('',
|
||||
'UPDATE '.\SYSTEM\DBD\UserTable::NAME_PG.
|
||||
' SET "password_sha" = $1 WHERE '.\SYSTEM\DBD\UserTable::FIELD_ID.' = $2;',
|
||||
'UPDATE '.\SYSTEM\DBD\system_user::NAME_PG.
|
||||
' SET "password_sha" = $1 WHERE '.\SYSTEM\DBD\system_user::FIELD_ID.' = $2;',
|
||||
array($password_sha_new, $userID) );
|
||||
}else{
|
||||
return 'MySQL Query not implemented!';
|
||||
@ -90,31 +90,31 @@ class Security {
|
||||
if(isset($password_md5)){
|
||||
if(\SYSTEM\system::isSystemDbInfoPG()){
|
||||
$result = $con->prepare('loginAccountStmt',
|
||||
'SELECT * FROM '.\SYSTEM\DBD\UserTable::NAME_PG.
|
||||
' WHERE lower('.\SYSTEM\DBD\UserTable::FIELD_USERNAME.') LIKE lower($1)'.
|
||||
' AND ('.\SYSTEM\DBD\UserTable::FIELD_PASSWORD_SHA.' = $2 OR
|
||||
'.\SYSTEM\DBD\UserTable::FIELD_PASSWORD_SHA.' = $3 OR '.\SYSTEM\DBD\UserTable::FIELD_PASSWORD_MD5.' = $4 );',
|
||||
'SELECT * FROM '.\SYSTEM\DBD\system_user::NAME_PG.
|
||||
' WHERE lower('.\SYSTEM\DBD\system_user::FIELD_USERNAME.') LIKE lower($1)'.
|
||||
' AND ('.\SYSTEM\DBD\system_user::FIELD_PASSWORD_SHA.' = $2 OR
|
||||
'.\SYSTEM\DBD\system_user::FIELD_PASSWORD_SHA.' = $3 OR '.\SYSTEM\DBD\system_user::FIELD_PASSWORD_MD5.' = $4 );',
|
||||
array($username, $password_sha, $password_sha_new, $password_md5) );
|
||||
} else {
|
||||
$result = $con->prepare('loginAccountStmt',
|
||||
'SELECT * FROM '.\SYSTEM\DBD\UserTable::NAME_MYS.
|
||||
' WHERE lower('.\SYSTEM\DBD\UserTable::FIELD_USERNAME.') LIKE lower(?)'.
|
||||
' AND ('.\SYSTEM\DBD\UserTable::FIELD_PASSWORD_SHA.' = ? OR '.\SYSTEM\DBD\UserTable::FIELD_PASSWORD_MD5.' = ? );',
|
||||
'SELECT * FROM '.\SYSTEM\DBD\system_user::NAME_MYS.
|
||||
' WHERE lower('.\SYSTEM\DBD\system_user::FIELD_USERNAME.') LIKE lower(?)'.
|
||||
' AND ('.\SYSTEM\DBD\system_user::FIELD_PASSWORD_SHA.' = ? OR '.\SYSTEM\DBD\system_user::FIELD_PASSWORD_MD5.' = ? );',
|
||||
array($username, $password_sha, $password_md5) );
|
||||
}
|
||||
}else{
|
||||
if(\SYSTEM\system::isSystemDbInfoPG()){
|
||||
$result = $con->prepare('loginAccountStmtSHA',
|
||||
'SELECT * FROM '.\SYSTEM\DBD\UserTable::NAME_PG.
|
||||
' WHERE lower('.\SYSTEM\DBD\UserTable::FIELD_USERNAME.') LIKE lower($1)'.
|
||||
' AND '.\SYSTEM\DBD\UserTable::FIELD_PASSWORD_SHA.' = $2 OR
|
||||
'.\SYSTEM\DBD\UserTable::FIELD_PASSWORD_SHA.' = $3 ;',
|
||||
'SELECT * FROM '.\SYSTEM\DBD\system_user::NAME_PG.
|
||||
' WHERE lower('.\SYSTEM\DBD\system_user::FIELD_USERNAME.') LIKE lower($1)'.
|
||||
' AND '.\SYSTEM\DBD\system_user::FIELD_PASSWORD_SHA.' = $2 OR
|
||||
'.\SYSTEM\DBD\system_user::FIELD_PASSWORD_SHA.' = $3 ;',
|
||||
array($username, $password_sha, $password_sha_new) );
|
||||
} else {
|
||||
$result = $con->prepare('loginAccountStmtSHA',
|
||||
'SELECT * FROM '.\SYSTEM\DBD\UserTable::NAME_MYS.
|
||||
' WHERE lower('.\SYSTEM\DBD\UserTable::FIELD_USERNAME.') LIKE lower(?)'.
|
||||
' AND '.\SYSTEM\DBD\UserTable::FIELD_PASSWORD_SHA.' = ?;',
|
||||
'SELECT * FROM '.\SYSTEM\DBD\system_user::NAME_MYS.
|
||||
' WHERE lower('.\SYSTEM\DBD\system_user::FIELD_USERNAME.') LIKE lower(?)'.
|
||||
' AND '.\SYSTEM\DBD\system_user::FIELD_PASSWORD_SHA.' = ?;',
|
||||
array($username, $password_sha) );
|
||||
}
|
||||
}
|
||||
@ -132,7 +132,7 @@ class Security {
|
||||
return self::LOGIN_FAIL;}
|
||||
|
||||
// set password_sha if it is empty or if it length is < 40 -> SHA1 Androidappbugfix
|
||||
if(!$row[\SYSTEM\DBD\UserTable::FIELD_PASSWORD_SHA] || strlen($row[\SYSTEM\DBD\UserTable::FIELD_PASSWORD_SHA]) < 40){
|
||||
if(!$row[\SYSTEM\DBD\system_user::FIELD_PASSWORD_SHA] || strlen($row[\SYSTEM\DBD\system_user::FIELD_PASSWORD_SHA]) < 40){
|
||||
|
||||
if($password_sha_new != NULL){
|
||||
$pw = $password_sha_new;
|
||||
@ -142,32 +142,32 @@ class Security {
|
||||
unset($result);
|
||||
if(\SYSTEM\system::isSystemDbInfoPG()){
|
||||
$res = $con->prepare( 'updatePasswordSHAStmt',
|
||||
'UPDATE '.\SYSTEM\DBD\UserTable::NAME_PG.' SET '.\SYSTEM\DBD\UserTable::FIELD_PASSWORD_SHA.' = $1 WHERE '.\SYSTEM\DBD\UserTable::FIELD_ID.' = $2'.' RETURNING '.\SYSTEM\DBD\UserTable::FIELD_PASSWORD_SHA.';',
|
||||
array($pw,$row[\SYSTEM\DBD\UserTable::FIELD_ID]));
|
||||
'UPDATE '.\SYSTEM\DBD\system_user::NAME_PG.' SET '.\SYSTEM\DBD\system_user::FIELD_PASSWORD_SHA.' = $1 WHERE '.\SYSTEM\DBD\system_user::FIELD_ID.' = $2'.' RETURNING '.\SYSTEM\DBD\system_user::FIELD_PASSWORD_SHA.';',
|
||||
array($pw,$row[\SYSTEM\DBD\system_user::FIELD_ID]));
|
||||
}else{
|
||||
$res = $con->prepare( 'updatePasswordSHAStmt',
|
||||
'UPDATE '.\SYSTEM\DBD\UserTable::NAME_MYS.' SET '.\SYSTEM\DBD\UserTable::FIELD_PASSWORD_SHA.' = ? WHERE '.\SYSTEM\DBD\UserTable::FIELD_ID.' = ?'.';',
|
||||
array($pw,$row[\SYSTEM\DBD\UserTable::FIELD_ID]));
|
||||
'UPDATE '.\SYSTEM\DBD\system_user::NAME_MYS.' SET '.\SYSTEM\DBD\system_user::FIELD_PASSWORD_SHA.' = ? WHERE '.\SYSTEM\DBD\system_user::FIELD_ID.' = ?'.';',
|
||||
array($pw,$row[\SYSTEM\DBD\system_user::FIELD_ID]));
|
||||
}
|
||||
$res = $res->next();
|
||||
$row[\SYSTEM\DBD\UserTable::FIELD_PASSWORD_SHA] = $pw;
|
||||
$row[\SYSTEM\DBD\system_user::FIELD_PASSWORD_SHA] = $pw;
|
||||
}
|
||||
|
||||
// set session variables
|
||||
$_SESSION['user'] = new User( $row[\SYSTEM\DBD\UserTable::FIELD_ID],
|
||||
$row[\SYSTEM\DBD\UserTable::FIELD_USERNAME],
|
||||
$row[\SYSTEM\DBD\UserTable::FIELD_EMAIL],
|
||||
$row[\SYSTEM\DBD\UserTable::FIELD_JOINDATE],
|
||||
$_SESSION['user'] = new User( $row[\SYSTEM\DBD\system_user::FIELD_ID],
|
||||
$row[\SYSTEM\DBD\system_user::FIELD_USERNAME],
|
||||
$row[\SYSTEM\DBD\system_user::FIELD_EMAIL],
|
||||
$row[\SYSTEM\DBD\system_user::FIELD_JOINDATE],
|
||||
time(),
|
||||
getenv('REMOTE_ADDR'),
|
||||
0,
|
||||
NULL,
|
||||
$row[\SYSTEM\DBD\UserTable::FIELD_LOCALE]);
|
||||
$row[\SYSTEM\DBD\system_user::FIELD_LOCALE]);
|
||||
|
||||
if(isset($locale)){
|
||||
\SYSTEM\locale::set($locale);}
|
||||
// track succesful user login
|
||||
self::trackLogins($row[\SYSTEM\DBD\UserTable::FIELD_ID]);
|
||||
self::trackLogins($row[\SYSTEM\DBD\system_user::FIELD_ID]);
|
||||
return ($advancedResult ? $row : self::LOGIN_OK);
|
||||
}
|
||||
|
||||
@ -175,13 +175,13 @@ class Security {
|
||||
$con = new \SYSTEM\DB\Connection(\SYSTEM\system::getSystemDBInfo());
|
||||
if(\SYSTEM\system::isSystemDbInfoPG()){
|
||||
$con->prepare( 'trackLoginAccountStmt',
|
||||
'UPDATE '.\SYSTEM\DBD\UserTable::NAME_PG.' SET '.\SYSTEM\DBD\UserTable::FIELD_LAST_ACTIVE.'= to_timestamp($1) '.
|
||||
'WHERE '.\SYSTEM\DBD\UserTable::FIELD_ID.' = $2;',
|
||||
'UPDATE '.\SYSTEM\DBD\system_user::NAME_PG.' SET '.\SYSTEM\DBD\system_user::FIELD_LAST_ACTIVE.'= to_timestamp($1) '.
|
||||
'WHERE '.\SYSTEM\DBD\system_user::FIELD_ID.' = $2;',
|
||||
array(microtime(true), $userID));
|
||||
} else {
|
||||
$con->prepare( 'trackLoginAccountStmt',
|
||||
'UPDATE '.\SYSTEM\DBD\UserTable::NAME_MYS.' SET '.\SYSTEM\DBD\UserTable::FIELD_LAST_ACTIVE.'= ? '.
|
||||
'WHERE '.\SYSTEM\DBD\UserTable::FIELD_ID.' = ?;',
|
||||
'UPDATE '.\SYSTEM\DBD\system_user::NAME_MYS.' SET '.\SYSTEM\DBD\system_user::FIELD_LAST_ACTIVE.'= ? '.
|
||||
'WHERE '.\SYSTEM\DBD\system_user::FIELD_ID.' = ?;',
|
||||
array(microtime(true), $userID));
|
||||
}
|
||||
}
|
||||
@ -200,13 +200,13 @@ class Security {
|
||||
$con = new \SYSTEM\DB\Connection(\SYSTEM\system::getSystemDBInfo());
|
||||
if(\SYSTEM\system::isSystemDbInfoPG()){
|
||||
$res = $con->prepare( 'availableStmt',
|
||||
'SELECT COUNT(*) as count FROM '.\SYSTEM\DBD\UserTable::NAME_PG.
|
||||
' WHERE lower('.\SYSTEM\DBD\UserTable::FIELD_USERNAME.') like lower($1) ;',
|
||||
'SELECT COUNT(*) as count FROM '.\SYSTEM\DBD\system_user::NAME_PG.
|
||||
' WHERE lower('.\SYSTEM\DBD\system_user::FIELD_USERNAME.') like lower($1) ;',
|
||||
array($username));
|
||||
} else {
|
||||
$res = $con->prepare( 'availableStmt',
|
||||
'SELECT COUNT(*) as count FROM '.\SYSTEM\DBD\UserTable::NAME_MYS.
|
||||
' WHERE lower('.\SYSTEM\DBD\UserTable::FIELD_USERNAME.') like lower(?) ;',
|
||||
'SELECT COUNT(*) as count FROM '.\SYSTEM\DBD\system_user::NAME_MYS.
|
||||
' WHERE lower('.\SYSTEM\DBD\system_user::FIELD_USERNAME.') like lower(?) ;',
|
||||
array($username));
|
||||
}
|
||||
|
||||
@ -283,13 +283,13 @@ class Security {
|
||||
$con = new \SYSTEM\DB\Connection(\SYSTEM\system::getSystemDBInfo());
|
||||
if(\SYSTEM\system::isSystemDbInfoPG()){
|
||||
$res = $con->prepare( 'updateUserLocaleStmt',
|
||||
'UPDATE '.\SYSTEM\DBD\UserTable::NAME_PG.' SET '.\SYSTEM\DBD\UserTable::FIELD_LOCALE.' = $1 '.
|
||||
'WHERE '.\SYSTEM\DBD\UserTable::FIELD_ID.' = $2'.' RETURNING '.\SYSTEM\DBD\UserTable::FIELD_LOCALE.';',
|
||||
'UPDATE '.\SYSTEM\DBD\system_user::NAME_PG.' SET '.\SYSTEM\DBD\system_user::FIELD_LOCALE.' = $1 '.
|
||||
'WHERE '.\SYSTEM\DBD\system_user::FIELD_ID.' = $2'.' RETURNING '.\SYSTEM\DBD\system_user::FIELD_LOCALE.';',
|
||||
array($lang, $user->id));
|
||||
}else{
|
||||
$res = $con->prepare( 'updateUserLocaleStmt',
|
||||
'UPDATE '.\SYSTEM\DBD\UserTable::NAME_MYS.' SET '.\SYSTEM\DBD\UserTable::FIELD_LOCALE.' = ? '.
|
||||
'WHERE '.\SYSTEM\DBD\UserTable::FIELD_ID.' = ?;',
|
||||
'UPDATE '.\SYSTEM\DBD\system_user::NAME_MYS.' SET '.\SYSTEM\DBD\system_user::FIELD_LOCALE.' = ? '.
|
||||
'WHERE '.\SYSTEM\DBD\system_user::FIELD_ID.' = ?;',
|
||||
array($lang, $user->id));
|
||||
}
|
||||
return true;
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user