Documentation ¶
Index ¶
- func ContextWithRouter(ctx context.Context, router Router) context.Context
- func OutboundTag(detour Outbound) string
- func OverrideContext(ctx context.Context) context.Context
- func WithContext(ctx context.Context, inboundContext *InboundContext) context.Context
- type CacheFile
- type ClashServer
- type ConnectionHandler
- type ConnectionRouter
- type DNSRule
- type FakeIPMetadata
- type FakeIPStorage
- type FakeIPStore
- type FakeIPTransport
- type HeadlessRule
- type Inbound
- type InboundContext
- type InjectableInbound
- type InterfaceUpdateListener
- type OOBPacketHandler
- type Outbound
- type OutboundGroup
- type PacketConnectionHandler
- type PacketHandler
- type PostStarter
- type PreStarter
- type Router
- type Rule
- type RuleSet
- type RuleSetMetadata
- type RuleSetStartContext
- type RuleSetUpdateCallback
- type SavedRuleSet
- type Service
- type Tracker
- type URLTestGroup
- type UpstreamHandlerAdapter
- type V2RayServer
- type V2RayStatsService
- type WIFIState
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func OutboundTag ¶
func WithContext ¶
func WithContext(ctx context.Context, inboundContext *InboundContext) context.Context
Types ¶
type CacheFile ¶
type CacheFile interface { Service PreStarter StoreFakeIP() bool FakeIPStorage StoreRDRC() bool dns.RDRCStore LoadMode() string StoreMode(mode string) error LoadSelected(group string) string StoreSelected(group string, selected string) error LoadGroupExpand(group string) (isExpand bool, loaded bool) StoreGroupExpand(group string, expand bool) error LoadRuleSet(tag string) *SavedRuleSet SaveRuleSet(tag string, set *SavedRuleSet) error }
type ClashServer ¶
type ClashServer interface { Service PreStarter Mode() string ModeList() []string HistoryStorage() *urltest.HistoryStorage RoutedConnection(ctx context.Context, conn net.Conn, metadata InboundContext, matchedRule Rule) (net.Conn, Tracker) RoutedPacketConnection(ctx context.Context, conn N.PacketConn, metadata InboundContext, matchedRule Rule) (N.PacketConn, Tracker) }
type ConnectionHandler ¶
type ConnectionRouter ¶
type ConnectionRouter interface { RouteConnection(ctx context.Context, conn net.Conn, metadata InboundContext) error RoutePacketConnection(ctx context.Context, conn N.PacketConn, metadata InboundContext) error }
type FakeIPMetadata ¶
type FakeIPMetadata struct { Inet4Range netip.Prefix Inet6Range netip.Prefix Inet4Current netip.Addr Inet6Current netip.Addr }
func (*FakeIPMetadata) MarshalBinary ¶
func (m *FakeIPMetadata) MarshalBinary() (data []byte, err error)
func (*FakeIPMetadata) UnmarshalBinary ¶
func (m *FakeIPMetadata) UnmarshalBinary(data []byte) error
type FakeIPStorage ¶
type FakeIPStorage interface { FakeIPMetadata() *FakeIPMetadata FakeIPSaveMetadata(metadata *FakeIPMetadata) error FakeIPSaveMetadataAsync(metadata *FakeIPMetadata) FakeIPStore(address netip.Addr, domain string) error FakeIPStoreAsync(address netip.Addr, domain string, logger logger.Logger) FakeIPLoad(address netip.Addr) (string, bool) FakeIPLoadDomain(domain string, isIPv6 bool) (netip.Addr, bool) FakeIPReset() error }
type FakeIPStore ¶
type FakeIPTransport ¶
type FakeIPTransport interface {
dns.Transport
Store() FakeIPStore
}
type HeadlessRule ¶
type HeadlessRule interface { Match(metadata *InboundContext) bool String() string }
type InboundContext ¶
type InboundContext struct { Inbound string InboundType string IPVersion uint8 Network string Source M.Socksaddr Destination M.Socksaddr Domain string Protocol string User string Outbound string InboundDetour string LastInbound string OriginDestination M.Socksaddr InboundOptions option.InboundOptions DestinationAddresses []netip.Addr SourceGeoIPCode string GeoIPCode string ProcessInfo *process.Info QueryType uint16 FakeIP bool IPCIDRMatchSource bool IPCIDRAcceptEmpty bool SourceAddressMatch bool SourcePortMatch bool DestinationAddressMatch bool DestinationPortMatch bool DidMatch bool IgnoreDestinationIPCIDRMatch bool }
func AppendContext ¶
func AppendContext(ctx context.Context) (context.Context, *InboundContext)
func ContextFrom ¶
func ContextFrom(ctx context.Context) *InboundContext
func ExtendContext ¶
func ExtendContext(ctx context.Context) (context.Context, *InboundContext)
func (*InboundContext) ResetRuleCache ¶
func (c *InboundContext) ResetRuleCache()
type InjectableInbound ¶
type InjectableInbound interface { Inbound Network() []string NewConnection(ctx context.Context, conn net.Conn, metadata InboundContext) error NewPacketConnection(ctx context.Context, conn N.PacketConn, metadata InboundContext) error }
type InterfaceUpdateListener ¶
type InterfaceUpdateListener interface {
InterfaceUpdated()
}
type OOBPacketHandler ¶
type OOBPacketHandler interface {
NewPacket(ctx context.Context, conn N.PacketConn, buffer *buf.Buffer, oob []byte, metadata InboundContext) error
}
type OutboundGroup ¶
type PacketConnectionHandler ¶
type PacketConnectionHandler interface {
NewPacketConnection(ctx context.Context, conn N.PacketConn, metadata InboundContext) error
}
type PacketHandler ¶
type PacketHandler interface {
NewPacket(ctx context.Context, conn N.PacketConn, buffer *buf.Buffer, metadata InboundContext) error
}
type PostStarter ¶
type PostStarter interface {
PostStart() error
}
type PreStarter ¶
type PreStarter interface {
PreStart() error
}
type Router ¶
type Router interface { Service PreStarter PostStarter Cleanup() error 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 RegisterAutoRedirectOutputMark(mark uint32) error AutoRedirectOutputMark() 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 RouterFromContext ¶
type Rule ¶
type Rule interface { HeadlessRule Service Type() string UpdateGeosite() error Outbound() string }
type RuleSet ¶
type RuleSet interface { Name() string StartContext(ctx context.Context, startContext RuleSetStartContext) error PostStart() error Metadata() RuleSetMetadata ExtractIPSet() []*netipx.IPSet IncRef() DecRef() Cleanup() RegisterCallback(callback RuleSetUpdateCallback) *list.Element[RuleSetUpdateCallback] UnregisterCallback(element *list.Element[RuleSetUpdateCallback]) Close() error HeadlessRule }
type RuleSetMetadata ¶
type RuleSetStartContext ¶
type RuleSetUpdateCallback ¶
type RuleSetUpdateCallback func(it RuleSet)
type SavedRuleSet ¶
func (*SavedRuleSet) MarshalBinary ¶
func (s *SavedRuleSet) MarshalBinary() ([]byte, error)
func (*SavedRuleSet) UnmarshalBinary ¶
func (s *SavedRuleSet) UnmarshalBinary(data []byte) error
type URLTestGroup ¶
type UpstreamHandlerAdapter ¶
type UpstreamHandlerAdapter interface { N.TCPConnectionHandler N.UDPConnectionHandler E.Handler }
func NewRouteContextHandler ¶
func NewRouteContextHandler( router ConnectionRouter, logger logger.ContextLogger, ) UpstreamHandlerAdapter
func NewRouteHandler ¶
func NewRouteHandler( metadata InboundContext, router ConnectionRouter, logger logger.ContextLogger, ) UpstreamHandlerAdapter
type V2RayServer ¶
type V2RayServer interface { Service StatsService() V2RayStatsService }
type V2RayStatsService ¶
Click to show internal directories.
Click to hide internal directories.