Browse Source

switch to protojson based config for log dns router

Shelikhoo 4 years ago
parent
commit
4835b8261d
2 changed files with 11 additions and 9 deletions
  1. 7 3
      infra/conf/v5cfg/root.go
  2. 4 6
      infra/conf/v5cfg/skeleton.go

+ 7 - 3
infra/conf/v5cfg/root.go

@@ -26,7 +26,11 @@ func (c RootConfig) BuildV5(ctx context.Context) (proto.Message, error) {
 
 	var logConfMsg *anypb.Any
 	if c.LogConfig != nil {
-		logConfMsg = serial.ToTypedMessage(c.LogConfig.Build())
+		logConfMsgUnpacked, err := loadHeterogeneousConfigFromRawJson("service", "log", c.LogConfig)
+		if err != nil {
+			return nil, err
+		}
+		logConfMsg = serial.ToTypedMessage(logConfMsgUnpacked)
 	} else {
 		logConfMsg = serial.ToTypedMessage(log.DefaultLogConfig())
 	}
@@ -35,7 +39,7 @@ func (c RootConfig) BuildV5(ctx context.Context) (proto.Message, error) {
 	config.App = append([]*anypb.Any{logConfMsg}, config.App...)
 
 	if c.RouterConfig != nil {
-		routerConfig, err := c.RouterConfig.BuildV5(ctx)
+		routerConfig, err := loadHeterogeneousConfigFromRawJson("service", "router", c.RouterConfig)
 		if err != nil {
 			return nil, err
 		}
@@ -43,7 +47,7 @@ func (c RootConfig) BuildV5(ctx context.Context) (proto.Message, error) {
 	}
 
 	if c.DNSConfig != nil {
-		dnsApp, err := c.DNSConfig.BuildV5(ctx)
+		dnsApp, err := loadHeterogeneousConfigFromRawJson("service", "dns", c.DNSConfig)
 		if err != nil {
 			return nil, newError("failed to parse DNS config").Base(err)
 		}

+ 4 - 6
infra/conf/v5cfg/skeleton.go

@@ -7,18 +7,16 @@ import (
 	"github.com/v2fly/v2ray-core/v4/infra/conf/cfgcommon/proxycfg"
 	"github.com/v2fly/v2ray-core/v4/infra/conf/cfgcommon/sniffer"
 	"github.com/v2fly/v2ray-core/v4/infra/conf/cfgcommon/socketcfg"
-	"github.com/v2fly/v2ray-core/v4/infra/conf/synthetic/dns"
-	"github.com/v2fly/v2ray-core/v4/infra/conf/synthetic/log"
-	"github.com/v2fly/v2ray-core/v4/infra/conf/synthetic/router"
 )
 
 type RootConfig struct {
-	LogConfig    *log.LogConfig             `json:"log"`
-	DNSConfig    *dns.DNSConfig             `json:"dns"`
-	RouterConfig *router.RouterConfig       `json:"router"`
+	LogConfig    json.RawMessage            `json:"log"`
+	DNSConfig    json.RawMessage            `json:"dns"`
+	RouterConfig json.RawMessage            `json:"router"`
 	Inbounds     []InboundConfig            `json:"inbounds"`
 	Outbounds    []OutboundConfig           `json:"outbounds"`
 	Services     map[string]json.RawMessage `json:"services"`
+	Extensions   []json.RawMessage          `json:"extension"`
 }
 
 type InboundConfig struct {