package main import ( "crypto/md5" "fmt" "io" "log" "net" "net/http" "strings" ) // Hashs and returns a string (md5) func Md5Hash(content string) string { h := md5.New() io.WriteString(h, content) hash := fmt.Sprintf("%x", h.Sum(nil)) return hash } // Checks for equality in strings and returns true all are equal func CompareStrings(strs ...string) bool { for k, _ := range strs { if k < len(strs)-1 { if strs[k] != strs[k+1] { return false } } } return true } func GetLanguage(r *http.Request) string { c, err := r.Cookie("lang") if err != nil { log.Println("Info: Cookie: lang", err) } else { if c.Value != "" { if c.Value == "de" { return c.Value } else { return "" } } } if len(r.Header["Accept-Language"]) == 0 { return "" } lang := r.Header["Accept-Language"][0] l := strings.TrimSpace(strings.Split(lang, ",")[0]) if l == "de" { return l } return "" } func GetIP(r *http.Request) string { if len(r.Header["X-Forwarded-For"]) > 0 { return r.Header["X-Forwarded-For"][0] } if len(r.Header["X-Real-Ip"]) > 0 { return r.Header["X-Real-Ip"][0] } if r.RemoteAddr != "" { ip, _, err := net.SplitHostPort(r.RemoteAddr) if err != nil { log.Println("Info: ", err) return "0.0.0.0" } return ip } log.Println("Info: No remote IP detectable.") return "0.0.0.0" }