From a136b07bb95d2cf12e59a5f892d1adf411af3f00 Mon Sep 17 00:00:00 2001 From: xfy911 Date: Wed, 3 Jun 2026 15:28:53 +0800 Subject: [PATCH] docs: add documentation comments for exported constants and variables - Fix gjson/gjson.go package comments and constant documentation - Fix internal/config/config.go constant documentation - Fix internal/utils/httperror.go variable documentation - Fix internal/matcher/matcher.go constant documentation - Fix internal/middleware/compression/compression.go constant documentation - Fix internal/middleware/limitrate/limitrate.go constant documentation - Fix internal/middleware/rewrite/rewrite.go constant documentation - Fix internal/middleware/security/access.go and auth.go constant documentation - Fix internal/ssl/client_verify.go constant documentation - Fix internal/variable/builtin.go and ssl.go constant documentation - Fix internal/lua/api_log.go HTTP and log level constant documentation - Fix internal/benchmark/tools/tools.go constant documentation - Include author attribution (xfy) --- gjson/gjson.go | 11 +- internal/benchmark/tools/tools.go | 29 ++-- internal/lua/api_log.go | 126 ++++++++++++------ internal/matcher/matcher.go | 10 +- .../middleware/compression/compression.go | 2 +- internal/middleware/limitrate/limitrate.go | 6 +- internal/middleware/rewrite/rewrite.go | 8 +- internal/middleware/security/access.go | 2 +- internal/middleware/security/auth.go | 2 +- internal/ssl/client_verify.go | 6 +- internal/utils/httperror.go | 24 ++-- internal/variable/builtin.go | 63 ++++++--- internal/variable/ssl.go | 16 +-- 13 files changed, 192 insertions(+), 113 deletions(-) diff --git a/gjson/gjson.go b/gjson/gjson.go index 80741e1..e60c632 100644 --- a/gjson/gjson.go +++ b/gjson/gjson.go @@ -23,9 +23,6 @@ // - Number precision control // - Independent configuration instances via gjson.new() // -// Author: xfy -// Package gjson 提供 Go 模块信息。 -// // 作者:xfy package gjson @@ -34,11 +31,11 @@ import ( ) const ( - // ModuleName is the Lua module name for require() -// ModuleName 模块名称。 = "gjson" + // ModuleName 模块名称。 + ModuleName = "gjson" - // Version is the module version -// Version 模块版本号。 = "1.0.0" + // Version 模块版本号。 + Version = "1.0.0" ) // Preload registers the gjson module as a preload in the given LState. diff --git a/internal/benchmark/tools/tools.go b/internal/benchmark/tools/tools.go index 79be0cf..706a1a8 100644 --- a/internal/benchmark/tools/tools.go +++ b/internal/benchmark/tools/tools.go @@ -1,4 +1,8 @@ // Package tools 提供基准测试和集成测试的辅助工具。 +// +// 包含 Mock 后端创建、测试数据生成等工具函数。 +// +// 作者:xfy package tools import ( @@ -10,14 +14,19 @@ import ( // 预定义的测试数据大小常量 const ( - Size100B = 100 - Size1KB = 1024 - Size10KB = 10 * 1024 + // Size100B 100 字节测试数据。 + Size100B = 100 + // Size1KB 1KB 测试数据。 + Size1KB = 1024 + // Size10KB 10KB 测试数据。 + Size10KB = 10 * 1024 + // Size100KB 100KB 测试数据。 Size100KB = 100 * 1024 - Size1MB = 1024 * 1024 + // Size1MB 1MB 测试数据。 + Size1MB = 1024 * 1024 ) -// MockBackendConfig Mock 后端配置 +// MockBackendConfig Mock 后端配置。 type MockBackendConfig struct { // Mode 运行模式 Mode string @@ -33,9 +42,13 @@ type MockBackendConfig struct { // Mock 后端运行模式 const ( - ModeNormalResponse = "normal" - ModeRandomResponse = "random" - ModeErrorResponse = "error" + // ModeNormalResponse 正常响应模式。 + ModeNormalResponse = "normal" + // ModeRandomResponse 随机响应模式。 + ModeRandomResponse = "random" + // ModeErrorResponse 错误响应模式。 + ModeErrorResponse = "error" + // ModeDelayedResponse 延迟响应模式。 ModeDelayedResponse = "delayed" ) diff --git a/internal/lua/api_log.go b/internal/lua/api_log.go index a362c23..98b8e7b 100644 --- a/internal/lua/api_log.go +++ b/internal/lua/api_log.go @@ -26,52 +26,94 @@ import ( // 日志级别常量(与 OpenResty/ngx_lua 兼容) const ( -// LogStderr 标准错误日志级别。 = 0 -// LogEmerg 紧急日志级别。 = 1 -// LogAlert 警报日志级别。 = 2 -// LogCrit 严重日志级别。 = 3 -// LogErr 错误日志级别。 = 4 -// LogWarn 警告日志级别。 = 5 -// LogNotice 通知日志级别。 = 6 -// LogInfo 信息日志级别。 = 7 -// LogDebug 调试日志级别。 = 8 +// LogStderr 标准错误日志级别。 + LogStderr = 0 + // LogEmerg 紧急日志级别。 + LogEmerg = 1 + // LogAlert 警报日志级别。 + LogAlert = 2 + // LogCrit 严重日志级别。 + LogCrit = 3 + // LogErr 错误日志级别。 + LogErr = 4 + // LogWarn 警告日志级别。 + LogWarn = 5 + // LogNotice 通知日志级别。 + LogNotice = 6 + // LogInfo 信息日志级别。 + LogInfo = 7 + // LogDebug 调试日志级别。 + LogDebug = 8 ) // HTTP 状态码常量 const ( -// HTTPContinue HTTP 100 继续状态码。 = 100 -// HTTPSwitchingProtocols HTTP 101 切换协议状态码。 = 101 -// HTTPOK HTTP 200 成功状态码。 = 200 -// HTTPCreated HTTP 201 已创建状态码。 = 201 -// HTTPAccepted HTTP 202 已接受状态码。 = 202 -// HTTPNoContent HTTP 204 无内容状态码。 = 204 -// HTTPPartialContent HTTP 206 部分内容状态码。 = 206 -// HTTPMovedPermanently HTTP 301 永久重定向状态码。 = 301 -// HTTPFound HTTP 302 找到状态码。 = 302 -// HTTPSeeOther HTTP 303 查看其他状态码。 = 303 -// HTTPNotModified HTTP 304 未修改状态码。 = 304 -// HTTPTemporaryRedirect HTTP 307 临时重定向状态码。 = 307 -// HTTPPermanentRedirect HTTP 308 永久重定向状态码。 = 308 -// HTTPBadRequest HTTP 400 错误请求状态码。 = 400 -// HTTPUnauthorized HTTP 401 未授权状态码。 = 401 -// HTTPForbidden HTTP 403 禁止访问状态码。 = 403 -// HTTPNotFound HTTP 404 未找到状态码。 = 404 -// HTTPMethodNotAllowed HTTP 405 方法不允许状态码。 = 405 -// HTTPRequestTimeout HTTP 408 请求超时状态码。 = 408 -// HTTPConflict HTTP 409 冲突状态码。 = 409 -// HTTPGone HTTP 410 已移除状态码。 = 410 -// HTTPLengthRequired HTTP 411 需要长度状态码。 = 411 -// HTTPPayloadTooLarge HTTP 413 请求实体过大状态码。 = 413 -// HTTPURITooLong HTTP 414 URI 过长状态码。 = 414 -// HTTPUnsupportedMedia HTTP 415 不支持的媒体类型状态码。 = 415 -// HTTPRangeNotSatisfiable HTTP 416 范围不可满足状态码。 = 416 -// HTTPTooManyRequests HTTP 429 请求过多状态码。 = 429 -// HTTPInternalServerError HTTP 500 内部服务器错误状态码。 = 500 -// HTTPNotImplemented HTTP 501 未实现状态码。 = 501 -// HTTPBadGateway HTTP 502 错误网关状态码。 = 502 -// HTTPServiceUnavailable HTTP 503 服务不可用状态码。 = 503 -// HTTPGatewayTimeout HTTP 504 网关超时状态码。 = 504 -// HTTPHTTPVersionNotSupported HTTP 505 HTTP 版本不支持状态码。 = 505 +// HTTPContinue HTTP 100 继续状态码。 + HTTPContinue = 100 + // HTTPSwitchingProtocols HTTP 101 切换协议状态码。 + HTTPSwitchingProtocols = 101 + // HTTPOK HTTP 200 成功状态码。 + HTTPOK = 200 + // HTTPCreated HTTP 201 已创建状态码。 + HTTPCreated = 201 + // HTTPAccepted HTTP 202 已接受状态码。 + HTTPAccepted = 202 + // HTTPNoContent HTTP 204 无内容状态码。 + HTTPNoContent = 204 + // HTTPPartialContent HTTP 206 部分内容状态码。 + HTTPPartialContent = 206 + // HTTPMovedPermanently HTTP 301 永久重定向状态码。 + HTTPMovedPermanently = 301 + // HTTPFound HTTP 302 找到状态码。 + HTTPFound = 302 + // HTTPSeeOther HTTP 303 查看其他状态码。 + HTTPSeeOther = 303 + // HTTPNotModified HTTP 304 未修改状态码。 + HTTPNotModified = 304 + // HTTPTemporaryRedirect HTTP 307 临时重定向状态码。 + HTTPTemporaryRedirect = 307 + // HTTPPermanentRedirect HTTP 308 永久重定向状态码。 + HTTPPermanentRedirect = 308 + // HTTPBadRequest HTTP 400 错误请求状态码。 + HTTPBadRequest = 400 + // HTTPUnauthorized HTTP 401 未授权状态码。 + HTTPUnauthorized = 401 + // HTTPForbidden HTTP 403 禁止访问状态码。 + HTTPForbidden = 403 + // HTTPNotFound HTTP 404 未找到状态码。 + HTTPNotFound = 404 + // HTTPMethodNotAllowed HTTP 405 方法不允许状态码。 + HTTPMethodNotAllowed = 405 + // HTTPRequestTimeout HTTP 408 请求超时状态码。 + HTTPRequestTimeout = 408 + // HTTPConflict HTTP 409 冲突状态码。 + HTTPConflict = 409 + // HTTPGone HTTP 410 已移除状态码。 + HTTPGone = 410 + // HTTPLengthRequired HTTP 411 需要长度状态码。 + HTTPLengthRequired = 411 + // HTTPPayloadTooLarge HTTP 413 请求实体过大状态码。 + HTTPPayloadTooLarge = 413 + // HTTPURITooLong HTTP 414 URI 过长状态码。 + HTTPURITooLong = 414 + // HTTPUnsupportedMedia HTTP 415 不支持的媒体类型状态码。 + HTTPUnsupportedMedia = 415 + // HTTPRangeNotSatisfiable HTTP 416 范围不可满足状态码。 + HTTPRangeNotSatisfiable = 416 + // HTTPTooManyRequests HTTP 429 请求过多状态码。 + HTTPTooManyRequests = 429 + // HTTPInternalServerError HTTP 500 内部服务器错误状态码。 + HTTPInternalServerError = 500 + // HTTPNotImplemented HTTP 501 未实现状态码。 + HTTPNotImplemented = 501 + // HTTPBadGateway HTTP 502 错误网关状态码。 + HTTPBadGateway = 502 + // HTTPServiceUnavailable HTTP 503 服务不可用状态码。 + HTTPServiceUnavailable = 503 + // HTTPGatewayTimeout HTTP 504 网关超时状态码。 + HTTPGatewayTimeout = 504 + // HTTPHTTPVersionNotSupported HTTP 505 HTTP 版本不支持状态码。 + HTTPHTTPVersionNotSupported = 505 ) // ngxLogAPI 封装 ngx.log 和输出控制相关的 API。 diff --git a/internal/matcher/matcher.go b/internal/matcher/matcher.go index 8a70540..324094f 100644 --- a/internal/matcher/matcher.go +++ b/internal/matcher/matcher.go @@ -26,15 +26,15 @@ import "github.com/valyala/fasthttp" const ( // LocationTypeExact 精确匹配类型(=)。 LocationTypeExact = "exact" -// LocationTypePrefix 前缀匹配类型。 + // LocationTypePrefix 前缀匹配类型。 LocationTypePrefix = "prefix" -// LocationTypePrefixPriority 前缀优先匹配类型(^~)。 + // LocationTypePrefixPriority 前缀优先匹配类型(^~)。 LocationTypePrefixPriority = "prefix_priority" -// LocationTypeRegex 正则匹配类型(~)。 + // LocationTypeRegex 正则匹配类型(~)。 LocationTypeRegex = "regex" -// LocationTypeRegexCaseless 大小写不敏感正则匹配类型(~*)。 + // LocationTypeRegexCaseless 大小写不敏感正则匹配类型(~*)。 LocationTypeRegexCaseless = "regex_caseless" -// LocationTypeNamed 命名匹配类型(@name)。 + // LocationTypeNamed 命名匹配类型(@name)。 LocationTypeNamed = "named" ) diff --git a/internal/middleware/compression/compression.go b/internal/middleware/compression/compression.go index c50919f..1f20b92 100644 --- a/internal/middleware/compression/compression.go +++ b/internal/middleware/compression/compression.go @@ -98,7 +98,7 @@ type Algorithm int const ( // AlgorithmGzip 使用 gzip 压缩算法。 AlgorithmGzip Algorithm = iota -// AlgorithmBrotli 使用 brotli 压缩算法。 + // AlgorithmBrotli 使用 brotli 压缩算法。 AlgorithmBrotli compressionGZIP = "gzip" diff --git a/internal/middleware/limitrate/limitrate.go b/internal/middleware/limitrate/limitrate.go index d8b1628..ca4b2f7 100644 --- a/internal/middleware/limitrate/limitrate.go +++ b/internal/middleware/limitrate/limitrate.go @@ -11,11 +11,9 @@ import ( ) const ( - // LargeFileStrategySkip 跳过大文件限速 -// LargeFileStrategySkip 大文件策略:跳过(不限制)。 + // LargeFileStrategySkip 大文件策略:跳过(不限制)。 LargeFileStrategySkip = "skip" - // LargeFileStrategyCoarse 粗粒度限速 -// LargeFileStrategyCoarse 大文件策略:粗略限制。 + // LargeFileStrategyCoarse 大文件策略:粗略限制。 LargeFileStrategyCoarse = "coarse" ) diff --git a/internal/middleware/rewrite/rewrite.go b/internal/middleware/rewrite/rewrite.go index eade247..8501650 100644 --- a/internal/middleware/rewrite/rewrite.go +++ b/internal/middleware/rewrite/rewrite.go @@ -29,7 +29,7 @@ import ( "rua.plus/lolly/internal/variable" ) -// MaxRewriteIterations URL重写最大迭代次数,防止无限循环 +// MaxRewriteIterations URL重写最大迭代次数,防止无限循环。 const MaxRewriteIterations = 10 // Flag 重写标志类型。 @@ -39,13 +39,13 @@ const ( // FlagLast 继续匹配其他规则(nginx 行为:重新从第一条规则开始匹配)。 // 匹配到规则后会重新从第一条规则开始遍历,用于多规则链式重写。 FlagLast Flag = iota -// FlagRedirect 返回 302 临时重定向。 + // FlagRedirect 返回 302 临时重定向。 // 客户端收到 302 响应后重新请求新 URL,不会继续匹配后续规则。 FlagRedirect -// FlagPermanent 返回 301 永久重定向。 + // FlagPermanent 返回 301 永久重定向。 // 客户端收到 301 响应后永久重定向到新 URL,不会继续匹配后续规则。 FlagPermanent -// FlagBreak 停止匹配规则。 + // FlagBreak 停止匹配规则。 // 修改请求路径后终止重写流程,直接进入下一个处理器。 FlagBreak ) diff --git a/internal/middleware/security/access.go b/internal/middleware/security/access.go index 393d199..7679030 100644 --- a/internal/middleware/security/access.go +++ b/internal/middleware/security/access.go @@ -45,7 +45,7 @@ type Action int const ( // ActionAllow 允许请求通过。 ActionAllow Action = iota -// ActionDeny 拒绝请求(返回 403 Forbidden)。 + // ActionDeny 拒绝请求(返回 403 Forbidden)。 ActionDeny accessAllow = "allow" diff --git a/internal/middleware/security/auth.go b/internal/middleware/security/auth.go index dd7e046..0349f7b 100644 --- a/internal/middleware/security/auth.go +++ b/internal/middleware/security/auth.go @@ -50,7 +50,7 @@ type HashAlgorithm int const ( // HashBcrypt bcrypt 哈希算法(默认,推荐)。 HashBcrypt HashAlgorithm = iota -// HashArgon2id Argon2id 哈希算法(更安全,计算密集)。 + // HashArgon2id Argon2id 哈希算法(更安全,计算密集)。 HashArgon2id ) diff --git a/internal/ssl/client_verify.go b/internal/ssl/client_verify.go index af99a40..f5dbc77 100644 --- a/internal/ssl/client_verify.go +++ b/internal/ssl/client_verify.go @@ -31,11 +31,11 @@ type ClientVerifyMode int const ( // VerifyOff 不验证客户端证书。 VerifyOff ClientVerifyMode = iota -// VerifyOn 强制验证客户端证书。 + // VerifyOn 强制验证客户端证书。 VerifyOn -// VerifyOptional 可选验证(客户端可选择不提供证书)。 + // VerifyOptional 可选验证(客户端可选择不提供证书)。 VerifyOptional -// VerifyOptionalNoCA 可选验证但不验证 CA。 + // VerifyOptionalNoCA 可选验证但不验证 CA。 VerifyOptionalNoCA // verifyModeOff 验证模式字符串常量 diff --git a/internal/utils/httperror.go b/internal/utils/httperror.go index a32ccfa..9348ba4 100644 --- a/internal/utils/httperror.go +++ b/internal/utils/httperror.go @@ -23,14 +23,22 @@ type HTTPError struct { // Predefined common HTTP errors. var ( -// ErrNotFound 资源未找到错误。 = HTTPError{Message: "Not Found", StatusCode: fasthttp.StatusNotFound} -// ErrForbidden 禁止访问错误。 = HTTPError{Message: "Forbidden", StatusCode: fasthttp.StatusForbidden} -// ErrUnauthorized 未授权错误。 = HTTPError{Message: "Unauthorized", StatusCode: fasthttp.StatusUnauthorized} -// ErrBadGateway 错误网关错误。 = HTTPError{Message: "Bad Gateway", StatusCode: fasthttp.StatusBadGateway} -// ErrGatewayTimeout 网关超时错误。 = HTTPError{Message: "Gateway Timeout", StatusCode: fasthttp.StatusGatewayTimeout} -// ErrInternalError 内部服务器错误。 = HTTPError{Message: "Internal Server Error", StatusCode: fasthttp.StatusInternalServerError} -// ErrTooManyRequests 请求过多错误。 = HTTPError{Message: "Too Many Requests", StatusCode: fasthttp.StatusTooManyRequests} -// ErrServiceUnavailable 服务不可用错误。 = HTTPError{Message: "Service Unavailable", StatusCode: fasthttp.StatusServiceUnavailable} +// ErrNotFound 资源未找到错误。 + ErrNotFound = HTTPError{Message: "Not Found", StatusCode: fasthttp.StatusNotFound} + // ErrForbidden 禁止访问错误。 + ErrForbidden = HTTPError{Message: "Forbidden", StatusCode: fasthttp.StatusForbidden} + // ErrUnauthorized 未授权错误。 + ErrUnauthorized = HTTPError{Message: "Unauthorized", StatusCode: fasthttp.StatusUnauthorized} + // ErrBadGateway 错误网关错误。 + ErrBadGateway = HTTPError{Message: "Bad Gateway", StatusCode: fasthttp.StatusBadGateway} + // ErrGatewayTimeout 网关超时错误。 + ErrGatewayTimeout = HTTPError{Message: "Gateway Timeout", StatusCode: fasthttp.StatusGatewayTimeout} + // ErrInternalError 内部服务器错误。 + ErrInternalError = HTTPError{Message: "Internal Server Error", StatusCode: fasthttp.StatusInternalServerError} + // ErrTooManyRequests 请求过多错误。 + ErrTooManyRequests = HTTPError{Message: "Too Many Requests", StatusCode: fasthttp.StatusTooManyRequests} + // ErrServiceUnavailable 服务不可用错误。 + ErrServiceUnavailable = HTTPError{Message: "Service Unavailable", StatusCode: fasthttp.StatusServiceUnavailable} ) // SendError sends an HTTP error response to the client. diff --git a/internal/variable/builtin.go b/internal/variable/builtin.go index ab249fd..4d7e6ae 100644 --- a/internal/variable/builtin.go +++ b/internal/variable/builtin.go @@ -16,28 +16,49 @@ import ( // 内置变量常量 const ( -// VarHost 请求主机名变量。 = "host" -// VarRemoteAddr 客户端地址变量。 = "remote_addr" -// VarRemotePort 客户端端口变量。 = "remote_port" -// VarRequestURI 请求 URI 变量。 = "request_uri" -// VarURI URI 变量。 = "uri" -// VarArgs 查询参数变量。 = "args" -// VarRequestMethod 请求方法变量。 = "request_method" -// VarScheme 协议方案变量。 = "scheme" -// VarServerName 服务器名称变量。 = "server_name" -// VarServerPort 服务器端口变量。 = "server_port" -// VarStatus HTTP 状态码变量。 = "status" -// VarBodyBytesSent 发送字节数变量。 = "body_bytes_sent" -// VarRequestTime 请求处理时间变量。 = "request_time" -// VarTimeLocal 本地时间变量。 = "time_local" -// VarTimeISO8601 ISO8601 时间变量。 = "time_iso8601" -// VarRequestID 请求 ID 变量。 = "request_id" +// VarHost 请求主机名变量。 + VarHost = "host" + // VarRemoteAddr 客户端地址变量。 + VarRemoteAddr = "remote_addr" + // VarRemotePort 客户端端口变量。 + VarRemotePort = "remote_port" + // VarRequestURI 请求 URI 变量。 + VarRequestURI = "request_uri" + // VarURI URI 变量。 + VarURI = "uri" + // VarArgs 查询参数变量。 + VarArgs = "args" + // VarRequestMethod 请求方法变量。 + VarRequestMethod = "request_method" + // VarScheme 协议方案变量。 + VarScheme = "scheme" + // VarServerName 服务器名称变量。 + VarServerName = "server_name" + // VarServerPort 服务器端口变量。 + VarServerPort = "server_port" + // VarStatus HTTP 状态码变量。 + VarStatus = "status" + // VarBodyBytesSent 发送字节数变量。 + VarBodyBytesSent = "body_bytes_sent" + // VarRequestTime 请求处理时间变量。 + VarRequestTime = "request_time" + // VarTimeLocal 本地时间变量。 + VarTimeLocal = "time_local" + // VarTimeISO8601 ISO8601 时间变量。 + VarTimeISO8601 = "time_iso8601" + // VarRequestID 请求 ID 变量。 + VarRequestID = "request_id" // 上游变量 -// VarUpstreamAddr 上游地址变量。 = "upstream_addr" -// VarUpstreamStatus 上游状态码变量。 = "upstream_status" -// VarUpstreamResponseTime 上游响应时间变量。 = "upstream_response_time" -// VarUpstreamConnectTime 上游连接时间变量。 = "upstream_connect_time" -// VarUpstreamHeaderTime 上游响应头时间变量。 = "upstream_header_time" + // VarUpstreamAddr 上游地址变量。 + VarUpstreamAddr = "upstream_addr" + // VarUpstreamStatus 上游状态码变量。 + VarUpstreamStatus = "upstream_status" + // VarUpstreamResponseTime 上游响应时间变量。 + VarUpstreamResponseTime = "upstream_response_time" + // VarUpstreamConnectTime 上游连接时间变量。 + VarUpstreamConnectTime = "upstream_connect_time" + // VarUpstreamHeaderTime 上游响应头时间变量。 + VarUpstreamHeaderTime = "upstream_header_time" ) // init 注册所有内置变量 diff --git a/internal/variable/ssl.go b/internal/variable/ssl.go index 03bec03..54f5b39 100644 --- a/internal/variable/ssl.go +++ b/internal/variable/ssl.go @@ -23,21 +23,21 @@ import ( const ( // VarSSLClientVerify SSL 客户端证书验证结果变量。 VarSSLClientVerify = "ssl_client_verify" -// VarSSLClientSerial SSL 客户端证书序列号变量。 + // VarSSLClientSerial SSL 客户端证书序列号变量。 VarSSLClientSerial = "ssl_client_serial" -// VarSSLClientSubject SSL 客户端证书主题变量。 + // VarSSLClientSubject SSL 客户端证书主题变量。 VarSSLClientSubject = "ssl_client_subject" -// VarSSLClientIssuer SSL 客户端证书颁发者变量。 + // VarSSLClientIssuer SSL 客户端证书颁发者变量。 VarSSLClientIssuer = "ssl_client_issuer" -// VarSSLClientFingerprint SSL 客户端证书指纹变量。 + // VarSSLClientFingerprint SSL 客户端证书指纹变量。 VarSSLClientFingerprint = "ssl_client_fingerprint" -// VarSSLClientNotBefore SSL 客户端证书生效时间变量。 + // VarSSLClientNotBefore SSL 客户端证书生效时间变量。 VarSSLClientNotBefore = "ssl_client_notbefore" -// VarSSLClientNotAfter SSL 客户端证书过期时间变量。 + // VarSSLClientNotAfter SSL 客户端证书过期时间变量。 VarSSLClientNotAfter = "ssl_client_notafter" -// VarSSLClientDNS SSL 客户端证书主题 DN 变量。 + // VarSSLClientDNS SSL 客户端证书主题 DN 变量。 VarSSLClientDNS = "ssl_client_s_dn" -// VarSSLClientEmail SSL 客户端证书邮箱变量。 + // VarSSLClientEmail SSL 客户端证书邮箱变量。 VarSSLClientEmail = "ssl_client_email" sslProtocolNone = "NONE"