<?php
/**
* @file qtrStats.php
* @brief This module contains investigation statistics
*
* @author Quttera (qtr),
[email protected]
*
* @internal
* Created 01/14/2016
* Compiler gcc/g++
* Company Quttera
* Copyright Copyright (c) 2016, Quttera
*
* This source code is released for free distribution under the terms of the
* GNU General Public License as published by the Free Software Foundation.
* =====================================================================================
*/
define( 'QTR_STATS','quttera_wp_stats');
require_once('qtrOptions.php');
class CQtrStats
{
protected $_stats;
public function __construct()
{
$this->_stats = array();
$this->_LoadStats();
}
public function Reset()
{
$this->_stats = array();
$this->_stats["TOTAL"] = 0;
$this->_stats["CLEAN"] = 0;
$this->_stats["SUSPICIOUS"] = 0;
$this->_stats["POT_SUSPICIOUS"] = 0;
$this->_stats["MALICIOUS"] = 0;
$this->_stats["START_TIME"] = time();
$this->_StoreStats();
return TRUE;
}
public function Get()
{
$this->_LoadStats();
return $this->_stats;
}
public function IncTotal()
{
return $this->_Inc("TOTAL");
}
public function IncClean()
{
$this->IncTotal();
return $this->_Inc("CLEAN");
}
public function IncSusp()
{
$this->IncTotal();
return $this->_Inc("SUSPICIOUS");
}
public function IncPotSusp()
{
$this->IncTotal();
return $this->_Inc("POT_SUSPICIOUS");
}
public function IncMalicious()
{
$this->IncTotal();
return $this->_Inc("MALICIOUS");
}
public function Increment($severity){
$sev = strtolower($severity);
if(strpos($sev,"malicious") !== FALSE )
{
return $this->IncMalicious();
}
else if(strpos($sev,"pot") !== FALSE )
{
return $this->IncPotSusp();
}
else if(strpos($sev,"susp") !== FALSE )
{
return $this->IncSusp();
}
return $this->IncClean();
}
public function Total($v=NULL){
if( is_int($v) ){
$this->_stats["TOTAL"] = $v;
}
return $this->_stats["TOTAL"];
}
public function Clean($v=NULL){
if( is_int($v) ){
$this->_stats["CLEAN"] = $v;
}
return $this->_stats["CLEAN"];
}
public function Suspicious($v=NULL){
if( is_int($v) ){
$this->_stats["SUSPICIOUS"] = $v;
}
return $this->_stats["SUSPICIOUS"];
}
public function PotSuspicious($v=NULL){
if( is_int($v) ){
$this->_stats["POT_SUSPICIOUS"] = $v;
}
return $this->_stats["POT_SUSPICIOUS"];
}
public function Malicious($v=NULL){
if( is_int($v) ){
$this->_stats["MALICIOUS"] = $v;
}
return $this->_stats["MALICIOUS"];
}
public function StartTime(){
return $this->_stats["START_TIME"];
}
public function GetCounters(){
return $this->_stats;
}
/******************************************************
*
* PROTECTED METHODS
*
*****************************************************/
protected function _LoadStats(){
$body = CQtrOptions::GetOption ( QTR_STATS );
if( $body ){
$this->_stats = CQtrOptions::Unserialize( $body );
if( !is_array( $this->_stats ) ){
/*
* something gone wrong, reset statistics
*/
$this->Reset();
}
}else{
/*
* nothing found
*/
$this->Reset();
}
return TRUE;
}
protected function _StoreStats(){
$body = CQtrOptions::Serialize( $this->_stats );
if ( CQtrOptions::GetOption( QTR_STATS ) !== false )
{
$rc = CQtrOptions::UpdateOption( QTR_STATS , $body );
return $rc;
}
else
{
$deprecated = null;
$autoload = 'no';
return CQtrOptions::AddOption( QTR_STATS , $body ,$deprecated, $autoload );
}
}
protected function _Inc($name)
{
if( isset($this->_stats[$name]) )
{
$this->_stats[$name] = intval($this->_stats[$name]) + 1;
}
else
{
$this->_stats[$name] = 1;
}
$this->_StoreStats();
return $this->_stats[$name];
}
}
?>