mirror of
https://github.com/shtorm-7/sing-box-extended.git
synced 2026-07-08 09:13:17 +03:00
refactor: Extract clash/v2ray/time service form router
This commit is contained in:
@@ -219,7 +219,8 @@ func NewDefaultRule(ctx context.Context, logger log.ContextLogger, options optio
|
||||
rule.allItems = append(rule.allItems, item)
|
||||
}
|
||||
if options.ClashMode != "" {
|
||||
item := NewClashModeItem(router, options.ClashMode)
|
||||
clashServer := service.FromContext[adapter.ClashServer](ctx)
|
||||
item := NewClashModeItem(clashServer, options.ClashMode)
|
||||
rule.items = append(rule.items, item)
|
||||
rule.allItems = append(rule.allItems, item)
|
||||
}
|
||||
|
||||
@@ -216,7 +216,8 @@ func NewDefaultDNSRule(ctx context.Context, logger log.ContextLogger, options op
|
||||
rule.allItems = append(rule.allItems, item)
|
||||
}
|
||||
if options.ClashMode != "" {
|
||||
item := NewClashModeItem(router, options.ClashMode)
|
||||
clashServer := service.FromContext[adapter.ClashServer](ctx)
|
||||
item := NewClashModeItem(clashServer, options.ClashMode)
|
||||
rule.items = append(rule.items, item)
|
||||
rule.allItems = append(rule.allItems, item)
|
||||
}
|
||||
|
||||
@@ -9,23 +9,22 @@ import (
|
||||
var _ RuleItem = (*ClashModeItem)(nil)
|
||||
|
||||
type ClashModeItem struct {
|
||||
router adapter.Router
|
||||
mode string
|
||||
clashServer adapter.ClashServer
|
||||
mode string
|
||||
}
|
||||
|
||||
func NewClashModeItem(router adapter.Router, mode string) *ClashModeItem {
|
||||
func NewClashModeItem(clashServer adapter.ClashServer, mode string) *ClashModeItem {
|
||||
return &ClashModeItem{
|
||||
router: router,
|
||||
mode: mode,
|
||||
clashServer: clashServer,
|
||||
mode: mode,
|
||||
}
|
||||
}
|
||||
|
||||
func (r *ClashModeItem) Match(metadata *adapter.InboundContext) bool {
|
||||
clashServer := r.router.ClashServer()
|
||||
if clashServer == nil {
|
||||
if r.clashServer == nil {
|
||||
return false
|
||||
}
|
||||
return strings.EqualFold(clashServer.Mode(), r.mode)
|
||||
return strings.EqualFold(r.clashServer.Mode(), r.mode)
|
||||
}
|
||||
|
||||
func (r *ClashModeItem) String() string {
|
||||
|
||||
Reference in New Issue
Block a user