36 lines
886 B
Go
36 lines
886 B
Go
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)
|
|
}
|