feat: add metrics support

This commit is contained in:
d3m0k1d
2026-02-22 19:45:47 +03:00
parent 7bba444522
commit 3ac1250bfc
6 changed files with 113 additions and 3 deletions

View File

@@ -3,15 +3,31 @@ package config
import (
"errors"
"fmt"
"github.com/BurntSushi/toml"
"github.com/d3m0k1d/BanForge/internal/logger"
"github.com/d3m0k1d/BanForge/internal/metrics"
"os"
"strconv"
"strings"
"time"
"github.com/BurntSushi/toml"
"github.com/d3m0k1d/BanForge/internal/logger"
)
func LoadMetricsConfig() (*Metrics, error) {
cfg := &Metrics{}
_, err := toml.DecodeFile("/etc/banforge/config.toml", cfg)
if err != nil {
return nil, fmt.Errorf("failed to decode config: %w", err)
}
if cfg.Enabled && cfg.Port > 0 && cfg.Port < 65535 {
go metrics.StartMetricsServer(cfg.Port)
} else if cfg.Enabled {
fmt.Println("Metrics enabled but port invalid, not starting server")
}
return cfg, nil
}
func LoadRuleConfig() ([]Rule, error) {
log := logger.New(false)
var cfg Rules

View File

@@ -8,6 +8,10 @@ const Base_config = `
name = ""
config = "/etc/nftables.conf"
[metrics]
enabled = false
port = 2122
[[service]]
name = "nginx"
logging = "file"

View File

@@ -14,6 +14,7 @@ type Service struct {
type Config struct {
Firewall Firewall `toml:"firewall"`
Metrics Metrics `toml:"metrics"`
Service []Service `toml:"service"`
}
@@ -31,3 +32,8 @@ type Rule struct {
MaxRetry int `toml:"max_retry"`
BanTime string `toml:"ban_time"`
}
type Metrics struct {
Enabled bool `toml:"enabled"`
Port int `toml:"port"`
}