diff --git a/cmd/banforge/main.go b/cmd/banforge/main.go index 1c421a8..4b56402 100644 --- a/cmd/banforge/main.go +++ b/cmd/banforge/main.go @@ -5,6 +5,10 @@ import ( "os" "github.com/d3m0k1d/BanForge/internal/config" + _ "github.com/d3m0k1d/BanForge/internal/judge" + "github.com/d3m0k1d/BanForge/internal/logger" + "github.com/d3m0k1d/BanForge/internal/parser" + _ "github.com/d3m0k1d/BanForge/internal/storage" "github.com/spf13/cobra" ) @@ -44,6 +48,32 @@ var initCmd = &cobra.Command{ }, } +var daemonCmd = &cobra.Command{ + Use: "daemon", + Short: "Run BanForge daemon process", + Run: func(cmd *cobra.Command, args []string) { + log := logger.New(false) + log.Info("Starting BanForge daemon") + //db, err := storage.NewDB() + //if err != nil { + //log.Error("Failed to create database", "error", err) + //} + cfg, err := config.LoadConfig() + if err != nil { + log.Error("Failed to load config", "error", err) + } + for service := range cfg.Service { + if cfg.Service[service].Enabled && cfg.Service[service].Name != "nginx" { + pars, err := parser.NewScanner(cfg.Service[service].LogPath) + if err != nil { + log.Error("Failed to create parser", "error", err) + } + go pars.Start() + } + } + }, +} + func Init() { } diff --git a/internal/config/sysconf.go b/internal/config/sysconf.go index 9e21a29..d43668f 100644 --- a/internal/config/sysconf.go +++ b/internal/config/sysconf.go @@ -117,3 +117,12 @@ func FindFirewall() error { return fmt.Errorf("firewall not found") } + +func LoadConfig() (*Config, error) { + cfg := &Config{} + _, err := toml.DecodeFile("/etc/banforge/config.toml", cfg) + if err != nil { + return nil, fmt.Errorf("failed to decode config: %w", err) + } + return cfg, nil +} diff --git a/internal/config/types.go b/internal/config/types.go index 4fcdcbc..c14f805 100644 --- a/internal/config/types.go +++ b/internal/config/types.go @@ -13,8 +13,8 @@ type Service struct { } type Config struct { - Firewall Firewall `toml:"firewall"` - Service Service `toml:"service"` + Firewall Firewall `toml:"firewall"` + Service []Service `toml:"service"` } // Rules