platform: modularize api/gui, add docs-tests-web foundation, and refresh root config
This commit is contained in:
35
selective-vpn-api/app/traffic_appmarks_runtime_state.go
Normal file
35
selective-vpn-api/app/traffic_appmarks_runtime_state.go
Normal file
@@ -0,0 +1,35 @@
|
||||
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)
|
||||
}
|
||||
Reference in New Issue
Block a user