commit
This commit is contained in:
@@ -15,6 +15,13 @@ database:
|
||||
max_open_conns: 100
|
||||
conn_max_lifetime: 3600
|
||||
|
||||
redis:
|
||||
host: 127.0.0.1
|
||||
port: 6379
|
||||
password:
|
||||
db: 0
|
||||
pool_size: 10
|
||||
|
||||
jwt:
|
||||
secret: dev_secret_key_change_in_production
|
||||
expire_hours: 168 # 7天
|
||||
@@ -24,11 +31,11 @@ wechat:
|
||||
app_secret: "69d2a3ddc902b26f82f4b56a6e277f7a" # 微信小程序AppSecret
|
||||
|
||||
xhs:
|
||||
python_service_url: "http://localhost:8000" # Python服务地址
|
||||
python_service_url: "http://localhost:8000" # Python FastAPI服务地址(用于登录和发布,享受浏览器池+预热加速)
|
||||
|
||||
scheduler:
|
||||
enabled: false # 是否启用定时任务
|
||||
publish_cron: "* * * * * *" # 每1小时执行一次(开发环境测试用)
|
||||
publish_cron: "*/5 * * * * *" # 每5秒执行一次
|
||||
max_concurrent: 2 # 最大并发发布数
|
||||
publish_timeout: 300 # 发布超时时间(秒)
|
||||
max_articles_per_user_per_run: 2 # 每轮每个用户最大发文数
|
||||
@@ -39,4 +46,28 @@ scheduler:
|
||||
user_agent: "" # 可选:自定义User-Agent,不填则使用默认
|
||||
proxy_pool:
|
||||
enabled: true # 开发环境启用代理池
|
||||
api_url: "http://api.tianqiip.com/getip?secret=lu29e593&num=1&type=txt&port=1&mr=1&sign=4b81a62eaed89ba802a8f34053e2c964"
|
||||
api_url: "http://api.tianqiip.com/getip?secret=xo0uhiz5&num=1&type=txt&port=1&mr=1&sign=d82157fb70c21bae87437ec17eb3e0aa"
|
||||
|
||||
upload:
|
||||
max_image_size: 5242880 # 5MB (5 * 1024 * 1024)
|
||||
max_file_size: 10485760 # 10MB (10 * 1024 * 1024)
|
||||
image_types: [".jpg", ".jpeg", ".png", ".gif", ".webp", ".svg"]
|
||||
static_path: "./static"
|
||||
base_url: "http://localhost:8080"
|
||||
storage_type: "oss" # local(本地存储) 或 oss(阿里云OSS)
|
||||
|
||||
# 阿里云OSS配置(当storageType为oss时生效)
|
||||
oss:
|
||||
endpoint: "https://oss-cn-beijing.aliyuncs.com/" # OSS访问域名
|
||||
access_key_id: "LTAI5tNesdhDH4ErqEUZmEg2" # AccessKey ID
|
||||
access_key_secret: "xZn7WUkTW76TqOLTh01zZATnU6p3Tf" # AccessKey Secret
|
||||
bucket_name: "bxmkb-beijing" # Bucket名称
|
||||
base_path: "wht/" # 文件存储基础路径
|
||||
domain: "" # 自定义域名(可选)
|
||||
|
||||
# ========== 阿里云短信配置 ==========
|
||||
ali_sms:
|
||||
access_key_id: "LTAI5tSMvnCJdqkZtCVWgh8R" # AccessKey ID
|
||||
access_key_secret: "nyFzXyIi47peVLK4wR2qqbPezmU79W" # AccessKey Secret
|
||||
sign_name: "北京乐航时代科技" # 短信签名
|
||||
template_code: "SMS_486210104" # 短信模板CODE
|
||||
|
||||
@@ -11,10 +11,13 @@ import (
|
||||
type Config struct {
|
||||
Server ServerConfig `mapstructure:"server"`
|
||||
Database DatabaseConfig `mapstructure:"database"`
|
||||
Redis RedisConfig `mapstructure:"redis"`
|
||||
JWT JWTConfig `mapstructure:"jwt"`
|
||||
Wechat WechatConfig `mapstructure:"wechat"`
|
||||
XHS XHSConfig `mapstructure:"xhs"`
|
||||
Scheduler SchedulerConfig `mapstructure:"scheduler"`
|
||||
Upload UploadConfig `mapstructure:"upload"`
|
||||
AliSms AliSmsConfig `mapstructure:"ali_sms"`
|
||||
}
|
||||
|
||||
type ServerConfig struct {
|
||||
@@ -36,6 +39,14 @@ type DatabaseConfig struct {
|
||||
ConnMaxLifetime int `mapstructure:"conn_max_lifetime"`
|
||||
}
|
||||
|
||||
type RedisConfig struct {
|
||||
Host string `mapstructure:"host"`
|
||||
Port int `mapstructure:"port"`
|
||||
Password string `mapstructure:"password"`
|
||||
DB int `mapstructure:"db"`
|
||||
PoolSize int `mapstructure:"pool_size"`
|
||||
}
|
||||
|
||||
type JWTConfig struct {
|
||||
Secret string `mapstructure:"secret"`
|
||||
ExpireHours int `mapstructure:"expire_hours"`
|
||||
@@ -64,6 +75,34 @@ type SchedulerConfig struct {
|
||||
ProxyFetchURL string `mapstructure:"proxy_fetch_url"` // 动态获取代理的接口地址(可选)
|
||||
}
|
||||
|
||||
// UploadConfig 文件上传配置
|
||||
type UploadConfig struct {
|
||||
MaxImageSize int64 `mapstructure:"max_image_size"` // 图片最大大小(字节)
|
||||
MaxFileSize int64 `mapstructure:"max_file_size"` // 文件最大大小(字节)
|
||||
ImageTypes []string `mapstructure:"image_types"` // 允许的图片类型
|
||||
StaticPath string `mapstructure:"static_path"` // 静态文件路径(本地存储)
|
||||
BaseURL string `mapstructure:"base_url"` // 静态文件访问基础URL(本地存储)
|
||||
StorageType string `mapstructure:"storage_type"` // 存储类型:local(本地) 或 oss(阿里云OSS)
|
||||
OSS OSSConfig `mapstructure:"oss"` // OSS配置
|
||||
}
|
||||
|
||||
type OSSConfig struct {
|
||||
Endpoint string `mapstructure:"endpoint"` // OSS访问域名
|
||||
AccessKeyID string `mapstructure:"access_key_id"` // AccessKey ID
|
||||
AccessKeySecret string `mapstructure:"access_key_secret"` // AccessKey Secret
|
||||
BucketName string `mapstructure:"bucket_name"` // Bucket名称
|
||||
BasePath string `mapstructure:"base_path"` // 文件存储基础路径
|
||||
Domain string `mapstructure:"domain"` // 自定义域名(可选)
|
||||
}
|
||||
|
||||
// AliSmsConfig 阿里云短信配置
|
||||
type AliSmsConfig struct {
|
||||
AccessKeyID string `mapstructure:"access_key_id"` // AccessKey ID
|
||||
AccessKeySecret string `mapstructure:"access_key_secret"` // AccessKey Secret
|
||||
SignName string `mapstructure:"sign_name"` // 短信签名
|
||||
TemplateCode string `mapstructure:"template_code"` // 短信模板CODE
|
||||
}
|
||||
|
||||
var AppConfig *Config
|
||||
|
||||
// LoadConfig 加载配置文件
|
||||
@@ -100,8 +139,16 @@ func LoadConfig(env string) error {
|
||||
return fmt.Errorf("解析配置文件失败: %w", err)
|
||||
}
|
||||
|
||||
// 打印OSS配置来源调试信息
|
||||
log.Printf("\n=== OSS配置来源检查 ===")
|
||||
log.Printf("upload.oss.access_key_secret 配置值: [%s]", AppConfig.Upload.OSS.AccessKeySecret)
|
||||
log.Printf("环境变量 OSS_ACCESS_KEY_SECRET: [%s]", os.Getenv("OSS_ACCESS_KEY_SECRET"))
|
||||
log.Printf("环境变量 OSS_TEST_ACCESS_KEY_SECRET: [%s]", os.Getenv("OSS_TEST_ACCESS_KEY_SECRET"))
|
||||
log.Printf("====================\n")
|
||||
|
||||
log.Printf("配置加载成功: %s 环境", env)
|
||||
log.Printf("数据库配置: %s@%s:%d/%s", AppConfig.Database.Username, AppConfig.Database.Host, AppConfig.Database.Port, AppConfig.Database.DBName)
|
||||
log.Printf("Python服务地址: %s", AppConfig.XHS.PythonServiceURL)
|
||||
return nil
|
||||
}
|
||||
|
||||
@@ -119,6 +166,13 @@ func bindEnvVariables() {
|
||||
viper.BindEnv("database.dbname", "DB_NAME")
|
||||
viper.BindEnv("database.charset", "DB_CHARSET")
|
||||
|
||||
// Redis 配置
|
||||
viper.BindEnv("redis.host", "REDIS_HOST")
|
||||
viper.BindEnv("redis.port", "REDIS_PORT")
|
||||
viper.BindEnv("redis.password", "REDIS_PASSWORD")
|
||||
viper.BindEnv("redis.db", "REDIS_DB")
|
||||
viper.BindEnv("redis.pool_size", "REDIS_POOL_SIZE")
|
||||
|
||||
// JWT 配置
|
||||
viper.BindEnv("jwt.secret", "JWT_SECRET")
|
||||
viper.BindEnv("jwt.expire_hours", "JWT_EXPIRE_HOURS")
|
||||
@@ -142,6 +196,27 @@ func bindEnvVariables() {
|
||||
viper.BindEnv("scheduler.proxy", "SCHEDULER_PROXY")
|
||||
viper.BindEnv("scheduler.user_agent", "SCHEDULER_USER_AGENT")
|
||||
viper.BindEnv("scheduler.proxy_fetch_url", "SCHEDULER_PROXY_FETCH_URL")
|
||||
|
||||
// OSS 配置 - 强制从配置文件读取,不使用环境变量
|
||||
// viper.BindEnv("upload.oss.endpoint", "OSS_ENDPOINT")
|
||||
// viper.BindEnv("upload.oss.access_key_id", "OSS_ACCESS_KEY_ID")
|
||||
// viper.BindEnv("upload.oss.access_key_secret", "OSS_ACCESS_KEY_SECRET")
|
||||
// viper.BindEnv("upload.oss.bucket_name", "OSS_BUCKET_NAME")
|
||||
// viper.BindEnv("upload.oss.base_path", "OSS_BASE_PATH")
|
||||
// viper.BindEnv("upload.oss.domain", "OSS_DOMAIN")
|
||||
|
||||
// Upload 配置
|
||||
viper.BindEnv("upload.max_image_size", "UPLOAD_MAX_IMAGE_SIZE")
|
||||
viper.BindEnv("upload.max_file_size", "UPLOAD_MAX_FILE_SIZE")
|
||||
viper.BindEnv("upload.static_path", "UPLOAD_STATIC_PATH")
|
||||
viper.BindEnv("upload.base_url", "UPLOAD_BASE_URL")
|
||||
viper.BindEnv("upload.storage_type", "UPLOAD_STORAGE_TYPE")
|
||||
|
||||
// AliSms 配置
|
||||
viper.BindEnv("ali_sms.access_key_id", "ALI_SMS_ACCESS_KEY_ID")
|
||||
viper.BindEnv("ali_sms.access_key_secret", "ALI_SMS_ACCESS_KEY_SECRET")
|
||||
viper.BindEnv("ali_sms.sign_name", "ALI_SMS_SIGN_NAME")
|
||||
viper.BindEnv("ali_sms.template_code", "ALI_SMS_TEMPLATE_CODE")
|
||||
}
|
||||
|
||||
// GetDSN 获取数据库连接字符串
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
server:
|
||||
port: 8070
|
||||
mode: release
|
||||
mode: release # debug, release, test
|
||||
|
||||
database:
|
||||
host: 8.149.233.36
|
||||
port: 3306
|
||||
username: ai_wht_write
|
||||
password: 7aK_H2yvokVumr84lLNDt8fDBp6P
|
||||
password: 7aK_H2yvokVumr84lLNDt8fDBp6P # 生产环境请修改密码
|
||||
dbname: ai_wht
|
||||
charset: utf8mb4
|
||||
parse_time: true
|
||||
@@ -15,28 +15,58 @@ database:
|
||||
max_open_conns: 200
|
||||
conn_max_lifetime: 3600
|
||||
|
||||
redis:
|
||||
host: 8.140.194.184
|
||||
port: 6379
|
||||
password: Redis@123456
|
||||
db: 0
|
||||
pool_size: 20
|
||||
|
||||
jwt:
|
||||
secret: prod_secret_key_please_change_this
|
||||
expire_hours: 168
|
||||
secret: your_production_secret_key_change_this # 生产环境请修改密钥
|
||||
expire_hours: 168 # 7天
|
||||
|
||||
wechat:
|
||||
app_id: "wxa5bf062342ef754d" # 微信小程序AppID,留空则使用默认登录
|
||||
app_secret: "69d2a3ddc902b26f82f4b56a6e277f7a" # 微信小程序AppSecret
|
||||
app_id: "wxa5bf062342ef754d"
|
||||
app_secret: "69d2a3ddc902b26f82f4b56a6e277f7a"
|
||||
|
||||
xhs:
|
||||
python_service_url: "http://localhost:8000" # Python服务地址,生产环境请修改为实际地址
|
||||
python_service_url: "http://127.0.0.1:8020" # Python FastAPI服务地址(用于登录和发布,享受浏览器池+预热加速)
|
||||
|
||||
scheduler:
|
||||
enabled: false # 是否启用定时任务
|
||||
publish_cron: "0 0 */2 * * *" # 每2小时执行一次(防封号策略)
|
||||
max_concurrent: 2 # 最大并发发布数
|
||||
enabled: false # 生产环境启用定时任务
|
||||
publish_cron: "0 0 * * * *" # 每小时执行一次
|
||||
max_concurrent: 5 # 最大并发发布数
|
||||
publish_timeout: 300 # 发布超时时间(秒)
|
||||
max_articles_per_user_per_run: 2 # 每轮每个用户最大发文数
|
||||
max_articles_per_user_per_run: 5 # 每轮每个用户最大发文数
|
||||
max_failures_per_user_per_run: 3 # 每轮每个用户最大失败次数
|
||||
max_daily_articles_per_user: 5 # 每个用户每日最大发文数(自动发布)
|
||||
max_hourly_articles_per_user: 1 # 每个用户每小时最大发文数(自动发布)
|
||||
max_daily_articles_per_user: 20 # 每个用户每日最大发文数(自动发布)
|
||||
max_hourly_articles_per_user: 3 # 每个用户每小时最大发文数(自动发布)
|
||||
proxy: "" # 可选:静态全局代理地址,例如 http://user:pass@ip:port
|
||||
user_agent: "" # 可选:自定义User-Agent,不填则使用默认
|
||||
proxy_pool:
|
||||
enabled: true # 生产环境启用代理池
|
||||
api_url: "http://api.tianqiip.com/getip?secret=lu29e593&num=1&type=txt&port=1&mr=1&sign=4b81a62eaed89ba802a8f34053e2c964"
|
||||
api_url: "http://api.tianqiip.com/getip?secret=xo0uhiz5&num=1&type=txt&port=1&mr=1&sign=d82157fb70c21bae87437ec17eb3e0aa"
|
||||
|
||||
upload:
|
||||
max_image_size: 5242880 # 5MB
|
||||
max_file_size: 10485760 # 10MB
|
||||
image_types: [".jpg", ".jpeg", ".png", ".gif", ".webp", ".svg"]
|
||||
static_path: "./static"
|
||||
base_url: "https://your-domain.com" # 生产环境域名
|
||||
storage_type: "oss" # 生产环境使用OSS
|
||||
|
||||
oss:
|
||||
endpoint: "oss-cn-beijing.aliyuncs.com"
|
||||
access_key_id: "LTAI5tNesdhDH4ErqEUZmEg2"
|
||||
access_key_secret: "xZn7WUkTW76TqOLTh01zZATnU6p3Tf"
|
||||
bucket_name: "bxmkb-beijing"
|
||||
base_path: "wht/"
|
||||
domain: ""
|
||||
|
||||
# ========== 阿里云短信配置 ==========
|
||||
ali_sms:
|
||||
access_key_id: "LTAI5tSMvnCJdqkZtCVWgh8R" # 生产环境建议使用环境变量
|
||||
access_key_secret: "nyFzXyIi47peVLK4wR2qqbPezmU79W" # 生产环境建议使用环境变量
|
||||
sign_name: "北京乐航时代科技" # 短信签名
|
||||
template_code: "SMS_486210104" # 短信模板CODE
|
||||
|
||||
Reference in New Issue
Block a user