Release 1.2.0 Windows amd64 with Hysteria 2

This commit is contained in:
Navis
2026-07-28 07:14:52 +03:00
parent 5d968dc0e3
commit 7eaf53f7c2
22 changed files with 801 additions and 75 deletions
+39
View File
@@ -0,0 +1,39 @@
package linknorm
import (
"fmt"
"strings"
"vpnclient/internal/config"
"vpnclient/internal/protocols/hysteria2"
"vpnclient/internal/protocols/naive"
)
// Normalize normalizes a share/proxy URI for the given protocol (or auto-detect).
func Normalize(proto config.Protocol, raw string) (normalized string, detected config.Protocol, remark string, err error) {
raw = strings.TrimSpace(raw)
if raw == "" {
return "", proto, "", fmt.Errorf("пустая ссылка")
}
if proto == "" {
proto = config.DetectProtocol(raw)
}
switch proto {
case config.ProtocolHysteria2:
u, rem, err := hysteria2.NormalizeShareLink(raw)
return u, config.ProtocolHysteria2, rem, err
case config.ProtocolNaive, "":
u, rem, err := naive.ParseShareLink(raw)
if err != nil {
// try hy2 if naive failed and looks like hy
if hysteria2.Detect(raw) {
u2, rem2, err2 := hysteria2.NormalizeShareLink(raw)
return u2, config.ProtocolHysteria2, rem2, err2
}
return "", config.ProtocolNaive, "", err
}
return u, config.ProtocolNaive, rem, nil
default:
return "", proto, "", fmt.Errorf("unsupported protocol %q", proto)
}
}