d40b9b53c2
- 添加详细的错误日志记录,包括请求读取、渠道选择、请求构建和响应处理的失败情况 - 统一AI接口请求失败返回消息为"AI 接口请求失败" - 添加对上游响应状态码>=400的检查和错误处理 - 在JWT解析中验证签名方法有效性,防止无效登录状态 - 移除JWT密钥警告日志,改为运行时生成随机密钥 - 调整应用配置模态框中云端和本地选项的显示顺序 - 添加图片生成元数据记录生成类型、模型、尺寸、质量和参考图等信息 - 实现空图片节点直接生成图片而不保留空框的功能 - 完善图片重试逻辑,优先使用保存的元数据进行重试 - 添加参考图片丢失时的错误提示 - 修复图片节点样式圆角显示问题 - 更新AI代理路径为/api/v1/*保持OpenAI风格 - 添加系统设置页面的安全警告提示
46 lines
1.1 KiB
Go
46 lines
1.1 KiB
Go
package config
|
|
|
|
import (
|
|
"crypto/rand"
|
|
"encoding/base64"
|
|
"strings"
|
|
|
|
"github.com/caarlos0/env/v11"
|
|
"github.com/joho/godotenv"
|
|
)
|
|
|
|
type Config struct {
|
|
Port string `env:"PORT" envDefault:"8080"`
|
|
AdminUsername string `env:"ADMIN_USERNAME" envDefault:"admin"`
|
|
AdminPassword string `env:"ADMIN_PASSWORD" envDefault:"infinite-canvas"`
|
|
JWTSecret string `env:"JWT_SECRET" envDefault:"infinite-canvas"`
|
|
JWTExpireHours int `env:"JWT_EXPIRE_HOURS" envDefault:"168"`
|
|
StorageDriver string `env:"STORAGE_DRIVER" envDefault:"sqlite"`
|
|
DatabaseDSN string `env:"DATABASE_DSN" envDefault:"data/infinite-canvas.db"`
|
|
}
|
|
|
|
var Cfg Config
|
|
|
|
func Load() error {
|
|
_ = godotenv.Load()
|
|
if err := env.Parse(&Cfg); err != nil {
|
|
return err
|
|
}
|
|
if strings.TrimSpace(Cfg.JWTSecret) == "" || Cfg.JWTSecret == "infinite-canvas" {
|
|
secret, err := randomSecret()
|
|
if err != nil {
|
|
return err
|
|
}
|
|
Cfg.JWTSecret = secret
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func randomSecret() (string, error) {
|
|
buf := make([]byte, 32)
|
|
if _, err := rand.Read(buf); err != nil {
|
|
return "", err
|
|
}
|
|
return base64.RawURLEncoding.EncodeToString(buf), nil
|
|
}
|