mirror of
https://github.com/SagerNet/sing-box.git
synced 2025-06-08 11:44:13 +08:00
platform: Add update WIFI state func
This commit is contained in:
parent
97ce666e43
commit
93b68312cf
@ -25,6 +25,7 @@ type NetworkManager interface {
|
|||||||
PackageManager() tun.PackageManager
|
PackageManager() tun.PackageManager
|
||||||
WIFIState() WIFIState
|
WIFIState() WIFIState
|
||||||
ResetNetwork()
|
ResetNetwork()
|
||||||
|
UpdateWIFIState()
|
||||||
}
|
}
|
||||||
|
|
||||||
type NetworkOptions struct {
|
type NetworkOptions struct {
|
||||||
|
@ -4,7 +4,6 @@ import (
|
|||||||
"encoding/binary"
|
"encoding/binary"
|
||||||
"net"
|
"net"
|
||||||
|
|
||||||
E "github.com/sagernet/sing/common/exceptions"
|
|
||||||
"github.com/sagernet/sing/common/varbin"
|
"github.com/sagernet/sing/common/varbin"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -18,19 +17,7 @@ func (c *CommandClient) ServiceReload() error {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
var hasError bool
|
return readError(conn)
|
||||||
err = binary.Read(conn, binary.BigEndian, &hasError)
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
if hasError {
|
|
||||||
errorMessage, err := varbin.ReadValue[string](conn, binary.BigEndian)
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
return E.New(errorMessage)
|
|
||||||
}
|
|
||||||
return nil
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *CommandServer) handleServiceReload(conn net.Conn) error {
|
func (s *CommandServer) handleServiceReload(conn net.Conn) error {
|
||||||
@ -55,19 +42,7 @@ func (c *CommandClient) ServiceClose() error {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
var hasError bool
|
return readError(conn)
|
||||||
err = binary.Read(conn, binary.BigEndian, &hasError)
|
|
||||||
if err != nil {
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
if hasError {
|
|
||||||
errorMessage, err := varbin.ReadValue[string](conn, binary.BigEndian)
|
|
||||||
if err != nil {
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
return E.New(errorMessage)
|
|
||||||
}
|
|
||||||
return nil
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *CommandServer) handleServiceClose(conn net.Conn) error {
|
func (s *CommandServer) handleServiceClose(conn net.Conn) error {
|
||||||
|
@ -31,3 +31,7 @@ func (s *BoxService) Wake() {
|
|||||||
func (s *BoxService) ResetNetwork() {
|
func (s *BoxService) ResetNetwork() {
|
||||||
s.instance.Router().ResetNetwork()
|
s.instance.Router().ResetNetwork()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (s *BoxService) UpdateWIFIState() {
|
||||||
|
s.instance.Network().UpdateWIFIState()
|
||||||
|
}
|
||||||
|
@ -354,6 +354,18 @@ func (r *NetworkManager) WIFIState() adapter.WIFIState {
|
|||||||
return r.wifiState
|
return r.wifiState
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (r *NetworkManager) UpdateWIFIState() {
|
||||||
|
if r.platformInterface != nil {
|
||||||
|
state := r.platformInterface.ReadWIFIState()
|
||||||
|
if state != r.wifiState {
|
||||||
|
r.wifiState = state
|
||||||
|
if state.SSID != "" {
|
||||||
|
r.logger.Info("updated WIFI state: SSID=", state.SSID, ", BSSID=", state.BSSID)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func (r *NetworkManager) ResetNetwork() {
|
func (r *NetworkManager) ResetNetwork() {
|
||||||
conntrack.Close()
|
conntrack.Close()
|
||||||
|
|
||||||
@ -414,15 +426,7 @@ func (r *NetworkManager) notifyInterfaceUpdate(defaultInterface *control.Interfa
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
r.logger.Info("updated default interface ", defaultInterface.Name, ", ", strings.Join(options, ", "))
|
r.logger.Info("updated default interface ", defaultInterface.Name, ", ", strings.Join(options, ", "))
|
||||||
if r.platformInterface != nil {
|
r.UpdateWIFIState()
|
||||||
state := r.platformInterface.ReadWIFIState()
|
|
||||||
if state != r.wifiState {
|
|
||||||
r.wifiState = state
|
|
||||||
if state.SSID != "" {
|
|
||||||
r.logger.Info("updated WIFI state: SSID=", state.SSID, ", BSSID=", state.BSSID)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if !r.started {
|
if !r.started {
|
||||||
return
|
return
|
||||||
|
Loading…
x
Reference in New Issue
Block a user