<?php
if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가

$ip = $_SERVER['REMOTE_ADDR'];
if (!isset($_SESSION['ip_access'])) {
    $_SESSION['ip_access'] = [];
}

// 현재 시간
$current_time = time();

// IP 차단 정보 확인
if (isset($_SESSION['ip_blocked'][$ip])) {
    $block_time = $_SESSION['ip_blocked'][$ip];
    if ($current_time - $block_time < 300) { // 5분(300초) 동안 차단
        die("접속이 차단되었습니다. 5분 후에 다시 시도해주세요.");
    } else {
        unset($_SESSION['ip_blocked'][$ip]); // 5분 지나면 차단 해제
    }
}

// 30초 지났다면 초기화
if (!isset($_SESSION['ip_access'][$ip]) || empty($_SESSION['ip_access'][$ip]) || $current_time - $_SESSION['ip_access'][$ip][0] > 30) {
    $_SESSION['ip_access'][$ip] = [];
}

// 현재 IP로부터의 요청 시간 저장
$_SESSION['ip_access'][$ip][] = $current_time;

// 요청이 30번 이상이면 차단
if (count($_SESSION['ip_access'][$ip]) > 20) {
    $_SESSION['ip_blocked'][$ip] = $current_time; // 차단 시작 시간 기록
    die("접속이 차단되었습니다. 5분 후에 다시 시도해주세요.");
}