getKey('limit', 'traffic')); self::setPath($conf->getKey('dir', 'traffic')); if (($option = $conf->getKey('header', 'traffic')) !== null) { $httpHeader = 'HTTP_' . $option; if (array_key_exists($httpHeader, $_SERVER) && !empty($_SERVER[$httpHeader])) { self::$_ipKey = $httpHeader; } } } /** * get the current visitors IP address * * @access public * @static * @return string */ public static function getIp() { return $_SERVER[self::$_ipKey]; } /** * traffic limiter * * Make sure the IP address makes at most 1 request every 10 seconds. * * @access public * @static * @throws Exception * @return bool */ public static function canPass() { // disable limits if set to less then 1 if (self::$_limit < 1) return true; $ip = hash_hmac('sha256', self::getIp(), serversalt::get()); $file = 'traffic_limiter.php'; if (!self::_exists($file)) { self::_store( $file, ' $time) { if ($time + self::$_limit < $now) { unset($tl[$key]); } } if (array_key_exists($ip, $tl) && ($tl[$ip] + self::$_limit >= $now)) { $result = false; } else { $tl[$ip] = time(); $result = true; } self::_store( $file, '