| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 | 
							- package manchong
 
- import (
 
- 	"github.com/go-sql-driver/mysql"
 
- 	"github.com/json-iterator/go"
 
- 	"io"
 
- 	"os"
 
- 	"sync"
 
- 	"time"
 
- )
 
- type Config struct {
 
- 	Addr    string            `json:"addr"`
 
- 	LogLeve string            `json:"log_leve"`
 
- 	LogFile string            `json:"log_file"`
 
- 	Users   map[string]string `json:"users"`
 
- 	MySQL   *mysql.Config     `json:"mysql"`
 
- }
 
- var CFG = Config{
 
- 	Addr:    ":8080",
 
- 	LogLeve: "info",
 
- 	LogFile: "",
 
- 	Users:   nil,
 
- 	MySQL:   mysql.NewConfig(),
 
- }
 
- var fnsL = &sync.Mutex{}
 
- var fns = make([]func(), 0, 10)
 
- func RegisterReloadConfigCall(fn func()) {
 
- 	fnsL.Lock()
 
- 	defer fnsL.Unlock()
 
- 	fns = append(fns, fn)
 
- 	fn()
 
- }
 
- func readCFG() {
 
- 	file, err := os.Open("config.json")
 
- 	if err != nil {
 
- 		panic(err)
 
- 	}
 
- 	bs, err := io.ReadAll(file)
 
- 	if err != nil {
 
- 		panic(err)
 
- 	}
 
- 	err = jsoniter.Unmarshal(bs, &CFG)
 
- 	CFG.MySQL.Loc = time.Local
 
- 	if err != nil {
 
- 		panic(err)
 
- 	}
 
- 	fnsL.Lock()
 
- 	defer fnsL.Unlock()
 
- 	for _, fn := range fns {
 
- 		fn()
 
- 	}
 
- }
 
- func init() {
 
- 	readCFG()
 
- }
 
 
  |