diff --git a/README.md b/README.md index 887e3b6..db8c97c 100644 --- a/README.md +++ b/README.md @@ -24,8 +24,12 @@ Message Nest 是一个灵活而强大的消息推送整合平台,旨在简化 ## 功能更新日志 +- **2025.04.28** + - 支持tidb作为存储,支持数据库ssl配置 + - docker运行指定环境变量SSL=true + - ini配置文件运行指定环境变量Ssl=true - **2025.01.01** - - 支持自托管消息,现在可以将站点作为消息的接受,登录站点查看消息 + - 支持自托管消息,现在可以将站点作为消息的接受,登录站点查看消息 - **2024.04.29** - 支持 SQLite 部署 - 支持MySQL 5.x 8.x @@ -330,6 +334,7 @@ docker-compose up -d | MYSQL_PASSWORD | mysql数据库密码,DB_TYPE=mysql必填 | | MYSQL_DB | mysql数据库名字,DB_TYPE=mysql必填 | | MYSQL_TABLE_PREFIX | mysql数据表前缀,DB_TYPE=mysql必填 | +| SSL | 是否开启SSL | | | | | SQL_DEBUG | 是否打印SQL,可选,默认关,设置enable为开启 | diff --git a/conf/app.example.ini b/conf/app.example.ini index 12af037..c8c2644 100644 --- a/conf/app.example.ini +++ b/conf/app.example.ini @@ -23,4 +23,8 @@ Host = 123.1.1.1 Name = db_name Port = 3306 TablePrefix = message_ + +; ssl enable, value: [false | true] +Ssl = true + ; SqlDebug = enable diff --git a/models/models.go b/models/models.go index fac7658..42966dc 100644 --- a/models/models.go +++ b/models/models.go @@ -34,12 +34,6 @@ type UUIDModel struct { // Setup initializes the database instance func Setup() *gorm.DB { var err error - connStr := fmt.Sprintf("%s:%s@tcp(%s:%d)/%s?charset=utf8mb4&parseTime=True&loc=Local", - setting.DatabaseSetting.User, - setting.DatabaseSetting.Password, - setting.DatabaseSetting.Host, - setting.DatabaseSetting.Port, - setting.DatabaseSetting.Name) config := &gorm.Config{ NamingStrategy: schema.NamingStrategy{ @@ -50,6 +44,26 @@ func Setup() *gorm.DB { switch setting.DatabaseSetting.Type { case "mysql": + connStr := fmt.Sprintf("%s:%s@tcp(%s:%d)/%s?charset=utf8mb4&parseTime=True&loc=Local", + setting.DatabaseSetting.User, + setting.DatabaseSetting.Password, + setting.DatabaseSetting.Host, + setting.DatabaseSetting.Port, + setting.DatabaseSetting.Name) + if setting.DatabaseSetting.Ssl != "false" { + connStr += fmt.Sprintf("&tls=%s", setting.DatabaseSetting.Ssl) + } + db, err = gorm.Open(mysql.Open(connStr), config) + case "tidb": + connStr := fmt.Sprintf("%s:%s@tcp(%s:%d)/%s?charset=utf8mb4", + setting.DatabaseSetting.User, + setting.DatabaseSetting.Password, + setting.DatabaseSetting.Host, + setting.DatabaseSetting.Port, + setting.DatabaseSetting.Name) + if setting.DatabaseSetting.Ssl != "false" { + connStr += fmt.Sprintf("&tls=%s", setting.DatabaseSetting.Ssl) + } db, err = gorm.Open(mysql.Open(connStr), config) case "sqlite": db, err = gorm.Open(sqlite.Open("conf/database.db"), config) diff --git a/pkg/setting/env.go b/pkg/setting/env.go index c337bcf..6a77852 100644 --- a/pkg/setting/env.go +++ b/pkg/setting/env.go @@ -50,6 +50,7 @@ func loadConfigFromEnv() { ServerSetting.WriteTimeout = 60 DatabaseSetting.Type = getOptionEnvValue("DB_TYPE", "sqlite") + DatabaseSetting.Ssl = getOptionEnvValue("SSL", "false") if DatabaseSetting.Type == "mysql" { DatabaseSetting.Host = getMustEnvValue("MYSQL_HOST") diff --git a/pkg/setting/setting.go b/pkg/setting/setting.go index 7109cf0..dfe8e2f 100644 --- a/pkg/setting/setting.go +++ b/pkg/setting/setting.go @@ -38,6 +38,7 @@ type Database struct { Name string TablePrefix string SqlDebug string + Ssl string } var DatabaseSetting = &Database{}