mirror of
https://github.com/XTLS/Xray-core.git
synced 2026-05-14 10:00:34 +00:00
refactor: further simplify browser dialer URL parsing path
Agent-Logs-Url: https://github.com/XTLS/Xray-core/sessions/56a85a3a-5e08-44ce-97d9-d441379c11cc Co-authored-by: RPRX <63339210+RPRX@users.noreply.github.com>
This commit is contained in:
committed by
GitHub
parent
7a9c592221
commit
9421ac0b13
@@ -107,8 +107,7 @@ func ConfigureDialers(urls []string) error {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
for browserDialerURL := range next {
|
for browserDialerURL := range next {
|
||||||
addr := browserDialerURL
|
if err := EnsureDialerWithAddress(browserDialerURL); err != nil {
|
||||||
if err := EnsureDialerWithAddress(addr); err != nil {
|
|
||||||
return errors.New("failed to initialize browserDialers listener for url ", browserDialerURL).Base(err)
|
return errors.New("failed to initialize browserDialers listener for url ", browserDialerURL).Base(err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -142,19 +141,15 @@ func parseBrowserDialerAddress(addr string) (string, string, bool) {
|
|||||||
return "", "", false
|
return "", "", false
|
||||||
}
|
}
|
||||||
|
|
||||||
listenAddr, pathRaw, ok := strings.Cut(addr, "/")
|
parsedAddr, err := url.Parse("http://" + addr)
|
||||||
if !ok || listenAddr == "" || pathRaw == "" {
|
if err != nil || parsedAddr.Host == "" || parsedAddr.Path == "" || parsedAddr.RawQuery != "" || parsedAddr.Fragment != "" {
|
||||||
return "", "", false
|
return "", "", false
|
||||||
}
|
}
|
||||||
|
listenAddr := parsedAddr.Host
|
||||||
path := "/" + strings.TrimSuffix(pathRaw, "/")
|
|
||||||
if _, _, err := net.SplitHostPort(listenAddr); err != nil {
|
if _, _, err := net.SplitHostPort(listenAddr); err != nil {
|
||||||
return "", "", false
|
return "", "", false
|
||||||
}
|
}
|
||||||
parsedPath, err := url.ParseRequestURI(path)
|
path := strings.TrimSuffix(parsedAddr.Path, "/")
|
||||||
if err != nil || parsedPath.RawQuery != "" || parsedPath.Fragment != "" {
|
|
||||||
return "", "", false
|
|
||||||
}
|
|
||||||
cleanPath := pathlib.Clean(path)
|
cleanPath := pathlib.Clean(path)
|
||||||
if cleanPath == "." || cleanPath == "/" || cleanPath != path {
|
if cleanPath == "." || cleanPath == "/" || cleanPath != path {
|
||||||
return "", "", false
|
return "", "", false
|
||||||
@@ -407,9 +402,6 @@ func dialTaskWithAddress(addr string, task task) (*websocket.Conn, error) {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
if dialer == nil {
|
|
||||||
return nil, errors.New("browser dialer is not configured for browserDialers url: ", addr)
|
|
||||||
}
|
|
||||||
conns := dialer.conns
|
conns := dialer.conns
|
||||||
|
|
||||||
var conn *websocket.Conn
|
var conn *websocket.Conn
|
||||||
|
|||||||
Reference in New Issue
Block a user