mirror of https://github.com/ouqiang/gocron
112 lines
2.7 KiB
Go
112 lines
2.7 KiB
Go
package setting
|
|
|
|
import (
|
|
"errors"
|
|
"github.com/ouqiang/gocron/modules/logger"
|
|
"github.com/ouqiang/gocron/modules/utils"
|
|
"gopkg.in/ini.v1"
|
|
)
|
|
|
|
const DefaultSection = "default"
|
|
|
|
type Setting struct {
|
|
Db struct {
|
|
Engine string
|
|
Host string
|
|
Port int
|
|
User string
|
|
Password string
|
|
Database string
|
|
Prefix string
|
|
Charset string
|
|
MaxIdleConns int
|
|
MaxOpenConns int
|
|
}
|
|
AllowIps string
|
|
AppName string
|
|
ApiKey string
|
|
ApiSecret string
|
|
ApiSignEnable bool
|
|
|
|
EnableTLS bool
|
|
CAFile string
|
|
CertFile string
|
|
KeyFile string
|
|
}
|
|
|
|
// 读取配置
|
|
func Read(filename string) (*Setting, error) {
|
|
config, err := ini.Load(filename)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
section := config.Section(DefaultSection)
|
|
|
|
var s Setting
|
|
|
|
s.Db.Engine = section.Key("db.engine").MustString("mysql")
|
|
s.Db.Host = section.Key("db.host").MustString("127.0.0.1")
|
|
s.Db.Port = section.Key("db.port").MustInt(3306)
|
|
s.Db.User = section.Key("db.user").MustString("")
|
|
s.Db.Password = section.Key("db.password").MustString("")
|
|
s.Db.Database = section.Key("db.database").MustString("gocron")
|
|
s.Db.Prefix = section.Key("db.prefix").MustString("")
|
|
s.Db.Charset = section.Key("db.charset").MustString("utf8")
|
|
s.Db.MaxIdleConns = section.Key("db.max.idle.conns").MustInt(30)
|
|
s.Db.MaxOpenConns = section.Key("db.max.open.conns").MustInt(100)
|
|
|
|
s.AllowIps = section.Key("allow_ips").MustString("")
|
|
s.AppName = section.Key("app.name").MustString("定时任务管理系统")
|
|
s.ApiKey = section.Key("api.key").MustString("")
|
|
s.ApiSecret = section.Key("api.secret").MustString("")
|
|
s.ApiSignEnable = section.Key("api.sign.enable").MustBool(true)
|
|
|
|
s.EnableTLS = section.Key("enable_tls").MustBool(false)
|
|
s.CAFile = section.Key("ca_file").MustString("")
|
|
s.CertFile = section.Key("cert_file").MustString("")
|
|
s.KeyFile = section.Key("key_file").MustString("")
|
|
|
|
if s.EnableTLS {
|
|
if !utils.FileExist(s.CAFile) {
|
|
logger.Fatalf("failed to read ca cert file: %s", s.CAFile)
|
|
}
|
|
|
|
if !utils.FileExist(s.CertFile) {
|
|
logger.Fatalf("failed to read client cert file: %s", s.CertFile)
|
|
}
|
|
|
|
if !utils.FileExist(s.KeyFile) {
|
|
logger.Fatalf("failed to read client key file: %s", s.KeyFile)
|
|
}
|
|
}
|
|
|
|
return &s, nil
|
|
}
|
|
|
|
// 写入配置
|
|
func Write(config []string, filename string) error {
|
|
if len(config) == 0 {
|
|
return errors.New("参数不能为空")
|
|
}
|
|
if len(config)%2 != 0 {
|
|
return errors.New("参数不匹配")
|
|
}
|
|
|
|
file := ini.Empty()
|
|
|
|
section, err := file.NewSection(DefaultSection)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
for i := 0; i < len(config); {
|
|
_, err = section.NewKey(config[i], config[i+1])
|
|
if err != nil {
|
|
return err
|
|
}
|
|
i += 2
|
|
}
|
|
err = file.SaveTo(filename)
|
|
|
|
return err
|
|
}
|