|
|
|
|
@ -23,12 +23,13 @@ import ( |
|
|
|
|
_ "github.com/mattn/go-sqlite3" |
|
|
|
|
) |
|
|
|
|
|
|
|
|
|
type MySQLConfig struct { |
|
|
|
|
SslMode string |
|
|
|
|
CaCertPath string |
|
|
|
|
ClientKeyPath string |
|
|
|
|
ClientCertPath string |
|
|
|
|
ServerCertName string |
|
|
|
|
|
|
|
|
|
type DatabaseConfig struct { |
|
|
|
|
Type, Host, Name, User, Pwd, Path, SslMode string |
|
|
|
|
CaCertPath string |
|
|
|
|
ClientKeyPath string |
|
|
|
|
ClientCertPath string |
|
|
|
|
ServerCertName string |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
var ( |
|
|
|
|
@ -37,11 +38,8 @@ var ( |
|
|
|
|
|
|
|
|
|
HasEngine bool |
|
|
|
|
|
|
|
|
|
DbCfg struct { |
|
|
|
|
Type, Host, Name, User, Pwd, Path, SslMode string |
|
|
|
|
} |
|
|
|
|
DbCfg DatabaseConfig |
|
|
|
|
|
|
|
|
|
mysqlConfig MySQLConfig |
|
|
|
|
UseSQLite3 bool |
|
|
|
|
sqlog log.Logger = log.New("sqlstore") |
|
|
|
|
) |
|
|
|
|
@ -118,8 +116,8 @@ func getEngine() (*xorm.Engine, error) { |
|
|
|
|
cnnstr = fmt.Sprintf("%s:%s@%s(%s)/%s?charset=utf8", |
|
|
|
|
DbCfg.User, DbCfg.Pwd, protocol, DbCfg.Host, DbCfg.Name) |
|
|
|
|
|
|
|
|
|
if mysqlConfig.SslMode == "true" || mysqlConfig.SslMode == "skip-verify" { |
|
|
|
|
tlsCert, err := makeCert("custom", mysqlConfig) |
|
|
|
|
if DbCfg.SslMode == "true" || DbCfg.SslMode == "skip-verify" { |
|
|
|
|
tlsCert, err := makeCert("custom", DbCfg) |
|
|
|
|
if err != nil { |
|
|
|
|
return nil, err |
|
|
|
|
} |
|
|
|
|
@ -141,7 +139,7 @@ func getEngine() (*xorm.Engine, error) { |
|
|
|
|
if DbCfg.User == "" { |
|
|
|
|
DbCfg.User = "''" |
|
|
|
|
} |
|
|
|
|
cnnstr = fmt.Sprintf("user=%s password=%s host=%s port=%s dbname=%s sslmode=%s", DbCfg.User, DbCfg.Pwd, host, port, DbCfg.Name, DbCfg.SslMode) |
|
|
|
|
cnnstr = fmt.Sprintf("user=%s password=%s host=%s port=%s dbname=%s sslmode=%s sslcert=%s sslkey=%s sslrootcert=%s", DbCfg.User, DbCfg.Pwd, host, port, DbCfg.Name, DbCfg.SslMode, DbCfg.ClientCertPath, DbCfg.ClientKeyPath, DbCfg.CaCertPath) |
|
|
|
|
case "sqlite3": |
|
|
|
|
if !filepath.IsAbs(DbCfg.Path) { |
|
|
|
|
DbCfg.Path = filepath.Join(setting.DataPath, DbCfg.Path) |
|
|
|
|
@ -189,13 +187,9 @@ func LoadConfig() { |
|
|
|
|
UseSQLite3 = true |
|
|
|
|
} |
|
|
|
|
DbCfg.SslMode = sec.Key("ssl_mode").String() |
|
|
|
|
DbCfg.CaCertPath = sec.Key("ca_cert_path").String() |
|
|
|
|
DbCfg.ClientKeyPath = sec.Key("client_key_path").String() |
|
|
|
|
DbCfg.ClientCertPath = sec.Key("client_cert_path").String() |
|
|
|
|
DbCfg.ServerCertName = sec.Key("server_cert_name").String() |
|
|
|
|
DbCfg.Path = sec.Key("path").MustString("data/grafana.db") |
|
|
|
|
|
|
|
|
|
if DbCfg.Type == "mysql" { |
|
|
|
|
mysqlConfig.SslMode = DbCfg.SslMode |
|
|
|
|
mysqlConfig.CaCertPath = sec.Key("ca_cert_path").String() |
|
|
|
|
mysqlConfig.ClientKeyPath = sec.Key("client_key_path").String() |
|
|
|
|
mysqlConfig.ClientCertPath = sec.Key("client_cert_path").String() |
|
|
|
|
mysqlConfig.ServerCertName = sec.Key("server_cert_name").String() |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|