<?php use Engine\X; require './cli/start.php'; $db = X::db(); $rows = $db->table('hulkx_ban_ip')->find(); $writetime = time(); require "libraries/ipip/ip.php"; foreach ($rows as $row) { $ip_address = ''; if ($row['ip']) { if ($ipip = \libraries\ipip\Ip::find($row['ip'])) { $ip_address = implode($ipip); } list($ip_section1, $ip_section2, $ip_section3, $ip_section4) = explode('.', $row['ip']); $db->table('banip')->insert(['ban_time' => $row['ban_time'], 'valid_time' => $row['valid_time'], 'attack_amount' => 0, 'ip_address' => $ip_address, 'ip_section1' => $ip_section1, 'ip_section2' => $ip_section2, 'ip_section3' => $ip_section3, 'ip_section4' => $ip_section4]); } } print $db->table('banip')->count();
$tutu['process_time'] = $process_time; $tutu['ip'] = $post->client_ip; //请求日志 X::module('post')->banLog($tutu); //IP是否被拦截 $ipInfo = X::module('post')->whetherInBanip($post->client_ip); if ($ipInfo && $tutu['hit'] || $ipInfo && $ipInfo['valid_time'] > $now) { if ($tutu['hit']) { //看是否内容再次是非法,是就增加IP拦截时效 if (!$ipInfo['valid_time'] || $ipInfo['valid_time'] < $now) { $valid_time = $now + 86400; //拦截一天 } else { $valid_time = $ipInfo['valid_time'] + 43200; } X::db()->query("UPDATE banip \n\t\t\t\t\t\t\tSET valid_time = {$valid_time} ,\n\t\t\t\t\t\t\t\tattack_amount = attack_amount + 1\n\t\t\t\t\t\t\tWHERE ip_id = {$ipInfo['ip_id']}"); } //统计命中率 X::module('company')->statisticsHit($company['company_id']); apiOutput(YES, ['hit' => YES, 'dirty_works' => "ip({$post->client_ip})被拦截"]); } //命中脏词 if ($tutu['hit']) { //统计命中率 X::module('company')->statisticsHit($company['company_id']); //如果命中的词是公共库而且是要封ip的 if ($tutu['depot'] === 2) { $dwRow = X::module('dirtyword')->byGlobal($tutu['dirty_id']); if ($dwRow['if_deny_id'] === 1) { X::module('post')->banIp($post->client_ip); }