mirror of
https://github.com/bestnite/sub2clash.git
synced 2025-07-05 04:12:34 +08:00
Compare commits
2 Commits
v0.0.13-be
...
v0.0.13-be
Author | SHA1 | Date | |
---|---|---|---|
0fa95888cb | |||
b44703fa0f |
@ -58,7 +58,17 @@ func (p *TrojanParser) Parse(proxy string) (P.Proxy, error) {
|
|||||||
remarks = strings.TrimSpace(remarks)
|
remarks = strings.TrimSpace(remarks)
|
||||||
|
|
||||||
query := link.Query()
|
query := link.Query()
|
||||||
network, security, alpnStr, sni, pbk, sid, fp, path, host, serviceName, udp := query.Get("type"), query.Get("security"), query.Get("alpn"), query.Get("sni"), query.Get("pbk"), query.Get("sid"), query.Get("fp"), query.Get("path"), query.Get("host"), query.Get("serviceName"), query.Get("udp")
|
network, security, alpnStr, sni, pbk, sid, fp, path, host, serviceName, udp, insecure := query.Get("type"), query.Get("security"), query.Get("alpn"), query.Get("sni"), query.Get("pbk"), query.Get("sid"), query.Get("fp"), query.Get("path"), query.Get("host"), query.Get("serviceName"), query.Get("udp"), query.Get("allowInsecure")
|
||||||
|
|
||||||
|
insecureBool := insecure == "1"
|
||||||
|
result := P.Trojan{
|
||||||
|
Server: server,
|
||||||
|
Port: port,
|
||||||
|
Password: password,
|
||||||
|
Network: network,
|
||||||
|
UDP: udp == "true",
|
||||||
|
SkipCertVerify: insecureBool,
|
||||||
|
}
|
||||||
|
|
||||||
var alpn []string
|
var alpn []string
|
||||||
if strings.Contains(alpnStr, ",") {
|
if strings.Contains(alpnStr, ",") {
|
||||||
@ -66,27 +76,23 @@ func (p *TrojanParser) Parse(proxy string) (P.Proxy, error) {
|
|||||||
} else {
|
} else {
|
||||||
alpn = nil
|
alpn = nil
|
||||||
}
|
}
|
||||||
|
if len(alpn) > 0 {
|
||||||
result := P.Trojan{
|
result.ALPN = alpn
|
||||||
Server: server,
|
|
||||||
Port: port,
|
|
||||||
Password: password,
|
|
||||||
Network: network,
|
|
||||||
UDP: udp == "true",
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if security == "xtls" || security == "tls" {
|
if fp != "" {
|
||||||
result.ALPN = alpn
|
result.ClientFingerprint = fp
|
||||||
|
}
|
||||||
|
|
||||||
|
if sni != "" {
|
||||||
result.SNI = sni
|
result.SNI = sni
|
||||||
}
|
}
|
||||||
|
|
||||||
if security == "reality" {
|
if security == "reality" {
|
||||||
result.SNI = sni
|
|
||||||
result.RealityOpts = P.RealityOptions{
|
result.RealityOpts = P.RealityOptions{
|
||||||
PublicKey: pbk,
|
PublicKey: pbk,
|
||||||
ShortID: sid,
|
ShortID: sid,
|
||||||
}
|
}
|
||||||
result.Fingerprint = fp
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if network == "ws" {
|
if network == "ws" {
|
||||||
|
@ -57,6 +57,7 @@ func (p *VlessParser) Parse(proxy string) (P.Proxy, error) {
|
|||||||
} else {
|
} else {
|
||||||
alpn = nil
|
alpn = nil
|
||||||
}
|
}
|
||||||
|
|
||||||
remarks := link.Fragment
|
remarks := link.Fragment
|
||||||
if remarks == "" {
|
if remarks == "" {
|
||||||
remarks = fmt.Sprintf("%s:%s", server, portStr)
|
remarks = fmt.Sprintf("%s:%s", server, portStr)
|
||||||
@ -69,24 +70,31 @@ func (p *VlessParser) Parse(proxy string) (P.Proxy, error) {
|
|||||||
UUID: uuid,
|
UUID: uuid,
|
||||||
Flow: flow,
|
Flow: flow,
|
||||||
UDP: udp == "true",
|
UDP: udp == "true",
|
||||||
|
SkipCertVerify: insecureBool,
|
||||||
|
}
|
||||||
|
|
||||||
|
if len(alpn) > 0 {
|
||||||
|
result.ALPN = alpn
|
||||||
|
}
|
||||||
|
|
||||||
|
if fp != "" {
|
||||||
|
result.ClientFingerprint = fp
|
||||||
|
}
|
||||||
|
|
||||||
|
if sni != "" {
|
||||||
|
result.ServerName = sni
|
||||||
}
|
}
|
||||||
|
|
||||||
if security == "tls" {
|
if security == "tls" {
|
||||||
result.TLS = true
|
result.TLS = true
|
||||||
result.ALPN = alpn
|
|
||||||
result.SkipCertVerify = insecureBool
|
|
||||||
result.Fingerprint = fp
|
|
||||||
result.ServerName = sni
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if security == "reality" {
|
if security == "reality" {
|
||||||
result.TLS = true
|
result.TLS = true
|
||||||
result.ServerName = sni
|
|
||||||
result.RealityOpts = P.RealityOptions{
|
result.RealityOpts = P.RealityOptions{
|
||||||
PublicKey: pbk,
|
PublicKey: pbk,
|
||||||
ShortID: sid,
|
ShortID: sid,
|
||||||
}
|
}
|
||||||
result.Fingerprint = fp
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if _type == "ws" {
|
if _type == "ws" {
|
||||||
|
@ -99,6 +99,13 @@ func (p *VmessParser) Parse(proxy string) (P.Proxy, error) {
|
|||||||
name = vmess.Ps
|
name = vmess.Ps
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var alpn []string
|
||||||
|
if strings.Contains(vmess.Alpn, ",") {
|
||||||
|
alpn = strings.Split(vmess.Alpn, ",")
|
||||||
|
} else {
|
||||||
|
alpn = nil
|
||||||
|
}
|
||||||
|
|
||||||
result := P.Vmess{
|
result := P.Vmess{
|
||||||
Server: vmess.Add,
|
Server: vmess.Add,
|
||||||
Port: port,
|
Port: port,
|
||||||
@ -107,19 +114,22 @@ func (p *VmessParser) Parse(proxy string) (P.Proxy, error) {
|
|||||||
Cipher: vmess.Scy,
|
Cipher: vmess.Scy,
|
||||||
}
|
}
|
||||||
|
|
||||||
if vmess.Tls == "tls" {
|
if len(alpn) > 0 {
|
||||||
var alpn []string
|
|
||||||
if strings.Contains(vmess.Alpn, ",") {
|
|
||||||
alpn = strings.Split(vmess.Alpn, ",")
|
|
||||||
} else {
|
|
||||||
alpn = nil
|
|
||||||
}
|
|
||||||
result.TLS = true
|
|
||||||
result.Fingerprint = vmess.Fp
|
|
||||||
result.ALPN = alpn
|
result.ALPN = alpn
|
||||||
|
}
|
||||||
|
|
||||||
|
if vmess.Fp != "" {
|
||||||
|
result.ClientFingerprint = vmess.Fp
|
||||||
|
}
|
||||||
|
|
||||||
|
if vmess.Sni != "" {
|
||||||
result.ServerName = vmess.Sni
|
result.ServerName = vmess.Sni
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if vmess.Tls == "tls" {
|
||||||
|
result.TLS = true
|
||||||
|
}
|
||||||
|
|
||||||
if vmess.Net == "ws" {
|
if vmess.Net == "ws" {
|
||||||
if vmess.Path == "" {
|
if vmess.Path == "" {
|
||||||
vmess.Path = "/"
|
vmess.Path = "/"
|
||||||
|
@ -168,7 +168,7 @@ func GetRawConfHandler(c *gin.Context) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
response, err := http.Get(strings.TrimSuffix(config.GlobalConfig.Address, "/") + "/" + shortLink.Url)
|
response, err := http.Get("http://" + strings.TrimSuffix(config.GlobalConfig.Address, "/") + "/" + shortLink.Url)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
respondWithError(c, http.StatusInternalServerError, "请求错误: "+err.Error())
|
respondWithError(c, http.StatusInternalServerError, "请求错误: "+err.Error())
|
||||||
return
|
return
|
||||||
|
Reference in New Issue
Block a user