refactoring: full refactoring the database structure from 1 file to 2 file db struct to avoid conflict 2 writters and sqllite busy, improve tests
Some checks failed
build / build (push) Has been cancelled

This commit is contained in:
d3m0k1d
2026-01-22 20:29:19 +03:00
parent 9a7e5a4796
commit 5f607d0be0
13 changed files with 989 additions and 364 deletions

View File

@@ -25,13 +25,27 @@ var DaemonCmd = &cobra.Command{
defer stop()
log := logger.New(false)
log.Info("Starting BanForge daemon")
db, err := storage.NewDB()
reqDb_w, err := storage.NewRequestsWr()
if err != nil {
log.Error("Failed to create database", "error", err)
log.Error("Failed to create request writer", "error", err)
os.Exit(1)
}
banDb_r, err := storage.NewBanReader()
if err != nil {
log.Error("Failed to create ban reader", "error", err)
os.Exit(1)
}
banDb_w, err := storage.NewBanWriter()
if err != nil {
log.Error("Failed to create ban writter", "error", err)
os.Exit(1)
}
defer func() {
err = db.Close()
err = banDb_r.Close()
if err != nil {
log.Error("Failed to close database connection", "error", err)
}
err = banDb_w.Close()
if err != nil {
log.Error("Failed to close database connection", "error", err)
}
@@ -49,11 +63,11 @@ var DaemonCmd = &cobra.Command{
log.Error("Failed to load rules", "error", err)
os.Exit(1)
}
j := judge.New(db, b, resultCh, entryCh)
j := judge.New(banDb_r, banDb_w, b, resultCh, entryCh)
j.LoadRules(r)
go j.UnbanChecker()
go j.Tribunal()
go storage.Write(db, resultCh)
go storage.Write(reqDb_w, resultCh)
var scanners []*parser.Scanner
for _, svc := range cfg.Service {

View File

@@ -18,7 +18,7 @@ var UnbanCmd = &cobra.Command{
Use: "unban",
Short: "Unban IP",
Run: func(cmd *cobra.Command, args []string) {
db, err := storage.NewDB()
db, err := storage.NewBanWriter()
if err != nil {
fmt.Println(err)
os.Exit(1)
@@ -60,7 +60,7 @@ var BanCmd = &cobra.Command{
Use: "ban",
Short: "Ban IP",
Run: func(cmd *cobra.Command, args []string) {
db, err := storage.NewDB()
db, err := storage.NewBanWriter()
if err != nil {
fmt.Println(err)
os.Exit(1)

View File

@@ -82,23 +82,11 @@ var InitCmd = &cobra.Command{
}
fmt.Println("Firewall configured")
db, err := storage.NewDB()
err = storage.CreateTables()
if err != nil {
fmt.Println(err)
os.Exit(1)
}
err = db.CreateTable()
if err != nil {
fmt.Println(err)
os.Exit(1)
}
defer func() {
err = db.Close()
if err != nil {
fmt.Println(err)
os.Exit(1)
}
}()
fmt.Println("Firewall detected and configured")
fmt.Println("BanForge initialized successfully!")

View File

@@ -13,7 +13,7 @@ var BanListCmd = &cobra.Command{
Short: "List banned IP adresses",
Run: func(cmd *cobra.Command, args []string) {
var log = logger.New(false)
d, err := storage.NewDB()
d, err := storage.NewBanReader()
if err != nil {
log.Error("Failed to create database", "error", err)
os.Exit(1)