config.go 1.73 KB
Newer Older
qiuqunfeng's avatar
qiuqunfeng committed
1 2 3
package app

import (
4
	"encoding/json"
qiuqunfeng's avatar
qiuqunfeng committed
5 6
	"os"

qiuqunfeng's avatar
qiuqunfeng committed
7
	"github.com/rs/zerolog/log"
qiuqunfeng's avatar
qiuqunfeng committed
8 9
)

qiuqunfeng's avatar
config  
qiuqunfeng committed
10 11 12 13 14 15 16 17
const (
	DB_USER     = "ivan"
	DB_PASSWORD = "Mysql-ha@123"
	DB_HOST     = "localhost"
	DB_PORT     = "3306"
	DB_NAME     = "waf"
)

qiuqunfeng's avatar
qiuqunfeng committed
18
type Config struct {
qiuqunfeng's avatar
config  
qiuqunfeng committed
19
	DBConfig      *DBConfig      `yaml:"db_config"`
qiuqunfeng's avatar
qiuqunfeng committed
20
	RegionConfigs []RegionConfig `yaml:"region_configs"`
qiuqunfeng's avatar
config  
qiuqunfeng committed
21
	Debug         bool           `yaml:"debug"`
22
	GatewayUrl    string         `yaml:"gateway_url"`
qiuqunfeng's avatar
config  
qiuqunfeng committed
23 24 25 26 27 28 29 30
}

type DBConfig struct {
	User     string `yaml:"user"`
	Password string `yaml:"password"`
	Host     string `yaml:"host"`
	Port     string `yaml:"port"`
	Database string `yaml:"database"`
qiuqunfeng's avatar
qiuqunfeng committed
31 32 33 34 35 36 37 38 39
}

type RegionConfig struct {
	RegionCode     string `yaml:"region_code"`
	ApiServer      string `yaml:"api_server"`
	CAData         string `yaml:"ca_data"`
	Token          string `yaml:"token"`
	ClientCertData string `yaml:"client_cert_data"`
	ClientKeyData  string `yaml:"client_key_data"`
qiuqunfeng's avatar
qiuqunfeng committed
40
	Insecure       bool   `yaml:"insecure"`
qiuqunfeng's avatar
qiuqunfeng committed
41 42 43
}

func LoadConfig() *Config {
44
	configFile := "config/config.json"
qiuqunfeng's avatar
qiuqunfeng committed
45 46 47 48 49 50
	if envFile := os.Getenv("CONFIG_FILE"); envFile != "" {
		configFile = envFile
	}

	data, err := os.ReadFile(configFile)
	if err != nil {
qiuqunfeng's avatar
qiuqunfeng committed
51
		log.Err(err).Msgf("Failed to read config file: %s", configFile)
qiuqunfeng's avatar
qiuqunfeng committed
52 53 54 55
		return nil
	}

	var config Config
56 57 58 59 60
	// if err := yaml.Unmarshal(data, &config); err != nil {
	// 	log.Err(err).Msg("Failed to parse config file")
	// 	return nil
	// }
	if err := json.Unmarshal(data, &config); err != nil {
qiuqunfeng's avatar
qiuqunfeng committed
61
		log.Err(err).Msg("Failed to parse config file")
qiuqunfeng's avatar
qiuqunfeng committed
62 63
		return nil
	}
qiuqunfeng's avatar
config  
qiuqunfeng committed
64 65 66 67 68 69 70 71 72 73
	// 如果config.DBConfig为nil,则使用默认值
	if config.DBConfig == nil {
		config.DBConfig = &DBConfig{
			User:     DB_USER,
			Password: DB_PASSWORD,
			Host:     DB_HOST,
			Port:     DB_PORT,
			Database: DB_NAME,
		}
	}
qiuqunfeng's avatar
qiuqunfeng committed
74 75 76

	return &config
}