@@ -771,35 +771,36 @@ func (s *ServerHandler) ReportSystemInfo(c context.Context, r *pb.Host) (*pb.Rec
771771 log .Printf ("服务器 %s (ID:%d) DDNS已启用但IP为空,跳过更新" , server .Name , clientID )
772772 } else if len (server .DDNSProfiles ) == 0 {
773773 log .Printf ("服务器 %s (ID:%d) DDNS已启用但未配置DDNS配置文件" , server .Name , clientID )
774- } else if server .Host != nil && server .Host .IP == host .IP {
775- // IP 没有变化,跳过更新(但不记录日志,避免频繁输出)
776774 } else {
777- // IP 发生变化或首次设置,触发 DDNS 更新
778- ipv4 , ipv6 , _ := utils .SplitIPAddr (host .IP )
779- providers , err := singleton .GetDDNSProvidersFromProfilesWithServer (
780- server .DDNSProfiles ,
781- & ddns.IP {Ipv4Addr : ipv4 , Ipv6Addr : ipv6 },
782- server .Name ,
783- clientID ,
784- )
785- if err == nil {
786- log .Printf ("服务器 %s (ID:%d) IP变化 (%s -> %s),触发DDNS更新,配置数量: %d" ,
787- server .Name , clientID ,
788- func () string {
789- if server .Host != nil {
790- return server .Host .IP
791- } else {
792- return "无"
793- }
794- }(),
795- host .IP , len (providers ))
796- for _ , provider := range providers {
797- go func (provider * ddns.Provider ) {
798- provider .UpdateDomain (context .Background ())
799- }(provider )
800- }
775+ // 获取当前保存的IP地址
776+ currentIP := ""
777+ if server .Host != nil {
778+ currentIP = server .Host .IP
779+ }
780+
781+ // 检查IP是否实际发生了变化
782+ if currentIP == host .IP {
783+ // IP 没有变化,跳过更新(但不记录日志,避免频繁输出)
801784 } else {
802- log .Printf ("服务器 %s (ID:%d) 获取DDNS配置时发生错误: %v" , server .Name , clientID , err )
785+ // IP 发生变化或首次设置,触发 DDNS 更新
786+ ipv4 , ipv6 , _ := utils .SplitIPAddr (host .IP )
787+ providers , err := singleton .GetDDNSProvidersFromProfilesWithServer (
788+ server .DDNSProfiles ,
789+ & ddns.IP {Ipv4Addr : ipv4 , Ipv6Addr : ipv6 },
790+ server .Name ,
791+ clientID ,
792+ )
793+ if err == nil {
794+ log .Printf ("服务器 %s (ID:%d) IP变化 (%s -> %s),触发DDNS更新,配置数量: %d" ,
795+ server .Name , clientID , currentIP , host .IP , len (providers ))
796+ for _ , provider := range providers {
797+ go func (provider * ddns.Provider ) {
798+ provider .UpdateDomain (context .Background ())
799+ }(provider )
800+ }
801+ } else {
802+ log .Printf ("服务器 %s (ID:%d) 获取DDNS配置时发生错误: %v" , server .Name , clientID , err )
803+ }
803804 }
804805 }
805806 }
0 commit comments