Skip to content

Commit f58be84

Browse files
committed
new: add dnstt
1 parent eb11472 commit f58be84

4 files changed

Lines changed: 33 additions & 8 deletions

File tree

ray2sing/common.go

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -256,13 +256,7 @@ func getTransportOptions(decoded map[string]string) (*option.V2RayTransportOptio
256256
case "quic":
257257
decoded["alpn"] = "h3"
258258
transportOptions.Type = C.V2RayTransportTypeQUIC
259-
case "dnstt":
260-
transportOptions.Type = C.V2RayTransportTypeDNSTT
261-
transportOptions.DNSTTOptions = option.DnsttOptions{
262-
PublicKey: getOneOfN(decoded, "", "pubkey", "publickey", "serverpublickey"),
263-
Domain: getOneOfN(decoded, "", "domain", "serveraddress", "address"),
264-
Resolvers: strings.Split(getOneOfN(decoded, "", "resolver"), ","),
265-
}
259+
266260
case "xhttp":
267261
transportOptions.Type = C.V2RayTransportTypeXHTTP
268262
transportOptions.XHTTPOptions = option.V2RayXHTTPOptions{

ray2sing/convert.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ var configTypes = map[string]ParserFunc{
4444
"mieru://": MieruSingbox,
4545
"mierus://": MieruSingbox,
4646
"psiphon://": PsiphonSingbox,
47+
"dnstt://": DnsttSingbox,
4748
}
4849
var endpointParsers = map[string]EndpointParserFunc{
4950
"wg://": AWGSingbox,

ray2sing/dnstt.go

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
package ray2sing
2+
3+
import (
4+
"strings"
5+
6+
T "github.com/sagernet/sing-box/option"
7+
)
8+
9+
func DnsttSingbox(vlessURL string) (*T.Outbound, error) {
10+
u, err := ParseUrl(vlessURL, 443)
11+
if err != nil {
12+
return nil, err
13+
}
14+
decoded := u.Params
15+
uot := T.UDPOverTCPOptions{
16+
Enabled: getOneOfN(decoded, "", "uot") != "false" && getOneOfN(decoded, "", "uot") != "0",
17+
}
18+
return &T.Outbound{
19+
Tag: u.Name + "§hide§",
20+
Type: "dnstt",
21+
Options: &T.DnsttOptions{
22+
DialerOptions: getDialerOptions(decoded),
23+
PublicKey: getOneOfN(decoded, "", "pubkey", "publickey", "serverpublickey"),
24+
Domain: getOneOfN(decoded, "", "domain", "serveraddress", "address"),
25+
Resolvers: strings.Split(getOneOfN(decoded, "", "resolver"), ","),
26+
TunnelPerResolver: toInt(getOneOfN(decoded, "4", "tunnel_per_resolver")),
27+
UDPOverTCP: &uot,
28+
},
29+
}, nil
30+
}

ray2sing/naive.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ func NaiveSingbox(vlessURL string) (*T.Outbound, error) {
3030
}
3131
}
3232
uot := T.UDPOverTCPOptions{
33-
Enabled: getOneOfN(decoded, "", "uot") == "false" || getOneOfN(decoded, "", "uot") == "0",
33+
Enabled: getOneOfN(decoded, "", "uot") != "false" && getOneOfN(decoded, "", "uot") != "0",
3434
}
3535

3636
return &T.Outbound{

0 commit comments

Comments
 (0)