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:
Senis John 2023-01-02 21:46:30 +08:00
parent 4746bd57d0
commit 8512c354f5
No known key found for this signature in database
GPG Key ID: 845E9E4727C3E1A4
3 changed files with 8 additions and 59 deletions

View File

@ -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,

View File

@ -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 {

View File

@ -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
}