| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126 | 
							- package libbox
 
- import (
 
- 	C "github.com/sagernet/sing-box/constant"
 
- 	"github.com/sagernet/sing-box/option"
 
- )
 
- type PlatformInterface interface {
 
- 	UsePlatformAutoDetectInterfaceControl() bool
 
- 	AutoDetectInterfaceControl(fd int32) error
 
- 	OpenTun(options TunOptions) (int32, error)
 
- 	UpdateRouteOptions(options TunOptions) error
 
- 	WriteLog(message string)
 
- 	UseProcFS() bool
 
- 	FindConnectionOwner(ipProtocol int32, sourceAddress string, sourcePort int32, destinationAddress string, destinationPort int32) (int32, error)
 
- 	PackageNameByUid(uid int32) (string, error)
 
- 	UIDByPackageName(packageName string) (int32, error)
 
- 	StartDefaultInterfaceMonitor(listener InterfaceUpdateListener) error
 
- 	CloseDefaultInterfaceMonitor(listener InterfaceUpdateListener) error
 
- 	GetInterfaces() (NetworkInterfaceIterator, error)
 
- 	UnderNetworkExtension() bool
 
- 	IncludeAllNetworks() bool
 
- 	ReadWIFIState() *WIFIState
 
- 	ClearDNSCache()
 
- 	SendNotification(notification *Notification) error
 
- }
 
- type TunInterface interface {
 
- 	FileDescriptor() int32
 
- 	Close() error
 
- }
 
- type InterfaceUpdateListener interface {
 
- 	UpdateDefaultInterface(interfaceName string, interfaceIndex int32, isExpensive bool, isConstrained bool)
 
- }
 
- const (
 
- 	InterfaceTypeWIFI     = int32(C.InterfaceTypeWIFI)
 
- 	InterfaceTypeCellular = int32(C.InterfaceTypeCellular)
 
- 	InterfaceTypeEthernet = int32(C.InterfaceTypeEthernet)
 
- 	InterfaceTypeOther    = int32(C.InterfaceTypeOther)
 
- )
 
- type NetworkInterface struct {
 
- 	Index     int32
 
- 	MTU       int32
 
- 	Name      string
 
- 	Addresses StringIterator
 
- 	Flags     int32
 
- 	Type      int32
 
- 	DNSServer StringIterator
 
- 	Metered   bool
 
- }
 
- type WIFIState struct {
 
- 	SSID  string
 
- 	BSSID string
 
- }
 
- func NewWIFIState(wifiSSID string, wifiBSSID string) *WIFIState {
 
- 	return &WIFIState{wifiSSID, wifiBSSID}
 
- }
 
- type NetworkInterfaceIterator interface {
 
- 	Next() *NetworkInterface
 
- 	HasNext() bool
 
- }
 
- type Notification struct {
 
- 	Identifier string
 
- 	TypeName   string
 
- 	TypeID     int32
 
- 	Title      string
 
- 	Subtitle   string
 
- 	Body       string
 
- 	OpenURL    string
 
- }
 
- type OnDemandRule interface {
 
- 	Target() int32
 
- 	DNSSearchDomainMatch() StringIterator
 
- 	DNSServerAddressMatch() StringIterator
 
- 	InterfaceTypeMatch() int32
 
- 	SSIDMatch() StringIterator
 
- 	ProbeURL() string
 
- }
 
- type OnDemandRuleIterator interface {
 
- 	Next() OnDemandRule
 
- 	HasNext() bool
 
- }
 
- type onDemandRule struct {
 
- 	option.OnDemandRule
 
- }
 
- func (r *onDemandRule) Target() int32 {
 
- 	if r.OnDemandRule.Action == nil {
 
- 		return -1
 
- 	}
 
- 	return int32(*r.OnDemandRule.Action)
 
- }
 
- func (r *onDemandRule) DNSSearchDomainMatch() StringIterator {
 
- 	return newIterator(r.OnDemandRule.DNSSearchDomainMatch)
 
- }
 
- func (r *onDemandRule) DNSServerAddressMatch() StringIterator {
 
- 	return newIterator(r.OnDemandRule.DNSServerAddressMatch)
 
- }
 
- func (r *onDemandRule) InterfaceTypeMatch() int32 {
 
- 	if r.OnDemandRule.InterfaceTypeMatch == nil {
 
- 		return -1
 
- 	}
 
- 	return int32(*r.OnDemandRule.InterfaceTypeMatch)
 
- }
 
- func (r *onDemandRule) SSIDMatch() StringIterator {
 
- 	return newIterator(r.OnDemandRule.SSIDMatch)
 
- }
 
- func (r *onDemandRule) ProbeURL() string {
 
- 	return r.OnDemandRule.ProbeURL
 
- }
 
 
  |