From 3f1e52f09ee0ac611fbf3f3f9b7a4294c421a158 Mon Sep 17 00:00:00 2001 From: Sanaei Date: Thu, 10 Sep 2026 21:08:13 +0200 Subject: [PATCH] refactor(panel): drop two duplicated helpers SettingService.GetDefaultJSONConfig was a byte-identical copy of GetDefaultXrayConfig with no callers anywhere in the tree. amneziawgnet.normalizeDNSServer re-implemented the exported amneziawg.NormalizeDNSServer line for line, in a file that already imports that package for EffectiveMTU three lines above it. Its two callers now use the exported one, so the bare-IP-to-host:port rule has a single definition. --- internal/amneziawgnet/dns.go | 3 ++- internal/amneziawgnet/egress.go | 3 ++- internal/amneziawgnet/outbound_manager.go | 16 ---------------- internal/web/service/setting.go | 9 --------- 4 files changed, 4 insertions(+), 27 deletions(-) diff --git a/internal/amneziawgnet/dns.go b/internal/amneziawgnet/dns.go index 93ed40670..d2544828c 100644 --- a/internal/amneziawgnet/dns.go +++ b/internal/amneziawgnet/dns.go @@ -14,6 +14,7 @@ import ( "gvisor.dev/gvisor/pkg/tcpip" "gvisor.dev/gvisor/pkg/tcpip/adapters/gonet" + "github.com/mhsanaei/3x-ui/v3/internal/amneziawg" "github.com/mhsanaei/3x-ui/v3/internal/logger" ) @@ -78,7 +79,7 @@ func dnsCacheKey(tag, dnsServer, host string) string { } func resolveTunnelVia(ctx context.Context, dev *Device, tag string, dnsServer string, host string) (netip.Addr, error) { - normDNS := normalizeDNSServer(dnsServer) + normDNS := amneziawg.NormalizeDNSServer(dnsServer) if normDNS == "" { normDNS = defaultDNSFor(dev.LocalAddresses()) } diff --git a/internal/amneziawgnet/egress.go b/internal/amneziawgnet/egress.go index 6acdaad41..2764cbffd 100644 --- a/internal/amneziawgnet/egress.go +++ b/internal/amneziawgnet/egress.go @@ -14,6 +14,7 @@ import ( "gvisor.dev/gvisor/pkg/tcpip" "gvisor.dev/gvisor/pkg/tcpip/adapters/gonet" + "github.com/mhsanaei/3x-ui/v3/internal/amneziawg" "github.com/mhsanaei/3x-ui/v3/internal/logger" ) @@ -77,7 +78,7 @@ func (s *socks5EgressServer) SetDNSServer(addr string) { func (s *socks5EgressServer) SetStack(tag string, dev *Device, dnsServer ...string) { norm := "" if len(dnsServer) > 0 && dnsServer[0] != "" { - norm = normalizeDNSServer(dnsServer[0]) + norm = amneziawg.NormalizeDNSServer(dnsServer[0]) } s.mu.Lock() prevDev := s.stacks[tag] diff --git a/internal/amneziawgnet/outbound_manager.go b/internal/amneziawgnet/outbound_manager.go index 3d05adf45..ea17d26d0 100644 --- a/internal/amneziawgnet/outbound_manager.go +++ b/internal/amneziawgnet/outbound_manager.go @@ -2,7 +2,6 @@ package amneziawgnet import ( "fmt" - "net/netip" "strings" "sync" @@ -53,21 +52,6 @@ func outboundFingerprint(inst amneziawg.OutboundInstance) string { strings.Join(inst.Address, ",")) } -// normalizeDNSServer normalizes a configured DNS server to host:port. -func normalizeDNSServer(s string) string { - s = strings.TrimSpace(s) - if s == "" { - return "" - } - if addr, err := netip.ParseAddr(s); err == nil { - return netip.AddrPortFrom(addr, 53).String() - } - if ap, err := netip.ParseAddrPort(s); err == nil { - return ap.String() - } - return s -} - // Reconcile converges devices to desired and stops removed tags; per-tick // contract of Manager.Reconcile -- errors log, never abort the batch. func (m *OutboundManager) Reconcile(desired []OutboundDesired) { diff --git a/internal/web/service/setting.go b/internal/web/service/setting.go index 4b3c790f0..c5c6bba4d 100644 --- a/internal/web/service/setting.go +++ b/internal/web/service/setting.go @@ -209,15 +209,6 @@ var defaultValueMap = map[string]string{ // It handles configuration storage, retrieval, and validation for all system settings. type SettingService struct{} -func (s *SettingService) GetDefaultJSONConfig() (any, error) { - var jsonData any - err := json.Unmarshal([]byte(xrayTemplateConfig), &jsonData) - if err != nil { - return nil, err - } - return jsonData, nil -} - func (s *SettingService) GetAllSetting() (*entity.AllSetting, error) { db := database.GetDB() settings := make([]*model.Setting, 0)