mirror of
https://github.com/wweir/sower.git
synced 2026-10-19 16:14:33 +00:00
fix(router): skip empty country mmdb
This commit is contained in:
+8
-4
@@ -6,6 +6,7 @@ import (
|
||||
"log/slog"
|
||||
"net"
|
||||
"strconv"
|
||||
"strings"
|
||||
"sync"
|
||||
"time"
|
||||
|
||||
@@ -63,10 +64,13 @@ func NewRouter(serveIPs []string, upstreamDNS, fallbackDNS, mmdbFile string, pro
|
||||
}
|
||||
}
|
||||
|
||||
var err error
|
||||
r.country.Reader, err = geoip2.Open(mmdbFile)
|
||||
if err != nil {
|
||||
slog.Warn("open geoip2 db", "error", err, "file", mmdbFile)
|
||||
mmdbFile = strings.TrimSpace(mmdbFile)
|
||||
if mmdbFile != "" {
|
||||
var err error
|
||||
r.country.Reader, err = geoip2.Open(mmdbFile)
|
||||
if err != nil {
|
||||
slog.Warn("open geoip2 db", "error", err, "file", mmdbFile)
|
||||
}
|
||||
}
|
||||
|
||||
return &r
|
||||
|
||||
@@ -1,8 +1,10 @@
|
||||
package router
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"errors"
|
||||
"io"
|
||||
"log/slog"
|
||||
"net"
|
||||
"net/http"
|
||||
"strings"
|
||||
@@ -142,6 +144,26 @@ func TestAddCountryCIDRsSkipsInvalidEntries(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func TestNewRouterSkipsEmptyCountryMMDB(t *testing.T) {
|
||||
var logs bytes.Buffer
|
||||
previous := slog.Default()
|
||||
slog.SetDefault(slog.New(slog.NewTextHandler(&logs, nil)))
|
||||
t.Cleanup(func() {
|
||||
slog.SetDefault(previous)
|
||||
})
|
||||
|
||||
for _, mmdbFile := range []string{"", " "} {
|
||||
r := NewRouter(nil, "", "223.5.5.5", mmdbFile, nil)
|
||||
if r.country.Reader != nil {
|
||||
t.Fatalf("expected empty MMDB %q to disable GeoIP lookup", mmdbFile)
|
||||
}
|
||||
}
|
||||
|
||||
if strings.Contains(logs.String(), "open geoip2 db") {
|
||||
t.Fatalf("empty MMDB should not emit open warning, logs: %s", logs.String())
|
||||
}
|
||||
}
|
||||
|
||||
func TestIsAccessChecksRequestedPortOnly(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user