mirror of
https://github.com/XrayR-project/XrayR.git
synced 2025-06-08 05:19:54 +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
|
||||
for _, config := range p.panelConfig.NodesConfig {
|
||||
config.ControllerConfig.DNSConfig = coreDnsConfig
|
||||
// for _, config := range p.panelConfig.NodesConfig {
|
||||
// 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
|
||||
@ -139,6 +144,7 @@ func (p *Panel) loadCore(panelConfig *Config) *core.Instance {
|
||||
serial.ToTypedMessage(&proxyman.InboundConfig{}),
|
||||
serial.ToTypedMessage(&proxyman.OutboundConfig{}),
|
||||
serial.ToTypedMessage(policyConfig),
|
||||
serial.ToTypedMessage(dnsConfig),
|
||||
serial.ToTypedMessage(routeConfig),
|
||||
},
|
||||
Inbound: inBoundConfig,
|
||||
|
@ -1,8 +1,6 @@
|
||||
package controller
|
||||
|
||||
import (
|
||||
"github.com/xtls/xray-core/infra/conf"
|
||||
|
||||
"github.com/XrayR-project/XrayR/common/limiter"
|
||||
"github.com/XrayR-project/XrayR/common/mylego"
|
||||
)
|
||||
@ -23,7 +21,6 @@ type Config struct {
|
||||
AutoSpeedLimitConfig *AutoSpeedLimitConfig `mapstructure:"AutoSpeedLimitConfig"`
|
||||
GlobalDeviceLimitConfig *limiter.GlobalDeviceLimitConfig `mapstructure:"GlobalDeviceLimitConfig"`
|
||||
FallBackConfigs []*FallBackConfig `mapstructure:"FallBackConfigs"`
|
||||
DNSConfig *conf.DNSConfig
|
||||
}
|
||||
|
||||
type AutoSpeedLimitConfig struct {
|
||||
|
@ -4,19 +4,15 @@ import (
|
||||
"fmt"
|
||||
"log"
|
||||
"reflect"
|
||||
"sync"
|
||||
"time"
|
||||
|
||||
"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/core"
|
||||
"github.com/xtls/xray-core/features"
|
||||
"github.com/xtls/xray-core/features/inbound"
|
||||
"github.com/xtls/xray-core/features/outbound"
|
||||
"github.com/xtls/xray-core/features/routing"
|
||||
"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/app/mydispatcher"
|
||||
@ -31,7 +27,6 @@ type LimitInfo struct {
|
||||
}
|
||||
|
||||
type Controller struct {
|
||||
sync.Mutex
|
||||
server *core.Instance
|
||||
config *Config
|
||||
clientInfo api.ClientInfo
|
||||
@ -83,12 +78,6 @@ func (c *Controller) Start() error {
|
||||
c.nodeInfo = newNodeInfo
|
||||
c.Tag = c.buildNodeTag()
|
||||
|
||||
// append remote DNS config and init dns service
|
||||
err = c.addNewDNS(newNodeInfo)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
// Add new tag
|
||||
err = c.addNewTag(newNodeInfo)
|
||||
if err != nil {
|
||||
@ -211,14 +200,6 @@ func (c *Controller) nodeInfoMonitor() (err error) {
|
||||
var nodeInfoChanged = false
|
||||
// If nodeInfo changed
|
||||
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
|
||||
oldTag := c.Tag
|
||||
err := c.removeOldTag(oldTag)
|
||||
@ -634,38 +615,3 @@ func (c *Controller) certMonitor() error {
|
||||
}
|
||||
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