作者 刘锟

合并分支 'akun' 到 'master'

Akun



查看合并请求 !1364
@@ -8,18 +8,14 @@ use App\Models\Devops\ServerConfig; @@ -8,18 +8,14 @@ use App\Models\Devops\ServerConfig;
8 use App\Models\Devops\ServersIp; 8 use App\Models\Devops\ServersIp;
9 use App\Models\Domain\DomainCreateTask; 9 use App\Models\Domain\DomainCreateTask;
10 use App\Models\Domain\DomainInfo; 10 use App\Models\Domain\DomainInfo;
11 -use App\Models\Inquiry\InquiryInfo;  
12 use App\Models\Product\Keyword; 11 use App\Models\Product\Keyword;
13 use App\Models\Project\DeployBuild; 12 use App\Models\Project\DeployBuild;
14 -use App\Models\Project\InquiryFilterConfig;  
15 use App\Models\Project\Project; 13 use App\Models\Project\Project;
16 use App\Models\WebSetting\WebLanguage; 14 use App\Models\WebSetting\WebLanguage;
17 use App\Services\BatchExportService; 15 use App\Services\BatchExportService;
18 use App\Services\ProjectServer; 16 use App\Services\ProjectServer;
19 use Illuminate\Console\Command; 17 use Illuminate\Console\Command;
20 use Illuminate\Support\Facades\DB; 18 use Illuminate\Support\Facades\DB;
21 -use Illuminate\Support\Facades\URL;  
22 -use Illuminate\Support\Str;  
23 19
24 class Temp extends Command 20 class Temp extends Command
25 { 21 {
@@ -39,133 +35,7 @@ class Temp extends Command @@ -39,133 +35,7 @@ class Temp extends Command
39 35
40 public function handle() 36 public function handle()
41 { 37 {
42 - $this->inquiry_filter();  
43 - }  
44 -  
45 - public function inquiry_filter()  
46 - {  
47 - $list = InquiryInfo::where('status', InquiryInfo::STATUS_INIT)->get();  
48 -  
49 - foreach ($list as $data) {  
50 - //邮箱和内容唯一值  
51 - $unique_sign = md5($data['email'] . $data['message']);  
52 -  
53 - $remark = $this->inquiryFilter($unique_sign, $data['country'], $data['ip'], $data['message'], $data['url'], $data['email'], $data['phone'], $data['name']);  
54 - $status = $remark ? InquiryInfo::STATUS_INVALID : InquiryInfo::STATUS_INIT;  
55 -  
56 - $data->status = $status;  
57 - $data->remark = $remark;  
58 - $data->unique_sign = $unique_sign;  
59 - $data->save();  
60 - }  
61 - }  
62 -  
63 - /**  
64 - * 过滤数据  
65 - * @param $unique_sign  
66 - * @param $country  
67 - * @param $ip  
68 - * @param $message  
69 - * @param $refer  
70 - * @param $email  
71 - * @param $phone  
72 - * @param $name  
73 - * @return string  
74 - * @author Akun  
75 - * @date 2025/03/06 15:09  
76 - */  
77 - public function inquiryFilter($unique_sign, $country, $ip, $message, $refer, $email, $phone, $name)  
78 - {  
79 - //邮箱和内容唯一性  
80 - if (InquiryInfo::where('unique_sign', $unique_sign)->first()) {  
81 - return '邮箱内容重复过滤';  
82 - }  
83 -  
84 - //国内ip  
85 - if ($country == '中国') {  
86 - return '中国内地过滤';  
87 - }  
88 -  
89 - //QQ邮箱  
90 - if (substr($email, -6) == 'qq.com') {  
91 - return 'QQ邮箱过滤';  
92 - }  
93 -  
94 - //86开头的手机号  
95 - $num_phone = preg_replace('/\D/', '', $phone) ?? ''; // \D 匹配所有非数字字符  
96 - if (substr($num_phone, 0, 2) == '86') {  
97 - return '86开头手机号过滤';  
98 - }  
99 -  
100 - //公共规则  
101 - $config = InquiryFilterConfig::getCacheInfoByProjectId(Project::DEMO_PROJECT_ID);  
102 - //过滤国家  
103 - if (!empty($config['filter_countries']) && in_array($country, $config['filter_countries'])) {  
104 - return '过滤国家:' . $country;  
105 - }  
106 - //过滤ip  
107 - if (!empty($config['black_ips']) && in_array($ip, $config['black_ips'])) {  
108 - return '过滤黑名单IP:' . $ip;  
109 - }  
110 - //过滤内容关键字  
111 - if (!empty($config['filter_contents'])) {  
112 - foreach ($config['filter_contents'] as $filter_content) {  
113 - //中文直接包含  
114 - if (preg_match("/^[\x{4e00}-\x{9fa5}]+$/u", $filter_content)) {  
115 - if (Str::contains($message, $filter_content)) {  
116 - return '过滤内容:' . $filter_content;  
117 - }  
118 - } else {  
119 - //英文要指定词才过滤  
120 - if (preg_match("/\b" . preg_quote($filter_content, "/") . "\b/i", $message)) {  
121 - return '过滤内容:' . $filter_content;  
122 - }  
123 - }  
124 - }  
125 - }  
126 - //过滤内容是否允许包含链接  
127 - if (isset($config['is_allow_link']) && $config['is_allow_link'] == 0) {  
128 - if (Str::contains(strtolower($message), ['http://', 'https://', 'www.'])) {  
129 - return '内容包含链接过滤';  
130 - }  
131 - }  
132 - //过滤来源  
133 - if (!empty($config['filter_referers'])) {  
134 - //只比较path路径  
135 - $paths = array_map(function ($v) {  
136 - return trim(parse_url(Url::to($v), PHP_URL_PATH), '/');  
137 - }, $config['filter_referers']);  
138 -  
139 - if (in_array(trim(parse_url($refer, PHP_URL_PATH), '/'), $paths)) {  
140 - return '过滤来源链接:' . $refer;  
141 - }  
142 - }  
143 - //过滤邮箱  
144 - if (!empty($config['filter_emails'])) {  
145 - foreach ($config['filter_emails'] as $filter_email) {  
146 - if (Str::contains(strtolower($email), strtolower($filter_email))) {  
147 - return '过滤邮箱:' . $filter_email;  
148 - }  
149 - }  
150 - }  
151 - //过滤电话  
152 - if (!empty($config['filter_mobiles'])) {  
153 - foreach ($config['filter_mobiles'] as $filter_mobile) {  
154 - if (Str::contains(strtolower($phone), strtolower($filter_mobile))) {  
155 - return '过滤电话:' . $filter_mobile;  
156 - }  
157 - }  
158 - }  
159 - //过滤姓名  
160 - if (!empty($config['filter_names'])) {  
161 - foreach ($config['filter_names'] as $filter_name) {  
162 - if (Str::contains(strtolower($name), strtolower($filter_name))) {  
163 - return '过滤姓名:' . $filter_name;  
164 - }  
165 - }  
166 - }  
167 38
168 - return '';  
169 } 39 }
170 40
171 /** 41 /**