        // 定义API文档的JSON
        const swaggerDocument = {
            "openapi": "3.0.3",
            "info": {
                "title": "DNS Server API",
                "description": "DNS服务器完整API文档，包括统计信息、Shield管理、主机管理等功能。",
                "version": "2.0.0",
                "contact": {
                    "name": "DNS Server 支持",
                    "email": "support@dnsserver.com"
                },
                "license": {
                    "name": "Apache 2.0",
                    "url": "http://www.apache.org/licenses/LICENSE-2.0.html"
                }
            },
            "servers": [
                {
                    "url": "http://localhost:8080/api",
                    "description": "本地开发服务器"
                },
                {
                    "url": "http://{host}:{port}/api",
                    "description": "自定义服务器",
                    "variables": {
                        "host": {
                            "default": "localhost"
                        },
                        "port": {
                            "default": "8080"
                        }
                    }
                }
            ],
            "paths": {
                "/login": {
                    "post": {
                        "summary": "用户登录",
                        "description": "使用用户名和密码登录DNS服务器API。",
                        "tags": ["auth"],
                        "requestBody": {
                            "required": true,
                            "content": {
                                "application/json": {
                                    "schema": {
                                        "type": "object",
                                        "properties": {
                                            "username": {"type": "string", "description": "用户名"},
                                            "password": {"type": "string", "description": "密码"}
                                        }
                                    },
                                    "example": {
                                        "username": "admin",
                                        "password": "admin"
                                    }
                                }
                            }
                        },
                        "responses": {
                            "200": {
                                "description": "登录成功",
                                "content": {
                                    "application/json": {
                                        "schema": {
                                            "type": "object",
                                            "properties": {
                                                "status": {"type": "string", "description": "操作状态"},
                                                "message": {"type": "string", "description": "操作信息"}
                                            }
                                        },
                                        "example": {
                                            "status": "success",
                                            "message": "登录成功"
                                        }
                                    }
                                }
                            },
                            "400": {
                                "description": "请求参数错误",
                                "content": {
                                    "application/json": {
                                        "schema": {
                                            "type": "object",
                                            "properties": {
                                                "error": {"type": "string", "description": "错误信息"}
                                            }
                                        },
                                        "example": {
                                            "error": "无效的请求体"
                                        }
                                    }
                                }
                            },
                            "401": {
                                "description": "用户名或密码错误",
                                "content": {
                                    "application/json": {
                                        "schema": {
                                            "type": "object",
                                            "properties": {
                                                "error": {"type": "string", "description": "错误信息"}
                                            }
                                        },
                                        "example": {
                                            "error": "用户名或密码错误"
                                        }
                                    }
                                }
                            }
                        }
                    }
                },
                "/logout": {
                    "post": {
                        "summary": "用户注销",
                        "description": "注销当前登录的用户会话。",
                        "tags": ["auth"],
                        "responses": {
                            "200": {
                                "description": "注销成功",
                                "content": {
                                    "application/json": {
                                        "schema": {
                                            "type": "object",
                                            "properties": {
                                                "status": {"type": "string", "description": "操作状态"},
                                                "message": {"type": "string", "description": "操作信息"}
                                            }
                                        },
                                        "example": {
                                            "status": "success",
                                            "message": "注销成功"
                                        }
                                    }
                                }
                            }
                        }
                    }
                },
                "/change-password": {
                    "post": {
                        "summary": "修改密码",
                        "description": "修改当前登录用户的密码。",
                        "tags": ["auth"],
                        "requestBody": {
                            "required": true,
                            "content": {
                                "application/json": {
                                    "schema": {
                                        "type": "object",
                                        "properties": {
                                            "currentPassword": {"type": "string", "description": "当前密码"},
                                            "newPassword": {"type": "string", "description": "新密码"}
                                        }
                                    },
                                    "example": {
                                        "currentPassword": "admin",
                                        "newPassword": "newpassword"
                                    }
                                }
                            }
                        },
                        "responses": {
                            "200": {
                                "description": "密码修改成功",
                                "content": {
                                    "application/json": {
                                        "schema": {
                                            "type": "object",
                                            "properties": {
                                                "status": {"type": "string", "description": "操作状态"},
                                                "message": {"type": "string", "description": "操作信息"}
                                            }
                                        },
                                        "example": {
                                            "status": "success",
                                            "message": "密码修改成功"
                                        }
                                    }
                                }
                            },
                            "400": {
                                "description": "请求参数错误",
                                "content": {
                                    "application/json": {
                                        "schema": {
                                            "type": "object",
                                            "properties": {
                                                "error": {"type": "string", "description": "错误信息"}
                                            }
                                        },
                                        "example": {
                                            "error": "无效的请求体"
                                        }
                                    }
                                }
                            },
                            "401": {
                                "description": "当前密码错误",
                                "content": {
                                    "application/json": {
                                        "schema": {
                                            "type": "object",
                                            "properties": {
                                                "error": {"type": "string", "description": "错误信息"}
                                            }
                                        },
                                        "example": {
                                            "error": "当前密码错误"
                                        }
                                    }
                                }
                            },
                            "500": {
                                "description": "服务器内部错误",
                                "content": {
                                    "application/json": {
                                        "schema": {
                                            "type": "object",
                                            "properties": {
                                                "error": {"type": "string", "description": "错误信息"}
                                            }
                                        },
                                        "example": {
                                            "error": "保存密码失败"
                                        }
                                    }
                                }
                            }
                        }
                    }
                },
                "/stats": {
                    "get": {
                        "summary": "获取系统统计信息",
                        "description": "获取DNS服务器和Shield的详细统计信息，包括查询量、CPU使用率等。",
                        "tags": ["stats"],
                        "responses": {
                            "200": {
                                "description": "成功获取统计信息",
                                "content": {
                                    "application/json": {
                                        "schema": {
                                            "type": "object",
                                            "properties": {
                                                "dns": {
                                                    "type": "object",
                                                    "properties": {
                                                        "Queries": {"type": "integer", "description": "总查询次数"},
                                                        "Blocked": {"type": "integer", "description": "被阻止的查询次数"},
                                                        "Allowed": {"type": "integer", "description": "允许的查询次数"},
                                                        "Errors": {"type": "integer", "description": "错误查询次数"},
                                                        "LastQuery": {"type": "string", "description": "最近一次查询时间"},
                                                        "AvgResponseTime": {"type": "number", "description": "平均响应时间(毫秒)"},
                                                        "TotalResponseTime": {"type": "number", "description": "总响应时间(毫秒)"},
                                                        "QueryTypes": {"type": "object", "description": "查询类型统计"},
                                                        "SourceIPs": {"type": "object", "description": "来源IP统计"},
                                                        "CpuUsage": {"type": "number", "description": "CPU使用率(百分比)"},
                                                        "DNSSECQueries": {"type": "integer", "description": "DNSSEC查询次数"},
                                                        "DNSSECSuccess": {"type": "integer", "description": "DNSSEC成功次数"},
                                                        "DNSSECFailed": {"type": "integer", "description": "DNSSEC失败次数"},
                                                        "DNSSECEnabled": {"type": "boolean", "description": "是否启用DNSSEC"}
                                                    }
                                                },
                                                "shield": {"type": "object", "description": "Shield统计信息"},
                                                "topQueryType": {"type": "string", "description": "最常见的查询类型"},
                                                "activeIPs": {"type": "integer", "description": "活跃IP数量"},
                                                "avgResponseTime": {"type": "number", "description": "平均响应时间(毫秒)"},
                                                "cpuUsage": {"type": "number", "description": "CPU使用率(百分比)"},
                                                "dnssecEnabled": {"type": "boolean", "description": "是否启用DNSSEC"},
                                                "dnssecQueries": {"type": "integer", "description": "DNSSEC查询次数"},
                                                "dnssecSuccess": {"type": "integer", "description": "DNSSEC成功次数"},
                                                "dnssecFailed": {"type": "integer", "description": "DNSSEC失败次数"},
                                                "dnssecUsage": {"type": "number", "description": "DNSSEC使用率(百分比)"},
                                                "time": {"type": "string", "description": "统计时间"}
                                            }
                                        },
                                        "examples": {
                                            "default": {
                                                "value": {
                                                    "dns": {
                                                        "Queries": 1250,
                                                        "Blocked": 230,
                                                        "Allowed": 1020,
                                                        "Errors": 0,
                                                        "LastQuery": "2023-07-15T14:30:45Z",
                                                        "AvgResponseTime": 12.5,
                                                        "TotalResponseTime": 15625,
                                                        "QueryTypes": {"A": 850, "AAAA": 250, "CNAME": 150},
                                                        "SourceIPs": {"192.168.1.100": 500, "192.168.1.101": 750},
                                                        "CpuUsage": 0.15,
                                                        "DNSSECQueries": 500,
                                                        "DNSSECSuccess": 480,
                                                        "DNSSECFailed": 20,
                                                        "DNSSECEnabled": true
                                                    },
                                                    "shield": {},
                                                    "topQueryType": "A",
                                                    "activeIPs": 2,
                                                    "avgResponseTime": 12.5,
                                                    "cpuUsage": 0.15,
                                                    "dnssecEnabled": true,
                                                    "dnssecQueries": 500,
                                                    "dnssecSuccess": 480,
                                                    "dnssecFailed": 20,
                                                    "dnssecUsage": 40.0,
                                                    "time": "2023-07-15T14:30:45Z"
                                                }
                                            }
                                        }
                                    }
                                }
                            },
                            "500": {
                                "description": "服务器内部错误",
                                "content": {
                                    "application/json": {
                                        "schema": {
                                            "type": "object",
                                            "properties": {
                                                "error": {"type": "string", "description": "错误信息"}
                                            }
                                        },
                                        "example": {"error": "无法获取统计信息"}
                                    }
                                }
                            }
                        }
                    }
                },
                "/top-blocked": {
                    "get": {
                        "summary": "获取TOP被阻止域名",
                        "description": "获取被阻止次数最多的域名列表。",
                        "tags": ["stats"],
                        "responses": {
                            "200": {
                                "description": "成功获取TOP被阻止域名",
                                "content": {
                                    "application/json": {
                                        "schema": {
                                            "type": "array",
                                            "items": {
                                                "type": "object",
                                                "properties": {
                                                    "domain": {"type": "string", "description": "域名"},
                                                    "count": {"type": "integer", "description": "被阻止次数"}
                                                }
                                            }
                                        },
                                        "example": [
                                            {"domain": "ad.example.com", "count": 150},
                                            {"domain": "tracker.example.net", "count": 120}
                                        ]
                                    }
                                }
                            }
                        }
                    }
                },
                "/top-resolved": {
                    "get": {
                        "summary": "获取TOP已解析域名",
                        "description": "获取解析次数最多的域名列表。",
                        "tags": ["stats"],
                        "responses": {
                            "200": {
                                "description": "成功获取TOP已解析域名",
                                "content": {
                                    "application/json": {
                                        "schema": {
                                            "type": "array",
                                            "items": {
                                                "type": "object",
                                                "properties": {
                                                    "domain": {"type": "string", "description": "域名"},
                                                    "count": {"type": "integer", "description": "解析次数"}
                                                }
                                            }
                                        },
                                        "example": [
                                            {"domain": "google.com", "count": 200},
                                            {"domain": "facebook.com", "count": 150}
                                        ]
                                    }
                                }
                            }
                        }
                    }
                },
                "/top-clients": {
                    "get": {
                        "summary": "获取TOP客户端",
                        "description": "获取查询量最多的客户端IP列表。",
                        "tags": ["stats"],
                        "responses": {
                            "200": {
                                "description": "成功获取TOP客户端",
                                "content": {
                                    "application/json": {
                                        "schema": {
                                            "type": "array",
                                            "items": {
                                                "type": "object",
                                                "properties": {
                                                    "ip": {"type": "string", "description": "客户端IP地址"},
                                                    "count": {"type": "integer", "description": "查询次数"}
                                                }
                                            }
                                        },
                                        "example": [
                                            {"ip": "192.168.1.100", "count": 500},
                                            {"ip": "192.168.1.101", "count": 750}
                                        ]
                                    }
                                }
                            }
                        }
                    }
                },
                "/top-domains": {
                    "get": {
                        "summary": "获取TOP域名",
                        "description": "获取查询量最多的域名列表（包括被阻止和已解析的域名）。",
                        "tags": ["stats"],
                        "responses": {
                            "200": {
                                "description": "成功获取TOP域名",
                                "content": {
                                    "application/json": {
                                        "schema": {
                                            "type": "array",
                                            "items": {
                                                "type": "object",
                                                "properties": {
                                                    "domain": {"type": "string", "description": "域名"},
                                                    "count": {"type": "integer", "description": "查询次数"}
                                                }
                                            }
                                        },
                                        "example": [
                                            {"domain": "example.com", "count": 150},
                                            {"domain": "google.com", "count": 120}
                                        ]
                                    }
                                }
                            }
                        }
                    }
                },
                "/recent-blocked": {
                    "get": {
                        "summary": "获取最近被阻止的域名",
                        "description": "获取最近被Shield阻止的域名列表。",
                        "tags": ["stats"],
                        "responses": {
                            "200": {
                                "description": "成功获取最近被阻止的域名",
                                "content": {
                                    "application/json": {
                                        "schema": {
                                            "type": "array",
                                            "items": {
                                                "type": "object",
                                                "properties": {
                                                    "domain": {"type": "string", "description": "域名"},
                                                    "timestamp": {"type": "string", "description": "阻止时间"}
                                                }
                                            }
                                        },
                                        "example": [
                                            {"domain": "ad.example.com", "timestamp": "2023-07-15T14:30:45Z"},
                                            {"domain": "tracker.example.net", "timestamp": "2023-07-15T14:29:30Z"}
                                        ]
                                    }
                                }
                            }
                        }
                    }
                },
                "/hourly-stats": {
                    "get": {
                        "summary": "获取小时统计",
                        "description": "获取按小时统计的DNS查询数据。",
                        "tags": ["stats"],
                        "responses": {
                            "200": {
                                "description": "成功获取小时统计",
                                "content": {
                                    "application/json": {
                                        "schema": {
                                            "type": "object",
                                            "properties": {
                                                "labels": {"type": "array", "items": {"type": "string"}, "description": "小时标签"},
                                                "data": {"type": "array", "items": {"type": "integer"}, "description": "查询次数数据"}
                                            }
                                        },
                                        "example": {
                                            "labels": ["15:00", "16:00", "17:00"],
                                            "data": [120, 90, 150]
                                        }
                                    }
                                }
                            }
                        }
                    }
                },
                "/daily-stats": {
                    "get": {
                        "summary": "获取每日统计",
                        "description": "获取最近7天的DNS查询统计数据。",
                        "tags": ["stats"],
                        "responses": {
                            "200": {
                                "description": "成功获取每日统计",
                                "content": {
                                    "application/json": {
                                        "schema": {
                                            "type": "object",
                                            "properties": {
                                                "labels": {"type": "array", "items": {"type": "string"}, "description": "日期标签"},
                                                "data": {"type": "array", "items": {"type": "integer"}, "description": "查询次数数据"}
                                            }
                                        },
                                        "example": {
                                            "labels": ["01-02", "01-03", "01-04"],
                                            "data": [2500, 2700, 2300]
                                        }
                                    }
                                }
                            }
                        }
                    }
                },
                "/monthly-stats": {
                    "get": {
                        "summary": "获取每月统计",
                        "description": "获取最近30天的DNS查询统计数据。",
                        "tags": ["stats"],
                        "responses": {
                            "200": {
                                "description": "成功获取每月统计",
                                "content": {
                                    "application/json": {
                                        "schema": {
                                            "type": "object",
                                            "properties": {
                                                "labels": {"type": "array", "items": {"type": "string"}, "description": "日期标签"},
                                                "data": {"type": "array", "items": {"type": "integer"}, "description": "查询次数数据"}
                                            }
                                        },
                                        "example": {
                                            "labels": ["01-01", "01-02", "01-03"],
                                            "data": [2500, 2700, 2300]
                                        }
                                    }
                                }
                            }
                        }
                    }
                },
                "/query/type": {
                    "get": {
                        "summary": "获取查询类型统计",
                        "description": "获取DNS查询类型的详细统计信息。",
                        "tags": ["stats"],
                        "responses": {
                            "200": {
                                "description": "成功获取查询类型统计",
                                "content": {
                                    "application/json": {
                                        "schema": {
                                            "type": "array",
                                            "items": {
                                                "type": "object",
                                                "properties": {
                                                    "type": {"type": "string", "description": "查询类型"},
                                                    "count": {"type": "integer", "description": "查询次数"}
                                                }
                                            }
                                        },
                                        "example": [
                                            {"type": "A", "count": 850},
                                            {"type": "AAAA", "count": 250},
                                            {"type": "CNAME", "count": 150}
                                        ]
                                    }
                                }
                            }
                        }
                    }
                },
                "/logs/stats": {
                    "get": {
                        "summary": "获取日志统计信息",
                        "description": "获取DNS查询日志的统计信息。",
                        "tags": ["logs"],
                        "responses": {
                            "200": {
                                "description": "成功获取日志统计信息",
                                "content": {
                                    "application/json": {
                                        "schema": {
                                            "type": "object",
                                            "description": "日志统计信息"}
                                    }
                                }
                            }
                        }
                    }
                },
                "/logs/query": {
                    "get": {
                        "summary": "查询日志",
                        "description": "根据条件查询DNS查询日志。",
                        "tags": ["logs"],
                        "parameters": [
                            {
                                "name": "limit",
                                "in": "query",
                                "schema": {
                                    "type": "integer",
                                    "default": 100
                                },
                                "description": "返回结果数量限制"
                            },
                            {
                                "name": "offset",
                                "in": "query",
                                "schema": {
                                    "type": "integer",
                                    "default": 0
                                },
                                "description": "结果偏移量"
                            },
                            {
                                "name": "sort",
                                "in": "query",
                                "schema": {
                                    "type": "string"
                                },
                                "description": "排序字段"
                            },
                            {
                                "name": "direction",
                                "in": "query",
                                "schema": {
                                    "type": "string"
                                },
                                "description": "排序方向"
                            },
                            {
                                "name": "result",
                                "in": "query",
                                "schema": {
                                    "type": "string"
                                },
                                "description": "查询结果过滤"
                            },
                            {
                                "name": "search",
                                "in": "query",
                                "schema": {
                                    "type": "string"
                                },
                                "description": "搜索关键词"
                            }
                        ],
                        "responses": {
                            "200": {
                                "description": "成功查询日志",
                                "content": {
                                    "application/json": {
                                        "schema": {
                                            "type": "array",
                                            "items": {
                                                "type": "object",
                                                "description": "日志条目"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                },
                "/logs/count": {
                    "get": {
                        "summary": "获取日志总数",
                        "description": "获取DNS查询日志的总数。",
                        "tags": ["logs"],
                        "responses": {
                            "200": {
                                "description": "成功获取日志总数",
                                "content": {
                                    "application/json": {
                                        "schema": {
                                            "type": "object",
                                            "properties": {
                                                "count": {"type": "integer", "description": "日志总数"}
                                            }
                                        },
                                        "example": {
                                            "count": 1000
                                        }
                                    }
                                }
                            }
                        }
                    }
                },
                "/shield": {
                    "get": {
                        "summary": "获取Shield配置和统计信息",
                        "description": "获取Shield的配置信息和规则统计，包括更新间隔、屏蔽方法、黑名单数量等。",
                        "deprecated": false,
                        "tags": ["shield"],
                        "responses": {
                            "200": {
                                "description": "成功获取配置和统计信息",
                                "content": {
                                    "application/json": {
                                        "schema": {
                                            "type": "object",
                                            "properties": {
                                                "updateInterval": {"type": "integer", "description": "更新间隔(秒)"},
                                                "blockMethod": {"type": "string", "description": "屏蔽方法"},
                                                "blacklistCount": {"type": "integer", "description": "黑名单数量"},
                                                "domainRulesCount": {"type": "integer", "description": "域名规则数量"},
                                                "domainExceptionsCount": {"type": "integer", "description": "域名例外规则数量"},
                                                "regexRulesCount": {"type": "integer", "description": "正则规则数量"},
                                                "regexExceptionsCount": {"type": "integer", "description": "正则例外规则数量"},
                                                "hostsRulesCount": {"type": "integer", "description": "Hosts规则数量"}
                                            }
                                        },
                                        "example": {
                                            "updateInterval": 3600,
                                            "blockMethod": "NXDOMAIN",
                                            "blacklistCount": 4,
                                            "domainRulesCount": 1000,
                                            "domainExceptionsCount": 100,
                                            "regexRulesCount": 50,
                                            "regexExceptionsCount": 10,
                                            "hostsRulesCount": 200
                                        }
                                    }
                                }
                            },
                            "500": {
                                "description": "服务器内部错误",
                                "content": {
                                    "application/json": {
                                        "schema": {
                                            "type": "object",
                                            "properties": {
                                                "error": {"type": "string", "description": "错误信息"}
                                            }
                                        },
                                        "example": {"error": "无法获取Shield配置"}
                                    }
                                }
                            }
                        }
                    },
                    "post": {
                        "summary": "添加屏蔽规则",
                        "description": "添加新的屏蔽规则到Shield。",
                        "deprecated": false,
                        "tags": ["shield"],
                        "requestBody": {
                            "required": true,
                            "content": {
                                "application/json": {
                                    "schema": {
                                        "type": "object",
                                        "properties": {
                                            "rule": {"type": "string", "description": "屏蔽规则"}
                                        }
                                    },
                                    "example": {
                                        "rule": "example.com"
                                    }
                                }
                            }
                        },
                        "responses": {
                            "200": {
                                "description": "成功添加规则",
                                "content": {
                                    "application/json": {
                                        "schema": {
                                            "type": "object",
                                            "properties": {
                                                "status": {"type": "string", "description": "操作状态"}
                                            }
                                        },
                                        "example": {"status": "success"}
                                    }
                                }
                            },
                            "400": {
                                "description": "请求参数错误",
                                "content": {
                                    "application/json": {
                                        "schema": {
                                            "type": "object",
                                            "properties": {
                                                "error": {"type": "string", "description": "错误信息"}
                                            }
                                        },
                                        "example": {"error": "参数格式错误"}
                                    }
                                }
                            },
                            "500": {
                                "description": "服务器内部错误",
                                "content": {
                                    "application/json": {
                                        "schema": {
                                            "type": "object",
                                            "properties": {
                                                "error": {"type": "string", "description": "错误信息"}
                                            }
                                        },
                                        "example": {"error": "添加规则失败"}
                                    }
                                }
                            }
                        }
                    },
                    "delete": {
                        "summary": "删除屏蔽规则",
                        "description": "从Shield中删除指定的屏蔽规则。",
                        "deprecated": false,
                        "tags": ["shield"],
                        "requestBody": {
                            "required": true,
                            "content": {
                                "application/json": {
                                    "schema": {
                                        "type": "object",
                                        "properties": {
                                            "rule": {"type": "string", "description": "要删除的屏蔽规则"}
                                        }
                                    },
                                    "example": {
                                        "rule": "example.com"
                                    }
                                }
                            }
                        },
                        "responses": {
                            "200": {
                                "description": "成功删除规则",
                                "content": {
                                    "application/json": {
                                        "schema": {
                                            "type": "object",
                                            "properties": {
                                                "status": {"type": "string", "description": "操作状态"}
                                            }
                                        },
                                        "example": {"status": "success"}
                                    }
                                }
                            },
                            "400": {
                                "description": "请求参数错误",
                                "content": {
                                    "application/json": {
                                        "schema": {
                                            "type": "object",
                                            "properties": {
                                                "error": {"type": "string", "description": "错误信息"}
                                            }
                                        },
                                        "example": {"error": "参数格式错误"}
                                    }
                                }
                            },
                            "500": {
                                "description": "服务器内部错误",
                                "content": {
                                    "application/json": {
                                        "schema": {
                                            "type": "object",
                                            "properties": {
                                                "error": {"type": "string", "description": "错误信息"}
                                            }
                                        },
                                        "example": {"error": "删除规则失败"}
                                    }
                                }
                            }
                        }
                    },
                    "put": {
                        "summary": "重新加载规则",
                        "description": "重新加载和应用Shield规则。",
                        "deprecated": false,
                        "tags": ["shield"],
                        "responses": {
                            "200": {
                                "description": "成功重新加载规则",
                                "content": {
                                    "application/json": {
                                        "schema": {
                                            "type": "object",
                                            "properties": {
                                                "status": {"type": "string", "description": "操作状态"},
                                                "message": {"type": "string", "description": "操作信息"}
                                            }
                                        },
                                        "example": {
                                            "status": "success",
                                            "message": "规则重新加载成功"
                                        }
                                    }
                                }
                            },
                            "500": {
                                "description": "服务器内部错误",
                                "content": {
                                    "application/json": {
                                        "schema": {
                                            "type": "object",
                                            "properties": {
                                                "error": {"type": "string", "description": "错误信息"}
                                            }
                                        },
                                        "example": {"error": "重新加载规则失败"}
                                    }
                                }
                            }
                        }
                    }
                },
                "/shield/blacklists": {
                    "get": {
                        "summary": "获取黑名单列表",
                        "description": "获取Shield的黑名单列表，包括内置黑名单和自定义黑名单。",
                        "deprecated": false,
                        "tags": ["shield"],
                        "responses": {
                            "200": {
                                "description": "成功获取黑名单列表",
                                "content": {
                                    "application/json": {
                                        "schema": {
                                            "type": "array",
                                            "items": {
                                                "type": "object",
                                                "properties": {
                                                    "name": {"type": "string", "description": "黑名单名称"},
                                                    "url": {"type": "string", "description": "黑名单URL"},
                                                    "enabled": {"type": "boolean", "description": "是否启用"},
                                                    "lastUpdate": {"type": "string", "description": "最后更新时间"},
                                                    "status": {"type": "string", "description": "状态"},
                                                    "rulesCount": {"type": "integer", "description": "规则数量"}
                                                }
                                            }
                                        },
                                        "example": [
                                            {
                                                "name": "AdBlock List",
                                                "url": "https://example.com/ads.txt",
                                                "enabled": true,
                                                "lastUpdate": "2023-07-15T10:00:00Z",
                                                "status": "active",
                                                "rulesCount": 1500
                                            }
                                        ]
                                    }
                                }
                            },
                            "500": {
                                "description": "服务器内部错误",
                                "content": {
                                    "application/json": {
                                        "schema": {
                                            "type": "object",
                                            "properties": {
                                                "error": {"type": "string", "description": "错误信息"}
                                            }
                                        },
                                        "example": {"error": "获取黑名单列表失败"}
                                    }
                                }
                            }
                        }
                    },
                    "post": {
                        "summary": "添加黑名单",
                        "description": "添加新的黑名单URL到Shield。",
                        "deprecated": false,
                        "tags": ["shield"],
                        "requestBody": {
                            "required": true,
                            "content": {
                                "application/json": {
                                    "schema": {
                                        "type": "object",
                                        "required": ["name", "url"],
                                        "properties": {
                                            "name": {"type": "string", "description": "黑名单名称"},
                                            "url": {"type": "string", "description": "黑名单URL"},
                                            "enabled": {"type": "boolean", "description": "是否启用", "default": true}
                                        }
                                    },
                                    "example": {
                                        "name": "AdBlock List",
                                        "url": "https://example.com/ads.txt",
                                        "enabled": true
                                    }
                                }
                            }
                        },
                        "responses": {
                            "200": {
                                "description": "成功添加黑名单",
                                "content": {
                                    "application/json": {
                                        "schema": {
                                            "type": "object",
                                            "properties": {
                                                "status": {"type": "string", "description": "操作状态"}
                                            }
                                        },
                                        "example": {"status": "success"}
                                    }
                                }
                            },
                            "400": {
                                "description": "请求参数错误",
                                "content": {
                                    "application/json": {
                                        "schema": {
                                            "type": "object",
                                            "properties": {
                                                "error": {"type": "string", "description": "错误信息"}
                                            }
                                        },
                                        "example": {"error": "名称和URL为必填项"}
                                    }
                                }
                            },
                            "500": {
                                "description": "服务器内部错误",
                                "content": {
                                    "application/json": {
                                        "schema": {
                                            "type": "object",
                                            "properties": {
                                                "error": {"type": "string", "description": "错误信息"}
                                            }
                                        },
                                        "example": {"error": "添加黑名单失败"}
                                    }
                                }
                            }
                        }
                    },
                    "put": {
                        "summary": "更新黑名单列表（包括启用/禁用状态）",
                        "description": "更新黑名单列表（包括启用/禁用状态）。",
                        "deprecated": false,
                        "tags": ["shield"],
                        "requestBody": {
                            "required": true,
                            "content": {
                                "application/json": {
                                    "schema": {
                                        "type": "object",
                                        "properties": {
                                            "blacklists": {
                                                "type": "array",
                                                "items": {
                                                    "type": "object",
                                                    "properties": {
                                                        "name": {"type": "string", "description": "黑名单名称"},
                                                        "url": {"type": "string", "description": "黑名单URL"},
                                                        "enabled": {"type": "boolean", "description": "是否启用"}
                                                    }
                                                }
                                            }
                                        }
                                    },
                                    "example": {
                                        "blacklists": [
                                            {
                                                "name": "AdBlock List",
                                                "url": "https://example.com/ads.txt",
                                                "enabled": true
                                            }
                                        ]
                                    }
                                }
                            }
                        },
                        "responses": {
                            "200": {
                                "description": "成功更新黑名单列表",
                                "content": {
                                    "application/json": {
                                        "schema": {
                                            "type": "object",
                                            "properties": {
                                                "status": {"type": "string", "description": "操作状态"}
                                            }
                                        },
                                        "example": {"status": "success"}
                                    }
                                }
                            },
                            "400": {
                                "description": "请求参数错误",
                                "content": {
                                    "application/json": {
                                        "schema": {
                                            "type": "object",
                                            "properties": {
                                                "error": {"type": "string", "description": "错误信息"}
                                            }
                                        },
                                        "example": {"error": "无效的请求体"}
                                    }
                                }
                            },
                            "500": {
                                "description": "服务器内部错误",
                                "content": {
                                    "application/json": {
                                        "schema": {
                                            "type": "object",
                                            "properties": {
                                                "error": {"type": "string", "description": "错误信息"}
                                            }
                                        },
                                        "example": {"error": "更新黑名单列表失败"}
                                    }
                                }
                            }
                        }
                    }
                },
                "/shield/localrules": {
                    "get": {
                        "summary": "获取自定义规则",
                        "description": "获取Shield的自定义规则列表。",
                        "deprecated": false,
                        "tags": ["shield"],
                        "responses": {
                            "200": {
                                "description": "成功获取自定义规则",
                                "content": {
                                    "application/json": {
                                        "schema": {
                                            "type": "array",
                                            "items": {
                                                "type": "object",
                                                "properties": {
                                                    "id": {"type": "string", "description": "规则ID"},
                                                    "pattern": {"type": "string", "description": "规则模式"},
                                                    "description": {"type": "string", "description": "规则描述"}
                                                }
                                            }
                                        },
                                        "example": [
                                            {"id": "1", "pattern": ".*malware.*", "description": "恶意软件域名"}
                                        ]
                                    }
                                }
                            }
                        }
                    },
                    "post": {
                        "summary": "添加自定义规则",
                        "description": "添加新的自定义规则。",
                        "deprecated": false,
                        "tags": ["shield"],
                        "requestBody": {
                            "required": true,
                            "content": {
                                "application/json": {
                                    "schema": {
                                        "type": "object",
                                        "properties": {
                                            "pattern": {"type": "string", "description": "规则模式"},
                                            "description": {"type": "string", "description": "规则描述"}
                                        }
                                    },
                                    "example": {
                                        "pattern": ".*ad\.com$",
                                        "description": "广告域名"
                                    }
                                }
                            }
                        },
                        "responses": {
                            "200": {
                                "description": "成功添加规则",
                                "content": {
                                    "application/json": {
                                        "schema": {
                                            "type": "object",
                                            "properties": {
                                                "status": {"type": "string", "description": "操作状态"}
                                            }
                                        },
                                        "example": {"status": "success"}
                                    }
                                }
                            }
                        }
                    },
                    "delete": {
                        "summary": "删除自定义规则",
                        "description": "删除指定的自定义规则。",
                        "deprecated": false,
                        "tags": ["shield"],
                        "parameters": [
                            {
                                "name": "id",
                                "in": "query",
                                "required": true,
                                "schema": {
                                    "type": "string"
                                },
                                "description": "规则ID"
                            }
                        ],
                        "responses": {
                            "200": {
                                "description": "成功删除规则",
                                "content": {
                                    "application/json": {
                                        "schema": {
                                            "type": "object",
                                            "properties": {
                                                "status": {"type": "string", "description": "操作状态"}
                                            }
                                        },
                                        "example": {"status": "success"}
                                    }
                                }
                            }
                        }
                    }
                },
                "/shield/remoterules": {
                    "get": {
                        "summary": "获取远程规则状态",
                        "description": "获取远程规则的更新状态和版本信息。",
                        "deprecated": false,
                        "tags": ["shield"],
                        "responses": {
                            "200": {
                                "description": "成功获取远程规则",
                                "content": {
                                    "application/json": {
                                        "schema": {
                                            "type": "array",
                                            "items": {
                                                "type": "object",
                                                "properties": {
                                                    "id": {"type": "string", "description": "规则ID"},
                                                    "pattern": {"type": "string", "description": "规则模式"},
                                                    "source": {"type": "string", "description": "规则来源"}
                                                }
                                            }
                                        },
                                        "example": [
                                            {"id": "1001", "pattern": ".*phishing.*", "source": "malwarelist"}
                                        ]
                                    }
                                }
                            }
                        }
                    }
                },
                "/shield/hosts": {
                    "get": {
                        "summary": "获取hosts内容",
                        "description": "获取当前的hosts文件内容。",
                        "deprecated": false,
                        "tags": ["shield"],
                        "responses": {
                            "200": {
                                "description": "成功获取hosts列表",
                                "content": {
                                    "application/json": {
                                        "schema": {
                                            "type": "array",
                                            "items": {
                                                "type": "object",
                                                "properties": {
                                                    "ip": {"type": "string", "description": "IP地址"},
                                                    "domain": {"type": "string", "description": "域名"}
                                                }
                                            }
                                        },
                                        "example": [
                                            {"ip": "127.0.0.1", "domain": "localhost"}
                                        ]
                                    }
                                }
                            }
                        }
                    },
                    "post": {
                        "summary": "添加hosts记录",
                        "description": "添加新的hosts记录。",
                        "deprecated": false,
                        "tags": ["shield"],
                        "requestBody": {
                            "required": true,
                            "content": {
                                "application/json": {
                                    "schema": {
                                        "type": "object",
                                        "required": ["ip", "domain"],
                                        "properties": {
                                            "ip": {"type": "string", "description": "IP地址"},
                                            "domain": {"type": "string", "description": "域名"}
                                        }
                                    },
                                    "example": {
                                        "ip": "127.0.0.1",
                                        "domain": "example.com"
                                    }
                                }
                            }
                        },
                        "responses": {
                            "200": {
                                "description": "成功添加hosts记录",
                                "content": {
                                    "application/json": {
                                        "schema": {
                                            "type": "object",
                                            "properties": {
                                                "status": {"type": "string", "description": "操作状态"}
                                            }
                                        },
                                        "example": {"status": "success"}
                                    }
                                }
                            },
                            "400": {
                                "description": "请求参数错误",
                                "content": {
                                    "application/json": {
                                        "schema": {
                                            "type": "object",
                                            "properties": {
                                                "error": {"type": "string", "description": "错误信息"}
                                            }
                                        },
                                        "example": {"error": "IP和域名是必填项"}
                                    }
                                }
                            },
                            "500": {
                                "description": "服务器内部错误",
                                "content": {
                                    "application/json": {
                                        "schema": {
                                            "type": "object",
                                            "properties": {
                                                "error": {"type": "string", "description": "错误信息"}
                                            }
                                        },
                                        "example": {"error": "添加hosts记录失败"}
                                    }
                                }
                            }
                        }
                    },
                    "delete": {
                        "summary": "删除hosts记录",
                        "description": "删除指定域名的hosts记录。",
                        "deprecated": false,
                        "tags": ["shield"],
                        "parameters": [
                            {
                                "name": "domain",
                                "in": "query",
                                "required": true,
                                "schema": {
                                    "type": "string"
                                },
                                "description": "要删除的域名"
                            }
                        ],
                        "responses": {
                            "200": {
                                "description": "成功删除hosts记录",
                                "content": {
                                    "application/json": {
                                        "schema": {
                                            "type": "object",
                                            "properties": {
                                                "status": {"type": "string", "description": "操作状态"}
                                            }
                                        },
                                        "example": {"status": "success"}
                                    }
                                }
                            },
                            "400": {
                                "description": "请求参数错误",
                                "content": {
                                    "application/json": {
                                        "schema": {
                                            "type": "object",
                                            "properties": {
                                                "error": {"type": "string", "description": "错误信息"}
                                            }
                                        },
                                        "example": {"error": "域名是必填项"}
                                    }
                                }
                            },
                            "500": {
                                "description": "服务器内部错误",
                                "content": {
                                    "application/json": {
                                        "schema": {
                                            "type": "object",
                                            "properties": {
                                                "error": {"type": "string", "description": "错误信息"}
                                            }
                                        },
                                        "example": {"error": "删除hosts记录失败"}
                                    }
                                }
                            }
                        }
                    }
                },
                "/dns/query": {
                    "post": {
                        "summary": "查询DNS记录",
                        "description": "查询指定域名的DNS记录，可以指定记录类型。",
                        "tags": ["dns"],
                        "requestBody": {
                            "required": true,
                            "content": {
                                "application/json": {
                                    "schema": {
                                        "type": "object",
                                        "properties": {
                                            "domain": {
                                                "type": "string",
                                                "description": "要查询的域名"
                                            },
                                            "recordType": {
                                                "type": "string",
                                                "description": "DNS记录类型（如A、AAAA、MX、NS等）"
                                            }
                                        },
                                        "required": ["domain"]
                                    },
                                    "example": {
                                        "domain": "example.com",
                                        "recordType": "A"
                                    }
                                }
                            }
                        },
                        "responses": {
                            "200": {
                                "description": "成功获取DNS记录",
                                "content": {
                                    "application/json": {
                                        "schema": {
                                            "type": "array",
                                            "items": {
                                                "type": "object",
                                                "properties": {
                                                    "Type": {
                                                        "type": "string",
                                                        "description": "DNS记录类型"
                                                    },
                                                    "Value": {
                                                        "type": "string",
                                                        "description": "DNS记录值"
                                                    },
                                                    "TTL": {
                                                        "type": "integer",
                                                        "description": "生存时间"
                                                    },
                                                    "Preference": {
                                                        "type": "integer",
                                                        "description": "MX记录优先级"
                                                    }
                                                }
                                            }
                                        },
                                        "example": [
                                            {"Type": "A", "Value": "93.184.216.34", "TTL": 172800},
                                            {"Type": "A", "Value": "93.184.216.35", "TTL": 172800}
                                        ]
                                    }
                                }
                            },
                            "400": {
                                "description": "请求参数错误",
                                "content": {
                                    "application/json": {
                                        "schema": {
                                            "type": "object",
                                            "properties": {
                                                "error": {
                                                    "type": "string",
                                                    "description": "错误信息"
                                                }
                                            }
                                        },
                                        "example": {
                                            "error": "Domain parameter is required"
                                        }
                                    }
                                }
                            }
                        }
                    }
                },
                "/status": {
                    "get": {
                        "summary": "获取服务器状态",
                        "description": "获取DNS服务器的状态信息，包括查询统计、运行时间等。",
                        "tags": ["server"],
                        "responses": {
                            "200": {
                                "description": "成功获取服务器状态",
                                "content": {
                                    "application/json": {
                                        "schema": {
                                            "type": "object",
                                            "properties": {
                                                "status": {"type": "string", "description": "服务器状态"},
                                                "queries": {"type": "integer", "description": "总查询次数"},
                                                "blocked": {"type": "integer", "description": "被阻止的查询次数"},
                                                "allowed": {"type": "integer", "description": "允许的查询次数"},
                                                "errors": {"type": "integer", "description": "错误查询次数"},
                                                "lastQuery": {"type": "string", "description": "最近一次查询时间"},
                                                "avgResponseTime": {"type": "number", "description": "平均响应时间(毫秒)"},
                                                "activeIPs": {"type": "integer", "description": "活跃IP数量"},
                                                "startTime": {"type": "string", "description": "服务器启动时间"},
                                                "uptime": {"type": "integer", "description": "运行时间(毫秒)"},
                                                "cpuUsage": {"type": "number", "description": "CPU使用率(百分比)"},
                                                "timestamp": {"type": "string", "description": "当前时间"}
                                            }
                                        },
                                        "example": {
                                            "status": "running",
                                            "queries": 1250,
                                            "blocked": 230,
                                            "allowed": 1020,
                                            "errors": 0,
                                            "lastQuery": "2023-07-15T14:30:45Z",
                                            "avgResponseTime": 12.5,
                                            "activeIPs": 2,
                                            "startTime": "2023-07-15T10:00:00Z",
                                            "uptime": 16200000,
                                            "cpuUsage": 0.15,
                                            "timestamp": "2023-07-15T14:30:45Z"
                                        }
                                    }
                                }
                            }
                        }
                    }
                },
                "/config": {
                    "get": {
                        "summary": "获取服务器配置",
                        "description": "获取DNS服务器的配置信息，包括Shield配置。",
                        "tags": ["server"],
                        "responses": {
                            "200": {
                                "description": "成功获取服务器配置",
                                "content": {
                                    "application/json": {
                                        "schema": {
                                            "type": "object",
                                            "properties": {
                                                "shield": {
                                                    "type": "object",
                                                    "properties": {
                                                        "blockMethod": {"type": "string", "description": "屏蔽方法"},
                                                        "customBlockIP": {"type": "string", "description": "自定义屏蔽IP"},
                                                        "blacklists": {"type": "array", "description": "黑名单列表", "items": {"type": "object"}},
                                                        "updateInterval": {"type": "integer", "description": "更新间隔(秒)"}
                                                    }
                                                }
                                            }
                                        },
                                        "example": {
                                            "shield": {
                                                "blockMethod": "NXDOMAIN",
                                                "customBlockIP": "",
                                                "blacklists": [
                                                    {
                                                        "name": "AdGuard DNS filter",
                                                        "url": "https://example.com/ads.txt",
                                                        "enabled": true
                                                    }
                                                ],
                                                "updateInterval": 3600
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "post": {
                        "summary": "更新服务器配置",
                        "description": "更新DNS服务器的配置信息，包括Shield配置。",
                        "tags": ["server"],
                        "requestBody": {
                            "required": true,
                            "content": {
                                "application/json": {
                                    "schema": {
                                        "type": "object",
                                        "properties": {
                                            "shield": {
                                                "type": "object",
                                                "properties": {
                                                    "blockMethod": {"type": "string", "description": "屏蔽方法"},
                                                    "customBlockIP": {"type": "string", "description": "自定义屏蔽IP"},
                                                    "blacklists": {"type": "array", "description": "黑名单列表", "items": {"type": "object"}},
                                                    "updateInterval": {"type": "integer", "description": "更新间隔(秒)"}
                                                }
                                            }
                                        }
                                    },
                                    "example": {
                                        "shield": {
                                            "blockMethod": "NXDOMAIN",
                                            "customBlockIP": "",
                                            "blacklists": [
                                                {
                                                    "name": "AdGuard DNS filter",
                                                    "url": "https://example.com/ads.txt",
                                                    "enabled": true
                                                }
                                            ],
                                            "updateInterval": 3600
                                        }
                                    }
                                }
                            }
                        },
                        "responses": {
                            "200": {
                                "description": "成功更新服务器配置",
                                "content": {
                                    "application/json": {
                                        "schema": {
                                            "type": "object",
                                            "properties": {
                                                "success": {"type": "boolean", "description": "是否成功"},
                                                "message": {"type": "string", "description": "操作信息"}
                                            }
                                        },
                                        "example": {
                                            "success": true,
                                            "message": "配置已更新"
                                        }
                                    }
                                }
                            },
                            "400": {
                                "description": "请求参数错误",
                                "content": {
                                    "application/json": {
                                        "schema": {
                                            "type": "object",
                                            "properties": {
                                                "error": {"type": "string", "description": "错误信息"}
                                            }
                                        },
                                        "example": {
                                            "error": "无效的请求体"
                                        }
                                    }
                                }
                            },
                            "500": {
                                "description": "服务器内部错误",
                                "content": {
                                    "application/json": {
                                        "schema": {
                                            "type": "object",
                                            "properties": {
                                                "error": {"type": "string", "description": "错误信息"}
                                            }
                                        },
                                        "example": {
                                            "error": "保存配置失败"
                                        }
                                    }
                                }
                            }
                        }
                    }
                },
                "/config/restart": {
                    "post": {
                        "summary": "重启服务器",
                        "description": "重启DNS服务器。",
                        "tags": ["server"],
                        "responses": {
                            "200": {
                                "description": "成功重启服务器",
                                "content": {
                                    "application/json": {
                                        "schema": {
                                            "type": "object",
                                            "properties": {
                                                "status": {"type": "string", "description": "操作状态"}
                                            }
                                        },
                                        "example": {"status": "success"}
                                    }
                                }
                            },
                            "500": {
                                "description": "服务器内部错误",
                                "content": {
                                    "application/json": {
                                        "schema": {
                                            "type": "object",
                                            "properties": {
                                                "error": {"type": "string", "description": "错误信息"}
                                            }
                                        },
                                        "example": {"error": "重启服务器失败"}
                                    }
                                }
                            }
                        }
                    }
                }
            },
            "tags": [
                {
                    "name": "auth",
                    "description": "认证相关API"
                },
                {
                    "name": "stats",
                    "description": "统计相关API"
                },
                {
                    "name": "shield",
                    "description": "Shield相关API"
                },
                {
                    "name": "server",
                    "description": "服务器相关API"
                },
                {
                    "name": "logs",
                    "description": "日志相关API"
                }
            ]
        };

        // 初始化Swagger UI
        window.onload = function() {
            const ui = SwaggerUIBundle({
                spec: swaggerDocument,
                dom_id: '#swagger-ui',
                deepLinking: true,
                presets: [
                    SwaggerUIBundle.presets.apis,
                    SwaggerUIStandalonePreset
                ],
                plugins: [
                    SwaggerUIBundle.plugins.DownloadUrl
                ],
                layout: "StandaloneLayout"
            });

            window.ui = ui;
        };