package config import "fmt" // ServerConfig HTTP 服务端配置 type ServerConfig struct { Host string `mapstructure:"host"` Port int `mapstructure:"port"` Mode string `mapstructure:"mode"` // debug/release FrontendURL string `mapstructure:"frontend_url"` // 前端基础 URL,用于生成邮件中的外部链接 ReadHeaderTimeout int `mapstructure:"read_header_timeout"` // 读取请求头超时(秒) IdleTimeout int `mapstructure:"idle_timeout"` // 空闲连接超时(秒) TrustedProxies []string `mapstructure:"trusted_proxies"` // 可信代理列表(CIDR/IP) MaxRequestBodySize int64 `mapstructure:"max_request_body_size"` // 全局最大请求体限制 H2C H2CConfig `mapstructure:"h2c"` // HTTP/2 Cleartext 配置 } // H2CConfig HTTP/2 Cleartext 配置 type H2CConfig struct { Enabled bool `mapstructure:"enabled"` // 是否启用 H2C MaxConcurrentStreams uint32 `mapstructure:"max_concurrent_streams"` // 最大并发流数量 IdleTimeout int `mapstructure:"idle_timeout"` // 空闲超时(秒) MaxReadFrameSize int `mapstructure:"max_read_frame_size"` // 最大帧大小(字节) MaxUploadBufferPerConnection int `mapstructure:"max_upload_buffer_per_connection"` // 每个连接的上传缓冲区(字节) MaxUploadBufferPerStream int `mapstructure:"max_upload_buffer_per_stream"` // 每个流的上传缓冲区(字节) } // CORSConfig 跨域配置 type CORSConfig struct { AllowedOrigins []string `mapstructure:"allowed_origins"` AllowCredentials bool `mapstructure:"allow_credentials"` } // ConcurrencyConfig 并发配置 type ConcurrencyConfig struct { // PingInterval: 并发等待期间的 SSE ping 间隔(秒) PingInterval int `mapstructure:"ping_interval"` } func (s ServerConfig) Address() string { return fmt.Sprintf("%s:%d", s.Host, s.Port) }