63 lines
1.9 KiB
Go
63 lines
1.9 KiB
Go
package daemon
|
|
|
|
import (
|
|
"errors"
|
|
|
|
"git.kor-elf.net/kor-elf-shield/kor-elf-shield/internal/daemon/analyzer"
|
|
"git.kor-elf.net/kor-elf-shield/kor-elf-shield/internal/daemon/analyzer/log/analysis/brute_force_protection_group"
|
|
"git.kor-elf.net/kor-elf-shield/kor-elf-shield/internal/daemon/blocklist"
|
|
"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/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"
|
|
"git.kor-elf.net/kor-elf-shield/kor-elf-shield/internal/log"
|
|
)
|
|
|
|
func NewDaemon(
|
|
opts DaemonOptions,
|
|
logger log.Logger,
|
|
notifications notifications.Notifications,
|
|
docker docker_monitor.Docker,
|
|
blocklist blocklist.Blocklist,
|
|
) (Daemon, error) {
|
|
if logger == nil {
|
|
return nil, errors.New("logger is nil")
|
|
}
|
|
|
|
pidFile, err := pidfile.New(opts.PathPidFile, logger)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
sock, err := socket.New(opts.PathSocketFile, logger)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
blockingService := blocking.New(opts.Repositories.Blocking(), logger)
|
|
firewall, err := firewall2.New(
|
|
opts.PathNftables,
|
|
blockingService,
|
|
logger,
|
|
opts.ConfigFirewall,
|
|
docker,
|
|
blocklist,
|
|
)
|
|
|
|
blockService := brute_force_protection_group.NewBlockService(firewall.BlockIP, firewall.BlockIPWithPorts)
|
|
analyzerService := analyzer.New(opts.ConfigAnalyzer, blockService, opts.Repositories, logger, notifications)
|
|
|
|
return &daemon{
|
|
pidFile: pidFile,
|
|
socket: sock,
|
|
logger: logger,
|
|
firewall: firewall,
|
|
notifications: notifications,
|
|
analyzer: analyzerService,
|
|
docker: docker,
|
|
blocklist: blocklist,
|
|
}, nil
|
|
}
|