1
0
Fork 0
mirror of https://github.com/Eggbertx/gochan.git synced 2025-09-05 15:16:22 -07:00
gochan/pkg/server/serverutil/antispam.go

28 lines
754 B
Go

package serverutil
import (
"net/http"
"net/url"
"strings"
"github.com/gochan-org/gochan/pkg/config"
"github.com/gochan-org/gochan/pkg/gcutil"
"github.com/rs/zerolog"
)
// ValidReferer checks to make sure that the incoming request is from the same domain (or if debug mode is enabled)
func ValidReferer(request *http.Request, errEv ...*zerolog.Event) bool {
referer := request.Referer()
rURL, err := url.ParseRequestURI(referer)
if err != nil {
var ev *zerolog.Event
if len(errEv) == 1 {
ev = gcutil.LogError(err).Caller()
} else {
ev = errEv[0].Err(err).Caller()
}
ev.Str("referer", referer).Msg("Error parsing referer URL")
return false
}
return strings.Index(rURL.Path, config.GetSystemCriticalConfig().WebRoot) == 0
}