feat: first version for alpha test daemon on server
Some checks failed
CI.yml / build (push) Failing after 1m35s

This commit is contained in:
d3m0k1d
2026-01-13 22:33:49 +03:00
parent 761d6012a1
commit c2e9154c87
2 changed files with 51 additions and 10 deletions

View File

@@ -2,14 +2,15 @@ package main
import (
"fmt"
"os"
"github.com/d3m0k1d/BanForge/internal/blocker"
"github.com/d3m0k1d/BanForge/internal/config"
_ "github.com/d3m0k1d/BanForge/internal/judge"
"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"
"os"
"time"
)
var rootCmd = &cobra.Command{
@@ -57,27 +58,67 @@ var daemonCmd = &cobra.Command{
db, err := storage.NewDB()
if err != nil {
log.Error("Failed to create database", "error", err)
os.Exit(1)
}
defer func() {
err = db.Close()
if err != nil {
log.Error("Failed to close database connection", "error", err)
}
}()
cfg, err := config.LoadConfig()
if err != nil {
log.Error("Failed to load config", "error", err)
os.Exit(1)
}
var b blocker.BlockerEngine
fw := cfg.Firewall.Name
switch fw {
case "ufw":
b = blocker.NewUfw(log)
case "iptables":
b = blocker.NewIptables(log, cfg.Firewall.Config)
case "nftables":
b = blocker.NewNftables(log, cfg.Firewall.Config)
case "firewalld":
b = blocker.NewFirewalld(log)
default:
log.Error("Unknown firewall", "firewall", fw)
os.Exit(1)
}
r, err := config.LoadRuleConfig()
if err != nil {
log.Error("Failed to load rules", "error", err)
os.Exit(1)
}
j := judge.New(db, b)
j.LoadRules(r)
go func() {
ticker := time.NewTicker(5 * time.Second)
defer ticker.Stop()
for range ticker.C {
if err := j.ProcessUnviewed(); err != nil {
log.Error("Failed to process unviewed", "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)
log.Error("Failed to create scanner", "error", err)
}
go pars.Start()
go func() {
go func(p *parser.Scanner) {
ng := parser.NewNginxParser()
resultCh := make(chan *storage.LogEntry)
ng.Parse(pars.Events(), resultCh)
resultCh := make(chan *storage.LogEntry, 100)
ng.Parse(p.Events(), resultCh)
go storage.Write(db, resultCh)
}()
}(pars)
}
}
select {}
},
}

View File

@@ -1,4 +1,4 @@
package Judge
package judge
import (
"fmt"