Documentation ¶
Index ¶
- func ContextWithRouter(ctx context.Context, router Router) context.Context
- func IsFinalAction(action RuleAction) bool
- func OutboundTag(detour Outbound) string
- func OverrideContext(ctx context.Context) context.Context
- func UpstreamMetadata(metadata InboundContext) M.Metadata
- func WithContext(ctx context.Context, inboundContext *InboundContext) context.Context
- type CacheFile
- type ClashServer
- type ConnectionHandler
- type ConnectionHandlerEx
- type ConnectionHandlerFunc
- type ConnectionHandlerFuncEx
- type ConnectionRouterdeprecated
- type ConnectionRouterEx
- type DNSRule
- type FakeIPMetadata
- type FakeIPStorage
- type FakeIPStore
- type FakeIPTransport
- type HTTPStartContext
- type HeadlessRule
- type Inbound
- type InboundContext
- type InboundRegistry
- type InterfaceUpdateListener
- type OOBPacketHandlerdeprecated
- type OOBPacketHandlerEx
- type Outbound
- type OutboundGroup
- type OutboundRegistry
- type PacketConnectionHandler
- type PacketConnectionHandlerEx
- type PacketConnectionHandlerFunc
- type PacketConnectionHandlerFuncEx
- type PacketHandlerdeprecated
- type PacketHandlerEx
- type PostStarter
- type PreStarter
- type Router
- type Rule
- type RuleAction
- type RuleSet
- type RuleSetMetadata
- type RuleSetUpdateCallback
- type SavedRuleSet
- type Service
- type TCPInjectableInbound
- type TimeService
- type Tracker
- type UDPInjectableInbound
- type URLTestGroup
- type UpstreamHandlerAdapter
- func NewRouteContextHandler(router ConnectionRouter, logger logger.ContextLogger) UpstreamHandlerAdapterdeprecated
- func NewRouteHandler(metadata InboundContext, router ConnectionRouter, logger logger.ContextLogger) UpstreamHandlerAdapterdeprecated
- func NewUpstreamContextHandler(connectionHandler ConnectionHandlerFunc, ...) UpstreamHandlerAdapter
- func NewUpstreamHandler(metadata InboundContext, connectionHandler ConnectionHandlerFunc, ...) UpstreamHandlerAdapter
- type UpstreamHandlerAdapterEx
- func NewRouteContextHandlerEx(router ConnectionRouterEx) UpstreamHandlerAdapterEx
- func NewRouteHandlerEx(metadata InboundContext, router ConnectionRouterEx) UpstreamHandlerAdapterEx
- func NewUpstreamContextHandlerEx(connectionHandler ConnectionHandlerFuncEx, ...) UpstreamHandlerAdapterEx
- func NewUpstreamHandlerEx(metadata InboundContext, connectionHandler ConnectionHandlerFuncEx, ...) UpstreamHandlerAdapterEx
- type V2RayClientTransport
- type V2RayServer
- type V2RayServerTransport
- type V2RayServerTransportHandler
- type V2RayStatsService
- type WIFIState
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func ContextWithRouter ¶ added in v1.2.0
func IsFinalAction ¶
func IsFinalAction(action RuleAction) bool
func OutboundTag ¶
func WithContext ¶
func WithContext(ctx context.Context, inboundContext *InboundContext) context.Context
Types ¶
type CacheFile ¶ added in v1.8.0
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 ConnectionHandler interface {
NewConnection(ctx context.Context, conn net.Conn, metadata InboundContext) error
}
Deprecated
type ConnectionHandlerEx ¶
type ConnectionHandlerEx interface {
NewConnectionEx(ctx context.Context, conn net.Conn, metadata InboundContext, onClose N.CloseHandlerFunc)
}
type ConnectionHandlerFunc ¶
type ConnectionHandlerFunc = func(ctx context.Context, conn net.Conn, metadata InboundContext) error
Deprecated
type ConnectionHandlerFuncEx ¶
type ConnectionHandlerFuncEx = func(ctx context.Context, conn net.Conn, metadata InboundContext, onClose N.CloseHandlerFunc)
type ConnectionRouter
deprecated
added in
v1.7.0
type ConnectionRouter interface { RouteConnection(ctx context.Context, conn net.Conn, metadata InboundContext) error RoutePacketConnection(ctx context.Context, conn N.PacketConn, metadata InboundContext) error }
Deprecated: Use ConnectionRouterEx instead.
type ConnectionRouterEx ¶
type ConnectionRouterEx interface { ConnectionRouter RouteConnectionEx(ctx context.Context, conn net.Conn, metadata InboundContext, onClose N.CloseHandlerFunc) RoutePacketConnectionEx(ctx context.Context, conn N.PacketConn, metadata InboundContext, onClose N.CloseHandlerFunc) }
type DNSRule ¶
type DNSRule interface { Rule WithAddressLimit() bool MatchAddressLimit(metadata *InboundContext) bool }
type FakeIPMetadata ¶ added in v1.3.0
type FakeIPMetadata struct { Inet4Range netip.Prefix Inet6Range netip.Prefix Inet4Current netip.Addr Inet6Current netip.Addr }
func (*FakeIPMetadata) MarshalBinary ¶ added in v1.3.0
func (m *FakeIPMetadata) MarshalBinary() (data []byte, err error)
func (*FakeIPMetadata) UnmarshalBinary ¶ added in v1.3.0
func (m *FakeIPMetadata) UnmarshalBinary(data []byte) error
type FakeIPStorage ¶ added in v1.3.0
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 ¶ added in v1.3.0
type FakeIPTransport ¶ added in v1.3.0
type FakeIPTransport interface {
dns.Transport
Store() FakeIPStore
}
type HTTPStartContext ¶
type HTTPStartContext struct {
// contains filtered or unexported fields
}
func NewHTTPStartContext ¶
func NewHTTPStartContext() *HTTPStartContext
func (*HTTPStartContext) Close ¶
func (c *HTTPStartContext) Close()
func (*HTTPStartContext) HTTPClient ¶
type HeadlessRule ¶ added in v1.8.0
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 User string Outbound string Protocol string Domain string Client string SniffContext any // Deprecated: implement in rule action InboundDetour string LastInbound string OriginDestination M.Socksaddr // Deprecated InboundOptions option.InboundOptions UDPDisableDomainUnmapping bool UDPConnect bool DNSServer string 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 ContextFrom ¶
func ContextFrom(ctx context.Context) *InboundContext
func ExtendContext ¶ added in v1.5.5
func ExtendContext(ctx context.Context) (context.Context, *InboundContext)
func (*InboundContext) ResetRuleCache ¶ added in v1.8.0
func (c *InboundContext) ResetRuleCache()
type InboundRegistry ¶
type InterfaceUpdateListener ¶ added in v1.1.0
type InterfaceUpdateListener interface {
InterfaceUpdated()
}
type OOBPacketHandler
deprecated
type OOBPacketHandler interface {
NewPacket(ctx context.Context, conn N.PacketConn, buffer *buf.Buffer, oob []byte, metadata InboundContext) error
}
Deprecated: use OOBPacketHandlerEx instead
type OOBPacketHandlerEx ¶
type OutboundGroup ¶
type OutboundRegistry ¶
type PacketConnectionHandler ¶
type PacketConnectionHandler interface {
NewPacketConnection(ctx context.Context, conn N.PacketConn, metadata InboundContext) error
}
Deprecated
type PacketConnectionHandlerEx ¶
type PacketConnectionHandlerEx interface {
NewPacketConnectionEx(ctx context.Context, conn N.PacketConn, metadata InboundContext, onClose N.CloseHandlerFunc)
}
type PacketConnectionHandlerFunc ¶
type PacketConnectionHandlerFunc = func(ctx context.Context, conn N.PacketConn, metadata InboundContext) error
Deprecated
type PacketConnectionHandlerFuncEx ¶
type PacketConnectionHandlerFuncEx = func(ctx context.Context, conn N.PacketConn, metadata InboundContext, onClose N.CloseHandlerFunc)
type PacketHandler
deprecated
type PacketHandler interface {
NewPacket(ctx context.Context, conn N.PacketConn, buffer *buf.Buffer, metadata InboundContext) error
}
Deprecated: use PacketHandlerEx instead
type PacketHandlerEx ¶
type PostStarter ¶ added in v1.3.3
type PostStarter interface {
PostStart() error
}
type PreStarter ¶ added in v1.2.0
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 PreMatch(metadata InboundContext) error ConnectionRouterEx 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 ¶ added in v1.2.0
type Rule ¶
type Rule interface { HeadlessRule Service Type() string UpdateGeosite() error Action() RuleAction }
type RuleAction ¶
type RuleSet ¶ added in v1.8.0
type RuleSet interface { Name() string StartContext(ctx context.Context, startContext *HTTPStartContext) 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 ¶ added in v1.8.0
type RuleSetUpdateCallback ¶ added in v1.10.0
type RuleSetUpdateCallback func(it RuleSet)
type SavedRuleSet ¶ added in v1.8.0
func (*SavedRuleSet) MarshalBinary ¶ added in v1.8.0
func (s *SavedRuleSet) MarshalBinary() ([]byte, error)
func (*SavedRuleSet) UnmarshalBinary ¶ added in v1.8.0
func (s *SavedRuleSet) UnmarshalBinary(data []byte) error
type TCPInjectableInbound ¶
type TCPInjectableInbound interface { Inbound ConnectionHandlerEx }
type TimeService ¶ added in v1.2.0
type UDPInjectableInbound ¶
type UDPInjectableInbound interface { Inbound PacketConnectionHandlerEx }
type URLTestGroup ¶ added in v1.3.0
type UpstreamHandlerAdapter ¶
type UpstreamHandlerAdapter interface { N.TCPConnectionHandler N.UDPConnectionHandler E.Handler }
func NewRouteContextHandler
deprecated
added in
v1.7.0
func NewRouteContextHandler( router ConnectionRouter, logger logger.ContextLogger, ) UpstreamHandlerAdapter
Deprecated: Use ConnectionRouterEx instead.
func NewRouteHandler
deprecated
added in
v1.7.0
func NewRouteHandler( metadata InboundContext, router ConnectionRouter, logger logger.ContextLogger, ) UpstreamHandlerAdapter
Deprecated: Use ConnectionRouterEx instead.
func NewUpstreamContextHandler ¶
func NewUpstreamContextHandler( connectionHandler ConnectionHandlerFunc, packetHandler PacketConnectionHandlerFunc, errorHandler E.Handler, ) UpstreamHandlerAdapter
Deprecated
func NewUpstreamHandler ¶
func NewUpstreamHandler( metadata InboundContext, connectionHandler ConnectionHandlerFunc, packetHandler PacketConnectionHandlerFunc, errorHandler E.Handler, ) UpstreamHandlerAdapter
Deprecated
type UpstreamHandlerAdapterEx ¶
type UpstreamHandlerAdapterEx interface { N.TCPConnectionHandlerEx N.UDPConnectionHandlerEx }
func NewRouteContextHandlerEx ¶
func NewRouteContextHandlerEx( router ConnectionRouterEx, ) UpstreamHandlerAdapterEx
func NewRouteHandlerEx ¶
func NewRouteHandlerEx( metadata InboundContext, router ConnectionRouterEx, ) UpstreamHandlerAdapterEx
func NewUpstreamContextHandlerEx ¶
func NewUpstreamContextHandlerEx( connectionHandler ConnectionHandlerFuncEx, packetHandler PacketConnectionHandlerFuncEx, ) UpstreamHandlerAdapterEx
func NewUpstreamHandlerEx ¶
func NewUpstreamHandlerEx( metadata InboundContext, connectionHandler ConnectionHandlerFuncEx, packetHandler PacketConnectionHandlerFuncEx, ) UpstreamHandlerAdapterEx
type V2RayClientTransport ¶ added in v1.0.1
type V2RayServer ¶ added in v1.1.0
type V2RayServer interface { Service StatsService() V2RayStatsService }
type V2RayServerTransport ¶ added in v1.0.1
type V2RayServerTransportHandler ¶ added in v1.2.0
type V2RayServerTransportHandler interface { N.TCPConnectionHandlerEx }
type V2RayStatsService ¶ added in v1.1.0
Source Files ¶
Click to show internal directories.
Click to hide internal directories.