mirror of https://github.com/0xERR0R/blocky.git
50 lines
1.3 KiB
Go
50 lines
1.3 KiB
Go
package config
|
|
|
|
import (
|
|
. "github.com/0xERR0R/blocky/config/migration"
|
|
"github.com/0xERR0R/blocky/log"
|
|
"github.com/sirupsen/logrus"
|
|
)
|
|
|
|
type HostsFile struct {
|
|
Sources []BytesSource `yaml:"sources"`
|
|
HostsTTL Duration `yaml:"hostsTTL" default:"1h"`
|
|
FilterLoopback bool `yaml:"filterLoopback"`
|
|
Loading SourceLoading `yaml:"loading"`
|
|
|
|
// Deprecated options
|
|
Deprecated struct {
|
|
RefreshPeriod *Duration `yaml:"refreshPeriod"`
|
|
Filepath *BytesSource `yaml:"filePath"`
|
|
} `yaml:",inline"`
|
|
}
|
|
|
|
func (c *HostsFile) migrate(logger *logrus.Entry) bool {
|
|
return Migrate(logger, "hostsFile", c.Deprecated, map[string]Migrator{
|
|
"refreshPeriod": Move(To("loading.refreshPeriod", &c.Loading)),
|
|
"filePath": Apply(To("sources", c), func(value BytesSource) {
|
|
c.Sources = append(c.Sources, value)
|
|
}),
|
|
})
|
|
}
|
|
|
|
// IsEnabled implements `config.Configurable`.
|
|
func (c *HostsFile) IsEnabled() bool {
|
|
return len(c.Sources) != 0
|
|
}
|
|
|
|
// LogConfig implements `config.Configurable`.
|
|
func (c *HostsFile) LogConfig(logger *logrus.Entry) {
|
|
logger.Infof("TTL: %s", c.HostsTTL)
|
|
logger.Infof("filter loopback addresses: %t", c.FilterLoopback)
|
|
|
|
logger.Info("loading:")
|
|
log.WithIndent(logger, " ", c.Loading.LogConfig)
|
|
|
|
logger.Info("sources:")
|
|
|
|
for _, source := range c.Sources {
|
|
logger.Infof(" - %s", source)
|
|
}
|
|
}
|