Skip to content

Commit 3de0e86

Browse files
author
zhangjiangbin
committed
1.订阅链接异常自动封禁
2.修正编辑节点单端口多用户配置错误 3.美化系统设置
1 parent 49bbab4 commit 3de0e86

File tree

11 files changed

+3854
-97
lines changed

11 files changed

+3854
-97
lines changed
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
<?php
2+
3+
namespace App\Console\Commands;
4+
5+
use Illuminate\Console\Command;
6+
use App\Http\Models\Config;
7+
use App\Http\Models\UserSubscribe;
8+
use App\Http\Models\UserSubscribeLog;
9+
use Log;
10+
11+
class AutoBanSubscribeJob extends Command
12+
{
13+
protected $signature = 'command:autoBanSubscribeJob';
14+
protected $description = '自动封禁异常订阅链接';
15+
16+
protected static $config;
17+
18+
public function __construct()
19+
{
20+
parent::__construct();
21+
22+
$config = Config::query()->get();
23+
$data = [];
24+
foreach ($config as $vo) {
25+
$data[$vo->name] = $vo->value;
26+
}
27+
28+
self::$config = $data;
29+
}
30+
31+
public function handle()
32+
{
33+
// 封禁24小时访问异常的订阅链接
34+
if (self::$config['is_subscribe_ban']) {
35+
$subscribeList = UserSubscribe::query()->where('status', 1)->get();
36+
if (!$subscribeList->isEmpty()) {
37+
foreach ($subscribeList as $subscribe) {
38+
// 24小时内的请求次数
39+
$request_times = UserSubscribeLog::query()->where('sid', $subscribe->id)->where('request_time', '>=', date("Y-m-d H:i:s", strtotime("-24 hours")))->distinct('request_ip')->count('request_ip');
40+
if ($request_times >= self::$config['subscribe_ban_times']) {
41+
UserSubscribe::query()->where('id', $subscribe->id)->update(['status' => 0, 'ban_time' => time(), 'ban_desc' => '存在异常,自动封禁']);
42+
}
43+
}
44+
}
45+
}
46+
47+
Log::info('定时任务:' . $this->description);
48+
}
49+
}

app/Console/Commands/AutoClearLogJob.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,8 +46,8 @@ public function handle()
4646
// 自动清除10天以前的用户每小时流量数据日志
4747
UserTrafficHourly::query()->where('created_at', '<=', date('Y-m-d H:i:s', strtotime('-10 days')))->delete();
4848

49-
// 自动清除10天以前的节点每小时流量数据日志
50-
SsNodeTrafficHourly::query()->where('created_at', '<=', date('Y-m-d H:i:s', strtotime('-10 days')))->delete();
49+
// 自动清除60天以前的节点每小时流量数据日志
50+
SsNodeTrafficHourly::query()->where('created_at', '<=', date('Y-m-d H:i:s', strtotime('-60 days')))->delete();
5151
}
5252

5353
Log::info('定时任务:' . $this->description);

app/Console/Kernel.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ class Kernel extends ConsoleKernel
1313
* @var array
1414
*/
1515
protected $commands = [
16+
\App\Console\Commands\AutoBanSubscribeJob::class,
1617
\App\Console\Commands\AutoBanUserJob::class,
1718
\App\Console\Commands\AutoCheckNodeStatusJob::class,
1819
\App\Console\Commands\AutoClearLogJob::class,
@@ -39,6 +40,7 @@ class Kernel extends ConsoleKernel
3940
*/
4041
protected function schedule(Schedule $schedule)
4142
{
43+
$schedule->command('command:autoBanSubscribeJob')->everyThirtyMinutes();
4244
$schedule->command('command:autoBanUserJob')->everyTenMinutes();
4345
$schedule->command('command:autoCheckNodeStatusJob')->everyMinute();
4446
$schedule->command('command:autoClearLogJob')->everyThirtyMinutes();

app/Http/Controllers/AdminController.php

Lines changed: 6 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -834,19 +834,7 @@ public function subscribeLog(Request $request)
834834
});
835835
}
836836

837-
$subscribeList = $query->orderBy('id', 'desc')->paginate(20)->appends($request->except('page'));
838-
839-
// 是否存在地址泄露的可能
840-
foreach ($subscribeList as &$subscribe) {
841-
$ipCounts = UserSubscribeLog::query()->where('sid', $subscribe->id)->where('request_time', '>=', date('Y-m-d H:i:s', strtotime("-3 days")))->distinct('request_ip')->count('request_ip');
842-
if ($ipCounts >= 10) {
843-
$subscribe->isWarning = 1;
844-
} else {
845-
$subscribe->isWarning = 0;
846-
}
847-
}
848-
849-
$view['subscribeList'] = $subscribeList;
837+
$view['subscribeList'] = $query->orderBy('id', 'desc')->paginate(20)->appends($request->except('page'));
850838

851839
return Response::view('admin/subscribeLog', $view);
852840
}
@@ -860,7 +848,11 @@ public function setSubscribeStatus(Request $request)
860848
return Response::json(['status' => 'fail', 'data' => '', 'message' => '操作异常']);
861849
}
862850

863-
UserSubscribe::query()->where('id', $id)->update(['status' => $status]);
851+
if ($status) {
852+
UserSubscribe::query()->where('id', $id)->update(['status' => 1, 'ban_time' => 0, 'ban_desc' => '']);
853+
} else {
854+
UserSubscribe::query()->where('id', $id)->update(['status' => 0, 'ban_time' => time(), 'ban_desc' => '后台手动封禁']);
855+
}
864856

865857
return Response::json(['status' => 'success', 'data' => '', 'message' => '操作成功']);
866858
}

app/Http/Models/UserSubscribe.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@ class UserSubscribe extends Model
1818
'code',
1919
'times',
2020
'status',
21+
'ban_time',
22+
'ban_desc',
2123
];
2224

2325
public function User()

0 commit comments

Comments
 (0)