<?php
/**
* @file qtrThreatsWhiteList
* @brief This module contains implementation of a threats white list (threats whitelisted by user)
*
* @author Quttera (qtr),
[email protected]
*
* @internal
* Created 01/21/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_THREATS_WHITE_LIST','quttera_wp_threats_white_list');
class CQtrThreatsWhiteList
{
protected $_type = QTR_THREATS_WHITE_LIST;
public function __construct( $type = NULL )
{
$this->_config = new CQtrConfig();
$this->_logger = new CQtrLogger();
$this->_report = array();
if( $type != NULL ){
$this->_type = $type;
}else{
$type = QTR_THREATS_WHITE_LIST;
}
$this->_LoadList();
}
public function Add($file_sig,$threat_sig)
{
$this->_LoadList();
$key = $this->_BuildKey( $file_sig , $threat_sig );
if(isset( $this->_report[$key]) ){
return FALSE;
}
$this->_report[$key] = array( $file_sig, $threat_sig );
$this->_StoreList();
return TRUE;
}
public function GetList(){
return $this->_report;
}
public function Get( $file_sig, $threat_sig )
{
$this->_LoadList();
$key = $this->_BuildKey( $file_sig,$threat_sig);
if( isset( $this->_report[$key] ) ){
return $this->_report[$key];
}
return NULL;
}
public function Remove( $file_sig, $threat_sig )
{
$this->_LoadList();
$key = $this->_BuildKey( $file_sig, $threat_sig );
if( isset( $this->_report[$key] ) ){
unset( $this->_report[$key] );
$this->_StoreList();
}
return FALSE;
}
public function Clean( )
{
$this->_report = array();
$this->_StoreList();
return TRUE;
}
/***************************************************************************
*
* PROTECTED METHODS
*
**************************************************************************/
protected function _BuildKey( $file, $threat )
{
return $file . ":" . $threat;
}
protected function _LoadList()
{
$body = CQtrOptions::GetOption( $this->_type );
if( $body )
{
$this->_report = CQtrOptions::Unserialize( $body );
if( !is_array( $this->_report ) ){
/*
* something gone wrong, reset report
*/
$this->_report = array();
}
}else{
/*
* nothing found
*/
$this->_report = array();
}
return TRUE;
}
protected function _StoreList( )
{
$body = CQtrOptions::Serialize( $this->_report );
if ( CQtrOptions::GetOption( $this->_type ) !== false )
{
$rc = CQtrOptions::UpdateOption( $this->_type , $body );
}
else
{
$deprecated = null;
$autoload = 'no';
return CQtrOptions::AddOption( $this->_type, $body ,$deprecated, $autoload );
}
}
}
?>