PHPIDS
Current file: /home/lstrojny/Projekte/php-ids/trunk/lib/IDS/Filter.php
Legend: executed not executed dead code

  Coverage
  Classes Methods Lines
Total
100.00 %100.00%
100.00% 1 / 1
100.00 %100.00%
100.00% 7 / 7
100.00 %100.00%
100.00% 18 / 18
 
IDS_Filter
100.00 %100.00%
100.00% 1 / 1
100.00 %100.00%
100.00% 7 / 7
100.00 %100.00%
100.00% 18 / 18
 public function __construct($id, $rule, $description, array $tags, $impact)
100.00 %100.00%
100.00% 1 / 1
100.00 %100.00%
100.00% 6 / 6
 public function match($string)
100.00 %100.00%
100.00% 1 / 1
100.00 %100.00%
100.00% 7 / 7
 public function getDescription()
100.00 %100.00%
100.00% 1 / 1
100.00 %100.00%
100.00% 1 / 1
 public function getTags()
100.00 %100.00%
100.00% 1 / 1
100.00 %100.00%
100.00% 1 / 1
 public function getRule()
100.00 %100.00%
100.00% 1 / 1
100.00 %100.00%
100.00% 1 / 1
 public function getImpact()
100.00 %100.00%
100.00% 1 / 1
100.00 %100.00%
100.00% 1 / 1
 public function getId()
