Files
BanForge/cmd/banforge/main.go
d3m0k1d 761d6012a1
All checks were successful
CI.yml / build (push) Successful in 1m45s
fix: judge creator, daemon logic
2026-01-13 21:53:33 +03:00

100 lines
2.0 KiB
Go

package main
import (
"fmt"
"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"
)
var rootCmd = &cobra.Command{
Use: "banforge",
Short: "IPS log-based written on Golang",
Run: func(cmd *cobra.Command, args []string) {
},
}
var initCmd = &cobra.Command{
Use: "init",
Short: "Initialize BanForge",
Run: func(cmd *cobra.Command, args []string) {
fmt.Println("Initializing BanForge...")
err := os.Mkdir("/var/log/banforge", 0750)
if err != nil {
fmt.Println(err)
os.Exit(1)
}
err = os.Mkdir("/etc/banforge", 0750)
if err != nil {
fmt.Println(err)
os.Exit(1)
}
err = config.CreateConf()
if err != nil {
fmt.Println(err)
os.Exit(1)
}
err = config.FindFirewall()
if err != nil {
fmt.Println(err)
os.Exit(1)
}
},
}
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()
go func() {
ng := parser.NewNginxParser()
resultCh := make(chan *storage.LogEntry)
ng.Parse(pars.Events(), resultCh)
go storage.Write(db, resultCh)
}()
}
}
},
}
func Init() {
}
func Execute() {
rootCmd.AddCommand(daemonCmd)
rootCmd.AddCommand(initCmd)
if err := rootCmd.Execute(); err != nil {
fmt.Println(err)
os.Exit(1)
}
}
func main() {
Execute()
}