Documentation
¶
Index ¶
- func ContextWithRouter(ctx context.Context, router Router) context.Context
- 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 ConnectionHandlerFunc
- type ConnectionRouter
- type DNSRule
- type FakeIPMetadata
- type FakeIPStorage
- type FakeIPStore
- type FakeIPTransport
- type HTTPStartContext
- type HeadlessRule
- type Inbound
- type InboundContext
- type InjectableInbound
- type InterfaceUpdateListener
- type OOBPacketHandler
- type Outbound
- type OutboundGroup
- type PacketConnectionHandler
- type PacketConnectionHandlerFunc
- type PacketHandler
- type PostStarter
- type PreStarter
- type Router
- type Rule
- type RuleSet
- type RuleSetMetadata
- type RuleSetUpdateCallback
- type SavedRuleSet
- type Service
- type TimeService
- type Tracker
- type URLTestGroup
- type UpstreamHandlerAdapter
- func NewRouteContextHandler(router ConnectionRouter, logger logger.ContextLogger) UpstreamHandlerAdapter
- func NewRouteHandler(metadata InboundContext, router ConnectionRouter, logger logger.ContextLogger) UpstreamHandlerAdapter
- func NewUpstreamContextHandler(connectionHandler ConnectionHandlerFunc, ...) UpstreamHandlerAdapter
- func NewUpstreamHandler(metadata InboundContext, connectionHandler ConnectionHandlerFunc, ...) UpstreamHandlerAdapter
- type V2RayClientTransport
- type V2RayServer
- type V2RayServerTransport
- type V2RayServerTransportHandler
- type V2RayStatsService
- type WIFIState
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func OutboundTag ¶
func UpstreamMetadata ¶
func UpstreamMetadata(metadata InboundContext) M.Metadata
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 ConnectionHandlerFunc ¶
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 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 ¶
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
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 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 PacketConnectionHandlerFunc ¶
type PacketConnectionHandlerFunc = func(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 *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 ¶
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 TimeService ¶
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
func NewUpstreamContextHandler ¶
func NewUpstreamContextHandler( connectionHandler ConnectionHandlerFunc, packetHandler PacketConnectionHandlerFunc, errorHandler E.Handler, ) UpstreamHandlerAdapter
func NewUpstreamHandler ¶
func NewUpstreamHandler( metadata InboundContext, connectionHandler ConnectionHandlerFunc, packetHandler PacketConnectionHandlerFunc, errorHandler E.Handler, ) UpstreamHandlerAdapter
type V2RayClientTransport ¶
type V2RayServer ¶
type V2RayServer interface {
Service
StatsService() V2RayStatsService
}
type V2RayServerTransport ¶
type V2RayServerTransportHandler ¶
type V2RayServerTransportHandler interface {
N.TCPConnectionHandler
E.Handler
}
type V2RayStatsService ¶
Click to show internal directories.
Click to hide internal directories.