diff --git a/config.go b/config.go new file mode 100644 index 0000000..4d156f8 --- /dev/null +++ b/config.go @@ -0,0 +1,48 @@ +package main + +import ( + "os" + + "gopkg.in/yaml.v3" +) + +// Config — структура для чтения YAML-файла +type Config struct { + ListenAddresses []string `yaml:"listen_addresses"` + LogDir string `yaml:"log_dir"` + Telegram *ConfigTelegram `yaml:"telegram"` + Pachca *ConfigPachca `yaml:"pachca"` + Email *ConfigEmail `yaml:"email"` +} + +type ConfigTelegram struct { + Token string `yaml:"token"` + GroupID int64 `yaml:"group_id"` + DisableIPV6 *bool `yaml:"disable_ipv6"` // nil → true +} + +type ConfigPachca struct { + WebhookURL string `yaml:"webhook_url"` // входящий вебхук Pachca +} + +type ConfigEmail struct { + SMTPAddr string `yaml:"smtp_addr"` + Username string `yaml:"username"` + Password string `yaml:"password"` + From string `yaml:"from"` + To []string `yaml:"to"` + Subject string `yaml:"subject"` // "" → "HTTP Logger" +} + +// loadConfig читает YAML-конфиг из файла +func loadConfig(path string) (*Config, error) { + data, err := os.ReadFile(path) + if err != nil { + return nil, err + } + var cfg Config + if err := yaml.Unmarshal(data, &cfg); err != nil { + return nil, err + } + return &cfg, nil +} diff --git a/main.go b/main.go index 3202845..0a1cac5 100644 --- a/main.go +++ b/main.go @@ -6,27 +6,12 @@ import ( "log" "net" "net/http" - "os" "strings" "time" - "gopkg.in/yaml.v3" - "gitea.mediatoday.ru/mt/notify" ) -// Config — структура для чтения YAML-файла -type Config struct { - ListenAddresses []string `yaml:"listen_addresses"` - LogDir string `yaml:"log_dir"` - Telegram *ConfigTelegraam `yaml:"telegram"` -} - -type ConfigTelegraam struct { - Token string `yaml:"token"` - GroupID int64 `yaml:"group_id"` -} - func GetRemoteAddr(r *http.Request) string { // Сначала смотрим X-Forwarded-For if xff := r.Header.Get("X-Forwarded-For"); xff != "" { @@ -138,16 +123,3 @@ func main() { // Блокируем main, чтобы программа не завершилась select {} } - -// loadConfig читает YAML-конфиг из файла -func loadConfig(path string) (*Config, error) { - data, err := os.ReadFile(path) - if err != nil { - return nil, err - } - var cfg Config - if err := yaml.Unmarshal(data, &cfg); err != nil { - return nil, err - } - return &cfg, nil -}