Skip to content

Commit 2a6f259

Browse files
committed
Update.
1 parent 59beeae commit 2a6f259

File tree

2 files changed

+30
-11
lines changed

2 files changed

+30
-11
lines changed

db/badger.go

Lines changed: 30 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -159,7 +159,7 @@ func (b *BadgerDB) FindModel(id uint64, modelType string, result interface{}) er
159159

160160
return nil
161161
case "server":
162-
// 服务器记录需要特殊处理Secret、HostJSON和LastStateJSON字段(有json:"-"标签)
162+
// 服务器记录需要特殊处理Secret、HostJSON、LastStateJSON和DDNSProfilesRaw字段(有json:"-"标签)
163163
var serverData map[string]interface{}
164164
if err := json.Unmarshal(data, &serverData); err != nil {
165165
return err
@@ -196,6 +196,35 @@ func (b *BadgerDB) FindModel(id uint64, modelType string, result interface{}) er
196196
server.Secret = secretStr
197197
}
198198
}
199+
200+
// 设置 DDNSProfilesRaw 字段
201+
if ddnsRaw, exists := serverData["DDNSProfilesRaw"]; exists {
202+
if ddnsStr, isStr := ddnsRaw.(string); isStr && ddnsStr != "" {
203+
server.DDNSProfilesRaw = ddnsStr
204+
log.Printf("BadgerDB FindModel: 服务器 %d (%s) 加载 DDNSProfilesRaw: %s",
205+
server.ID, server.Name, ddnsStr)
206+
// 同时解析到 DDNSProfiles 字段
207+
if err := utils.Json.Unmarshal([]byte(ddnsStr), &server.DDNSProfiles); err != nil {
208+
log.Printf("解析服务器 %d 的DDNSProfiles失败: %v", server.ID, err)
209+
server.DDNSProfiles = []uint64{}
210+
} else {
211+
log.Printf("BadgerDB FindModel: 服务器 %d (%s) 解析 DDNSProfiles: %v",
212+
server.ID, server.Name, server.DDNSProfiles)
213+
}
214+
} else {
215+
// 处理 nil 或空字符串的情况
216+
server.DDNSProfilesRaw = "[]"
217+
server.DDNSProfiles = []uint64{}
218+
log.Printf("BadgerDB FindModel: 服务器 %d (%s) DDNSProfilesRaw 为 nil/空,设置为空数组",
219+
server.ID, server.Name)
220+
}
221+
} else {
222+
// 字段不存在,设置默认值
223+
server.DDNSProfilesRaw = "[]"
224+
server.DDNSProfiles = []uint64{}
225+
log.Printf("BadgerDB FindModel: 服务器 %d (%s) 没有找到 DDNSProfilesRaw 字段,设置默认值",
226+
server.ID, server.Name)
227+
}
199228
}
200229

201230
return nil

service/singleton/server.go

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -673,16 +673,6 @@ func UpdateServer(s *model.Server) error {
673673
}
674674
}
675675

676-
// 保留内存中的 DDNS 配置,避免被数据库中的旧数据覆盖
677-
if memoryServer, exists := ServerList[s.ID]; exists && memoryServer != nil {
678-
if memoryServer.DDNSProfilesRaw != "" && memoryServer.DDNSProfilesRaw != "[]" {
679-
dbServer.DDNSProfilesRaw = memoryServer.DDNSProfilesRaw
680-
dbServer.DDNSProfiles = memoryServer.DDNSProfiles
681-
dbServer.EnableDDNS = memoryServer.EnableDDNS
682-
log.Printf("BadgerDB: 流量保存时保留服务器 %s 的 DDNS 配置: %s", s.Name, memoryServer.DDNSProfilesRaw)
683-
}
684-
}
685-
686676
// 保存回数据库
687677
if err := serverOps.SaveServer(dbServer); err != nil {
688678
log.Printf("BadgerDB: 保存服务器 %s 的数据失败: %v", s.Name, err)

0 commit comments

Comments
 (0)