mirror of
https://github.com/SagerNet/sing-box.git
synced 2025-07-22 14:04:08 +08:00
Fix DNS upgrade
This commit is contained in:
parent
72dbcd3ad4
commit
534cccce91
@ -180,7 +180,7 @@ func (o *DNSServerOptions) Upgrade(ctx context.Context) error {
|
|||||||
options := o.Options.(*LegacyDNSServerOptions)
|
options := o.Options.(*LegacyDNSServerOptions)
|
||||||
serverURL, _ := url.Parse(options.Address)
|
serverURL, _ := url.Parse(options.Address)
|
||||||
var serverType string
|
var serverType string
|
||||||
if serverURL.Scheme != "" {
|
if serverURL != nil && serverURL.Scheme != "" {
|
||||||
serverType = serverURL.Scheme
|
serverType = serverURL.Scheme
|
||||||
} else {
|
} else {
|
||||||
switch options.Address {
|
switch options.Address {
|
||||||
@ -217,7 +217,7 @@ func (o *DNSServerOptions) Upgrade(ctx context.Context) error {
|
|||||||
o.Type = C.DNSTypeUDP
|
o.Type = C.DNSTypeUDP
|
||||||
o.Options = &remoteOptions
|
o.Options = &remoteOptions
|
||||||
var serverAddr M.Socksaddr
|
var serverAddr M.Socksaddr
|
||||||
if serverURL.Scheme == "" {
|
if serverURL == nil || serverURL.Scheme == "" {
|
||||||
serverAddr = M.ParseSocksaddr(options.Address)
|
serverAddr = M.ParseSocksaddr(options.Address)
|
||||||
} else {
|
} else {
|
||||||
serverAddr = M.ParseSocksaddr(serverURL.Host)
|
serverAddr = M.ParseSocksaddr(serverURL.Host)
|
||||||
@ -232,6 +232,9 @@ func (o *DNSServerOptions) Upgrade(ctx context.Context) error {
|
|||||||
case C.DNSTypeTCP:
|
case C.DNSTypeTCP:
|
||||||
o.Type = C.DNSTypeTCP
|
o.Type = C.DNSTypeTCP
|
||||||
o.Options = &remoteOptions
|
o.Options = &remoteOptions
|
||||||
|
if serverURL == nil {
|
||||||
|
return E.New("invalid server address")
|
||||||
|
}
|
||||||
serverAddr := M.ParseSocksaddr(serverURL.Host)
|
serverAddr := M.ParseSocksaddr(serverURL.Host)
|
||||||
if !serverAddr.IsValid() {
|
if !serverAddr.IsValid() {
|
||||||
return E.New("invalid server address")
|
return E.New("invalid server address")
|
||||||
@ -242,6 +245,9 @@ func (o *DNSServerOptions) Upgrade(ctx context.Context) error {
|
|||||||
}
|
}
|
||||||
case C.DNSTypeTLS, C.DNSTypeQUIC:
|
case C.DNSTypeTLS, C.DNSTypeQUIC:
|
||||||
o.Type = serverType
|
o.Type = serverType
|
||||||
|
if serverURL == nil {
|
||||||
|
return E.New("invalid server address")
|
||||||
|
}
|
||||||
serverAddr := M.ParseSocksaddr(serverURL.Host)
|
serverAddr := M.ParseSocksaddr(serverURL.Host)
|
||||||
if !serverAddr.IsValid() {
|
if !serverAddr.IsValid() {
|
||||||
return E.New("invalid server address")
|
return E.New("invalid server address")
|
||||||
@ -261,6 +267,9 @@ func (o *DNSServerOptions) Upgrade(ctx context.Context) error {
|
|||||||
},
|
},
|
||||||
}
|
}
|
||||||
o.Options = &httpsOptions
|
o.Options = &httpsOptions
|
||||||
|
if serverURL == nil {
|
||||||
|
return E.New("invalid server address")
|
||||||
|
}
|
||||||
serverAddr := M.ParseSocksaddr(serverURL.Host)
|
serverAddr := M.ParseSocksaddr(serverURL.Host)
|
||||||
if !serverAddr.IsValid() {
|
if !serverAddr.IsValid() {
|
||||||
return E.New("invalid server address")
|
return E.New("invalid server address")
|
||||||
@ -274,6 +283,9 @@ func (o *DNSServerOptions) Upgrade(ctx context.Context) error {
|
|||||||
}
|
}
|
||||||
case "rcode":
|
case "rcode":
|
||||||
var rcode int
|
var rcode int
|
||||||
|
if serverURL == nil {
|
||||||
|
return E.New("invalid server address")
|
||||||
|
}
|
||||||
switch serverURL.Host {
|
switch serverURL.Host {
|
||||||
case "success":
|
case "success":
|
||||||
rcode = dns.RcodeSuccess
|
rcode = dns.RcodeSuccess
|
||||||
@ -295,6 +307,9 @@ func (o *DNSServerOptions) Upgrade(ctx context.Context) error {
|
|||||||
case C.DNSTypeDHCP:
|
case C.DNSTypeDHCP:
|
||||||
o.Type = C.DNSTypeDHCP
|
o.Type = C.DNSTypeDHCP
|
||||||
dhcpOptions := DHCPDNSServerOptions{}
|
dhcpOptions := DHCPDNSServerOptions{}
|
||||||
|
if serverURL == nil {
|
||||||
|
return E.New("invalid server address")
|
||||||
|
}
|
||||||
if serverURL.Host != "" && serverURL.Host != "auto" {
|
if serverURL.Host != "" && serverURL.Host != "auto" {
|
||||||
dhcpOptions.Interface = serverURL.Host
|
dhcpOptions.Interface = serverURL.Host
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user