platform: Export NeedWIFIState for Android

This commit is contained in:
世界 2024-02-16 13:06:34 +08:00
parent bca0b86549
commit 5583e01c99
No known key found for this signature in database
GPG key ID: CD109927C34A63C4
3 changed files with 15 additions and 6 deletions

View file

@ -33,6 +33,8 @@ type Router interface {
RuleSet(tag string) (RuleSet, bool) RuleSet(tag string) (RuleSet, bool)
NeedWIFIState() bool
Exchange(ctx context.Context, message *mdns.Msg) (*mdns.Msg, error) Exchange(ctx context.Context, message *mdns.Msg) (*mdns.Msg, error)
Lookup(ctx context.Context, domain string, strategy dns.DomainStrategy) ([]netip.Addr, error) Lookup(ctx context.Context, domain string, strategy dns.DomainStrategy) ([]netip.Addr, error)
LookupDefault(ctx context.Context, domain string) ([]netip.Addr, error) LookupDefault(ctx context.Context, domain string) ([]netip.Addr, error)

View file

@ -77,6 +77,10 @@ func (s *BoxService) Close() error {
return s.instance.Close() return s.instance.Close()
} }
func (s *BoxService) NeedWIFIState() bool {
return s.instance.Router().NeedWIFIState()
}
var ( var (
_ platform.Interface = (*platformInterfaceWrapper)(nil) _ platform.Interface = (*platformInterfaceWrapper)(nil)
_ log.PlatformWriter = (*platformInterfaceWrapper)(nil) _ log.PlatformWriter = (*platformInterfaceWrapper)(nil)

View file

@ -560,13 +560,12 @@ func (r *Router) Start() error {
} }
} }
} }
if needWIFIStateFromRuleSet || r.needWIFIState { if (needWIFIStateFromRuleSet || r.needWIFIState) && r.platformInterface != nil {
monitor.Start("initialize WIFI state") monitor.Start("initialize WIFI state")
if r.platformInterface != nil && r.interfaceMonitor != nil { r.needWIFIState = true
r.interfaceMonitor.RegisterCallback(func(_ int) { r.interfaceMonitor.RegisterCallback(func(_ int) {
r.updateWIFIState() r.updateWIFIState()
}) })
}
r.updateWIFIState() r.updateWIFIState()
monitor.Finish() monitor.Finish()
} }
@ -716,6 +715,10 @@ func (r *Router) RuleSet(tag string) (adapter.RuleSet, bool) {
return ruleSet, loaded return ruleSet, loaded
} }
func (r *Router) NeedWIFIState() bool {
return r.needWIFIState
}
func (r *Router) RouteConnection(ctx context.Context, conn net.Conn, metadata adapter.InboundContext) error { func (r *Router) RouteConnection(ctx context.Context, conn net.Conn, metadata adapter.InboundContext) error {
if r.pauseManager.IsDevicePaused() { if r.pauseManager.IsDevicePaused() {
return E.New("reject connection to ", metadata.Destination, " while device paused") return E.New("reject connection to ", metadata.Destination, " while device paused")