revert: remove factory.go
This commit is contained in:
@@ -1,65 +0,0 @@
|
|||||||
package blocker
|
|
||||||
|
|
||||||
import (
|
|
||||||
"fmt"
|
|
||||||
|
|
||||||
"github.com/d3m0k1d/BanForge/internal/logger"
|
|
||||||
)
|
|
||||||
|
|
||||||
// BlockerType defines the type of firewall blocker
|
|
||||||
type BlockerType string
|
|
||||||
|
|
||||||
const (
|
|
||||||
BlockerTypeNftables BlockerType = "nftables"
|
|
||||||
BlockerTypeIptables BlockerType = "iptables"
|
|
||||||
BlockerTypeFirewalld BlockerType = "firewalld"
|
|
||||||
BlockerTypeUfw BlockerType = "ufw"
|
|
||||||
)
|
|
||||||
|
|
||||||
// BlockerFactory creates new blocker instances
|
|
||||||
type BlockerFactory struct {
|
|
||||||
logger *logger.Logger
|
|
||||||
}
|
|
||||||
|
|
||||||
// NewBlockerFactory creates a new blocker factory
|
|
||||||
func NewBlockerFactory(logger *logger.Logger) *BlockerFactory {
|
|
||||||
return &BlockerFactory{
|
|
||||||
logger: logger,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Create creates a new blocker instance of the specified type
|
|
||||||
func (bf *BlockerFactory) Create(btype BlockerType, config string) (BlockerEngine, error) {
|
|
||||||
switch btype {
|
|
||||||
case BlockerTypeNftables:
|
|
||||||
return NewNftables(bf.logger, config), nil
|
|
||||||
case BlockerTypeIptables:
|
|
||||||
return NewIptables(bf.logger, config), nil
|
|
||||||
case BlockerTypeFirewalld:
|
|
||||||
return NewFirewalld(bf.logger), nil
|
|
||||||
case BlockerTypeUfw:
|
|
||||||
return NewUfw(bf.logger), nil
|
|
||||||
default:
|
|
||||||
return nil, fmt.Errorf("unknown blocker type: %s", btype)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// CreateFromString creates a blocker from string type name
|
|
||||||
func (bf *BlockerFactory) CreateFromString(typename, config string) (BlockerEngine, error) {
|
|
||||||
return bf.Create(BlockerType(typename), config)
|
|
||||||
}
|
|
||||||
|
|
||||||
// ListAvailable returns all available blocker types
|
|
||||||
func ListAvailable(logger *logger.Logger) []string {
|
|
||||||
factory := NewBlockerFactory(logger)
|
|
||||||
var available []string
|
|
||||||
|
|
||||||
for _, btype := range []BlockerType{BlockerTypeNftables, BlockerTypeIptables, BlockerTypeFirewalld, BlockerTypeUfw} {
|
|
||||||
blocker, err := factory.Create(btype, "")
|
|
||||||
if err == nil && blocker.IsAvailable() {
|
|
||||||
available = append(available, blocker.Name())
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return available
|
|
||||||
}
|
|
||||||
Reference in New Issue
Block a user