feat: add simple setup func to blockerengine, fix init and db, version for realease v0.2.0
This commit is contained in:
@@ -4,6 +4,7 @@ import (
|
||||
"fmt"
|
||||
"os"
|
||||
|
||||
"github.com/d3m0k1d/BanForge/internal/blocker"
|
||||
"github.com/d3m0k1d/BanForge/internal/config"
|
||||
"github.com/d3m0k1d/BanForge/internal/storage"
|
||||
"github.com/spf13/cobra"
|
||||
@@ -68,6 +69,19 @@ var InitCmd = &cobra.Command{
|
||||
fmt.Println(err)
|
||||
os.Exit(1)
|
||||
}
|
||||
cfg, err := config.LoadConfig()
|
||||
if err != nil {
|
||||
fmt.Println(err)
|
||||
os.Exit(1)
|
||||
}
|
||||
b := blocker.GetBlocker(cfg.Firewall.Name, cfg.Firewall.Config)
|
||||
err = b.Setup(cfg.Firewall.Config)
|
||||
if err != nil {
|
||||
fmt.Println(err)
|
||||
os.Exit(1)
|
||||
}
|
||||
fmt.Println("Firewall configured")
|
||||
|
||||
db, err := storage.NewDB()
|
||||
if err != nil {
|
||||
fmt.Println(err)
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user