feat: refactor interception modules into pausable group

- Add GroupModule to wrap interception, dnsmonitor, and compat modules
- Simplify pause/resume operations by grouping related modules
- Update worker info collection to handle nested module groups
- Remove deprecated flags and improve module lifecycle management
- Add proper atomic state tracking for nfqueue interception

https://github.com/safing/portmaster/issues/2050
This commit is contained in:
Alexandr Stelnykovych
2025-11-06 17:28:38 +02:00
parent 7709a6600c
commit 4d2d91972b
8 changed files with 93 additions and 55 deletions

View File

@@ -0,0 +1,33 @@
package mgr
// GroupModule is a module that wraps a group of modules,
// to allow nesting groups of modules in parent group.
type GroupModule struct {
mgr *Manager
group *Group
}
func NewGroupModule(name string, modules ...Module) *GroupModule {
return &GroupModule{
mgr: New(name),
group: NewGroup(modules...),
}
}
func (gm *GroupModule) Manager() *Manager {
return gm.mgr
}
func (gm *GroupModule) Start() error {
return gm.group.Start()
}
func (gm *GroupModule) Stop() error {
return gm.group.Stop()
}
// Modules returns the modules in the group wrapped by this group module.
// (mimics Group.Modules())
func (gm *GroupModule) Modules() []Module {
return gm.group.Modules()
}