From 85183a99811d132d3bf3943db8bd57b2626db411 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=85=94=E5=A7=AC=E6=A1=91?= Date: Mon, 31 Aug 2020 02:43:23 +0800 Subject: [PATCH] =?UTF-8?q?fixed=20=E8=AE=A2=E9=98=85=E7=95=8C=E9=9D=A2?= =?UTF-8?q?=E5=8F=82=E6=95=B0=E9=94=99=E8=AF=AF=EF=BC=8C=E8=87=AA=E5=8A=A8?= =?UTF-8?q?=E4=BB=BB=E5=8A=A1-=E8=AE=A2=E9=98=85=E5=BC=82=E5=B8=B8?= =?UTF-8?q?=E6=94=B9=E5=9B=9E=E4=B8=BA=E4=BB=A5=E5=A4=9AIP=E8=AE=A2?= =?UTF-8?q?=E9=98=85=E5=BC=82=E5=B8=B8=E4=B8=BA=E5=88=A4=E6=96=AD=E6=9D=A1?= =?UTF-8?q?=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Console/Commands/AutoJob.php | 29 +++++++++---------- .../Controllers/Admin/SubscribeController.php | 2 +- 2 files changed, 15 insertions(+), 16 deletions(-) diff --git a/app/Console/Commands/AutoJob.php b/app/Console/Commands/AutoJob.php index 4c04a17a..24cc785d 100644 --- a/app/Console/Commands/AutoJob.php +++ b/app/Console/Commands/AutoJob.php @@ -13,7 +13,6 @@ use App\Models\Order; use App\Models\User; use App\Models\UserBanedLog; use App\Models\UserHourlyDataFlow; -use App\Models\UserSubscribeLog; use App\Models\VerifyCode; use Cache; use Illuminate\Console\Command; @@ -91,25 +90,25 @@ class AutoJob extends Command { // 封禁访问异常的订阅链接 private function blockSubscribe(): void { if(sysConfig('is_subscribe_ban')){ - $pastSubLogs = UserSubscribeLog::where('request_time', '>=', date("Y-m-d H:i:s", strtotime("-1 days"))) - ->groupBy('user_subscribe_id') - ->selectRaw('count(*) as total, user_subscribe_id') - ->get(); - foreach($pastSubLogs as $log){ - if($log->total >= sysConfig('subscribe_ban_times')){ - $subscribe = $log->subscribe; - $ret = $subscribe->update([ + $subscribe_ban_times = sysConfig('subscribe_ban_times'); + foreach(User::activeUser()->with('subscribe')->get() as $user){ + if(!$user->subscribe || $user->subscribe->status === 0){ // 无订阅链接 或 已封 + continue; + } + // 24小时内不同IP的请求次数 + $request_times = $user->subscribeLogs() + ->where('request_time', '>=', date("Y-m-d H:i:s", strtotime("-1 days"))) + ->distinct() + ->count('request_ip'); + if($request_times >= $subscribe_ban_times){ + $user->subscribe->update([ 'status' => 0, - 'ban_time' => time(), + 'ban_time' => strtotime("+".sysConfig('traffic_ban_time')." minutes"), 'ban_desc' => '存在异常,自动封禁' ]); // 记录封禁日志 - if($ret){ - $this->addUserBanLog($subscribe->user_id, 0, '【完全封禁订阅】-订阅24小时内请求异常'); - }else{ - Log::error('【自动化任务】封禁订阅失败,尝试封禁订阅ID:'.$subscribe->id); - } + $this->addUserBanLog($user->id, 0, '【完全封禁订阅】-订阅24小时内请求异常'); } } } diff --git a/app/Http/Controllers/Admin/SubscribeController.php b/app/Http/Controllers/Admin/SubscribeController.php index 9daaeca4..363fad38 100644 --- a/app/Http/Controllers/Admin/SubscribeController.php +++ b/app/Http/Controllers/Admin/SubscribeController.php @@ -50,7 +50,7 @@ class SubscribeController extends Controller { $query = UserSubscribeLog::with('user:email'); if(isset($id)){ - $query->whereSubscribeId($id); + $query->whereUserSubscribeId($id); } $view['subscribeLog'] = $query->latest()->paginate(20)->appends($request->except('page'));