revertws (#17216)
* Revert "MM-34000: Use non-epoll mode for TLS connections (#17172)" This reverts commit2743089b54. * Revert "MM-33233: Fix double close of webconn pump (#17026)" This reverts commit0f98620b65. * Revert "MM-33836: Detect and upgrade incorrect HTTP version for websocket handshakes (#17142)" This reverts commit4c5ea07aff. * revert i18n * Revert "MM-21012: Revamp websocket implementation (#16620)" This reverts commita246104d04. * fix go.mod * Trigger CI
Этот коммит содержится в:
коммит произвёл
GitHub
родитель
6a65b6ceca
Коммит
aba6471512
42
utils/api.go
42
utils/api.go
@@ -13,7 +13,6 @@ import (
|
||||
"net/url"
|
||||
"path"
|
||||
"strings"
|
||||
"unicode/utf8"
|
||||
|
||||
"github.com/mattermost/mattermost-server/v5/model"
|
||||
"github.com/mattermost/mattermost-server/v5/shared/i18n"
|
||||
@@ -29,58 +28,19 @@ func CheckOrigin(r *http.Request, allowedOrigins string) bool {
|
||||
return true
|
||||
}
|
||||
for _, allowed := range strings.Split(allowedOrigins, " ") {
|
||||
if equalASCIIFold(allowed, origin) {
|
||||
if allowed == origin {
|
||||
return true
|
||||
}
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
// equalASCIIFold returns true if s is equal to t with ASCII case folding as
|
||||
// defined in RFC 4790.
|
||||
// Copied from gorilla/websocket/util.go
|
||||
func equalASCIIFold(s, t string) bool {
|
||||
for s != "" && t != "" {
|
||||
sr, size := utf8.DecodeRuneInString(s)
|
||||
s = s[size:]
|
||||
tr, size := utf8.DecodeRuneInString(t)
|
||||
t = t[size:]
|
||||
if sr == tr {
|
||||
continue
|
||||
}
|
||||
if 'A' <= sr && sr <= 'Z' {
|
||||
sr = sr + 'a' - 'A'
|
||||
}
|
||||
if 'A' <= tr && tr <= 'Z' {
|
||||
tr = tr + 'a' - 'A'
|
||||
}
|
||||
if sr != tr {
|
||||
return false
|
||||
}
|
||||
}
|
||||
return s == t
|
||||
}
|
||||
|
||||
func OriginChecker(allowedOrigins string) func(*http.Request) bool {
|
||||
return func(r *http.Request) bool {
|
||||
return CheckOrigin(r, allowedOrigins)
|
||||
}
|
||||
}
|
||||
|
||||
func SameOriginChecker() func(*http.Request) bool {
|
||||
return func(r *http.Request) bool {
|
||||
origURL, err := url.Parse(r.Header.Get("Origin"))
|
||||
if err != nil {
|
||||
return false
|
||||
}
|
||||
u := url.URL{
|
||||
Host: r.Host,
|
||||
Scheme: origURL.Scheme,
|
||||
}
|
||||
return CheckOrigin(r, u.String())
|
||||
}
|
||||
}
|
||||
|
||||
func RenderWebAppError(config *model.Config, w http.ResponseWriter, r *http.Request, err *model.AppError, s crypto.Signer) {
|
||||
RenderWebError(config, w, r, err.StatusCode, url.Values{
|
||||
"message": []string{err.Message},
|
||||
|
||||
Ссылка в новой задаче
Block a user