Archived
1
This repository has been archived on 2022-11-04. You can view files and clone it, but cannot push or open issues or pull requests.
i2_bot/lib/config/config.go

85 lines
2.3 KiB
Go
Raw Normal View History

2017-10-04 17:56:18 +04:00
// i2_bot Instinct PokememBro Bot
// Copyright (c) 2017-2018 Vladimir "fat0troll" Hodakov
2017-10-04 17:56:18 +04:00
package config
import (
2017-10-18 07:03:34 +04:00
"io/ioutil"
"path/filepath"
"bitbucket.org/pztrn/mogrus"
"gopkg.in/yaml.v2"
2017-10-04 17:56:18 +04:00
)
// VERSION is the current bot's version
const VERSION = "0.7.4"
2017-10-04 17:56:18 +04:00
// DatabaseConnection handles database connection settings in config.yaml
2017-10-04 17:56:18 +04:00
type DatabaseConnection struct {
2017-10-18 07:03:34 +04:00
Host string `yaml:"host"`
Port string `yaml:"port"`
User string `yaml:"user"`
Password string `yaml:"password"`
Database string `yaml:"database"`
2017-10-04 17:56:18 +04:00
}
// TelegramConnection handles settings for Telegram connection in config.yaml
2017-10-04 17:56:18 +04:00
type TelegramConnection struct {
APIToken string `yaml:"api_token"`
WebHookDomain string `yaml:"webhook_domain"`
ListenAddress string `yaml:"listen_address"`
2017-10-04 17:56:18 +04:00
}
// ProxySettings handles settings for SOCKS5 proxy in config.yml
type ProxySettings struct {
Enabled bool `yaml:"enabled"`
Address string `yaml:"address,omitempty"`
Username string `yaml:"username,omitempty"`
Password string `yaml:"password,omitempty"`
}
2017-11-26 16:54:06 +04:00
// SpecialChats handles settings for special chats
type SpecialChats struct {
AcademyID string `yaml:"academy_id"`
2017-11-26 16:54:06 +04:00
BastionID string `yaml:"bastion_id"`
DefaultID string `yaml:"default_id"`
HeadquartersID string `yaml:"headquarters_id"`
GamesID string `yaml:"games_id"`
}
2017-11-14 03:44:21 +04:00
// LoggingConfig handles log file configuration
type LoggingConfig struct {
LogPath string `yaml:"log_path"`
}
// Config is a struct which represents config.yaml structure
2017-10-04 17:56:18 +04:00
type Config struct {
2017-11-26 16:54:06 +04:00
Telegram TelegramConnection `yaml:"telegram_connection"`
Database DatabaseConnection `yaml:"database_connection"`
Proxy ProxySettings `yaml:"socks_proxy"`
2017-11-26 16:54:06 +04:00
SpecialChats SpecialChats `yaml:"special_chats"`
Logs LoggingConfig `yaml:"logs"`
2017-10-04 17:56:18 +04:00
}
// Init is a configuration initializer
func (c *Config) Init(log *mogrus.LoggerHandler, configPath string) {
fname, _ := filepath.Abs(configPath)
2017-10-18 07:03:34 +04:00
yamlFile, yerr := ioutil.ReadFile(fname)
if yerr != nil {
log.Fatal("Can't read config file")
} else {
log.Info("Using " + configPath + " as config file.")
2017-10-18 07:03:34 +04:00
}
yperr := yaml.Unmarshal(yamlFile, c)
if yperr != nil {
log.Fatal("Can't parse config file")
}
2017-10-04 17:56:18 +04:00
}
// New creates new empty Config object
2017-10-04 17:56:18 +04:00
func New() *Config {
2017-10-18 07:03:34 +04:00
c := &Config{}
return c
2017-10-04 17:56:18 +04:00
}