This commit is contained in:
yuzuki999
2022-08-12 18:44:56 +08:00
parent c0e0945c8b
commit f00682e58e
4 changed files with 17 additions and 22 deletions

View File

@@ -6,11 +6,12 @@ import (
"github.com/Yuzuki616/V2bX/core/app/dispatcher" "github.com/Yuzuki616/V2bX/core/app/dispatcher"
_ "github.com/Yuzuki616/V2bX/core/distro/all" _ "github.com/Yuzuki616/V2bX/core/distro/all"
"github.com/xtls/xray-core/app/proxyman" "github.com/xtls/xray-core/app/proxyman"
"github.com/xtls/xray-core/app/proxyman/inbound"
"github.com/xtls/xray-core/app/proxyman/outbound"
"github.com/xtls/xray-core/app/stats" "github.com/xtls/xray-core/app/stats"
"github.com/xtls/xray-core/common/serial" "github.com/xtls/xray-core/common/serial"
"github.com/xtls/xray-core/core" "github.com/xtls/xray-core/core"
"github.com/xtls/xray-core/features/inbound"
"github.com/xtls/xray-core/features/outbound"
"github.com/xtls/xray-core/features/routing"
coreConf "github.com/xtls/xray-core/infra/conf" coreConf "github.com/xtls/xray-core/infra/conf"
io "io/ioutil" io "io/ioutil"
"log" "log"
@@ -21,8 +22,8 @@ import (
type Core struct { type Core struct {
access sync.Mutex access sync.Mutex
Server *core.Instance Server *core.Instance
ihm *inbound.Manager ihm inbound.Manager
ohm *outbound.Manager ohm outbound.Manager
dispatcher *dispatcher.DefaultDispatcher dispatcher *dispatcher.DefaultDispatcher
} }
@@ -154,6 +155,9 @@ func (p *Core) Start() {
if err := p.Server.Start(); err != nil { if err := p.Server.Start(); err != nil {
log.Panicf("Failed to start instance: %s", err) log.Panicf("Failed to start instance: %s", err)
} }
p.ihm = p.Server.GetFeature(inbound.ManagerType()).(inbound.Manager)
p.ohm = p.Server.GetFeature(outbound.ManagerType()).(outbound.Manager)
p.dispatcher = p.Server.GetFeature(routing.DispatcherType()).(*dispatcher.DefaultDispatcher)
return return
} }

View File

@@ -5,10 +5,8 @@ import (
"fmt" "fmt"
"github.com/Yuzuki616/V2bX/api" "github.com/Yuzuki616/V2bX/api"
"github.com/Yuzuki616/V2bX/app/limiter" "github.com/Yuzuki616/V2bX/app/limiter"
"github.com/Yuzuki616/V2bX/core/app/dispatcher"
"github.com/xtls/xray-core/core" "github.com/xtls/xray-core/core"
"github.com/xtls/xray-core/features/inbound" "github.com/xtls/xray-core/features/inbound"
"github.com/xtls/xray-core/features/routing"
) )
func (p *Core) RemoveInbound(tag string) error { func (p *Core) RemoveInbound(tag string) error {
@@ -32,14 +30,12 @@ func (p *Core) AddInbound(config *core.InboundHandlerConfig) error {
} }
func (p *Core) AddInboundLimiter(tag string, nodeInfo *api.NodeInfo, userList []api.UserInfo) error { func (p *Core) AddInboundLimiter(tag string, nodeInfo *api.NodeInfo, userList []api.UserInfo) error {
dispather := p.Server.GetFeature(routing.DispatcherType()).(*dispatcher.DefaultDispatcher) err := p.dispatcher.Limiter.AddInboundLimiter(tag, nodeInfo, userList)
err := dispather.Limiter.AddInboundLimiter(tag, nodeInfo, userList)
return err return err
} }
func (p *Core) GetInboundLimiter(tag string) (*limiter.InboundInfo, error) { func (p *Core) GetInboundLimiter(tag string) (*limiter.InboundInfo, error) {
dispather := p.Server.GetFeature(routing.DispatcherType()).(*dispatcher.DefaultDispatcher) limit, ok := p.dispatcher.Limiter.InboundInfo.Load(tag)
limit, ok := dispather.Limiter.InboundInfo.Load(tag)
if ok { if ok {
return limit.(*limiter.InboundInfo), nil return limit.(*limiter.InboundInfo), nil
} }
@@ -47,13 +43,11 @@ func (p *Core) GetInboundLimiter(tag string) (*limiter.InboundInfo, error) {
} }
func (p *Core) UpdateInboundLimiter(tag string, nodeInfo *api.NodeInfo, updatedUserList []api.UserInfo) error { func (p *Core) UpdateInboundLimiter(tag string, nodeInfo *api.NodeInfo, updatedUserList []api.UserInfo) error {
dispather := p.Server.GetFeature(routing.DispatcherType()).(*dispatcher.DefaultDispatcher) err := p.dispatcher.Limiter.UpdateInboundLimiter(tag, nodeInfo, updatedUserList)
err := dispather.Limiter.UpdateInboundLimiter(tag, nodeInfo, updatedUserList)
return err return err
} }
func (p *Core) DeleteInboundLimiter(tag string) error { func (p *Core) DeleteInboundLimiter(tag string) error {
dispather := p.Server.GetFeature(routing.DispatcherType()).(*dispatcher.DefaultDispatcher) err := p.dispatcher.Limiter.DeleteInboundLimiter(tag)
err := dispather.Limiter.DeleteInboundLimiter(tag)
return err return err
} }

View File

@@ -8,13 +8,11 @@ import (
) )
func (p *Core) RemoveOutbound(tag string) error { func (p *Core) RemoveOutbound(tag string) error {
outboundManager := p.Server.GetFeature(outbound.ManagerType()).(outbound.Manager) err := p.ohm.RemoveHandler(context.Background(), tag)
err := outboundManager.RemoveHandler(context.Background(), tag)
return err return err
} }
func (p *Core) AddOutbound(config *core.OutboundHandlerConfig) error { func (p *Core) AddOutbound(config *core.OutboundHandlerConfig) error {
outboundManager := p.Server.GetFeature(outbound.ManagerType()).(outbound.Manager)
rawHandler, err := core.CreateObject(p.Server, config) rawHandler, err := core.CreateObject(p.Server, config)
if err != nil { if err != nil {
return err return err
@@ -23,7 +21,7 @@ func (p *Core) AddOutbound(config *core.OutboundHandlerConfig) error {
if !ok { if !ok {
return fmt.Errorf("not an InboundHandler: %s", err) return fmt.Errorf("not an InboundHandler: %s", err)
} }
if err := outboundManager.AddHandler(context.Background(), handler); err != nil { if err := p.ohm.AddHandler(context.Background(), handler); err != nil {
return err return err
} }
return nil return nil

View File

@@ -5,13 +5,12 @@ import (
) )
func (p *Core) UpdateRule(tag string, newRuleList []api.DetectRule) error { func (p *Core) UpdateRule(tag string, newRuleList []api.DetectRule) error {
err := p.dispatcher.RuleManager.UpdateRule(tag, newRuleList) return p.dispatcher.RuleManager.UpdateRule(tag, newRuleList)
return err
} }
func (p *Core) UpdateProtocolRule(tag string, newRuleList []string) error { func (p *Core) UpdateProtocolRule(tag string, newRuleList []string) error {
err := p.dispatcher.RuleManager.UpdateProtocolRule(tag, newRuleList)
return err return p.dispatcher.RuleManager.UpdateProtocolRule(tag, newRuleList)
} }
func (p *Core) GetDetectResult(tag string) ([]api.DetectResult, error) { func (p *Core) GetDetectResult(tag string) ([]api.DetectResult, error) {