mirror of
https://github.com/XrayR-project/XrayR.git
synced 2025-06-09 05:49:55 +00:00
revert: dns hot load feat
the dispatcher mod cannot reload dns instance. So I revert the DNS feat and will create a new branch to test it.
This commit is contained in:
parent
4746bd57d0
commit
8512c354f5
@ -68,8 +68,13 @@ func (p *Panel) loadCore(panelConfig *Config) *core.Instance {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// init controller's DNS config
|
// init controller's DNS config
|
||||||
for _, config := range p.panelConfig.NodesConfig {
|
// for _, config := range p.panelConfig.NodesConfig {
|
||||||
config.ControllerConfig.DNSConfig = coreDnsConfig
|
// config.ControllerConfig.DNSConfig = coreDnsConfig
|
||||||
|
// }
|
||||||
|
|
||||||
|
dnsConfig, err := coreDnsConfig.Build()
|
||||||
|
if err != nil {
|
||||||
|
log.Panicf("Failed to understand DNS config, Please check: https://xtls.github.io/config/dns.html for help: %s", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Routing config
|
// Routing config
|
||||||
@ -139,6 +144,7 @@ func (p *Panel) loadCore(panelConfig *Config) *core.Instance {
|
|||||||
serial.ToTypedMessage(&proxyman.InboundConfig{}),
|
serial.ToTypedMessage(&proxyman.InboundConfig{}),
|
||||||
serial.ToTypedMessage(&proxyman.OutboundConfig{}),
|
serial.ToTypedMessage(&proxyman.OutboundConfig{}),
|
||||||
serial.ToTypedMessage(policyConfig),
|
serial.ToTypedMessage(policyConfig),
|
||||||
|
serial.ToTypedMessage(dnsConfig),
|
||||||
serial.ToTypedMessage(routeConfig),
|
serial.ToTypedMessage(routeConfig),
|
||||||
},
|
},
|
||||||
Inbound: inBoundConfig,
|
Inbound: inBoundConfig,
|
||||||
|
@ -1,8 +1,6 @@
|
|||||||
package controller
|
package controller
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/xtls/xray-core/infra/conf"
|
|
||||||
|
|
||||||
"github.com/XrayR-project/XrayR/common/limiter"
|
"github.com/XrayR-project/XrayR/common/limiter"
|
||||||
"github.com/XrayR-project/XrayR/common/mylego"
|
"github.com/XrayR-project/XrayR/common/mylego"
|
||||||
)
|
)
|
||||||
@ -23,7 +21,6 @@ type Config struct {
|
|||||||
AutoSpeedLimitConfig *AutoSpeedLimitConfig `mapstructure:"AutoSpeedLimitConfig"`
|
AutoSpeedLimitConfig *AutoSpeedLimitConfig `mapstructure:"AutoSpeedLimitConfig"`
|
||||||
GlobalDeviceLimitConfig *limiter.GlobalDeviceLimitConfig `mapstructure:"GlobalDeviceLimitConfig"`
|
GlobalDeviceLimitConfig *limiter.GlobalDeviceLimitConfig `mapstructure:"GlobalDeviceLimitConfig"`
|
||||||
FallBackConfigs []*FallBackConfig `mapstructure:"FallBackConfigs"`
|
FallBackConfigs []*FallBackConfig `mapstructure:"FallBackConfigs"`
|
||||||
DNSConfig *conf.DNSConfig
|
|
||||||
}
|
}
|
||||||
|
|
||||||
type AutoSpeedLimitConfig struct {
|
type AutoSpeedLimitConfig struct {
|
||||||
|
@ -4,19 +4,15 @@ import (
|
|||||||
"fmt"
|
"fmt"
|
||||||
"log"
|
"log"
|
||||||
"reflect"
|
"reflect"
|
||||||
"sync"
|
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/xtls/xray-core/common/protocol"
|
"github.com/xtls/xray-core/common/protocol"
|
||||||
"github.com/xtls/xray-core/common/serial"
|
|
||||||
"github.com/xtls/xray-core/common/task"
|
"github.com/xtls/xray-core/common/task"
|
||||||
"github.com/xtls/xray-core/core"
|
"github.com/xtls/xray-core/core"
|
||||||
"github.com/xtls/xray-core/features"
|
|
||||||
"github.com/xtls/xray-core/features/inbound"
|
"github.com/xtls/xray-core/features/inbound"
|
||||||
"github.com/xtls/xray-core/features/outbound"
|
"github.com/xtls/xray-core/features/outbound"
|
||||||
"github.com/xtls/xray-core/features/routing"
|
"github.com/xtls/xray-core/features/routing"
|
||||||
"github.com/xtls/xray-core/features/stats"
|
"github.com/xtls/xray-core/features/stats"
|
||||||
"github.com/xtls/xray-core/infra/conf"
|
|
||||||
|
|
||||||
"github.com/XrayR-project/XrayR/api"
|
"github.com/XrayR-project/XrayR/api"
|
||||||
"github.com/XrayR-project/XrayR/app/mydispatcher"
|
"github.com/XrayR-project/XrayR/app/mydispatcher"
|
||||||
@ -31,7 +27,6 @@ type LimitInfo struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
type Controller struct {
|
type Controller struct {
|
||||||
sync.Mutex
|
|
||||||
server *core.Instance
|
server *core.Instance
|
||||||
config *Config
|
config *Config
|
||||||
clientInfo api.ClientInfo
|
clientInfo api.ClientInfo
|
||||||
@ -83,12 +78,6 @@ func (c *Controller) Start() error {
|
|||||||
c.nodeInfo = newNodeInfo
|
c.nodeInfo = newNodeInfo
|
||||||
c.Tag = c.buildNodeTag()
|
c.Tag = c.buildNodeTag()
|
||||||
|
|
||||||
// append remote DNS config and init dns service
|
|
||||||
err = c.addNewDNS(newNodeInfo)
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
// Add new tag
|
// Add new tag
|
||||||
err = c.addNewTag(newNodeInfo)
|
err = c.addNewTag(newNodeInfo)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -211,14 +200,6 @@ func (c *Controller) nodeInfoMonitor() (err error) {
|
|||||||
var nodeInfoChanged = false
|
var nodeInfoChanged = false
|
||||||
// If nodeInfo changed
|
// If nodeInfo changed
|
||||||
if !reflect.DeepEqual(c.nodeInfo, newNodeInfo) {
|
if !reflect.DeepEqual(c.nodeInfo, newNodeInfo) {
|
||||||
// Add DNS
|
|
||||||
if !reflect.DeepEqual(c.nodeInfo.NameServerConfig, newNodeInfo.NameServerConfig) {
|
|
||||||
log.Printf("%s Reload DNS service", c.logPrefix())
|
|
||||||
if err := c.addNewDNS(newNodeInfo); err != nil {
|
|
||||||
log.Print(err)
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// Remove old tag
|
// Remove old tag
|
||||||
oldTag := c.Tag
|
oldTag := c.Tag
|
||||||
err := c.removeOldTag(oldTag)
|
err := c.removeOldTag(oldTag)
|
||||||
@ -634,38 +615,3 @@ func (c *Controller) certMonitor() error {
|
|||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// append remote dns
|
|
||||||
func (c *Controller) addNewDNS(newNodeInfo *api.NodeInfo) error {
|
|
||||||
// reserve local DNS
|
|
||||||
servers := c.config.DNSConfig.Servers
|
|
||||||
servers = append(servers, newNodeInfo.NameServerConfig...)
|
|
||||||
dns := conf.DNSConfig{
|
|
||||||
Servers: servers,
|
|
||||||
Hosts: c.config.DNSConfig.Hosts,
|
|
||||||
ClientIP: c.config.DNSConfig.ClientIP,
|
|
||||||
Tag: c.config.DNSConfig.Tag,
|
|
||||||
QueryStrategy: c.config.DNSConfig.QueryStrategy,
|
|
||||||
DisableCache: c.config.DNSConfig.DisableCache,
|
|
||||||
DisableFallback: c.config.DNSConfig.DisableFallback,
|
|
||||||
DisableFallbackIfMatch: c.config.DNSConfig.DisableFallbackIfMatch,
|
|
||||||
}
|
|
||||||
|
|
||||||
dnsConfig, err := dns.Build()
|
|
||||||
if err != nil {
|
|
||||||
log.Panicf("Failed to understand DNS config, Please check: https://xtls.github.io/config/dns.html for help: %s", err)
|
|
||||||
}
|
|
||||||
dnsInstance, err := serial.ToTypedMessage(dnsConfig).GetInstance()
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
obj, err := core.CreateObject(c.server, dnsInstance)
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
if feature, ok := obj.(features.Feature); ok {
|
|
||||||
c.server.AddFeature(feature)
|
|
||||||
}
|
|
||||||
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user