Skip to content

Commit

Permalink
update xray-core and sing-box object
Browse files Browse the repository at this point in the history
  • Loading branch information
whalechoi committed Apr 2, 2024
1 parent bd223ac commit 859caa1
Show file tree
Hide file tree
Showing 6 changed files with 327 additions and 176 deletions.
46 changes: 30 additions & 16 deletions main/shareurls/trojan/singboxobject.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,9 @@ func getTrojanTlsObjectSingbox(trojan *Trojan) map[string]interface{} {
tlsObject := make(map[string]interface{})
if len(trojan.Security) > 0 {
tlsObject["enabled"] = true
tlsObject["server_name"] = trojan.Sni
if len(trojan.Sni) > 0 {
tlsObject["server_name"] = trojan.Sni
}
var alpn []interface{}
alpnSlice := strings.Split(trojan.Alpn, ",")
for _, v := range alpnSlice {
Expand All @@ -18,12 +20,6 @@ func getTrojanTlsObjectSingbox(trojan *Trojan) map[string]interface{} {
tlsObject["alpn"] = alpn
}
}
//utlsObject := make(map[string]interface{})
//if len(trojan.FingerPrint) > 0 {
// utlsObject["enabled"] = true
// utlsObject["fingerprint"] = trojan.FingerPrint
// tlsObject["utls"] = utlsObject
//}
if trojan.Security == "reality" {
realityObject := make(map[string]interface{})
realityObject["enabled"] = true
Expand All @@ -43,22 +39,40 @@ func getTrojanTransportObjectSingbox(trojan *Trojan) map[string]interface{} {
switch trojan.Network {
case "tcp", "http", "h2":
transportObject["type"] = "http"
var host []interface{}
host = append(host, trojan.Host)
transportObject["host"] = host
transportObject["path"] = trojan.Path
if len(trojan.Host) > 0 {
var host []interface{}
host = append(host, trojan.Host)
transportObject["host"] = host
}
if len(trojan.Path) > 0 {
transportObject["path"] = trojan.Path
}
case "ws":
transportObject["type"] = "ws"
transportObject["path"] = trojan.Path
headersObject := make(map[string]interface{})
headersObject["Host"] = trojan.Host
transportObject["headers"] = headersObject
if len(trojan.Path) > 0 {
transportObject["path"] = trojan.Path
}
if len(trojan.Host) > 0 {
headersObject := make(map[string]interface{})
headersObject["Host"] = trojan.Host
transportObject["headers"] = headersObject
}
transportObject["early_data_header_name"] = "Sec-WebSocket-Protocol"
case "quic":
transportObject["type"] = "quic"
case "grpc":
transportObject["type"] = "grpc"
transportObject["service_name"] = trojan.Path
if len(trojan.Path) > 0 {
transportObject["service_name"] = trojan.Path
}
case "httpupgrade":
transportObject["type"] = "httpupgrade"
if len(trojan.Host) > 0 {
transportObject["host"] = trojan.Host
}
if len(trojan.Path) > 0 {
transportObject["path"] = trojan.Path
}
}
return transportObject
}
126 changes: 81 additions & 45 deletions main/shareurls/trojan/xrayobject.go
Original file line number Diff line number Diff line change
Expand Up @@ -37,72 +37,96 @@ func getStreamSettingsObjectXray(trojan *Trojan) map[string]interface{} {
headerObject := make(map[string]interface{})
switch trojan.Type {
case "http":
requestObject := make(map[string]interface{})
headers := make(map[string]interface{})
var connection []interface{}
connection = append(connection, "keep-alive")
var host []interface{}
host = append(host, trojan.Host)
var acceptEncoding []interface{}
acceptEncoding = append(acceptEncoding, "gzip, deflate")
var userAgent []interface{}
userAgent = append(userAgent, "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36",
"Mozilla/5.0 (iPhone; CPU iPhone OS 16_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/16.4 Mobile/15E148 Safari/604.1")
headers["Connection"] = connection
headers["Host"] = host
headers["Pragma"] = "no-cache"
headers["Accept-Encoding"] = acceptEncoding
headers["User-Agent"] = userAgent
requestObject["headers"] = headers
headerObject["type"] = trojan.Type
headerObject["request"] = requestObject
if len(trojan.Host) > 0 {
requestObject := make(map[string]interface{})
headers := make(map[string]interface{})
var host []interface{}
host = append(host, trojan.Host)
var connection []interface{}
connection = append(connection, "keep-alive")
var acceptEncoding []interface{}
acceptEncoding = append(acceptEncoding, "gzip, deflate")
var userAgent []interface{}
userAgent = append(userAgent, "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36",
"Mozilla/5.0 (iPhone; CPU iPhone OS 16_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/16.4 Mobile/15E148 Safari/604.1")
headers["Host"] = host
headers["Connection"] = connection
headers["Pragma"] = "no-cache"
headers["Accept-Encoding"] = acceptEncoding
headers["User-Agent"] = userAgent
requestObject["headers"] = headers
headerObject["request"] = requestObject
}
default:
headerObject["type"] = "none"
}
tcpSettingsObject["header"] = headerObject
streamSettingsObject["tcpSettings"] = tcpSettingsObject
case "kcp":
kcpSettingsObject := make(map[string]interface{})
headerObject := make(map[string]interface{})
headerObject["type"] = trojan.Type
if len(trojan.Type) > 0 {
headerObject := make(map[string]interface{})
headerObject["type"] = trojan.Type
kcpSettingsObject["header"] = headerObject
}
kcpSettingsObject["congestion"] = false
kcpSettingsObject["downlinkCapacity"] = 100
kcpSettingsObject["header"] = headerObject
kcpSettingsObject["mtu"] = 1350
kcpSettingsObject["readBufferSize"] = 1
kcpSettingsObject["seed"] = trojan.Path
if len(trojan.Path) > 0 {
kcpSettingsObject["seed"] = trojan.Path
}
kcpSettingsObject["tti"] = 50
kcpSettingsObject["uplinkCapacity"] = 12
kcpSettingsObject["writeBufferSize"] = 1
streamSettingsObject["kcpSettings"] = kcpSettingsObject
case "ws":
wsSettingsObject := make(map[string]interface{})
headersObject := make(map[string]interface{})
headersObject["Host"] = trojan.Host
wsSettingsObject["headers"] = headersObject
wsSettingsObject["path"] = trojan.Path
if len(trojan.Host) > 0 {
headersObject := make(map[string]interface{})
headersObject["Host"] = trojan.Host
wsSettingsObject["headers"] = headersObject
}
if len(trojan.Path) > 0 {
wsSettingsObject["path"] = trojan.Path
}
streamSettingsObject["wsSettings"] = wsSettingsObject
case "http", "h2":
httpSettingsObject := make(map[string]interface{})
var host []interface{}
host = append(host, trojan.Host)
httpSettingsObject["host"] = host
httpSettingsObject["path"] = trojan.Path
if len(trojan.Host) > 0 {
var host []interface{}
host = append(host, trojan.Host)
httpSettingsObject["host"] = host
}
if len(trojan.Path) > 0 {
httpSettingsObject["path"] = trojan.Path
}
streamSettingsObject["httpSettings"] = httpSettingsObject
case "httpupgrade":
httpupgradeSettingsObject := make(map[string]interface{})
var host []interface{}
host = append(host, trojan.Host)
httpupgradeSettingsObject["host"] = host
httpupgradeSettingsObject["path"] = trojan.Path
if len(trojan.Host) > 0 {
var host []interface{}
host = append(host, trojan.Host)
httpupgradeSettingsObject["host"] = host
}
if len(trojan.Path) > 0 {
httpupgradeSettingsObject["path"] = trojan.Path
}
streamSettingsObject["httpupgrade"] = httpupgradeSettingsObject
case "quic":
quicSettingsObject := make(map[string]interface{})
headerObject := make(map[string]interface{})
headerObject["type"] = trojan.Type
quicSettingsObject["header"] = headerObject
quicSettingsObject["key"] = trojan.Path
quicSettingsObject["security"] = trojan.Host
if len(trojan.Type) > 0 {
headerObject := make(map[string]interface{})
headerObject["type"] = trojan.Type
quicSettingsObject["header"] = headerObject
}
if len(trojan.Path) > 0 {
quicSettingsObject["key"] = trojan.Path
}
if len(trojan.Host) > 0 {
quicSettingsObject["security"] = trojan.Host
}
streamSettingsObject["quicSettings"] = quicSettingsObject
case "grpc":
grpcSettingsObject := make(map[string]interface{})
Expand All @@ -111,8 +135,12 @@ func getStreamSettingsObjectXray(trojan *Trojan) map[string]interface{} {
} else {
grpcSettingsObject["multiMode"] = false
}
grpcSettingsObject["authority"] = trojan.Host
grpcSettingsObject["serviceName"] = trojan.Path
if len(trojan.Host) > 0 {
grpcSettingsObject["authority"] = trojan.Host
}
if len(trojan.Path) > 0 {
grpcSettingsObject["serviceName"] = trojan.Path
}
streamSettingsObject["grpcSettings"] = grpcSettingsObject
}
streamSettingsObject["security"] = trojan.Security
Expand All @@ -128,14 +156,22 @@ func getStreamSettingsObjectXray(trojan *Trojan) map[string]interface{} {
}
}
tlsSettingsObject["allowInsecure"] = false
tlsSettingsObject["fingerprint"] = trojan.FingerPrint
tlsSettingsObject["serverName"] = trojan.Sni
if len(trojan.FingerPrint) > 0 {
tlsSettingsObject["fingerprint"] = trojan.FingerPrint
}
if len(trojan.Sni) > 0 {
tlsSettingsObject["serverName"] = trojan.Sni
}
streamSettingsObject["tlsSettings"] = tlsSettingsObject
case "reality":
realitySettingsObject := make(map[string]interface{})
realitySettingsObject["allowInsecure"] = false
realitySettingsObject["fingerprint"] = trojan.FingerPrint
realitySettingsObject["serverName"] = trojan.Sni
if len(trojan.FingerPrint) > 0 {
realitySettingsObject["fingerprint"] = trojan.FingerPrint
}
if len(trojan.Sni) > 0 {
realitySettingsObject["serverName"] = trojan.Sni
}
realitySettingsObject["publicKey"] = trojan.PublicKey
realitySettingsObject["shortId"] = trojan.ShortId
realitySettingsObject["spiderX"] = trojan.SpiderX
Expand Down
46 changes: 30 additions & 16 deletions main/shareurls/vless/singboxobject.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,9 @@ func getVLESSTlsObjectSingbox(vless *VLESS) map[string]interface{} {
tlsObject := make(map[string]interface{})
if len(vless.Security) > 0 {
tlsObject["enabled"] = true
tlsObject["server_name"] = vless.Sni
if len(vless.Sni) > 0 {
tlsObject["server_name"] = vless.Sni
}
var alpn []interface{}
alpnSlice := strings.Split(vless.Alpn, ",")
for _, v := range alpnSlice {
Expand All @@ -18,12 +20,6 @@ func getVLESSTlsObjectSingbox(vless *VLESS) map[string]interface{} {
tlsObject["alpn"] = alpn
}
}
//utlsObject := make(map[string]interface{})
//if len(vless.FingerPrint) > 0 {
// utlsObject["enabled"] = true
// utlsObject["fingerprint"] = vless.FingerPrint
// tlsObject["utls"] = utlsObject
//}
if vless.Security == "reality" {
realityObject := make(map[string]interface{})
realityObject["enabled"] = true
Expand All @@ -43,22 +39,40 @@ func getVLESSTransportObjectSingbox(vless *VLESS) map[string]interface{} {
switch vless.Network {
case "tcp", "http", "h2":
transportObject["type"] = "http"
var host []interface{}
host = append(host, vless.Host)
transportObject["host"] = host
transportObject["path"] = vless.Path
if len(vless.Host) > 0 {
var host []interface{}
host = append(host, vless.Host)
transportObject["host"] = host
}
if len(vless.Path) > 0 {
transportObject["path"] = vless.Path
}
case "ws":
transportObject["type"] = "ws"
transportObject["path"] = vless.Path
headersObject := make(map[string]interface{})
headersObject["Host"] = vless.Host
transportObject["headers"] = headersObject
if len(vless.Path) > 0 {
transportObject["path"] = vless.Path
}
if len(vless.Host) > 0 {
headersObject := make(map[string]interface{})
headersObject["Host"] = vless.Host
transportObject["headers"] = headersObject
}
transportObject["early_data_header_name"] = "Sec-WebSocket-Protocol"
case "quic":
transportObject["type"] = "quic"
case "grpc":
transportObject["type"] = "grpc"
transportObject["service_name"] = vless.Path
if len(vless.Path) > 0 {
transportObject["service_name"] = vless.Path
}
case "httpupgrade":
transportObject["type"] = "httpupgrade"
if len(vless.Host) > 0 {
transportObject["host"] = vless.Host
}
if len(vless.Path) > 0 {
transportObject["path"] = vless.Path
}
}
return transportObject
}
Loading

0 comments on commit 859caa1

Please sign in to comment.