feat: add simple setup func to blockerengine, fix init and db, version for realease v0.2.0
All checks were successful
CD - BanForge Release / release (push) Successful in 20s
CI.yml / build (push) Successful in 2m1s
CD - BanForge Release / build (amd64, linux) (push) Successful in 3m3s
CD - BanForge Release / build (arm64, linux) (push) Successful in 2m52s

This commit is contained in:
d3m0k1d
2026-01-15 19:14:44 +03:00
parent bbb152dfb8
commit 1603fbee35
6 changed files with 53 additions and 1 deletions

View File

@@ -57,3 +57,7 @@ func (f *Firewalld) Unban(ip string) error {
f.logger.Info("Reload " + string(output))
return nil
}
func (f *Firewalld) Setup(config string) error {
return nil
}

View File

@@ -9,6 +9,7 @@ import (
type BlockerEngine interface {
Ban(ip string) error
Unban(ip string) error
Setup(config string) error
}
func GetBlocker(fw string, config string) BlockerEngine {

View File

@@ -101,3 +101,7 @@ func (f *Iptables) Unban(ip string) error {
"output", string(output))
return nil
}
func (f *Iptables) Setup(config string) error {
return nil
}

View File

@@ -55,3 +55,28 @@ func (u *Ufw) Unban(ip string) error {
u.logger.Info("IP unbanned", "ip", ip, "output", string(output))
return nil
}
func (u *Ufw) Setup(config string) error {
if config != "" {
fmt.Printf("Ufw dont support config file\n")
cmd := exec.Command("sudo", "ufw", "enable")
output, err := cmd.CombinedOutput()
if err != nil {
u.logger.Error("failed to enable ufw",
"error", err.Error(),
"output", string(output))
return fmt.Errorf("failed to enable ufw: %w", err)
}
}
if config == "" {
cmd := exec.Command("sudo", "ufw", "enable")
output, err := cmd.CombinedOutput()
if err != nil {
u.logger.Error("failed to enable ufw",
"error", err.Error(),
"output", string(output))
return fmt.Errorf("failed to enable ufw: %w", err)
}
}
return nil
}

View File

@@ -13,10 +13,14 @@ type DB struct {
}
func NewDB() (*DB, error) {
db, err := sql.Open("sqlite3", "/var/lib/banforge/storage.db")
db, err := sql.Open("sqlite3", "/var/lib/banforge/storage.db?mode=rwc&_journal_mode=WAL&_busy_timeout=10000&cache=shared")
if err != nil {
return nil, err
}
if err := db.Ping(); err != nil {
return nil, err
}
return &DB{
logger: logger.New(false),
db: db,