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"
|
"fmt"
|
||||||
"os"
|
"os"
|
||||||
|
|
||||||
|
"github.com/d3m0k1d/BanForge/internal/blocker"
|
||||||
"github.com/d3m0k1d/BanForge/internal/config"
|
"github.com/d3m0k1d/BanForge/internal/config"
|
||||||
"github.com/d3m0k1d/BanForge/internal/storage"
|
"github.com/d3m0k1d/BanForge/internal/storage"
|
||||||
"github.com/spf13/cobra"
|
"github.com/spf13/cobra"
|
||||||
@@ -68,6 +69,19 @@ var InitCmd = &cobra.Command{
|
|||||||
fmt.Println(err)
|
fmt.Println(err)
|
||||||
os.Exit(1)
|
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()
|
db, err := storage.NewDB()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
fmt.Println(err)
|
fmt.Println(err)
|
||||||
|
|||||||
@@ -57,3 +57,7 @@ func (f *Firewalld) Unban(ip string) error {
|
|||||||
f.logger.Info("Reload " + string(output))
|
f.logger.Info("Reload " + string(output))
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (f *Firewalld) Setup(config string) error {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|||||||
@@ -9,6 +9,7 @@ import (
|
|||||||
type BlockerEngine interface {
|
type BlockerEngine interface {
|
||||||
Ban(ip string) error
|
Ban(ip string) error
|
||||||
Unban(ip string) error
|
Unban(ip string) error
|
||||||
|
Setup(config string) error
|
||||||
}
|
}
|
||||||
|
|
||||||
func GetBlocker(fw string, config string) BlockerEngine {
|
func GetBlocker(fw string, config string) BlockerEngine {
|
||||||
|
|||||||
@@ -101,3 +101,7 @@ func (f *Iptables) Unban(ip string) error {
|
|||||||
"output", string(output))
|
"output", string(output))
|
||||||
return nil
|
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))
|
u.logger.Info("IP unbanned", "ip", ip, "output", string(output))
|
||||||
return nil
|
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) {
|
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 {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if err := db.Ping(); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
return &DB{
|
return &DB{
|
||||||
logger: logger.New(false),
|
logger: logger.New(false),
|
||||||
db: db,
|
db: db,
|
||||||
|
|||||||
Reference in New Issue
Block a user