123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119 |
- package adapter
- import (
- "context"
- "net/http"
- "net/netip"
- "github.com/sagernet/sing-box/common/geoip"
- "github.com/sagernet/sing-dns"
- "github.com/sagernet/sing-tun"
- "github.com/sagernet/sing/common/control"
- N "github.com/sagernet/sing/common/network"
- "github.com/sagernet/sing/service"
- mdns "github.com/miekg/dns"
- )
- type Router interface {
- Service
- PreStarter
- PostStarter
- Outbounds() []Outbound
- Outbound(tag string) (Outbound, bool)
- DefaultOutbound(network string) (Outbound, error)
- FakeIPStore() FakeIPStore
- ConnectionRouter
- GeoIPReader() *geoip.Reader
- LoadGeosite(code string) (Rule, error)
- RuleSet(tag string) (RuleSet, bool)
- NeedWIFIState() bool
- Exchange(ctx context.Context, message *mdns.Msg) (*mdns.Msg, error)
- Lookup(ctx context.Context, domain string, strategy dns.DomainStrategy) ([]netip.Addr, error)
- LookupDefault(ctx context.Context, domain string) ([]netip.Addr, error)
- ClearDNSCache()
- InterfaceFinder() control.InterfaceFinder
- UpdateInterfaces() error
- DefaultInterface() string
- AutoDetectInterface() bool
- AutoDetectInterfaceFunc() control.Func
- DefaultMark() uint32
- NetworkMonitor() tun.NetworkUpdateMonitor
- InterfaceMonitor() tun.DefaultInterfaceMonitor
- PackageManager() tun.PackageManager
- WIFIState() WIFIState
- Rules() []Rule
- ClashServer() ClashServer
- SetClashServer(server ClashServer)
- V2RayServer() V2RayServer
- SetV2RayServer(server V2RayServer)
- ResetNetwork() error
- }
- func ContextWithRouter(ctx context.Context, router Router) context.Context {
- return service.ContextWith(ctx, router)
- }
- func RouterFromContext(ctx context.Context) Router {
- return service.FromContext[Router](ctx)
- }
- type HeadlessRule interface {
- Match(metadata *InboundContext) bool
- String() string
- }
- type Rule interface {
- HeadlessRule
- Service
- Type() string
- UpdateGeosite() error
- Outbound() string
- }
- type DNSRule interface {
- Rule
- DisableCache() bool
- RewriteTTL() *uint32
- ClientSubnet() *netip.Prefix
- WithAddressLimit() bool
- MatchAddressLimit(metadata *InboundContext) bool
- }
- type RuleSet interface {
- StartContext(ctx context.Context, startContext RuleSetStartContext) error
- Metadata() RuleSetMetadata
- Close() error
- HeadlessRule
- }
- type RuleSetMetadata struct {
- ContainsProcessRule bool
- ContainsWIFIRule bool
- ContainsIPCIDRRule bool
- }
- type RuleSetStartContext interface {
- HTTPClient(detour string, dialer N.Dialer) *http.Client
- Close()
- }
- type InterfaceUpdateListener interface {
- InterfaceUpdated()
- }
- type WIFIState struct {
- SSID string
- BSSID string
- }
|