Compare commits
10 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
085f603377 | ||
|
|
460fae83dc | ||
|
|
bb9bd9bff6 | ||
|
|
c2354ebf25 | ||
|
|
c1f4755c4e | ||
|
|
0ca5909b06 | ||
|
|
e77a8114c5 | ||
|
|
f1393235ff | ||
|
|
bdba2365de | ||
|
|
ce0da5b557 |
8
.github/workflows/debug.yml
vendored
8
.github/workflows/debug.yml
vendored
@@ -22,7 +22,7 @@ jobs:
|
|||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4
|
uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4
|
||||||
with:
|
with:
|
||||||
fetch-depth: 0
|
fetch-depth: 0
|
||||||
- name: Setup Go
|
- name: Setup Go
|
||||||
@@ -58,7 +58,7 @@ jobs:
|
|||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4
|
uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4
|
||||||
with:
|
with:
|
||||||
fetch-depth: 0
|
fetch-depth: 0
|
||||||
- name: Setup Go
|
- name: Setup Go
|
||||||
@@ -78,7 +78,7 @@ jobs:
|
|||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4
|
uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4
|
||||||
with:
|
with:
|
||||||
fetch-depth: 0
|
fetch-depth: 0
|
||||||
- name: Setup Go
|
- name: Setup Go
|
||||||
@@ -208,7 +208,7 @@ jobs:
|
|||||||
TAGS: with_clash_api,with_quic
|
TAGS: with_clash_api,with_quic
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4
|
uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4
|
||||||
with:
|
with:
|
||||||
fetch-depth: 0
|
fetch-depth: 0
|
||||||
- name: Setup Go
|
- name: Setup Go
|
||||||
|
|||||||
2
.github/workflows/docker.yml
vendored
2
.github/workflows/docker.yml
vendored
@@ -30,7 +30,7 @@ jobs:
|
|||||||
echo "latest=$latest"
|
echo "latest=$latest"
|
||||||
echo "latest=$latest" >> $GITHUB_OUTPUT
|
echo "latest=$latest" >> $GITHUB_OUTPUT
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4
|
uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4
|
||||||
with:
|
with:
|
||||||
ref: ${{ steps.ref.outputs.ref }}
|
ref: ${{ steps.ref.outputs.ref }}
|
||||||
- name: Setup Docker Buildx
|
- name: Setup Docker Buildx
|
||||||
|
|||||||
2
.github/workflows/lint.yml
vendored
2
.github/workflows/lint.yml
vendored
@@ -22,7 +22,7 @@ jobs:
|
|||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4
|
uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4
|
||||||
with:
|
with:
|
||||||
fetch-depth: 0
|
fetch-depth: 0
|
||||||
- name: Setup Go
|
- name: Setup Go
|
||||||
|
|||||||
4
.github/workflows/linux.yml
vendored
4
.github/workflows/linux.yml
vendored
@@ -10,7 +10,7 @@ jobs:
|
|||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4
|
uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4
|
||||||
with:
|
with:
|
||||||
fetch-depth: 0
|
fetch-depth: 0
|
||||||
- name: Setup Go
|
- name: Setup Go
|
||||||
@@ -26,7 +26,7 @@ jobs:
|
|||||||
EOF
|
EOF
|
||||||
echo "HOME=$HOME" >> "$GITHUB_ENV"
|
echo "HOME=$HOME" >> "$GITHUB_ENV"
|
||||||
- name: Publish release
|
- name: Publish release
|
||||||
uses: goreleaser/goreleaser-action@v5
|
uses: goreleaser/goreleaser-action@v6
|
||||||
with:
|
with:
|
||||||
distribution: goreleaser-pro
|
distribution: goreleaser-pro
|
||||||
version: latest
|
version: latest
|
||||||
|
|||||||
@@ -93,7 +93,6 @@ type DNSRule interface {
|
|||||||
|
|
||||||
type RuleSet interface {
|
type RuleSet interface {
|
||||||
StartContext(ctx context.Context, startContext RuleSetStartContext) error
|
StartContext(ctx context.Context, startContext RuleSetStartContext) error
|
||||||
PostStart() error
|
|
||||||
Metadata() RuleSetMetadata
|
Metadata() RuleSetMetadata
|
||||||
Close() error
|
Close() error
|
||||||
HeadlessRule
|
HeadlessRule
|
||||||
|
|||||||
Submodule clients/android updated: 4d1894c172...00e3a80875
@@ -2,6 +2,15 @@
|
|||||||
icon: material/alert-decagram
|
icon: material/alert-decagram
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
||||||
|
### 1.9.3
|
||||||
|
|
||||||
|
* Fixes and improvements
|
||||||
|
|
||||||
|
### 1.9.2
|
||||||
|
|
||||||
|
* Fixes and improvements
|
||||||
|
|
||||||
### 1.9.1
|
### 1.9.1
|
||||||
|
|
||||||
* Fixes and improvements
|
* Fixes and improvements
|
||||||
|
|||||||
@@ -16,25 +16,18 @@ func (s *BoxService) Pause() {
|
|||||||
if s.pauseTimer != nil {
|
if s.pauseTimer != nil {
|
||||||
s.pauseTimer.Stop()
|
s.pauseTimer.Stop()
|
||||||
}
|
}
|
||||||
s.pauseTimer = time.AfterFunc(time.Minute, s.pause)
|
s.pauseTimer = time.AfterFunc(3*time.Second, s.ResetNetwork)
|
||||||
}
|
|
||||||
|
|
||||||
func (s *BoxService) pause() {
|
|
||||||
s.pauseAccess.Lock()
|
|
||||||
defer s.pauseAccess.Unlock()
|
|
||||||
s.pauseManager.DevicePause()
|
|
||||||
_ = s.instance.Router().ResetNetwork()
|
|
||||||
s.pauseTimer = nil
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *BoxService) Wake() {
|
func (s *BoxService) Wake() {
|
||||||
_ = s.instance.Router().ResetNetwork()
|
|
||||||
s.pauseAccess.Lock()
|
s.pauseAccess.Lock()
|
||||||
defer s.pauseAccess.Unlock()
|
defer s.pauseAccess.Unlock()
|
||||||
if s.pauseTimer != nil {
|
if s.pauseTimer != nil {
|
||||||
s.pauseTimer.Stop()
|
s.pauseTimer.Stop()
|
||||||
s.pauseTimer = nil
|
|
||||||
return
|
|
||||||
}
|
}
|
||||||
s.pauseManager.DeviceWake()
|
s.pauseTimer = time.AfterFunc(3*time.Minute, s.ResetNetwork)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *BoxService) ResetNetwork() {
|
||||||
|
_ = s.instance.Router().ResetNetwork()
|
||||||
}
|
}
|
||||||
|
|||||||
2
go.mod
2
go.mod
@@ -24,7 +24,7 @@ require (
|
|||||||
github.com/sagernet/cloudflare-tls v0.0.0-20231208171750-a4483c1b7cd1
|
github.com/sagernet/cloudflare-tls v0.0.0-20231208171750-a4483c1b7cd1
|
||||||
github.com/sagernet/gomobile v0.1.3
|
github.com/sagernet/gomobile v0.1.3
|
||||||
github.com/sagernet/gvisor v0.0.0-20240428053021-e691de28565f
|
github.com/sagernet/gvisor v0.0.0-20240428053021-e691de28565f
|
||||||
github.com/sagernet/quic-go v0.43.1-beta.1
|
github.com/sagernet/quic-go v0.43.1-beta.2
|
||||||
github.com/sagernet/reality v0.0.0-20230406110435-ee17307e7691
|
github.com/sagernet/reality v0.0.0-20230406110435-ee17307e7691
|
||||||
github.com/sagernet/sing v0.4.1
|
github.com/sagernet/sing v0.4.1
|
||||||
github.com/sagernet/sing-dns v0.2.0
|
github.com/sagernet/sing-dns v0.2.0
|
||||||
|
|||||||
4
go.sum
4
go.sum
@@ -101,8 +101,8 @@ github.com/sagernet/gvisor v0.0.0-20240428053021-e691de28565f h1:NkhuupzH5ch7b/Y
|
|||||||
github.com/sagernet/gvisor v0.0.0-20240428053021-e691de28565f/go.mod h1:KXmw+ouSJNOsuRpg4wgwwCQuunrGz4yoAqQjsLjc6N0=
|
github.com/sagernet/gvisor v0.0.0-20240428053021-e691de28565f/go.mod h1:KXmw+ouSJNOsuRpg4wgwwCQuunrGz4yoAqQjsLjc6N0=
|
||||||
github.com/sagernet/netlink v0.0.0-20240523065131-45e60152f9ba h1:EY5AS7CCtfmARNv2zXUOrsEMPFDGYxaw65JzA2p51Vk=
|
github.com/sagernet/netlink v0.0.0-20240523065131-45e60152f9ba h1:EY5AS7CCtfmARNv2zXUOrsEMPFDGYxaw65JzA2p51Vk=
|
||||||
github.com/sagernet/netlink v0.0.0-20240523065131-45e60152f9ba/go.mod h1:xLnfdiJbSp8rNqYEdIW/6eDO4mVoogml14Bh2hSiFpM=
|
github.com/sagernet/netlink v0.0.0-20240523065131-45e60152f9ba/go.mod h1:xLnfdiJbSp8rNqYEdIW/6eDO4mVoogml14Bh2hSiFpM=
|
||||||
github.com/sagernet/quic-go v0.43.1-beta.1 h1:alizUjpvWYcz08dBCQsULOd+1xu0o7UtlyYf6SLbRNg=
|
github.com/sagernet/quic-go v0.43.1-beta.2 h1:6YRCE9t1Q3UbNX1/dJGqpwFQbh6DXC6XBrQr2xp6hXY=
|
||||||
github.com/sagernet/quic-go v0.43.1-beta.1/go.mod h1:BkrQYeop7Jx3hN3TW8/76CXcdhYiNPyYEBL/BVJ1ifc=
|
github.com/sagernet/quic-go v0.43.1-beta.2/go.mod h1:BkrQYeop7Jx3hN3TW8/76CXcdhYiNPyYEBL/BVJ1ifc=
|
||||||
github.com/sagernet/reality v0.0.0-20230406110435-ee17307e7691 h1:5Th31OC6yj8byLGkEnIYp6grlXfo1QYUfiYFGjewIdc=
|
github.com/sagernet/reality v0.0.0-20230406110435-ee17307e7691 h1:5Th31OC6yj8byLGkEnIYp6grlXfo1QYUfiYFGjewIdc=
|
||||||
github.com/sagernet/reality v0.0.0-20230406110435-ee17307e7691/go.mod h1:B8lp4WkQ1PwNnrVMM6KyuFR20pU8jYBD+A4EhJovEXU=
|
github.com/sagernet/reality v0.0.0-20230406110435-ee17307e7691/go.mod h1:B8lp4WkQ1PwNnrVMM6KyuFR20pU8jYBD+A4EhJovEXU=
|
||||||
github.com/sagernet/sing v0.2.18/go.mod h1:OL6k2F0vHmEzXz2KW19qQzu172FDgSbUSODylighuVo=
|
github.com/sagernet/sing v0.2.18/go.mod h1:OL6k2F0vHmEzXz2KW19qQzu172FDgSbUSODylighuVo=
|
||||||
|
|||||||
@@ -121,7 +121,7 @@ func (w *WireGuard) Start() error {
|
|||||||
return w.start()
|
return w.start()
|
||||||
}
|
}
|
||||||
|
|
||||||
func (w *WireGuard) PortStart() error {
|
func (w *WireGuard) PostStart() error {
|
||||||
if common.All(w.peers, func(peer wireguard.PeerConfig) bool {
|
if common.All(w.peers, func(peer wireguard.PeerConfig) bool {
|
||||||
return peer.Endpoint.IsValid()
|
return peer.Endpoint.IsValid()
|
||||||
}) {
|
}) {
|
||||||
|
|||||||
180
route/router.go
180
route/router.go
@@ -221,7 +221,7 @@ func NewRouter(
|
|||||||
if serverAddress == "" {
|
if serverAddress == "" {
|
||||||
serverAddress = server.Address
|
serverAddress = server.Address
|
||||||
}
|
}
|
||||||
_, notIpAddress := netip.ParseAddr(serverAddress)
|
notIpAddress := !M.ParseSocksaddr(serverAddress).Addr.IsValid()
|
||||||
if server.AddressResolver != "" {
|
if server.AddressResolver != "" {
|
||||||
if !transportTagMap[server.AddressResolver] {
|
if !transportTagMap[server.AddressResolver] {
|
||||||
return nil, E.New("parse dns server[", tag, "]: address resolver not found: ", server.AddressResolver)
|
return nil, E.New("parse dns server[", tag, "]: address resolver not found: ", server.AddressResolver)
|
||||||
@@ -231,7 +231,7 @@ func NewRouter(
|
|||||||
} else {
|
} else {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
} else if notIpAddress != nil && strings.Contains(server.Address, ".") {
|
} else if notIpAddress && strings.Contains(server.Address, ".") {
|
||||||
return nil, E.New("parse dns server[", tag, "]: missing address_resolver")
|
return nil, E.New("parse dns server[", tag, "]: missing address_resolver")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -509,78 +509,6 @@ func (r *Router) Start() error {
|
|||||||
r.geositeReader = nil
|
r.geositeReader = nil
|
||||||
}
|
}
|
||||||
|
|
||||||
if len(r.ruleSets) > 0 {
|
|
||||||
monitor.Start("initialize rule-set")
|
|
||||||
ruleSetStartContext := NewRuleSetStartContext()
|
|
||||||
var ruleSetStartGroup task.Group
|
|
||||||
for i, ruleSet := range r.ruleSets {
|
|
||||||
ruleSetInPlace := ruleSet
|
|
||||||
ruleSetStartGroup.Append0(func(ctx context.Context) error {
|
|
||||||
err := ruleSetInPlace.StartContext(ctx, ruleSetStartContext)
|
|
||||||
if err != nil {
|
|
||||||
return E.Cause(err, "initialize rule-set[", i, "]")
|
|
||||||
}
|
|
||||||
return nil
|
|
||||||
})
|
|
||||||
}
|
|
||||||
ruleSetStartGroup.Concurrency(5)
|
|
||||||
ruleSetStartGroup.FastFail()
|
|
||||||
err := ruleSetStartGroup.Run(r.ctx)
|
|
||||||
monitor.Finish()
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
ruleSetStartContext.Close()
|
|
||||||
}
|
|
||||||
var (
|
|
||||||
needProcessFromRuleSet bool
|
|
||||||
needWIFIStateFromRuleSet bool
|
|
||||||
)
|
|
||||||
for _, ruleSet := range r.ruleSets {
|
|
||||||
metadata := ruleSet.Metadata()
|
|
||||||
if metadata.ContainsProcessRule {
|
|
||||||
needProcessFromRuleSet = true
|
|
||||||
}
|
|
||||||
if metadata.ContainsWIFIRule {
|
|
||||||
needWIFIStateFromRuleSet = true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if needProcessFromRuleSet || r.needFindProcess || r.needPackageManager {
|
|
||||||
if C.IsAndroid && r.platformInterface == nil {
|
|
||||||
monitor.Start("initialize package manager")
|
|
||||||
packageManager, err := tun.NewPackageManager(r)
|
|
||||||
monitor.Finish()
|
|
||||||
if err != nil {
|
|
||||||
return E.Cause(err, "create package manager")
|
|
||||||
}
|
|
||||||
monitor.Start("start package manager")
|
|
||||||
err = packageManager.Start()
|
|
||||||
monitor.Finish()
|
|
||||||
if err != nil {
|
|
||||||
return E.Cause(err, "start package manager")
|
|
||||||
}
|
|
||||||
r.packageManager = packageManager
|
|
||||||
}
|
|
||||||
|
|
||||||
if r.platformInterface != nil {
|
|
||||||
r.processSearcher = r.platformInterface
|
|
||||||
} else {
|
|
||||||
monitor.Start("initialize process searcher")
|
|
||||||
searcher, err := process.NewSearcher(process.Config{
|
|
||||||
Logger: r.logger,
|
|
||||||
PackageManager: r.packageManager,
|
|
||||||
})
|
|
||||||
monitor.Finish()
|
|
||||||
if err != nil {
|
|
||||||
if err != os.ErrInvalid {
|
|
||||||
r.logger.Warn(E.Cause(err, "create process searcher"))
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
r.processSearcher = searcher
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if runtime.GOOS == "windows" {
|
if runtime.GOOS == "windows" {
|
||||||
powerListener, err := winpowrprof.NewEventListener(r.notifyWindowsPowerEvent)
|
powerListener, err := winpowrprof.NewEventListener(r.notifyWindowsPowerEvent)
|
||||||
if err == nil {
|
if err == nil {
|
||||||
@@ -599,29 +527,26 @@ func (r *Router) Start() error {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (needWIFIStateFromRuleSet || r.needWIFIState) && r.platformInterface != nil {
|
|
||||||
monitor.Start("initialize WIFI state")
|
|
||||||
r.needWIFIState = true
|
|
||||||
r.interfaceMonitor.RegisterCallback(func(_ int) {
|
|
||||||
r.updateWIFIState()
|
|
||||||
})
|
|
||||||
r.updateWIFIState()
|
|
||||||
monitor.Finish()
|
|
||||||
}
|
|
||||||
|
|
||||||
for i, rule := range r.rules {
|
|
||||||
monitor.Start("initialize rule[", i, "]")
|
|
||||||
err := rule.Start()
|
|
||||||
monitor.Finish()
|
|
||||||
if err != nil {
|
|
||||||
return E.Cause(err, "initialize rule[", i, "]")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
monitor.Start("initialize DNS client")
|
monitor.Start("initialize DNS client")
|
||||||
r.dnsClient.Start()
|
r.dnsClient.Start()
|
||||||
monitor.Finish()
|
monitor.Finish()
|
||||||
|
|
||||||
|
if C.IsAndroid && r.platformInterface == nil {
|
||||||
|
monitor.Start("initialize package manager")
|
||||||
|
packageManager, err := tun.NewPackageManager(r)
|
||||||
|
monitor.Finish()
|
||||||
|
if err != nil {
|
||||||
|
return E.Cause(err, "create package manager")
|
||||||
|
}
|
||||||
|
monitor.Start("start package manager")
|
||||||
|
err = packageManager.Start()
|
||||||
|
monitor.Finish()
|
||||||
|
if err != nil {
|
||||||
|
return E.Cause(err, "start package manager")
|
||||||
|
}
|
||||||
|
r.packageManager = packageManager
|
||||||
|
}
|
||||||
|
|
||||||
for i, rule := range r.dnsRules {
|
for i, rule := range r.dnsRules {
|
||||||
monitor.Start("initialize DNS rule[", i, "]")
|
monitor.Start("initialize DNS rule[", i, "]")
|
||||||
err := rule.Start()
|
err := rule.Start()
|
||||||
@@ -726,14 +651,79 @@ func (r *Router) Close() error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (r *Router) PostStart() error {
|
func (r *Router) PostStart() error {
|
||||||
|
monitor := taskmonitor.New(r.logger, C.StopTimeout)
|
||||||
if len(r.ruleSets) > 0 {
|
if len(r.ruleSets) > 0 {
|
||||||
|
monitor.Start("initialize rule-set")
|
||||||
|
ruleSetStartContext := NewRuleSetStartContext()
|
||||||
|
var ruleSetStartGroup task.Group
|
||||||
for i, ruleSet := range r.ruleSets {
|
for i, ruleSet := range r.ruleSets {
|
||||||
err := ruleSet.PostStart()
|
ruleSetInPlace := ruleSet
|
||||||
|
ruleSetStartGroup.Append0(func(ctx context.Context) error {
|
||||||
|
err := ruleSetInPlace.StartContext(ctx, ruleSetStartContext)
|
||||||
|
if err != nil {
|
||||||
|
return E.Cause(err, "initialize rule-set[", i, "]")
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
})
|
||||||
|
}
|
||||||
|
ruleSetStartGroup.Concurrency(5)
|
||||||
|
ruleSetStartGroup.FastFail()
|
||||||
|
err := ruleSetStartGroup.Run(r.ctx)
|
||||||
|
monitor.Finish()
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
ruleSetStartContext.Close()
|
||||||
|
}
|
||||||
|
var (
|
||||||
|
needProcessFromRuleSet bool
|
||||||
|
needWIFIStateFromRuleSet bool
|
||||||
|
)
|
||||||
|
for _, ruleSet := range r.ruleSets {
|
||||||
|
metadata := ruleSet.Metadata()
|
||||||
|
if metadata.ContainsProcessRule {
|
||||||
|
needProcessFromRuleSet = true
|
||||||
|
}
|
||||||
|
if metadata.ContainsWIFIRule {
|
||||||
|
needWIFIStateFromRuleSet = true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if needProcessFromRuleSet || r.needFindProcess {
|
||||||
|
if r.platformInterface != nil {
|
||||||
|
r.processSearcher = r.platformInterface
|
||||||
|
} else {
|
||||||
|
monitor.Start("initialize process searcher")
|
||||||
|
searcher, err := process.NewSearcher(process.Config{
|
||||||
|
Logger: r.logger,
|
||||||
|
PackageManager: r.packageManager,
|
||||||
|
})
|
||||||
|
monitor.Finish()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return E.Cause(err, "post start rule-set[", i, "]")
|
if err != os.ErrInvalid {
|
||||||
|
r.logger.Warn(E.Cause(err, "create process searcher"))
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
r.processSearcher = searcher
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (needWIFIStateFromRuleSet || r.needWIFIState) && r.platformInterface != nil {
|
||||||
|
monitor.Start("initialize WIFI state")
|
||||||
|
r.needWIFIState = true
|
||||||
|
r.interfaceMonitor.RegisterCallback(func(_ int) {
|
||||||
|
r.updateWIFIState()
|
||||||
|
})
|
||||||
|
r.updateWIFIState()
|
||||||
|
monitor.Finish()
|
||||||
|
}
|
||||||
|
for i, rule := range r.rules {
|
||||||
|
monitor.Start("initialize rule[", i, "]")
|
||||||
|
err := rule.Start()
|
||||||
|
monitor.Finish()
|
||||||
|
if err != nil {
|
||||||
|
return E.Cause(err, "initialize rule[", i, "]")
|
||||||
|
}
|
||||||
|
}
|
||||||
r.started = true
|
r.started = true
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -78,10 +78,6 @@ func (s *LocalRuleSet) StartContext(ctx context.Context, startContext adapter.Ru
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *LocalRuleSet) PostStart() error {
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func (s *LocalRuleSet) Metadata() adapter.RuleSetMetadata {
|
func (s *LocalRuleSet) Metadata() adapter.RuleSetMetadata {
|
||||||
return s.metadata
|
return s.metadata
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -112,16 +112,6 @@ func (s *RemoteRuleSet) StartContext(ctx context.Context, startContext adapter.R
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *RemoteRuleSet) PostStart() error {
|
|
||||||
if s.lastUpdated.IsZero() {
|
|
||||||
err := s.fetchOnce(s.ctx, nil)
|
|
||||||
if err != nil {
|
|
||||||
s.logger.Error("fetch rule-set ", s.options.Tag, ": ", err)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func (s *RemoteRuleSet) Metadata() adapter.RuleSetMetadata {
|
func (s *RemoteRuleSet) Metadata() adapter.RuleSetMetadata {
|
||||||
return s.metadata
|
return s.metadata
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user