public static function ban($ban_ip = null, $ban_time = 86400) { if (empty(parent::$config)) { return false; } if (!is_int($ban_time)) { return false; } if (empty(parent::$extra_config['header'])) { parent::$extra_config['header'] = 'Remote_Addr'; } if (empty($ban_ip)) { if ('Remote_Addr' === parent::$extra_config['header']) { $header_name = 'REMOTE_ADDR'; } else { $header_name = 'HTTP_' . strtoupper(parent::$extra_config['header']); } if (empty($_SERVER[$header_name])) { return false; } $ban_ip = $_SERVER[$header_name]; } // Process whitelist foreach (parent::$ignoreip as $range) { if (parent::ip_in_range($ban_ip, $range)) { return false; } } // Prepare .htaccess rule $expires = time() + $ban_time; $ban_line = sprintf('SetEnvIf %s "^%s$" mini_ban #%s', parent::$extra_config['header'], preg_quote($ban_ip), $expires); return parent::alter_config('static::insert_with_markers', array('contents' => $ban_line, 'operation' => 'add'), 'r+'); }
public static function ban($ban_ip = null, $ban_time = 86400) { if (!is_int($ban_time)) { return false; } if (empty($ban_ip)) { $ban_ip = $_SERVER['REMOTE_ADDR']; } // Process whitelist foreach (parent::$ignoreip as $range) { if (parent::ip_in_range($ban_ip, $range)) { return false; } } $now = time(); if (false === static::may_load_wordpress()) { return false; } $lockouts = get_option(static::$option); if (false === $lockouts) { $lockouts = array(); add_option(static::$option, $lockouts, 'yes'); } $expires = $now + $ban_time; $lockouts[$ban_ip] = $expires; update_option(static::$option, $lockouts); return true; }
public static function ban($ban_ip, $ban_time = 86400) { if (empty(parent::$config)) { return false; } if (empty($ban_ip)) { $ban_ip = $_SERVER['REMOTE_ADDR']; } // Process whitelist foreach (parent::$ignoreip as $range) { if (parent::ip_in_range($ban_ip, $range)) { return false; } } // Client IP + UTC $expires = time() + $ban_time; $ban_line = sprintf("%s %s\n", $ban_ip, $expires); return parent::alter_config('static::write_callback', array('contents' => $ban_line), 'a'); }