<?php
// +----------------------------------------------------------------------
// | ThinkPHP [ WE CAN DO IT JUST THINK ]
// +----------------------------------------------------------------------
// | Copyright (c) 2006-2019 http://thinkphp.cn All rights reserved.
// +----------------------------------------------------------------------
// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
// +----------------------------------------------------------------------
// | Author: liu21st <liu21st@gmail.com>
// +----------------------------------------------------------------------

// [ 应用入口文件 ]
namespace think;

require __DIR__ . '/../vendor/autoload.php';

// WAF
use EasyWaf\Waf;

// 连接redis
$redis = new \Redis();
$redis->pconnect('127.0.0.1');

// 启动waf防护
$wafConfig = [
    'debug' => true,  // 是否开启debug模式,开启后将输出waf拦截信息
    'redis' => $redis,  // redis实例对象,用于CC防火墙和爬虫拦截
    'checkCc' => [
        'enable' => false,  // 是否开启CC攻击防护
        'enableSeoIpCheck' => true,  // 开启SEO-IP检查,避免误伤百度蜘蛛等优化IP,此功能需要配合cli.php示例配置
        'enableBehaviorCheck' => false,  // 开启行为验证,支持COOKIE验证
        'seoFriendly' => true,  // 是否SEO友好,不需要SEO的网站请关闭,防御效果更好
        'reqTime' => 60,  // 请求时间间隔,单位秒
        'reqCount' => 60,  // 单位时间内请求次数限制
        'reqDayMaxCount' => 365,  // 每日请求最大次数限制,0则不限制(单个IP限制)
    ],
    'illegalReqCallback' => function () {},
    'checkGet' => true,  // 是否开启GET参数防护,如SQL注入
    'checkPost' => true,  // 是否开启POST参数防护,如SQL注入
    'checkCookie' => true,  // 是否开启COOKIE参数防护,如SQL注入
    'checkUserAgent' => true,  // 是否开启UserAgent参数防护,如各种垃圾爬虫,扫描器等
    'checkProxyRequest' => false,  // 是否开启代理请求检查,拦截代理请求
    'checkRequestMethod' => ['get', 'post', 'option'],  // 是否开启请求方法检测,仅允许get,post,option请求方法
];

(new Waf($wafConfig))->run();

// 执行HTTP应用并响应
$http = (new App())->http;

$response = $http->run();

$response->send();

$http->end($response);
