saimod_sys_log new layout, more info

This commit is contained in:
Ulf Gebhardt 2013-12-23 08:59:28 +01:00
parent a9102b3663
commit fdbdc73b1e
14 changed files with 402 additions and 221 deletions

26
dbd/tbl/system_log.php Normal file
View 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';
}

View File

@ -2,7 +2,7 @@
namespace SYSTEM\DBD;
class UserTable {
class system_user {
const NAME_PG = 'system.user';
const NAME_MYS = 'system_user';

View File

@ -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),

View File

@ -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{}

View File

@ -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);
}

View File

@ -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();});
}

View File

@ -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';

View File

@ -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">&times;</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>

View 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>

View 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>

View 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>

View 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>

View 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>

View File

@ -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;