mirror of
https://github.com/livekit/livekit.git
synced 2026-03-30 19:55:41 +00:00
41 lines
988 B
Go
41 lines
988 B
Go
package service
|
|
|
|
import (
|
|
"net"
|
|
"net/http"
|
|
"regexp"
|
|
|
|
"github.com/livekit/protocol/logger"
|
|
)
|
|
|
|
func handleError(w http.ResponseWriter, status int, err error, keysAndValues ...interface{}) {
|
|
keysAndValues = append(keysAndValues, "status", status)
|
|
logger.GetLogger().WithCallDepth(1).Warnw("error handling request", err, keysAndValues...)
|
|
w.WriteHeader(status)
|
|
_, _ = w.Write([]byte(err.Error()))
|
|
}
|
|
|
|
func boolValue(s string) bool {
|
|
return s == "1" || s == "true"
|
|
}
|
|
|
|
func IsValidDomain(domain string) bool {
|
|
domainRegexp := regexp.MustCompile(`^(?i)[a-z0-9-]+(\.[a-z0-9-]+)+\.?$`)
|
|
return domainRegexp.MatchString(domain)
|
|
}
|
|
|
|
func GetClientIP(r *http.Request) string {
|
|
// CF proxy typically is first thing the user reaches
|
|
if ip := r.Header.Get("CF-Connecting-IP"); ip != "" {
|
|
return ip
|
|
}
|
|
if ip := r.Header.Get("X-Forwarded-For"); ip != "" {
|
|
return ip
|
|
}
|
|
if ip := r.Header.Get("X-Real-IP"); ip != "" {
|
|
return ip
|
|
}
|
|
ip, _, _ := net.SplitHostPort(r.RemoteAddr)
|
|
return ip
|
|
}
|