Files
navi/internal/config/detect.go
T

30 lines
1.0 KiB
Go

package config
import "strings"
// DetectProtocol infers protocol from a share/proxy URI or config body.
func DetectProtocol(raw string) Protocol {
lower := strings.ToLower(strings.TrimSpace(raw))
switch {
case strings.HasPrefix(lower, "hysteria2://"), strings.HasPrefix(lower, "hy2://"):
return ProtocolHysteria2
case strings.HasPrefix(lower, "vless://"):
return ProtocolVLESS
case strings.HasPrefix(lower, "vmess://"):
return ProtocolVMess
case strings.HasPrefix(lower, "trojan://"):
return ProtocolTrojan
case strings.HasPrefix(lower, "awg://"), strings.HasPrefix(lower, "amneziawg://"),
strings.HasPrefix(lower, "wireguard://"):
return ProtocolAWG
case strings.Contains(lower, "[interface]") && strings.Contains(lower, "privatekey"):
return ProtocolAWG
case strings.HasPrefix(lower, "naive+"), strings.HasPrefix(lower, "naive://"),
strings.HasPrefix(lower, "https://"), strings.HasPrefix(lower, "quic://"),
strings.HasPrefix(lower, "http://"):
return ProtocolNaive
default:
return ""
}
}