<?php
if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가
/***
 * 최대한 PHP 구버전 호환성을 고려해서 제작하였으나, 정상적으로 동작하지 않을 수 있습니다.
 */
define('G5_BOT_BLOCK_RECAPTCHA_SITEKEY', '<여기에 사이트 키를 입력하세요>');
define('G5_BOT_BLOCK_RECAPTCHA_SECRET', '<여기에 시크릿(비밀키)를 입력하세요>');
define('G5_BOT_BLOCK_RECAPTCHA_SESSION', 'G5_BOT_BLOCK_CHALLENGE');
if(get_session(G5_BOT_BLOCK_RECAPTCHA_SESSION)!=="") return;

/***
 * 리캡챠 검증
 */
if(isset($_POST['g-recaptcha-response']) && isset($_POST['original-url'])){
    if($_POST['original-url']==="") $_POST['original-url'] = G5_URL;

    $verifyData = array(
        "secret"=>G5_BOT_BLOCK_RECAPTCHA_SECRET,
        "response"=>$_POST['g-recaptcha-response'],
    );

    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, 'https://www.google.com/recaptcha/api/siteverify');
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $verifyData);
    $verify = json_decode(curl_exec($ch), true);

    if($verify['success']===true){
        set_session(G5_BOT_BLOCK_RECAPTCHA_SESSION, true);
        goto_url($_POST['original-url']);
    }else{
        alert("봇 확인 절차에 실패했습니다. 다시 시도해주십시오.",G5_URL);
    }
    exit;
}

/***
 * 리캡챠 챌린지 시작
 */
$G5_BOT_BLOCK_RECAPTCHA_SITEKEY = G5_BOT_BLOCK_RECAPTCHA_SITEKEY;
$G5_URL = G5_URL;
$CURRENT_URL = G5_URL.$_SERVER['REQUEST_URI'];

echo <<<START_CHALLENGE
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="utf-8">
<title>봇 검사 중입니다</title>
<script src="https://www.google.com/recaptcha/api.js?render={$G5_BOT_BLOCK_RECAPTCHA_SITEKEY}"></script>
<style>
*{box-sizing:border-box; line-height:100%;}
html, body{margin:0px; padding:0px; background-color:#263038; overflow:hidden; box-sizing:border-box;}
#loading-table-wrapper{display:table; position:fixed; top:0px; left:0px; width:100%; height:100%;}
#loading-box{display:table-cell; vertical-align:middle;}
#box{background-color:#333; background-color:rgba(0,0,0,0.3); width:300px; height:300px; margin-left:auto; margin-right:auto; border-radius:10px; padding:70px 0px;}
#box .message{color:#fff; font-size:20px; text-align:center; margin-bottom:40px; line-height:1.2;}
.loader{width:48px; height:48px; border:5px solid #fff; border-bottom-color:transparent; border-radius:50%; display:block; animation:rotation 1s linear infinite; margin-left:auto; margin-right:auto;}
@keyframes rotation {0%{transform:rotate(0deg);} 100%{transform:rotate(360deg);}}
</style>
</head>
<body>
<div id="loading-table-wrapper">
    <div id="loading-box">
        <div id="box">
            <div class="message">잠시만 기다려주세요...<br>봇인지 확인 중입니다.</div>
            <div class="loader"></div>
            <form action="{$G5_URL}/index.php" id="check-form" method="post">
                <input type="hidden" id="original-url" name="original-url" value="{$CURRENT_URL}">
                <input type="hidden" id="g-recaptcha-response" name="g-recaptcha-response">
            </form>
        </div>
    </div>
</div>
<script>
grecaptcha.ready(function() {
    grecaptcha.execute('{$G5_BOT_BLOCK_RECAPTCHA_SITEKEY}', {action: 'homepage'}).then(function(token) {
        var response = document.getElementById("g-recaptcha-response");
        if(typeof(response) != 'undefined' && response != null){
            document.getElementById('g-recaptcha-response').value = token;
            var checkForm = document.getElementById("check-form");
            if(typeof(checkForm) != 'undefined' && checkForm != null) checkForm.submit();
        }
    });
});
</script>
</body>
</html>
START_CHALLENGE;
exit;