100.00 %100.00%
100.00% 1 / 1
100.00 %100.00%
100.00% 1 / 1


       1                 : <?php                                                                             
       2                 :                                                                                   
       3                 : /**                                                                               
       4                 :  * PHPIDS                                                                         
       5                 :  *                                                                                
       6                 :  * Requirements: PHP5, SimpleXML                                                  
       7                 :  *                                                                                
       8                 :  * Copyright (c) 2008 PHPIDS group (http://php-ids.org)                           
       9                 :  *                                                                                
      10                 :  * PHPIDS is free software; you can redistribute it and/or modify                 
      11                 :  * it under the terms of the GNU Lesser General Public License as published by    
      12                 :  * the Free Software Foundation, version 3 of the License, or                     
      13                 :  * (at your option) any later version.                                            
      14                 :  *                                                                                
      15                 :  * PHPIDS is distributed in the hope that it will be useful,                      
      16                 :  * but WITHOUT ANY WARRANTY; without even the implied warranty of                 
      17                 :  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the                   
      18                 :  * GNU Lesser General Public License for more details.                            
      19                 :  *                                                                                
      20                 :  * You should have received a copy of the GNU Lesser General Public License       
      21                 :  * along with PHPIDS. If not, see <http://www.gnu.org/licenses/>.                 
      22                 :  *                                                                                
      23                 :  * PHP version 5.1.6+                                                             
      24                 :  *                                                                                
      25                 :  * @category Security                                                             
      26                 :  * @package  PHPIDS                                                               
      27                 :  * @author   Mario Heiderich <mario.heiderich@gmail.com>                          
      28                 :  * @author   Christian Matthies <ch0012@gmail.com>                                
      29                 :  * @author   Lars Strojny <lars@strojny.net>                                      
      30                 :  * @license  http://www.gnu.org/licenses/lgpl.html LGPL                           
      31                 :  * @link     http://php-ids.org/                                                  
      32                 :  */                                                                               
      33                 :                                                                                   
      34                 : /**                                                                               
      35                 :  * PHPIDS Filter object                                                           
      36                 :  *                                                                                
      37                 :  * Each object of this class serves as a container for a specific filter. The     
      38                 :  * object provides methods to get information about this particular filter and    
      39                 :  * also to match an arbitrary string against it.                                  
      40                 :  *                                                                                
      41                 :  * @category  Security                                                            
      42                 :  * @package   PHPIDS                                                              
      43                 :  * @author    Christian Matthies <ch0012@gmail.com>                               
      44                 :  * @author    Mario Heiderich <mario.heiderich@gmail.com>                         
      45                 :  * @author    Lars Strojny <lars@strojny.net>                                     
      46                 :  * @copyright 2007 The PHPIDS Group                                               
      47                 :  * @license   http://www.gnu.org/licenses/lgpl.html LGPL                          
      48                 :  * @version   Release: $Id:Filter.php 517 2007-09-15 15:04:13Z mario $            
      49                 :  * @link      http://php-ids.org/                                                 
      50                 :  * @since     Version 0.4                                                         
      51                 :  */                                                                               
      52                 : class IDS_Filter                                                                  
      53                 : {                                                                                 
      54                 :                                                                                   
      55                 :     /**                                                                           
      56                 :      * Filter rule                                                                
      57                 :      *                                                                            
      58                 :      * @var    string                                                             
      59                 :      */                                                                           
      60                 :     protected $rule;                                                              
      61                 :                                                                                   
      62                 :     /**                                                                           
      63                 :      * List of tags of the filter                                                 
      64                 :      *                                                                            
      65                 :      * @var    array                                                              
      66                 :      */                                                                           
      67                 :     protected $tags = array();                                                    
      68                 :                                                                                   
      69                 :     /**                                                                           
      70                 :      * Filter impact level                                                        
      71                 :      *                                                                            
      72                 :      * @var    integer                                                            
      73                 :      */                                                                           
      74                 :     protected $impact = 0;                                                        
      75                 :                                                                                   
      76                 :     /**                                                                           
      77                 :      * Filter description                                                         
      78                 :      *                                                                            
      79                 :      * @var    string                                                             
      80                 :      */                                                                           
      81                 :     protected $description = null;                                                
      82                 :                                                                                   
      83                 :     /**                                                                           
      84                 :      * Constructor                                                                
      85                 :      *                                                                            
      86                 :      * @param mixed   $rule        filter rule                                    
      87                 :      * @param string  $description filter description                             
      88                 :      * @param array   $tags        list of tags                                   
      89                 :      * @param integer $impact      filter impact level                            
      90                 :      *                                                                            
      91                 :      * @return void                                                               
      92                 :      */                                                                           
      93                 :     public function __construct($id, $rule, $description, array $tags, $impact)   
      94                 :     {                                                                             
      95              69 :         $this->id          = $id;                                                 
      96              69 :         $this->rule        = $rule;                                               
      97              69 :         $this->tags        = $tags;                                               
      98              69 :         $this->impact      = $impact;                                             
      99              69 :         $this->description = $description;                                        
     100              69 :     }                                                                             
     101                 :                                                                                   
     102                 :     /**                                                                           
     103                 :      * Matches a string against current filter                                    
     104                 :      *                                                                            
     105                 :      * Matches given string against the filter rule the specific object of this   
     106                 :      * class represents                                                           
     107                 :      *                                                                            
     108                 :      * @param string $string the string to match                                  
     109                 :      *                                                                            
     110                 :      * @throws InvalidArgumentException if argument is no string                  
     111                 :      * @return boolean                                                            
     112                 :      */                                                                           
     113                 :     public function match($string)                                                
     114                 :     {                                                                             
     115              38 :         if (!is_string($string)) {                                                
     116               1 :             throw new InvalidArgumentException('                                  
     117               1 :                 Invalid argument. Expected a string, received ' . gettype($string)
     118               1 :             );                                                                    
     119                 :         }                                                                         
     120                 :                                                                                   
     121              37 :         return (bool) preg_match(                                                 
     122              37 :             '/' . $this->getRule() . '/ms', strtolower($string)                   
     123              37 :         );                                                                        
     124                 :     }                                                                             
     125                 :                                                                                   
     126                 :     /**                                                                           
     127                 :      * Returns filter description                                                 
     128                 :      *                                                                            
     129                 :      * @return string                                                             
     130                 :      */                                                                           
     131                 :     public function getDescription()                                              
     132                 :     {                                                                             
     133               2 :         return $this->description;                                                
     134                 :     }                                                                             
     135                 :                                                                                   
     136                 :     /**                                                                           
     137                 :      * Return list of affected tags                                               
     138                 :      *                                                                            
     139                 :      * Each filter rule is concerned with a certain kind of attack vectors.       
     140                 :      * This method returns those affected kinds.                                  
     141                 :      *                                                                            
     142                 :      * @return array                                                              
     143                 :      */                                                                           
     144                 :     public function getTags()                                                     
     145                 :     {                                                                             
     146               6 :         return $this->tags;                                                       
     147                 :     }                                                                             
     148                 :                                                                                   
     149                 :     /**                                                                           
     150                 :      * Returns filter rule                                                        
     151                 :      *                                                                            
     152                 :      * @return string                                                             
     153                 :      */                                                                           
     154                 :     public function getRule()                                                     
     155                 :     {                                                                             
     156              38 :         return $this->rule;                                                       
     157                 :     }                                                                             
     158                 :                                                                                   
     159                 :     /**                                                                           
     160                 :      * Get filter impact level                                                    
     161                 :      *                                                                            
     162                 :      * @return integer                                                            
     163                 :      */                                                                           
     164                 :     public function getImpact()                                                   
     165                 :     {                                                                             
     166              36 :         return $this->impact;                                                     
     167                 :     }                                                                             
     168                 :                                                                                   
     169                 :     /**                                                                           
     170                 :      * Get filter ID                                                              
     171                 :      *                                                                            
     172                 :      * @return integer                                                            
     173                 :      */                                                                           
     174                 :     public function getId()                                                       
     175                 :     {                                                                             
     176               1 :         return $this->id;                                                         
     177                 :     }                                                                             
     178                 : }                                                                                 
     179                 :                                                                                   
     180                 : /*                                                                                
     181                 :  * Local variables:                                                               
     182                 :  * tab-width: 4                                                                   
     183                 :  * c-basic-offset: 4                                                              
     184                 :  * End:                                                                           
     185                 :  */                                                                               

Generated by PHPUnit 3.3.1 and Xdebug 2.1.0-dev at Mon Dec 22 13:57:42 CET 2008.