refactor(agent): stop embedding GeoIP MMDB in agent binary

Agent ships without City/Country MMDB in the binary; Docker images COPY
databases into data_dir, bare installs seed via download on first start.
Server keeps Country-only embed for optional MaxMind control-plane use.
Also harden fetch script nonempty check and reject non-file MMDB paths.
This commit is contained in:
ryan
2026-08-06 16:24:57 +08:00
parent fb08002e99
commit 3328d3d121
17 changed files with 226 additions and 180 deletions
+4 -3
View File
@@ -11,7 +11,7 @@ import (
"strings"
"sync"
"github.com/Rain-kl/Wavelet/internal/apps/agent/geoipdata"
geodata "github.com/Rain-kl/Wavelet/internal/apps/openflare/geoip/data"
"github.com/Rain-kl/Wavelet/internal/model"
"github.com/Rain-kl/Wavelet/internal/repository"
pkggeoip "github.com/Rain-kl/Wavelet/pkg/geoip"
@@ -94,11 +94,12 @@ func ensureServerMMDB() (string, error) {
if _, err := os.Stat(path); err == nil {
return path, nil
}
if !os.IsNotExist(err) {
if err != nil && !os.IsNotExist(err) {
return "", err
}
data, err := fs.ReadFile(geoipdata.FS, geoipdata.DefaultMMDBName)
// Control plane: seed Country from embedded asset (no City; Agent uses disk/image).
data, err := fs.ReadFile(geodata.FS, geodata.DefaultMMDBName)
if err != nil {
return "", err
}