study_xxqg/conf/config.go

168 lines
4.8 KiB
Go
Raw Normal View History

2022-07-27 10:21:49 +00:00
package conf
2021-11-12 07:46:33 +00:00
import (
_ "embed"
"os"
log "github.com/sirupsen/logrus"
2022-04-20 13:31:46 +00:00
"gopkg.in/yaml.v3"
2021-11-12 07:46:33 +00:00
)
2022-04-20 13:31:46 +00:00
// Config
// @Description:
//
2021-11-12 07:46:33 +00:00
type Config struct {
Model int `json:"model" yaml:"model"`
LogLevel string `json:"log_level" yaml:"log_level"`
ShowBrowser bool `json:"show_browser" yaml:"show_browser"`
Scheme string `json:"scheme" yaml:"scheme"`
Push struct {
Ding struct {
Enable bool `json:"enable" yaml:"enable"`
AccessToken string `json:"access_token" yaml:"access_token"`
Secret string `json:"secret" yaml:"secret"`
} `json:"ding" yaml:"ding"`
PushPlus struct {
Enable bool `json:"enable" yaml:"enable"`
Token string `json:"token" yaml:"token"`
} `json:"push_plus" yaml:"push_plus"`
} `json:"push" yaml:"push"`
2021-11-27 08:24:24 +00:00
TG struct {
Enable bool `json:"enable" yaml:"enable"`
Token string `json:"token" yaml:"token"`
ChatID int64 `json:"chat_id" yaml:"chat_id"`
Proxy string `json:"proxy" yaml:"proxy"`
CustomApi string `json:"custom_api" yaml:"custom_api"`
WhiteList []int64 `json:"white_list" yaml:"white_list"`
2021-11-27 08:24:24 +00:00
} `json:"tg" yaml:"tg"`
2022-04-20 13:31:46 +00:00
QQ struct {
}
2022-02-16 07:10:38 +00:00
Web struct {
2022-08-04 03:01:18 +00:00
Enable bool `json:"enable" yaml:"enable"`
Account string `json:"account" yaml:"account"`
Password string `json:"password" yaml:"password"`
Host string `json:"host" yaml:"host"`
Port int `json:"port" yaml:"port"`
Announcement string `json:"announcement" yaml:"announcement"`
2022-02-16 07:10:38 +00:00
} `json:"web"`
Cron string `json:"cron" yaml:"cron"`
CronRandomWait int `json:"cron_random_wait" yaml:"cron_random_wait"`
EdgePath string `json:"edge_path" yaml:"edge_path"`
QrCOde bool `json:"qr_code" yaml:"qr_code"`
StartWait int `json:"start_wait" yaml:"start_wait"`
// cookie强制过期时间单位为h
ForceExpiration int `json:"force_expiration" yaml:"force_expiration"`
Retry struct {
// 重试次数
Times int `json:"times" yaml:"times"`
// 重试时间
Intervals int `json:"intervals" yaml:"intervals"`
} `json:"retry" yaml:"retry"`
Wechat struct {
2022-07-31 12:33:39 +00:00
Enable bool `json:"enable" yaml:"enable"`
Token string `json:"token" yaml:"token"`
Secret string `json:"secret" yaml:"secret"`
AppID string `json:"app_id" yaml:"app_id"`
LoginTempID string `json:"login_temp_id" yaml:"login_temp_id"`
NormalTempID string `json:"normal_temp_id" yaml:"normal_temp_id"`
PushLoginWarn bool `json:"push_login_warn" yaml:"push_login_warn"`
SuperOpenID string `json:"super_open_id" yaml:"super_open_id"`
} `json:"wechat" yaml:"wechat"`
2022-05-27 12:20:15 +00:00
// 专项答题可接受的最小值
SpecialMinScore int `json:"special_min_score" yaml:"special_min_score"`
2022-07-24 07:56:12 +00:00
2022-08-18 08:18:06 +00:00
PushDeer struct {
Enable bool `json:"enable" yaml:"enable"`
Api string `json:"api" yaml:"api"`
Token string `json:"token" yaml:"token"`
} `json:"push_deer" yaml:"push_deer"`
ReverseOrder bool `json:"reverse_order" yaml:"reverse_order"`
2022-07-24 07:56:12 +00:00
JiGuangPush struct {
Enable bool `json:"enable" yaml:"enable"`
Secret string `json:"secret" yaml:"secret"`
AppKey string `json:"app_key" yaml:"app_key"`
} `json:"ji_guang_push" yaml:"ji_guang_push"`
SuperUser string `json:"super_user" yaml:"super_user"`
SuperPassword string `json:"super_password" yaml:"super_password"`
// github的代理地址用于检查更新或者其他的
GithubProxy string `json:"github_proxy" yaml:"github_proxy"`
version string
2021-11-12 07:46:33 +00:00
}
var (
config = Config{
Model: 1,
}
)
//go:embed config_default.yml
var defaultConfig []byte
// SetVersion
/* @Description: 设置应用程序版本号
* @param string2
*/
func SetVersion(string2 string) {
config.version = string2
}
// GetVersion
/* @Description: 获取应用程序版本号
* @return string
*/
func GetVersion() string {
return config.version
}
// InitConfig
/* @Description: 初始化配置文件
* @param path
2022-02-16 07:10:38 +00:00
*/
func InitConfig(path string) {
if path == "" {
path = "./config/config.yml"
}
log.Infoln("配置文件路径 ==》 " + path)
file, err := os.ReadFile(path)
2021-11-12 07:46:33 +00:00
if err != nil {
log.Warningln("检测到配置文件可能不存在")
err := os.WriteFile(path, defaultConfig, 0666)
2021-11-12 07:46:33 +00:00
if err != nil {
log.Errorln("写入到配置文件出现错误")
2022-04-25 10:39:54 +00:00
log.Errorln(err.Error())
return
2021-11-12 07:46:33 +00:00
}
log.Infoln("成功写入到配置文件,请重启应用")
os.Exit(3)
}
err = yaml.Unmarshal(file, &config)
if err != nil {
log.Errorln(err.Error())
log.Panicln("配置文件解析失败,请检查配置文件")
2021-11-12 07:46:33 +00:00
}
if config.Scheme == "" {
config.Scheme = "https://johlanse.github.io/study_xxqg/scheme.html?"
}
2022-05-27 12:20:15 +00:00
if config.SpecialMinScore == 0 {
config.SpecialMinScore = 10
}
2022-08-11 06:08:28 +00:00
if config.TG.CustomApi == "" {
config.TG.CustomApi = "https://api.telegram.org"
}
}
// GetConfig
/**
* @Description: 获取配置信息
* @return Config
*/
func GetConfig() Config {
2021-11-12 07:46:33 +00:00
return config
}