初始化1
This commit is contained in:
151
sql/audit_migration.sql
Normal file
151
sql/audit_migration.sql
Normal file
@@ -0,0 +1,151 @@
|
||||
-- ============================================
|
||||
-- 审计字段迁移:创建人/更新人 + DNS记录本地审计表
|
||||
-- 数据库: nginxserver @ 10.1.1.122:3306
|
||||
-- 日期: 2026-06-19
|
||||
-- 执行方式: mysql -h 10.1.1.122 -u nginxserver -p nginxserver < audit_migration.sql
|
||||
-- ============================================
|
||||
|
||||
USE nginxserver;
|
||||
|
||||
-- ════════════════════════════════════════════════
|
||||
-- 安全添加审计列(检查是否已存在,避免重复执行报错)
|
||||
-- ════════════════════════════════════════════════
|
||||
DROP PROCEDURE IF EXISTS add_audit_columns;
|
||||
|
||||
DELIMITER $$
|
||||
CREATE PROCEDURE add_audit_columns()
|
||||
BEGIN
|
||||
-- ========================================
|
||||
-- forwarding_rules: created_by
|
||||
-- ========================================
|
||||
IF NOT EXISTS (
|
||||
SELECT 1 FROM information_schema.COLUMNS
|
||||
WHERE TABLE_SCHEMA = 'nginxserver'
|
||||
AND TABLE_NAME = 'forwarding_rules'
|
||||
AND COLUMN_NAME = 'created_by'
|
||||
) THEN
|
||||
ALTER TABLE forwarding_rules
|
||||
ADD COLUMN created_by VARCHAR(100) DEFAULT NULL
|
||||
COMMENT '创建人';
|
||||
END IF;
|
||||
|
||||
-- forwarding_rules: updated_by
|
||||
IF NOT EXISTS (
|
||||
SELECT 1 FROM information_schema.COLUMNS
|
||||
WHERE TABLE_SCHEMA = 'nginxserver'
|
||||
AND TABLE_NAME = 'forwarding_rules'
|
||||
AND COLUMN_NAME = 'updated_by'
|
||||
) THEN
|
||||
ALTER TABLE forwarding_rules
|
||||
ADD COLUMN updated_by VARCHAR(100) DEFAULT NULL
|
||||
COMMENT '更新人';
|
||||
END IF;
|
||||
|
||||
-- ========================================
|
||||
-- dns_zone_config: created_by
|
||||
-- ========================================
|
||||
IF NOT EXISTS (
|
||||
SELECT 1 FROM information_schema.COLUMNS
|
||||
WHERE TABLE_SCHEMA = 'nginxserver'
|
||||
AND TABLE_NAME = 'dns_zone_config'
|
||||
AND COLUMN_NAME = 'created_by'
|
||||
) THEN
|
||||
ALTER TABLE dns_zone_config
|
||||
ADD COLUMN created_by VARCHAR(100) DEFAULT NULL
|
||||
COMMENT '创建人';
|
||||
END IF;
|
||||
|
||||
-- dns_zone_config: updated_by
|
||||
IF NOT EXISTS (
|
||||
SELECT 1 FROM information_schema.COLUMNS
|
||||
WHERE TABLE_SCHEMA = 'nginxserver'
|
||||
AND TABLE_NAME = 'dns_zone_config'
|
||||
AND COLUMN_NAME = 'updated_by'
|
||||
) THEN
|
||||
ALTER TABLE dns_zone_config
|
||||
ADD COLUMN updated_by VARCHAR(100) DEFAULT NULL
|
||||
COMMENT '更新人';
|
||||
END IF;
|
||||
|
||||
-- ========================================
|
||||
-- certificates: created_by
|
||||
-- ========================================
|
||||
IF NOT EXISTS (
|
||||
SELECT 1 FROM information_schema.COLUMNS
|
||||
WHERE TABLE_SCHEMA = 'nginxserver'
|
||||
AND TABLE_NAME = 'certificates'
|
||||
AND COLUMN_NAME = 'created_by'
|
||||
) THEN
|
||||
ALTER TABLE certificates
|
||||
ADD COLUMN created_by VARCHAR(100) DEFAULT NULL
|
||||
COMMENT '创建人';
|
||||
END IF;
|
||||
|
||||
-- certificates: updated_by
|
||||
IF NOT EXISTS (
|
||||
SELECT 1 FROM information_schema.COLUMNS
|
||||
WHERE TABLE_SCHEMA = 'nginxserver'
|
||||
AND TABLE_NAME = 'certificates'
|
||||
AND COLUMN_NAME = 'updated_by'
|
||||
) THEN
|
||||
ALTER TABLE certificates
|
||||
ADD COLUMN updated_by VARCHAR(100) DEFAULT NULL
|
||||
COMMENT '更新人';
|
||||
END IF;
|
||||
END$$
|
||||
DELIMITER ;
|
||||
|
||||
-- 执行存储过程
|
||||
CALL add_audit_columns();
|
||||
|
||||
-- 清理
|
||||
DROP PROCEDURE IF EXISTS add_audit_columns;
|
||||
|
||||
-- ════════════════════════════════════════════════
|
||||
-- 新建 DNS 记录本地审计表
|
||||
-- ════════════════════════════════════════════════
|
||||
CREATE TABLE IF NOT EXISTS dns_records (
|
||||
id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT '主键ID',
|
||||
record_id VARCHAR(128) NOT NULL COMMENT '阿里云解析记录ID',
|
||||
domain_zone VARCHAR(255) NOT NULL COMMENT '主域名(如 zgitm.com)',
|
||||
rr VARCHAR(255) NOT NULL COMMENT '主机记录',
|
||||
record_type VARCHAR(20) NOT NULL COMMENT '记录类型: A / CNAME / TXT',
|
||||
record_value VARCHAR(500) NOT NULL COMMENT '记录值(IP 或域名)',
|
||||
ttl INT DEFAULT 600 COMMENT 'TTL 生效时间(秒)',
|
||||
status TINYINT DEFAULT 1 COMMENT '状态: 0-已删除(逻辑删除), 1-正常',
|
||||
created_by VARCHAR(100) DEFAULT NULL COMMENT '创建人',
|
||||
updated_by VARCHAR(100) DEFAULT NULL COMMENT '更新人',
|
||||
created_at DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||||
UNIQUE KEY uk_record_id (record_id),
|
||||
INDEX idx_domain_zone (domain_zone),
|
||||
INDEX idx_status (status)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci
|
||||
COMMENT='DNS解析记录本地审计表(阿里云为权威数据源,本表仅做审计追踪)';
|
||||
|
||||
-- ════════════════════════════════════════════════
|
||||
-- 验证结果
|
||||
-- ════════════════════════════════════════════════
|
||||
SELECT '=== forwarding_rules 审计列 ===' AS '';
|
||||
SELECT COLUMN_NAME, COLUMN_TYPE, COLUMN_DEFAULT, COLUMN_COMMENT
|
||||
FROM information_schema.COLUMNS
|
||||
WHERE TABLE_SCHEMA = 'nginxserver'
|
||||
AND TABLE_NAME = 'forwarding_rules'
|
||||
AND COLUMN_NAME IN ('created_by', 'updated_by');
|
||||
|
||||
SELECT '=== dns_zone_config 审计列 ===' AS '';
|
||||
SELECT COLUMN_NAME, COLUMN_TYPE, COLUMN_DEFAULT, COLUMN_COMMENT
|
||||
FROM information_schema.COLUMNS
|
||||
WHERE TABLE_SCHEMA = 'nginxserver'
|
||||
AND TABLE_NAME = 'dns_zone_config'
|
||||
AND COLUMN_NAME IN ('created_by', 'updated_by');
|
||||
|
||||
SELECT '=== certificates 审计列 ===' AS '';
|
||||
SELECT COLUMN_NAME, COLUMN_TYPE, COLUMN_DEFAULT, COLUMN_COMMENT
|
||||
FROM information_schema.COLUMNS
|
||||
WHERE TABLE_SCHEMA = 'nginxserver'
|
||||
AND TABLE_NAME = 'certificates'
|
||||
AND COLUMN_NAME IN ('created_by', 'updated_by');
|
||||
|
||||
SELECT '=== dns_records 表结构 ===' AS '';
|
||||
SHOW CREATE TABLE dns_records;
|
||||
37
sql/cert_migration.sql
Normal file
37
sql/cert_migration.sql
Normal file
@@ -0,0 +1,37 @@
|
||||
-- ============================================
|
||||
-- 证书管理功能 - 数据库迁移脚本
|
||||
-- 执行日期: 2026-06-11
|
||||
-- ============================================
|
||||
|
||||
USE nginxserver;
|
||||
|
||||
-- 1. 给 certificates 表增加通知相关字段
|
||||
ALTER TABLE certificates
|
||||
ADD COLUMN IF NOT EXISTS cert_type VARCHAR(20) DEFAULT 'internal_ca' COMMENT '证书类型: internal_ca / letsencrypt',
|
||||
ADD COLUMN IF NOT EXISTS notify_email VARCHAR(500) DEFAULT NULL COMMENT '通知收件人邮箱,多个用逗号分隔',
|
||||
ADD COLUMN IF NOT EXISTS notify_enabled TINYINT DEFAULT 1 COMMENT '是否启用到期通知: 0-禁用, 1-启用',
|
||||
ADD COLUMN IF NOT EXISTS notify_days_before INT DEFAULT 15 COMMENT '提前多少天开始通知',
|
||||
ADD COLUMN IF NOT EXISTS last_renew_time DATETIME DEFAULT NULL COMMENT '上次续期时间',
|
||||
ADD COLUMN IF NOT EXISTS renew_log TEXT DEFAULT NULL COMMENT '续期/签发日志(JSON)';
|
||||
|
||||
-- 2. 创建证书通知发送日志表
|
||||
CREATE TABLE IF NOT EXISTS cert_notify_log (
|
||||
id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT '主键ID',
|
||||
cert_id BIGINT NOT NULL COMMENT '关联 certificates.id',
|
||||
domain VARCHAR(255) NOT NULL COMMENT '域名',
|
||||
days_left INT NOT NULL COMMENT '到期剩余天数',
|
||||
email_to VARCHAR(500) NOT NULL COMMENT '收件人邮箱',
|
||||
success TINYINT DEFAULT 1 COMMENT '是否发送成功: 0-失败, 1-成功',
|
||||
response_msg VARCHAR(1000) DEFAULT NULL COMMENT '网关API返回信息',
|
||||
sent_at DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '发送时间',
|
||||
INDEX idx_cert_id (cert_id),
|
||||
INDEX idx_domain (domain),
|
||||
INDEX idx_sent_at (sent_at)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='证书到期通知发送日志';
|
||||
|
||||
-- 3. 插入 zgitm.com 系统证书记录(Let's Encrypt 类型)
|
||||
INSERT IGNORE INTO certificates (domain, cert_type, notify_email, notify_enabled, notify_days_before, status)
|
||||
VALUES ('zgitm.com', 'letsencrypt', 'admin@mokee.com', 1, 15, 'active');
|
||||
|
||||
INSERT IGNORE INTO certificates (domain, cert_type, notify_email, notify_enabled, notify_days_before, status)
|
||||
VALUES ('www.zgitm.com', 'letsencrypt', 'admin@mokee.com', 1, 15, 'active');
|
||||
70
sql/gateway_init.sql
Normal file
70
sql/gateway_init.sql
Normal file
@@ -0,0 +1,70 @@
|
||||
-- =============================================
|
||||
-- nginx配置管理平台 菜单 & 角色初始化 SQL
|
||||
-- 系统编码: nginxServer
|
||||
-- 执行位置: Mokee Gateway 数据库
|
||||
-- =============================================
|
||||
|
||||
-- 0. 获取系统 ID
|
||||
SET @system_id = (SELECT id FROM sys_system WHERE system_code = 'nginxServer' AND is_deleted = 0 LIMIT 1);
|
||||
|
||||
-- 1. 创建顶级菜单目录(用变量持有父菜单 UUID,子菜单直接引用)
|
||||
SET @menu_nginx = REPLACE(UUID(),'-','');
|
||||
|
||||
INSERT INTO sys_menu (id, system_id, parent_id, menu_name, menu_path, component, icon, menu_type, sort_order, status) VALUES
|
||||
(@menu_nginx, @system_id, '0', 'Nginx代理管理', '/nginx', 'Layout', 'Connection', 1, 1, 1);
|
||||
|
||||
-- 2. 创建子菜单(parent_id 直接用上面定义的变量)
|
||||
INSERT INTO sys_menu (id, system_id, parent_id, menu_name, menu_path, component, icon, menu_type, sort_order, status) VALUES
|
||||
(REPLACE(UUID(),'-',''), @system_id, @menu_nginx, 'Nginx转发管理', '/nginx-forwarding', 'views/NginxForwarding.vue', 'Connection', 2, 1, 1),
|
||||
(REPLACE(UUID(),'-',''), @system_id, @menu_nginx, 'SSL证书管理', '/cert-management', 'views/CertManagement.vue', 'Key', 2, 2, 1),
|
||||
(REPLACE(UUID(),'-',''), @system_id, @menu_nginx, 'DNS解析管理', '/dns-management', 'views/DnsManagement.vue', 'Link', 2, 3, 1);
|
||||
|
||||
-- 3. 创建角色(用变量持有角色 UUID)
|
||||
SET @role_admin = REPLACE(UUID(),'-','');
|
||||
SET @role_user = REPLACE(UUID(),'-','');
|
||||
|
||||
INSERT INTO sys_role (id, system_id, role_name, role_code, description, status) VALUES
|
||||
(@role_admin, @system_id, '管理员', 'admin', '拥有全部权限', 1),
|
||||
(@role_user, @system_id, '普通用户', 'user', '拥有基本权限', 1);
|
||||
|
||||
-- 4. 将本系统所有菜单分配给管理员角色
|
||||
INSERT INTO sys_role_menu (id, role_id, menu_id)
|
||||
SELECT REPLACE(UUID(),'-',''), @role_admin, m.id
|
||||
FROM sys_menu m WHERE m.system_id = @system_id;
|
||||
|
||||
-- =============================================
|
||||
-- 创建网关应用管理员账号
|
||||
-- 角色: gateway-app-admin (只能看到自己绑定系统的数据)
|
||||
-- =============================================
|
||||
|
||||
-- 5. 创建管理员用户(密码 admin123 的 BCrypt 密文,建议自行生成替换)
|
||||
INSERT INTO sys_user (id, username, password, real_name, email, phone, status, is_deleted)
|
||||
SELECT REPLACE(UUID(),'-',''), 'admin_nginxServer',
|
||||
'$2a$10$N.zmdr9k7uOCQb376NoUnuTJ8iAt6Z5EHsM8lE9lBOsl7iKTVKIUi',
|
||||
'Nginx配置管理平台管理员', 'admin@nginxServer.com', NULL, 1, 0
|
||||
FROM DUAL
|
||||
WHERE NOT EXISTS (SELECT 1 FROM sys_user WHERE username = 'admin_nginxServer');
|
||||
|
||||
-- 6. 绑定管理员到 gateway 系统
|
||||
INSERT INTO sys_user_system (id, user_id, system_id)
|
||||
SELECT REPLACE(UUID(),'-',''), u.id, s.id
|
||||
FROM sys_user u, sys_system s
|
||||
WHERE u.username = 'admin_nginxServer'
|
||||
AND s.system_code = 'gateway'
|
||||
AND NOT EXISTS (
|
||||
SELECT 1 FROM sys_user_system us
|
||||
WHERE us.user_id = u.id AND us.system_id = s.id
|
||||
);
|
||||
|
||||
-- 7. 分配 gateway-app-admin 角色(gateway 系统下的应用管理员角色)
|
||||
INSERT INTO sys_user_role (id, user_id, role_id)
|
||||
SELECT REPLACE(UUID(),'-',''), u.id, r.id
|
||||
FROM sys_user u, sys_role r, sys_system s
|
||||
WHERE u.username = 'admin_nginxServer'
|
||||
AND r.role_code = 'gateway-app-admin'
|
||||
AND r.system_id = s.id
|
||||
AND s.system_code = 'gateway'
|
||||
AND NOT EXISTS (
|
||||
SELECT 1 FROM sys_user_role ur
|
||||
WHERE ur.user_id = u.id AND ur.role_id = r.id
|
||||
);
|
||||
78
sql/gzip_migration.sql
Normal file
78
sql/gzip_migration.sql
Normal file
@@ -0,0 +1,78 @@
|
||||
-- ============================================
|
||||
-- 内容压缩(gzip)配置字段迁移
|
||||
-- 数据库: nginxserver @ 10.1.1.122:3306
|
||||
-- 日期: 2026-06-14
|
||||
-- 执行方式: mysql -h 10.1.1.122 -u nginxserver -p nginxserver < gzip_migration.sql
|
||||
-- ============================================
|
||||
|
||||
USE nginxserver;
|
||||
|
||||
-- 安全添加列(检查是否已存在,避免重复执行报错)
|
||||
DROP PROCEDURE IF EXISTS add_gzip_columns;
|
||||
|
||||
DELIMITER $$
|
||||
CREATE PROCEDURE add_gzip_columns()
|
||||
BEGIN
|
||||
-- gzip_enabled
|
||||
IF NOT EXISTS (
|
||||
SELECT 1 FROM information_schema.COLUMNS
|
||||
WHERE TABLE_SCHEMA = 'nginxserver'
|
||||
AND TABLE_NAME = 'forwarding_rules'
|
||||
AND COLUMN_NAME = 'gzip_enabled'
|
||||
) THEN
|
||||
ALTER TABLE forwarding_rules
|
||||
ADD COLUMN gzip_enabled TINYINT(1) DEFAULT 0
|
||||
COMMENT 'gzip压缩开关: 0-关闭, 1-开启';
|
||||
END IF;
|
||||
|
||||
-- gzip_types
|
||||
IF NOT EXISTS (
|
||||
SELECT 1 FROM information_schema.COLUMNS
|
||||
WHERE TABLE_SCHEMA = 'nginxserver'
|
||||
AND TABLE_NAME = 'forwarding_rules'
|
||||
AND COLUMN_NAME = 'gzip_types'
|
||||
) THEN
|
||||
ALTER TABLE forwarding_rules
|
||||
ADD COLUMN gzip_types VARCHAR(500)
|
||||
DEFAULT 'text/plain text/css text/xml text/javascript application/x-javascript application/json application/xml application/xml+rss application/vnd.ms-fontobject application/x-font-ttf application/x-font-opentype application/x-font-truetype'
|
||||
COMMENT 'gzip压缩MIME类型(空格分隔)';
|
||||
END IF;
|
||||
|
||||
-- gzip_comp_level
|
||||
IF NOT EXISTS (
|
||||
SELECT 1 FROM information_schema.COLUMNS
|
||||
WHERE TABLE_SCHEMA = 'nginxserver'
|
||||
AND TABLE_NAME = 'forwarding_rules'
|
||||
AND COLUMN_NAME = 'gzip_comp_level'
|
||||
) THEN
|
||||
ALTER TABLE forwarding_rules
|
||||
ADD COLUMN gzip_comp_level TINYINT DEFAULT 6
|
||||
COMMENT 'gzip压缩级别 1-9';
|
||||
END IF;
|
||||
|
||||
-- gzip_min_length
|
||||
IF NOT EXISTS (
|
||||
SELECT 1 FROM information_schema.COLUMNS
|
||||
WHERE TABLE_SCHEMA = 'nginxserver'
|
||||
AND TABLE_NAME = 'forwarding_rules'
|
||||
AND COLUMN_NAME = 'gzip_min_length'
|
||||
) THEN
|
||||
ALTER TABLE forwarding_rules
|
||||
ADD COLUMN gzip_min_length VARCHAR(10) DEFAULT '1000'
|
||||
COMMENT 'gzip最小压缩长度(可带k/m单位)';
|
||||
END IF;
|
||||
END$$
|
||||
DELIMITER ;
|
||||
|
||||
-- 执行存储过程
|
||||
CALL add_gzip_columns();
|
||||
|
||||
-- 清理
|
||||
DROP PROCEDURE IF EXISTS add_gzip_columns;
|
||||
|
||||
-- 验证结果
|
||||
SELECT COLUMN_NAME, COLUMN_TYPE, COLUMN_DEFAULT, COLUMN_COMMENT
|
||||
FROM information_schema.COLUMNS
|
||||
WHERE TABLE_SCHEMA = 'nginxserver'
|
||||
AND TABLE_NAME = 'forwarding_rules'
|
||||
AND COLUMN_NAME LIKE 'gzip%';
|
||||
48
sql/init.sql
Normal file
48
sql/init.sql
Normal file
@@ -0,0 +1,48 @@
|
||||
-- ============================================
|
||||
-- Nginx域名转发管理平台 - 数据库初始化脚本
|
||||
-- 数据库: nginxserver
|
||||
-- MySQL: 10.1.1.122:3306
|
||||
-- ============================================
|
||||
|
||||
-- 创建数据库(如果不存在)
|
||||
CREATE DATABASE IF NOT EXISTS nginxserver
|
||||
DEFAULT CHARACTER SET utf8mb4
|
||||
DEFAULT COLLATE utf8mb4_unicode_ci;
|
||||
|
||||
USE nginxserver;
|
||||
|
||||
-- ============================================
|
||||
-- 转发规则表
|
||||
-- ============================================
|
||||
CREATE TABLE IF NOT EXISTS forwarding_rules (
|
||||
id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT '主键ID',
|
||||
domain VARCHAR(255) NOT NULL COMMENT '域名',
|
||||
protocol VARCHAR(10) NOT NULL COMMENT '协议类型: http / https',
|
||||
target VARCHAR(500) NOT NULL COMMENT '转发目标地址 (http://或https://开头)',
|
||||
config_file VARCHAR(500) DEFAULT NULL COMMENT 'Nginx配置文件路径',
|
||||
ssl_cert VARCHAR(500) DEFAULT NULL COMMENT 'SSL证书文件路径',
|
||||
ssl_key VARCHAR(500) DEFAULT NULL COMMENT 'SSL私钥文件路径',
|
||||
status TINYINT DEFAULT 1 COMMENT '状态: 0-已删除, 1-正常',
|
||||
created_at DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||||
UNIQUE KEY uk_domain (domain),
|
||||
INDEX idx_status (status),
|
||||
INDEX idx_created_at (created_at)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='Nginx转发规则表';
|
||||
|
||||
-- ============================================
|
||||
-- SSL证书管理表
|
||||
-- ============================================
|
||||
CREATE TABLE IF NOT EXISTS certificates (
|
||||
id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT '主键ID',
|
||||
domain VARCHAR(255) NOT NULL COMMENT '域名',
|
||||
cert_path VARCHAR(500) DEFAULT NULL COMMENT '证书文件路径 (.pem)',
|
||||
key_path VARCHAR(500) DEFAULT NULL COMMENT '私钥文件路径 (.key)',
|
||||
issue_date DATETIME DEFAULT NULL COMMENT '证书签发日期',
|
||||
expire_date DATETIME DEFAULT NULL COMMENT '证书过期日期',
|
||||
status VARCHAR(20) DEFAULT 'active' COMMENT '状态: active / expired / revoked',
|
||||
created_at DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||||
UNIQUE KEY uk_cert_domain (domain),
|
||||
INDEX idx_status (status)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='SSL证书管理表';
|
||||
Reference in New Issue
Block a user