mirror of
https://github.com/Mrs4s/go-cqhttp.git
synced 2025-05-04 19:17:37 +08:00
style: move internal/config to modules/config
config should not be internal, maybe some module need it.
This commit is contained in:
parent
ddd51e6ca3
commit
1337d3f1f3
@ -25,7 +25,7 @@ import (
|
|||||||
|
|
||||||
"github.com/Mrs4s/go-cqhttp/global"
|
"github.com/Mrs4s/go-cqhttp/global"
|
||||||
"github.com/Mrs4s/go-cqhttp/internal/base"
|
"github.com/Mrs4s/go-cqhttp/internal/base"
|
||||||
"github.com/Mrs4s/go-cqhttp/internal/config"
|
"github.com/Mrs4s/go-cqhttp/modules/config"
|
||||||
)
|
)
|
||||||
|
|
||||||
// CQBot CQBot结构体,存储Bot实例相关配置
|
// CQBot CQBot结构体,存储Bot实例相关配置
|
||||||
|
@ -3,12 +3,14 @@ package base
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"flag"
|
"flag"
|
||||||
|
"os"
|
||||||
|
"path"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
log "github.com/sirupsen/logrus"
|
log "github.com/sirupsen/logrus"
|
||||||
"gopkg.in/yaml.v3"
|
"gopkg.in/yaml.v3"
|
||||||
|
|
||||||
"github.com/Mrs4s/go-cqhttp/internal/config"
|
"github.com/Mrs4s/go-cqhttp/modules/config"
|
||||||
)
|
)
|
||||||
|
|
||||||
// command flags
|
// command flags
|
||||||
@ -49,14 +51,15 @@ var (
|
|||||||
|
|
||||||
// Parse parse flags
|
// Parse parse flags
|
||||||
func Parse() {
|
func Parse() {
|
||||||
flag.StringVar(&LittleC, "c", config.DefaultConfigFile, "configuration filename")
|
wd, _ := os.Getwd()
|
||||||
|
dc := path.Join(wd, "config.yml")
|
||||||
|
flag.StringVar(&LittleC, "c", dc, "configuration filename")
|
||||||
flag.BoolVar(&LittleD, "d", false, "running as a daemon")
|
flag.BoolVar(&LittleD, "d", false, "running as a daemon")
|
||||||
flag.BoolVar(&LittleH, "h", false, "this help")
|
flag.BoolVar(&LittleH, "h", false, "this help")
|
||||||
flag.StringVar(&LittleWD, "w", "", "cover the working directory")
|
flag.StringVar(&LittleWD, "w", "", "cover the working directory")
|
||||||
d := flag.Bool("D", false, "debug mode")
|
d := flag.Bool("D", false, "debug mode")
|
||||||
flag.Parse()
|
flag.Parse()
|
||||||
|
|
||||||
config.DefaultConfigFile = LittleC // cover config file
|
|
||||||
if *d {
|
if *d {
|
||||||
Debug = true
|
Debug = true
|
||||||
}
|
}
|
||||||
@ -64,7 +67,7 @@ func Parse() {
|
|||||||
|
|
||||||
// Init read config from yml file
|
// Init read config from yml file
|
||||||
func Init() {
|
func Init() {
|
||||||
conf := config.Get()
|
conf := config.Parse(LittleC)
|
||||||
{ // bool config
|
{ // bool config
|
||||||
if conf.Output.Debug {
|
if conf.Output.Debug {
|
||||||
Debug = true
|
Debug = true
|
||||||
|
2
main.go
2
main.go
@ -30,8 +30,8 @@ import (
|
|||||||
"github.com/Mrs4s/go-cqhttp/global"
|
"github.com/Mrs4s/go-cqhttp/global"
|
||||||
"github.com/Mrs4s/go-cqhttp/global/terminal"
|
"github.com/Mrs4s/go-cqhttp/global/terminal"
|
||||||
"github.com/Mrs4s/go-cqhttp/internal/base"
|
"github.com/Mrs4s/go-cqhttp/internal/base"
|
||||||
"github.com/Mrs4s/go-cqhttp/internal/config"
|
|
||||||
"github.com/Mrs4s/go-cqhttp/internal/selfupdate"
|
"github.com/Mrs4s/go-cqhttp/internal/selfupdate"
|
||||||
|
"github.com/Mrs4s/go-cqhttp/modules/config"
|
||||||
"github.com/Mrs4s/go-cqhttp/server"
|
"github.com/Mrs4s/go-cqhttp/server"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -6,10 +6,8 @@ import (
|
|||||||
_ "embed" // embed the default config file
|
_ "embed" // embed the default config file
|
||||||
"fmt"
|
"fmt"
|
||||||
"os"
|
"os"
|
||||||
"path"
|
|
||||||
"strconv"
|
"strconv"
|
||||||
"strings"
|
"strings"
|
||||||
"sync"
|
|
||||||
|
|
||||||
"github.com/Mrs4s/go-cqhttp/internal/param"
|
"github.com/Mrs4s/go-cqhttp/internal/param"
|
||||||
|
|
||||||
@ -21,11 +19,6 @@ import (
|
|||||||
//go:embed default_config.yml
|
//go:embed default_config.yml
|
||||||
var defaultConfig string
|
var defaultConfig string
|
||||||
|
|
||||||
var currentPath = getCurrentPath()
|
|
||||||
|
|
||||||
// DefaultConfigFile 默认配置文件路径
|
|
||||||
var DefaultConfigFile = path.Join(currentPath, "config.yml")
|
|
||||||
|
|
||||||
// Reconnect 重连配置
|
// Reconnect 重连配置
|
||||||
type Reconnect struct {
|
type Reconnect struct {
|
||||||
Disabled bool `yaml:"disabled"`
|
Disabled bool `yaml:"disabled"`
|
||||||
@ -144,113 +137,97 @@ type LevelDBConfig struct {
|
|||||||
Enable bool `yaml:"enable"`
|
Enable bool `yaml:"enable"`
|
||||||
}
|
}
|
||||||
|
|
||||||
var (
|
// Parse 从默认配置文件路径中获取
|
||||||
config *Config
|
func Parse(path string) *Config {
|
||||||
once sync.Once
|
fromEnv := os.Getenv("GCQ_UIN") != ""
|
||||||
)
|
|
||||||
|
|
||||||
// Get 从默认配置文件路径中获取
|
file, err := os.Open(path)
|
||||||
func Get() *Config {
|
config := &Config{}
|
||||||
once.Do(func() {
|
if err == nil {
|
||||||
hasEnvironmentConf := os.Getenv("GCQ_UIN") != ""
|
defer func() { _ = file.Close() }()
|
||||||
|
if err = yaml.NewDecoder(file).Decode(config); err != nil && !fromEnv {
|
||||||
file, err := os.Open(DefaultConfigFile)
|
log.Fatal("配置文件不合法!", err)
|
||||||
config = &Config{}
|
|
||||||
if err == nil {
|
|
||||||
defer func() { _ = file.Close() }()
|
|
||||||
if err = yaml.NewDecoder(file).Decode(config); err != nil && !hasEnvironmentConf {
|
|
||||||
log.Fatal("配置文件不合法!", err)
|
|
||||||
}
|
|
||||||
} else if !hasEnvironmentConf {
|
|
||||||
generateConfig()
|
|
||||||
os.Exit(0)
|
|
||||||
}
|
}
|
||||||
if hasEnvironmentConf {
|
} else if !fromEnv {
|
||||||
// type convert tools
|
generateConfig()
|
||||||
toInt64 := func(str string) int64 {
|
os.Exit(0)
|
||||||
i, _ := strconv.ParseInt(str, 10, 64)
|
|
||||||
return i
|
|
||||||
}
|
|
||||||
|
|
||||||
// load config from environment variable
|
|
||||||
param.SetAtDefault(&config.Account.Uin, toInt64(os.Getenv("GCQ_UIN")), int64(0))
|
|
||||||
param.SetAtDefault(&config.Account.Password, os.Getenv("GCQ_PWD"), "")
|
|
||||||
param.SetAtDefault(&config.Account.Status, int32(toInt64(os.Getenv("GCQ_STATUS"))), int32(0))
|
|
||||||
param.SetAtDefault(&config.Account.ReLogin.Disabled, !param.EnsureBool(os.Getenv("GCQ_RELOGIN_DISABLED"), true), false)
|
|
||||||
param.SetAtDefault(&config.Account.ReLogin.Delay, uint(toInt64(os.Getenv("GCQ_RELOGIN_DELAY"))), uint(0))
|
|
||||||
param.SetAtDefault(&config.Account.ReLogin.MaxTimes, uint(toInt64(os.Getenv("GCQ_RELOGIN_MAX_TIMES"))), uint(0))
|
|
||||||
dbConf := &LevelDBConfig{Enable: param.EnsureBool(os.Getenv("GCQ_LEVELDB"), true)}
|
|
||||||
if config.Database == nil {
|
|
||||||
config.Database = make(map[string]yaml.Node)
|
|
||||||
}
|
|
||||||
config.Database["leveldb"] = func() yaml.Node {
|
|
||||||
n := &yaml.Node{}
|
|
||||||
_ = n.Encode(dbConf)
|
|
||||||
return *n
|
|
||||||
}()
|
|
||||||
accessTokenEnv := os.Getenv("GCQ_ACCESS_TOKEN")
|
|
||||||
if os.Getenv("GCQ_HTTP_PORT") != "" {
|
|
||||||
node := &yaml.Node{}
|
|
||||||
httpConf := &HTTPServer{
|
|
||||||
Host: "0.0.0.0",
|
|
||||||
Port: 5700,
|
|
||||||
MiddleWares: MiddleWares{
|
|
||||||
AccessToken: accessTokenEnv,
|
|
||||||
},
|
|
||||||
}
|
|
||||||
param.SetExcludeDefault(&httpConf.Disabled, param.EnsureBool(os.Getenv("GCQ_HTTP_DISABLE"), false), false)
|
|
||||||
param.SetExcludeDefault(&httpConf.Host, os.Getenv("GCQ_HTTP_HOST"), "")
|
|
||||||
param.SetExcludeDefault(&httpConf.Port, int(toInt64(os.Getenv("GCQ_HTTP_PORT"))), 0)
|
|
||||||
if os.Getenv("GCQ_HTTP_POST_URL") != "" {
|
|
||||||
httpConf.Post = append(httpConf.Post, struct {
|
|
||||||
URL string `yaml:"url"`
|
|
||||||
Secret string `yaml:"secret"`
|
|
||||||
}{os.Getenv("GCQ_HTTP_POST_URL"), os.Getenv("GCQ_HTTP_POST_SECRET")})
|
|
||||||
}
|
|
||||||
_ = node.Encode(httpConf)
|
|
||||||
config.Servers = append(config.Servers, map[string]yaml.Node{"http": *node})
|
|
||||||
}
|
|
||||||
if os.Getenv("GCQ_WS_PORT") != "" {
|
|
||||||
node := &yaml.Node{}
|
|
||||||
wsServerConf := &WebsocketServer{
|
|
||||||
Host: "0.0.0.0",
|
|
||||||
Port: 6700,
|
|
||||||
MiddleWares: MiddleWares{
|
|
||||||
AccessToken: accessTokenEnv,
|
|
||||||
},
|
|
||||||
}
|
|
||||||
param.SetExcludeDefault(&wsServerConf.Disabled, param.EnsureBool(os.Getenv("GCQ_WS_DISABLE"), false), false)
|
|
||||||
param.SetExcludeDefault(&wsServerConf.Host, os.Getenv("GCQ_WS_HOST"), "")
|
|
||||||
param.SetExcludeDefault(&wsServerConf.Port, int(toInt64(os.Getenv("GCQ_WS_PORT"))), 0)
|
|
||||||
_ = node.Encode(wsServerConf)
|
|
||||||
config.Servers = append(config.Servers, map[string]yaml.Node{"ws": *node})
|
|
||||||
}
|
|
||||||
if os.Getenv("GCQ_RWS_API") != "" || os.Getenv("GCQ_RWS_EVENT") != "" || os.Getenv("GCQ_RWS_UNIVERSAL") != "" {
|
|
||||||
node := &yaml.Node{}
|
|
||||||
rwsConf := &WebsocketReverse{
|
|
||||||
MiddleWares: MiddleWares{
|
|
||||||
AccessToken: accessTokenEnv,
|
|
||||||
},
|
|
||||||
}
|
|
||||||
param.SetExcludeDefault(&rwsConf.Disabled, param.EnsureBool(os.Getenv("GCQ_RWS_DISABLE"), false), false)
|
|
||||||
param.SetExcludeDefault(&rwsConf.API, os.Getenv("GCQ_RWS_API"), "")
|
|
||||||
param.SetExcludeDefault(&rwsConf.Event, os.Getenv("GCQ_RWS_EVENT"), "")
|
|
||||||
param.SetExcludeDefault(&rwsConf.Universal, os.Getenv("GCQ_RWS_UNIVERSAL"), "")
|
|
||||||
_ = node.Encode(rwsConf)
|
|
||||||
config.Servers = append(config.Servers, map[string]yaml.Node{"ws-reverse": *node})
|
|
||||||
}
|
|
||||||
}
|
|
||||||
})
|
|
||||||
return config
|
|
||||||
}
|
|
||||||
|
|
||||||
// getCurrentPath 获取当前文件的路径,直接返回string
|
|
||||||
func getCurrentPath() string {
|
|
||||||
cwd, e := os.Getwd()
|
|
||||||
if e != nil {
|
|
||||||
panic(e)
|
|
||||||
}
|
}
|
||||||
return cwd
|
if fromEnv {
|
||||||
|
// type convert tools
|
||||||
|
toInt64 := func(str string) int64 {
|
||||||
|
i, _ := strconv.ParseInt(str, 10, 64)
|
||||||
|
return i
|
||||||
|
}
|
||||||
|
|
||||||
|
// load config from environment variable
|
||||||
|
param.SetAtDefault(&config.Account.Uin, toInt64(os.Getenv("GCQ_UIN")), int64(0))
|
||||||
|
param.SetAtDefault(&config.Account.Password, os.Getenv("GCQ_PWD"), "")
|
||||||
|
param.SetAtDefault(&config.Account.Status, int32(toInt64(os.Getenv("GCQ_STATUS"))), int32(0))
|
||||||
|
param.SetAtDefault(&config.Account.ReLogin.Disabled, !param.EnsureBool(os.Getenv("GCQ_RELOGIN_DISABLED"), true), false)
|
||||||
|
param.SetAtDefault(&config.Account.ReLogin.Delay, uint(toInt64(os.Getenv("GCQ_RELOGIN_DELAY"))), uint(0))
|
||||||
|
param.SetAtDefault(&config.Account.ReLogin.MaxTimes, uint(toInt64(os.Getenv("GCQ_RELOGIN_MAX_TIMES"))), uint(0))
|
||||||
|
dbConf := &LevelDBConfig{Enable: param.EnsureBool(os.Getenv("GCQ_LEVELDB"), true)}
|
||||||
|
if config.Database == nil {
|
||||||
|
config.Database = make(map[string]yaml.Node)
|
||||||
|
}
|
||||||
|
config.Database["leveldb"] = func() yaml.Node {
|
||||||
|
n := &yaml.Node{}
|
||||||
|
_ = n.Encode(dbConf)
|
||||||
|
return *n
|
||||||
|
}()
|
||||||
|
accessTokenEnv := os.Getenv("GCQ_ACCESS_TOKEN")
|
||||||
|
if os.Getenv("GCQ_HTTP_PORT") != "" {
|
||||||
|
node := &yaml.Node{}
|
||||||
|
httpConf := &HTTPServer{
|
||||||
|
Host: "0.0.0.0",
|
||||||
|
Port: 5700,
|
||||||
|
MiddleWares: MiddleWares{
|
||||||
|
AccessToken: accessTokenEnv,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
param.SetExcludeDefault(&httpConf.Disabled, param.EnsureBool(os.Getenv("GCQ_HTTP_DISABLE"), false), false)
|
||||||
|
param.SetExcludeDefault(&httpConf.Host, os.Getenv("GCQ_HTTP_HOST"), "")
|
||||||
|
param.SetExcludeDefault(&httpConf.Port, int(toInt64(os.Getenv("GCQ_HTTP_PORT"))), 0)
|
||||||
|
if os.Getenv("GCQ_HTTP_POST_URL") != "" {
|
||||||
|
httpConf.Post = append(httpConf.Post, struct {
|
||||||
|
URL string `yaml:"url"`
|
||||||
|
Secret string `yaml:"secret"`
|
||||||
|
}{os.Getenv("GCQ_HTTP_POST_URL"), os.Getenv("GCQ_HTTP_POST_SECRET")})
|
||||||
|
}
|
||||||
|
_ = node.Encode(httpConf)
|
||||||
|
config.Servers = append(config.Servers, map[string]yaml.Node{"http": *node})
|
||||||
|
}
|
||||||
|
if os.Getenv("GCQ_WS_PORT") != "" {
|
||||||
|
node := &yaml.Node{}
|
||||||
|
wsServerConf := &WebsocketServer{
|
||||||
|
Host: "0.0.0.0",
|
||||||
|
Port: 6700,
|
||||||
|
MiddleWares: MiddleWares{
|
||||||
|
AccessToken: accessTokenEnv,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
param.SetExcludeDefault(&wsServerConf.Disabled, param.EnsureBool(os.Getenv("GCQ_WS_DISABLE"), false), false)
|
||||||
|
param.SetExcludeDefault(&wsServerConf.Host, os.Getenv("GCQ_WS_HOST"), "")
|
||||||
|
param.SetExcludeDefault(&wsServerConf.Port, int(toInt64(os.Getenv("GCQ_WS_PORT"))), 0)
|
||||||
|
_ = node.Encode(wsServerConf)
|
||||||
|
config.Servers = append(config.Servers, map[string]yaml.Node{"ws": *node})
|
||||||
|
}
|
||||||
|
if os.Getenv("GCQ_RWS_API") != "" || os.Getenv("GCQ_RWS_EVENT") != "" || os.Getenv("GCQ_RWS_UNIVERSAL") != "" {
|
||||||
|
node := &yaml.Node{}
|
||||||
|
rwsConf := &WebsocketReverse{
|
||||||
|
MiddleWares: MiddleWares{
|
||||||
|
AccessToken: accessTokenEnv,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
param.SetExcludeDefault(&rwsConf.Disabled, param.EnsureBool(os.Getenv("GCQ_RWS_DISABLE"), false), false)
|
||||||
|
param.SetExcludeDefault(&rwsConf.API, os.Getenv("GCQ_RWS_API"), "")
|
||||||
|
param.SetExcludeDefault(&rwsConf.Event, os.Getenv("GCQ_RWS_EVENT"), "")
|
||||||
|
param.SetExcludeDefault(&rwsConf.Universal, os.Getenv("GCQ_RWS_UNIVERSAL"), "")
|
||||||
|
_ = node.Encode(rwsConf)
|
||||||
|
config.Servers = append(config.Servers, map[string]yaml.Node{"ws-reverse": *node})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return config
|
||||||
}
|
}
|
||||||
|
|
||||||
// generateConfig 生成配置文件
|
// generateConfig 生成配置文件
|
@ -21,7 +21,7 @@ import (
|
|||||||
"github.com/tidwall/gjson"
|
"github.com/tidwall/gjson"
|
||||||
|
|
||||||
"github.com/Mrs4s/go-cqhttp/coolq"
|
"github.com/Mrs4s/go-cqhttp/coolq"
|
||||||
"github.com/Mrs4s/go-cqhttp/internal/config"
|
"github.com/Mrs4s/go-cqhttp/modules/config"
|
||||||
)
|
)
|
||||||
|
|
||||||
type httpServer struct {
|
type httpServer struct {
|
||||||
|
@ -9,7 +9,7 @@ import (
|
|||||||
|
|
||||||
log "github.com/sirupsen/logrus"
|
log "github.com/sirupsen/logrus"
|
||||||
|
|
||||||
"github.com/Mrs4s/go-cqhttp/internal/config"
|
"github.com/Mrs4s/go-cqhttp/modules/config"
|
||||||
)
|
)
|
||||||
|
|
||||||
// RunPprofServer 启动 pprof 性能分析服务器
|
// RunPprofServer 启动 pprof 性能分析服务器
|
||||||
|
@ -16,7 +16,7 @@ import (
|
|||||||
|
|
||||||
"github.com/Mrs4s/go-cqhttp/coolq"
|
"github.com/Mrs4s/go-cqhttp/coolq"
|
||||||
"github.com/Mrs4s/go-cqhttp/global"
|
"github.com/Mrs4s/go-cqhttp/global"
|
||||||
"github.com/Mrs4s/go-cqhttp/internal/config"
|
"github.com/Mrs4s/go-cqhttp/modules/config"
|
||||||
)
|
)
|
||||||
|
|
||||||
type lambdaClient struct {
|
type lambdaClient struct {
|
||||||
|
@ -12,7 +12,7 @@ import (
|
|||||||
|
|
||||||
"github.com/Mrs4s/go-cqhttp/coolq"
|
"github.com/Mrs4s/go-cqhttp/coolq"
|
||||||
"github.com/Mrs4s/go-cqhttp/global"
|
"github.com/Mrs4s/go-cqhttp/global"
|
||||||
"github.com/Mrs4s/go-cqhttp/internal/config"
|
"github.com/Mrs4s/go-cqhttp/modules/config"
|
||||||
|
|
||||||
"github.com/Mrs4s/MiraiGo/utils"
|
"github.com/Mrs4s/MiraiGo/utils"
|
||||||
"github.com/gorilla/websocket"
|
"github.com/gorilla/websocket"
|
||||||
|
Loading…
x
Reference in New Issue
Block a user