Integrate GeoIP service initialization and lifecycle management into the daemon startup process.
This commit is contained in:
@@ -9,6 +9,7 @@ import (
|
||||
"git.kor-elf.net/kor-elf-shield/kor-elf-shield/internal/daemon/db"
|
||||
"git.kor-elf.net/kor-elf-shield/kor-elf-shield/internal/daemon/db/repository"
|
||||
"git.kor-elf.net/kor-elf-shield/kor-elf-shield/internal/daemon/docker_monitor"
|
||||
"git.kor-elf.net/kor-elf-shield/kor-elf-shield/internal/daemon/geoip"
|
||||
"git.kor-elf.net/kor-elf-shield/kor-elf-shield/internal/daemon/notifications"
|
||||
"git.kor-elf.net/kor-elf-shield/kor-elf-shield/internal/i18n"
|
||||
"git.kor-elf.net/kor-elf-shield/kor-elf-shield/internal/log"
|
||||
@@ -78,7 +79,12 @@ func runDaemon(ctx context.Context, _ *cli.Command) error {
|
||||
|
||||
blocklistService := newBlocklistService(ctx, repositories.Blocklist(), logger)
|
||||
|
||||
d, err := daemon.NewDaemon(config, logger, notificationsService, dockerService, blocklistService)
|
||||
geoIPService := newGeoIPService(config.DataDir, logger)
|
||||
defer func() {
|
||||
_ = geoIPService.Close()
|
||||
}()
|
||||
|
||||
d, err := daemon.NewDaemon(config, logger, notificationsService, dockerService, blocklistService, geoIPService)
|
||||
if err != nil {
|
||||
logger.Fatal(err.Error())
|
||||
|
||||
@@ -150,3 +156,16 @@ func newBlocklistService(ctx context.Context, blocklistRepository repository.Blo
|
||||
|
||||
return blocklistService
|
||||
}
|
||||
|
||||
func newGeoIPService(dataDir string, logger log.Logger) geoip.GeoIP {
|
||||
config, geoIPSupport, err := setting.Config.OtherSettingsPath.ToConfig(dataDir, logger)
|
||||
if err != nil {
|
||||
logger.Error(fmt.Sprintf("Failed to create geoIP service: %s", err))
|
||||
return geoip.NewFalseGeoIP()
|
||||
}
|
||||
if !geoIPSupport || config.GeoIP == nil {
|
||||
return geoip.NewFalseGeoIP()
|
||||
}
|
||||
|
||||
return geoip.New(config, logger)
|
||||
}
|
||||
|
||||
@@ -15,6 +15,7 @@ import (
|
||||
"git.kor-elf.net/kor-elf-shield/kor-elf-shield/internal/daemon/firewall"
|
||||
"git.kor-elf.net/kor-elf-shield/kor-elf-shield/internal/daemon/firewall/blocking"
|
||||
"git.kor-elf.net/kor-elf-shield/kor-elf-shield/internal/daemon/firewall/types"
|
||||
"git.kor-elf.net/kor-elf-shield/kor-elf-shield/internal/daemon/geoip"
|
||||
"git.kor-elf.net/kor-elf-shield/kor-elf-shield/internal/daemon/notifications"
|
||||
"git.kor-elf.net/kor-elf-shield/kor-elf-shield/internal/daemon/pidfile"
|
||||
"git.kor-elf.net/kor-elf-shield/kor-elf-shield/internal/daemon/socket"
|
||||
@@ -37,6 +38,7 @@ type daemon struct {
|
||||
analyzer analyzer.Analyzer
|
||||
docker docker_monitor.Docker
|
||||
blocklist blocklist.Blocklist
|
||||
geoIPService geoip.GeoIP
|
||||
|
||||
stopCh chan struct{}
|
||||
}
|
||||
@@ -90,6 +92,11 @@ func (d *daemon) Run(ctx context.Context, isTesting bool, testingInterval uint16
|
||||
_ = d.blocklist.Close()
|
||||
}()
|
||||
|
||||
d.geoIPService.Run(ctx)
|
||||
defer func() {
|
||||
_ = d.geoIPService.Close()
|
||||
}()
|
||||
|
||||
go d.socket.Run(ctx, d.socketCommand)
|
||||
d.runWorker(ctx, isTesting, testingInterval)
|
||||
|
||||
|
||||
@@ -9,6 +9,7 @@ import (
|
||||
"git.kor-elf.net/kor-elf-shield/kor-elf-shield/internal/daemon/docker_monitor"
|
||||
firewall2 "git.kor-elf.net/kor-elf-shield/kor-elf-shield/internal/daemon/firewall"
|
||||
"git.kor-elf.net/kor-elf-shield/kor-elf-shield/internal/daemon/firewall/blocking"
|
||||
"git.kor-elf.net/kor-elf-shield/kor-elf-shield/internal/daemon/geoip"
|
||||
"git.kor-elf.net/kor-elf-shield/kor-elf-shield/internal/daemon/notifications"
|
||||
"git.kor-elf.net/kor-elf-shield/kor-elf-shield/internal/daemon/pidfile"
|
||||
"git.kor-elf.net/kor-elf-shield/kor-elf-shield/internal/daemon/socket"
|
||||
@@ -21,6 +22,7 @@ func NewDaemon(
|
||||
notifications notifications.Notifications,
|
||||
docker docker_monitor.Docker,
|
||||
blocklist blocklist.Blocklist,
|
||||
geoIPService geoip.GeoIP,
|
||||
) (Daemon, error) {
|
||||
if logger == nil {
|
||||
return nil, errors.New("logger is nil")
|
||||
@@ -47,7 +49,7 @@ func NewDaemon(
|
||||
)
|
||||
|
||||
blockService := brute_force_protection_group.NewBlockService(firewall.BlockIP, firewall.BlockIPWithPorts)
|
||||
analyzerService := analyzer.New(opts.ConfigAnalyzer, blockService, opts.Repositories, logger, notifications)
|
||||
analyzerService := analyzer.New(opts.ConfigAnalyzer, blockService, opts.Repositories, logger, notifications, geoIPService.Info)
|
||||
|
||||
return &daemon{
|
||||
pidFile: pidFile,
|
||||
@@ -58,5 +60,6 @@ func NewDaemon(
|
||||
analyzer: analyzerService,
|
||||
docker: docker,
|
||||
blocklist: blocklist,
|
||||
geoIPService: geoIPService,
|
||||
}, nil
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user