From 3acd0b899c315f4598cddd33cd79d6770ff647b3 Mon Sep 17 00:00:00 2001 From: d3m0k1d Date: Sun, 22 Feb 2026 19:45:59 +0300 Subject: [PATCH] fix: linter run and gosec fix --- internal/config/appconf.go | 7 ++++--- internal/metrics/metrics.go | 25 +++++++++++++++++++------ internal/metrics/server.go | 14 -------------- 3 files changed, 23 insertions(+), 23 deletions(-) delete mode 100644 internal/metrics/server.go diff --git a/internal/config/appconf.go b/internal/config/appconf.go index 837bc34..56914eb 100644 --- a/internal/config/appconf.go +++ b/internal/config/appconf.go @@ -3,13 +3,14 @@ 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" + "github.com/d3m0k1d/BanForge/internal/metrics" ) func LoadMetricsConfig() (*Metrics, error) { diff --git a/internal/metrics/metrics.go b/internal/metrics/metrics.go index f1ee416..d7095dd 100644 --- a/internal/metrics/metrics.go +++ b/internal/metrics/metrics.go @@ -2,8 +2,10 @@ package metrics import ( "fmt" + "log" "net/http" "sync" + "time" ) var ( @@ -39,7 +41,6 @@ func IncLogParsed() { func MetricsHandler() http.Handler { return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - metricsMu.RLock() snapshot := make(map[string]int64, len(metrics)) for k, v := range metrics { @@ -51,15 +52,27 @@ func MetricsHandler() http.Handler { for name, value := range snapshot { metricName := name + "_total" - fmt.Fprintf(w, "# TYPE %s counter\n", metricName) - fmt.Fprintf(w, "%s %d\n", metricName, value) + _, _ = fmt.Fprintf(w, "# TYPE %s counter\n", metricName) + _, _ = fmt.Fprintf(w, "%s %d\n", metricName, value) } }) } + func StartMetricsServer(port int) { - http.Handle("/metrics", MetricsHandler()) - addr := fmt.Sprintf(":%d", port) - if err := http.ListenAndServe(addr, nil); err != nil { + mux := http.NewServeMux() + mux.Handle("/metrics", MetricsHandler()) + + server := &http.Server{ + Addr: fmt.Sprintf(":%d", port), + Handler: mux, + ReadTimeout: 5 * time.Second, + WriteTimeout: 10 * time.Second, + IdleTimeout: 15 * time.Second, + } + + log.Printf("Starting metrics server on %s", server.Addr) + if err := server.ListenAndServe(); err != nil && err != http.ErrServerClosed { + log.Printf("Metrics server error: %v", err) } } diff --git a/internal/metrics/server.go b/internal/metrics/server.go deleted file mode 100644 index 1f47870..0000000 --- a/internal/metrics/server.go +++ /dev/null @@ -1,14 +0,0 @@ -package metrics - -import ( - "net/http" -) - -func Handler() http.Handler { - return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - w.Header().Set("Content-Type", "text/plain") - for k, v := range metrics { - w.Write([]byte(k + " " + string(v) + "\n")) - } - }) -}