<?php

namespace think;

// 禁止一次性邮箱域名注册、登录或找回密码（fldubai.com 批量注册攻击）
(static function () {
    $path = parse_url($_SERVER['REQUEST_URI'] ?? '', PHP_URL_PATH);
    if (!in_array($path, ['/register', '/register_email_send', '/reset_email_send', '/pwreset', '/login'], true)) {
        return;
    }
    $email = $_POST['email'] ?? '';
    if (!is_string($email) || $email === '' || strpos($email, '@') === false) {
        return;
    }
    $email = strtolower(trim($email));
    $domain = substr(strrchr($email, '@'), 1);
    foreach (['fldubai.com'] as $blocked) {
        if ($domain === $blocked || substr($domain, -strlen('.' . $blocked)) === '.' . $blocked) {
            http_response_code(403);
            header('Content-Type: application/json; charset=utf-8');
            echo json_encode(['status' => 400, 'msg' => '该邮箱域名已被禁止使用']);
            exit;
        }
    }
})();

// 调试模式开关
define('APP_DEBUG', false);
// 是否强制路由
define('URL_ROUTE_MUST',true);
// 定义CMF根目录,可更改此目录
define('CMF_ROOT', dirname(__DIR__) . '/');
// 定义CMF数据目录,可更改此目录
define('CMF_DATA', CMF_ROOT . 'data/');
// 定义下载文件存放目录
define('DOWN_PATH', CMF_ROOT . 'downloads/');
define('DOWN_PATH1', CMF_ROOT . 'public/downloads/');
define('TICKET_DOWN_PATH', DOWN_PATH . 'ticket/');
define('SUPPORT_DOWN_PATH', DOWN_PATH1 . 'support/');
define('DATABASE_DOWN_PATH', DOWN_PATH . 'database/');
// 定义文件上传目录
define('UPLOAD_PATH',CMF_ROOT . 'uploads/');
// 定义文件默认上传目录
define('UPLOAD_DEFAULT',UPLOAD_PATH . 'common/default/');
// 定义应用目录
define('APP_PATH', CMF_ROOT . 'app/');
// 定义网站入口目录
define('WEB_ROOT', __DIR__ . '/');
// 加载基础文件
require CMF_ROOT . 'vendor/thinkphp/base.php';
// 执行应用并响应
$application = Container::get('app', [APP_PATH]);
$application->initialize();
$request = Container::get('request');
$cacheGuard = \app\http\middleware\AdminCachePolicy::guard($request);
if ($cacheGuard !== null) {
    $cacheGuard->send();
    return;
}
\app\http\middleware\AdminCachePolicy::register($application, $request);
\app\http\middleware\CorsPolicy::applySessionCookiePolicy($request);
$guard = \app\http\middleware\CorsPolicy::guard($request);
if ($guard !== null) {
    $guard->send();
    return;
}
$application->run()->send();
