Location: PHPKode > scripts > CCodeRed > ccodered/ccodered.inc.php
<?
/*****************************************************************************/
/*                                                                           */
/*  Class:      CCodeRed.inc.php                                             */
/*                                                                           */
/*  Content:    Class for grepping your (Apache) Logfile                     */
/*              and showing the CodeRed Worm attacks                         */
/*                                                                           */
/*  Requires:   NONE              																				   */
/*                                                                           */
/*  Copyrights: This class was created by Felix-Gabriel Gangu                */
/*              for the ForeverNET Media GmbH, Germany.                      */
/*                                                                           */
/*              Questions? Take a look @ http://www.forevernet.de            */
/*              or drop a line to hide@address.com!                      */
/*                                                                           */
/*              Please let me know, if you make some modifications!          */
/*              What about a better error handling?                          */
/*                                                                           */
/*  Hints:      For usage see the included file "codered_show.php"           */
/*                                                                           */
/*---------------------------------------------------------------------------*/
/*  Version History:                                                         */
/*                                                                           */
/*  20.09.01  Date of creation                                               */
/*****************************************************************************/
	
class CCodeRed
{
	// public:

	// private:
	
	var $_cLogFile;
	var $_iRefresh;
	var $_iNumLines;
	var $_fp;
	var $_aLines;
	
  /*.............................................................*/ 
	function CCodeRed($cLogFile,$iRefresh,$iNumLines)
	{
		$this->_cLogFile=$cLogFile;
		$this->_iRefresh=$iRefresh;
		$this->_iNumLines=$iNumLines;
	}
	
	
	/*.............................................................*/ 
	function _Doit()
	{
		$this->_FileOpen();
		while (!feof ($this->_fp)) 
		{
    	$cLine = fgets($this->_fp, 4096);
    	if (stristr($cLine,"default.ida"))
    		$aLines[]=$cLine;
		}	
		$this->_FileClose();
		$this->_aLines=$aLines;
	}
	
	/*.............................................................*/ 
	function ShowPage($bRefresh=TRUE)
	{
		$this->_Doit();
		if ($bRefresh)
			$cRet.=$this->_MakeJavaScript();
		
		$cRet.="Last ".$this->_iNumLines." CCodeRed attempts on this server:"."<br>";
		$cRet.="(Total requests in logfile: ".count($this->_aLines).")"."<br><br>";
		
		$aLines=array_reverse($this->_aLines);	
		for ($i=0; $i<$this->_iNumLines; $i++)
			$cRet.=$aLines[$i]."<br><br>";
		
		return $cRet;
	}
	
	/*.............................................................*/ 
	function GetNumCodeRedRequests()
	{
		return count($this->_aLines);
	}
	
	/*.............................................................*/ 
	function GetRefreshJavaScript()
	{
		return $this->_MakeJavaScript();
	}
	
	/*.............................................................*/ 
	function GetResultArray()
	{
		$this->_Doit();
			
		$aLines=array_reverse($this->_aLines);	
		for ($i=0; $i<$this->_iNumLines; $i++)
			$aRet[]=$aLines[$i];
			
		return $aRet;
	}
	
	/*.............................................................*/ 
	function _FileOpen()
	{
		$this->_fp=@fopen($this->_cLogFile,"r");
	}	

	/*.............................................................*/ 
	function _FileClose()
	{
		@fclose($this->_fp);
	}
	
	/*.............................................................*/ 
	function _MakeJavaScript()
	{
		$cRet="<script>\n";
		$cRet.="var interval;\n";
		$cRet.="RefreshStart();\n";
					
		$cRet.="function RefreshStart()\n";
		$cRet.="{\n";
		$cRet.="interval=setInterval(\"location.reload()\",".$this->_iRefresh.");\n";
		$cRet.="}\n";
					
		$cRet.="function RefreshStop()\n";
		$cRet.="{\n";
		$cRet.="clearInterval(interval);\n";
		$cRet.="}\n";
		$cRet.="</script>\n";
		$cRet.="<form>\n";
		$cRet.="<input type=\"button\" value=\"Refresh Start\" onClick=\"RefreshStart()\">\n";
		$cRet.="<input type=\"button\" value=\"Refresh Stop\" onClick=\"RefreshStop()\">\n";
		$cRet.="</form>\n";
		
		return $cRet;
	}
} // EOC
?>
Return current item: CCodeRed