Add rule set

This commit is contained in:
世界
2023-11-29 17:35:40 +08:00
parent 33881ebd8c
commit 4e4c0820d5
48 changed files with 2375 additions and 105 deletions

View File

@@ -18,7 +18,7 @@ type Router interface {
Outbounds() []Outbound
Outbound(tag string) (Outbound, bool)
DefaultOutbound(network string) Outbound
DefaultOutbound(network string) (Outbound, error)
FakeIPStore() FakeIPStore
@@ -27,6 +27,8 @@ type Router interface {
GeoIPReader() *geoip.Reader
LoadGeosite(code string) (Rule, error)
RuleSet(tag string) (RuleSet, 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)
@@ -61,11 +63,15 @@ func RouterFromContext(ctx context.Context) Router {
return service.FromContext[Router](ctx)
}
type HeadlessRule interface {
Match(metadata *InboundContext) bool
}
type Rule interface {
HeadlessRule
Service
Type() string
UpdateGeosite() error
Match(metadata *InboundContext) bool
Outbound() string
String() string
}
@@ -76,6 +82,11 @@ type DNSRule interface {
RewriteTTL() *uint32
}
type RuleSet interface {
HeadlessRule
Service
}
type InterfaceUpdateListener interface {
InterfaceUpdated()
}