From aeb0696f457ca85b62d15ab6586c5779cf5cd97b Mon Sep 17 00:00:00 2001
From: Administrator <15274802129@163.com>
Date: Fri, 31 Jul 2026 16:56:21 +0800
Subject: [PATCH] feat(firewall): 添加访问日志功能
---
sql/firewall.sql | 92 ++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 92 insertions(+), 0 deletions(-)
diff --git a/sql/firewall.sql b/sql/firewall.sql
new file mode 100644
index 0000000..e2419e7
--- /dev/null
+++ b/sql/firewall.sql
@@ -0,0 +1,92 @@
+-- ============================================================
+-- 防火墙站点表
+-- ============================================================
+DROP TABLE IF EXISTS firewall_site;
+CREATE TABLE firewall_site (
+ ID BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键',
+ REVISION INT DEFAULT 1 COMMENT '乐观锁',
+ CREATED_BY VARCHAR(32) DEFAULT 'system' COMMENT '创建人',
+ CREATED_TIME DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
+ UPDATED_BY VARCHAR(32) DEFAULT 'system' COMMENT '更新人',
+ UPDATED_TIME DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
+ SITE_NAME VARCHAR(100) NOT NULL COMMENT '站点名称',
+ DOMAIN VARCHAR(200) NOT NULL COMMENT '站点域名',
+ NGINX_CONF VARCHAR(255) COMMENT 'Nginx配置文件路径',
+ STATUS TINYINT DEFAULT 1 COMMENT '状态:1-启用,0-禁用',
+ REMARK VARCHAR(255) COMMENT '备注',
+ PRIMARY KEY (ID),
+ UNIQUE KEY uk_domain (DOMAIN)
+) COMMENT = '防火墙站点表';
+
+-- ============================================================
+-- 国家白名单规则表
+-- ============================================================
+DROP TABLE IF EXISTS firewall_country_rule;
+CREATE TABLE firewall_country_rule (
+ ID BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键',
+ REVISION INT DEFAULT 1 COMMENT '乐观锁',
+ CREATED_BY VARCHAR(32) DEFAULT 'system' COMMENT '创建人',
+ CREATED_TIME DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
+ UPDATED_BY VARCHAR(32) DEFAULT 'system' COMMENT '更新人',
+ UPDATED_TIME DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
+ SITE_ID BIGINT NOT NULL COMMENT '站点ID,关联firewall_site表',
+ COUNTRY_CODE VARCHAR(10) NOT NULL COMMENT '国家编码(ISO 3166-1 alpha-2,如 JP/US/SG)',
+ COUNTRY_NAME VARCHAR(50) COMMENT '国家名称',
+ ENABLED TINYINT DEFAULT 1 COMMENT '状态:1-启用,0-禁用',
+ PRIMARY KEY (ID),
+ UNIQUE KEY uk_site_country (SITE_ID, COUNTRY_CODE),
+ INDEX idx_site_id (SITE_ID)
+) COMMENT = '防火墙国家白名单规则表';
+
+-- ============================================================
+-- IP白名单表
+-- ============================================================
+DROP TABLE IF EXISTS firewall_ip_white;
+CREATE TABLE firewall_ip_white (
+ ID BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键',
+ REVISION INT DEFAULT 1 COMMENT '乐观锁',
+ CREATED_BY VARCHAR(32) DEFAULT 'system' COMMENT '创建人',
+ CREATED_TIME DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
+ UPDATED_BY VARCHAR(32) DEFAULT 'system' COMMENT '更新人',
+ UPDATED_TIME DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
+ SITE_ID BIGINT NOT NULL COMMENT '站点ID',
+ IP VARCHAR(64) NOT NULL COMMENT 'IP地址(支持IPv4/IPv6)',
+ REMARK VARCHAR(255) COMMENT '备注',
+ EXPIRE_TIME DATETIME COMMENT '过期时间,NULL表示永久有效',
+ ENABLED TINYINT DEFAULT 1 COMMENT '状态:1-启用,0-禁用',
+ PRIMARY KEY (ID),
+ UNIQUE KEY uk_site_ip (SITE_ID, IP),
+ INDEX idx_ip (IP)
+) COMMENT = '防火墙IP白名单表';
+
+-- ============================================================
+-- 访问日志表
+-- ============================================================
+DROP TABLE IF EXISTS firewall_access_log;
+CREATE TABLE firewall_access_log (
+ ID BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键',
+ REVISION INT DEFAULT 1 COMMENT '乐观锁',
+ CREATED_BY VARCHAR(32) DEFAULT 'system' COMMENT '创建人',
+ CREATED_TIME DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
+ UPDATED_BY VARCHAR(32) DEFAULT 'system' COMMENT '更新人',
+ UPDATED_TIME DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
+ SITE_ID BIGINT COMMENT '站点ID',
+ IP VARCHAR(64) NOT NULL COMMENT '访问者IP',
+ COUNTRY_CODE VARCHAR(10) COMMENT '国家编码(ISO 3166-1 alpha-2)',
+ COUNTRY_NAME VARCHAR(50) COMMENT '国家名称',
+ USER_AGENT VARCHAR(500) COMMENT '浏览器UA',
+ REQUEST_URI VARCHAR(500) COMMENT '请求路径',
+ IS_BLOCKED TINYINT DEFAULT 0 COMMENT '是否被拦截:1-是,0-否',
+ PRIMARY KEY (ID),
+ INDEX idx_site_id (SITE_ID),
+ INDEX idx_ip (IP),
+ INDEX idx_country (COUNTRY_CODE),
+ INDEX idx_created_time (CREATED_TIME),
+ INDEX idx_blocked (IS_BLOCKED)
+) COMMENT = '防火墙访问日志表';
+
+-- ----------------------------
+-- 默认数据
+-- ----------------------------
+INSERT INTO firewall_site (SITE_NAME, DOMAIN, STATUS) VALUES
+('默认站点', 'shop.xxx.com', 1);
--
Gitblit v1.9.1