package app import ( trafficappmarkspkg "selective-vpn-api/app/trafficappmarks" "time" ) func pruneExpiredAppMarks() error { appMarksMu.Lock() defer appMarksMu.Unlock() st := loadAppMarksState() if pruneExpiredAppMarksLocked(&st, time.Now().UTC()) { return saveAppMarksState(st) } return nil } func pruneExpiredAppMarksLocked(st *appMarksState, now time.Time) (changed bool) { return trafficappmarkspkg.PruneExpired(st, now, func(target string, id uint64) { _ = nftDeleteAppMarkRule(target, id) }) } func loadAppMarksState() appMarksState { return trafficappmarkspkg.LoadState(trafficAppMarksPath, canonicalizeAppKey) } func dedupeAppMarkItems(in []appMarkItem) ([]appMarkItem, bool) { return trafficappmarkspkg.DedupeItems(in, canonicalizeAppKey) } func saveAppMarksState(st appMarksState) error { return trafficappmarkspkg.SaveState(trafficAppMarksPath, st) }