check($_SERVER['REMOTE_ADDR'])){ header("HTTP/1.1 429 Too Many Requests"); exit("Hit some *"); } */ class FloodProtection { protected $dir; protected $limit; protected $duration; protected $autoclean = true; protected $name; protected $pfx; public function __construct($name = '', $limit = 10, $duration = 30, $dir = null, $autoclean = true){ if(null === $dir){ $dir = $this->getCacheDir('frdl-floodprotection'); } $this->dir = $dir; $this->name = $name; $this->pfx = 'fp_' . strlen($this->name) .'_'. sha1($this->name).'_'; $this->autoclean = $autoclean; $this->limit = $limit; $this->duration = $duration; } // Record and check flood. // Return true for hit. public function check($id = null){ if(null === $id){ $id = $_SERVER['REMOTE_ADDR']; } if(!is_dir($this->dir)){ mkdir($this->dir, 0755, true); } $fp = fopen(rtrim($this->dir, \DIRECTORY_SEPARATOR) . \DIRECTORY_SEPARATOR . $this->pfx . basename($id), 'a+'); fwrite($fp, pack('L', time())); if(fseek($fp, -4 * $this->limit, \SEEK_END) === -1) { return false; } $a = unpack('L', fread($fp, 4)); $time = reset($a); fclose($fp); if(time() - intval($time) < $this->duration) { if($this->autoclean){ $this->prune(); } return true; } return false; } // Clean the pool. public function prune(){ $handle = opendir($this->dir); while(false!==($entry=readdir($handle))){ $filename = rtrim($this->dir, \DIRECTORY_SEPARATOR) . \DIRECTORY_SEPARATOR . $entry; if(time() - filectime($filename) > $this->duration && substr($entry, 0, strlen($this->pfx)) === $this->pfx){ unlink($filename); } } closedir($handle); } public function getCacheDir($name = 'frdl-floodprotection'){ $name = strtoupper($name); $_ENV['FRDL_HPS_CACHE_DIR'] = ((isset($_ENV['FRDL_HPS_CACHE_DIR'])) ? $_ENV['FRDL_HPS_CACHE_DIR'] : sys_get_temp_dir() . \DIRECTORY_SEPARATOR . get_current_user(). \DIRECTORY_SEPARATOR . 'cache-frdl' . \DIRECTORY_SEPARATOR ); $_ENV['FRDL_HPS_PSR4_CACHE_DIR'] = ((isset($_ENV['FRDL_HPS_PSR4_CACHE_DIR'])) ? $_ENV['FRDL_HPS_PSR4_CACHE_DIR'] : $_ENV['FRDL_HPS_CACHE_DIR']. 'psr4'. \DIRECTORY_SEPARATOR ); if(!empty($name)){ $_ENV['FRDL_HPS_'.$name.'_CACHE_DIR'] = ((isset($_ENV['FRDL_HPS_'.$name.'_CACHE_DIR'])) ? $_ENV['FRDL_HPS_'.$name.'_CACHE_DIR'] : rtrim($_ENV['FRDL_HPS_CACHE_DIR'],'\\/'). \DIRECTORY_SEPARATOR.$name. \DIRECTORY_SEPARATOR ); } return (empty($name)) ? $_ENV['FRDL_HPS_CACHE_DIR'] : $_ENV['FRDL_HPS_'.$name.'_CACHE_DIR']; } } __halt_compiler();----SIGNATURE:----iBkRx+p2+8aPK6R3Wgg2HDQkxdv48oHhpdb2qBsILvJ/Y8m9qxbnWabGsXir3eZ9HnBK2z4qhn/kaJb3o+4OwgNGQitWfJUTIT80J22ugeCXeo4LX1EzIWMbCn66E2VUTXaAu0UzXbLOhiCg3cTAGuPvXTacqigO4purjcn3N/qbVTXcGLHWbJ5fM2CEF4MXXdX15PmnO5g3crG+NGkL2UT3zMCNeUAPp48RkrAnWq6Eq2sh+e2v5cpelOtqD/A2HBqlF9b1sqJqZWWV7Go9+9I/DBuu3ts1fSCm0KfyWyEvrSety+Db6b0GNYn0sqQRyyBWIybgkGb9sOW9gdTABh13ZrMLwSwZCz85aH7RqCBeumuoAkQ0lbHdhItyeP8CeZliLBhkY9jPoaD3TtYXvL7ehTBcrzcHikVr6vlDAnAWJC5pXokgd2mPEX9ZtiR9RryX2E4oc9UScTMT7/AyLCwykCuHg12Jerg6mWbujd56b5N3dQG7ONquGu/WjaSMP4ENDFNOGfs+UKZyRXVtthA4QdoNatM6PJHqzw7kC5JUCR+YJSp7eQRPqUXnOinrGwc+oXLYAXTgajZwNGvkk2ZLEgKAFpEtCjC9sb7H5LnLuX84aIHVQzev8ACqKky53D1MrfVrsyrbIjWjC34/grmnIUWUH317iEZyzuTQG6c=----ATTACHMENT:----ODk4NzY1MDY0MjEzNDUwMSA1MDI5NzA4NjA1ODYyNTg3IDY1NjY3NzIyMjk2NTQ3MDE=