show DNSMode in clash connection api

(cherry picked from commit cb3ccd5a187950d860ed41104e75d48f66ce5886)
This commit is contained in:
PuerNya 2024-06-28 16:36:36 +08:00 committed by CHIZI-0618
parent ea70360b80
commit 66dbd0165b
4 changed files with 16 additions and 1 deletions

View File

@ -43,6 +43,7 @@ type InboundContext struct {
// cache
DNSMode string
InboundDetour string
LastInbound string
OriginDestination M.Socksaddr

View File

@ -4,3 +4,8 @@ const (
DNSProviderAliDNS = "alidns"
DNSProviderCloudflare = "cloudflare"
)
const (
DNSModeNormal = "normal"
DNSModeFakeIP = "fake-ip"
)

View File

@ -5,6 +5,7 @@ import (
"time"
"github.com/sagernet/sing-box/adapter"
C "github.com/sagernet/sing-box/constant"
"github.com/sagernet/sing/common"
"github.com/sagernet/sing/common/atomic"
"github.com/sagernet/sing/common/bufio"
@ -64,6 +65,12 @@ func (t TrackerMetadata) MarshalJSON() ([]byte, error) {
} else {
rule = "final"
}
var dnsMode string
if t.Metadata.DNSMode != "" {
dnsMode = t.Metadata.DNSMode
} else {
dnsMode = C.DNSModeNormal
}
return json.Marshal(map[string]any{
"id": t.ID,
"metadata": map[string]any{
@ -74,7 +81,7 @@ func (t TrackerMetadata) MarshalJSON() ([]byte, error) {
"sourcePort": F.ToString(t.Metadata.Source.Port),
"destinationPort": F.ToString(t.Metadata.Destination.Port),
"host": domain,
"dnsMode": "normal",
"dnsMode": dnsMode,
"processPath": processPath,
},
"upload": t.Upload.Load(),

View File

@ -845,6 +845,7 @@ func (r *Router) RouteConnection(ctx context.Context, conn net.Conn, metadata ad
Fqdn: domain,
Port: metadata.Destination.Port,
}
metadata.DNSMode = C.DNSModeFakeIP
metadata.FakeIP = true
r.logger.DebugContext(ctx, "found fakeip domain: ", domain)
}
@ -969,6 +970,7 @@ func (r *Router) RoutePacketConnection(ctx context.Context, conn N.PacketConn, m
Fqdn: domain,
Port: metadata.Destination.Port,
}
metadata.DNSMode = C.DNSModeFakeIP
metadata.FakeIP = true
r.logger.DebugContext(ctx, "found fakeip domain: ", domain)
}