mirror of
https://github.com/shtorm-7/sing-box-extended.git
synced 2026-07-07 17:01:36 +03:00
Fix padding
This commit is contained in:
@@ -8,7 +8,6 @@ import (
|
|||||||
"io"
|
"io"
|
||||||
"net"
|
"net"
|
||||||
"net/http"
|
"net/http"
|
||||||
"net/url"
|
|
||||||
"os"
|
"os"
|
||||||
"strconv"
|
"strconv"
|
||||||
"strings"
|
"strings"
|
||||||
@@ -117,18 +116,9 @@ func (s *Server) ServeHTTP(writer http.ResponseWriter, request *http.Request) {
|
|||||||
}
|
}
|
||||||
ApplyXPaddingToHeader(writer.Header(), config)
|
ApplyXPaddingToHeader(writer.Header(), config)
|
||||||
validRange := s.options.GetNormalizedXPaddingBytes()
|
validRange := s.options.GetNormalizedXPaddingBytes()
|
||||||
paddingLength := 0
|
paddingValue, paddingPlacement := ExtractXPaddingFromRequest(&s.options.V2RayXHTTPBaseOptions, request, s.options.XPaddingObfsMode)
|
||||||
referrer := request.Header.Get("Referer")
|
if !IsPaddingValid(&s.options.V2RayXHTTPBaseOptions, paddingValue, validRange.From, validRange.To, PaddingMethod(s.options.XPaddingMethod)) {
|
||||||
if referrer != "" {
|
s.logger.ErrorContext(request.Context(), "invalid padding ("+paddingPlacement+") length:", int32(len(paddingValue)))
|
||||||
if referrerURL, err := url.Parse(referrer); err == nil {
|
|
||||||
// Browser dialer cannot control the host part of referrer header, so only check the query
|
|
||||||
paddingLength = len(referrerURL.Query().Get("x_padding"))
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
paddingLength = len(request.URL.Query().Get("x_padding"))
|
|
||||||
}
|
|
||||||
if int32(paddingLength) < validRange.From || int32(paddingLength) > validRange.To {
|
|
||||||
s.logger.ErrorContext(request.Context(), "invalid x_padding length:", int32(paddingLength))
|
|
||||||
writer.WriteHeader(http.StatusBadRequest)
|
writer.WriteHeader(http.StatusBadRequest)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user