summaryrefslogtreecommitdiffstats
path: root/web/web.go
diff options
context:
space:
mode:
Diffstat (limited to 'web/web.go')
-rw-r--r--web/web.go36
1 files changed, 24 insertions, 12 deletions
diff --git a/web/web.go b/web/web.go
index e70129221..221e1dc1c 100644
--- a/web/web.go
+++ b/web/web.go
@@ -5,6 +5,7 @@ package web
import (
"net/http"
+ "strconv"
"strings"
"github.com/NYTimes/gziphandler"
@@ -46,19 +47,28 @@ func staticHandler(handler http.Handler) http.Handler {
})
}
-var browsersNotSupported string = "MSIE/8;MSIE/9;MSIE/10;Internet Explorer/8;Internet Explorer/9;Internet Explorer/10;Safari/7;Safari/8"
+//map should be of minimum required browser version.
+//var browsersNotSupported string = "MSIE/11;Internet Explorer/11;Safari/9;Chrome/43;Edge/15;Firefox/52"
+//var browserMinimumSupported = [6]string{"MSIE/11", "Internet Explorer/11", "Safari/9", "Chrome/43", "Edge/15", "Firefox/52"}
+var browserMinimumSupported = map[string]int{
+ "MSIE": 11,
+ "Internet Explorer": 11,
+ "Safari": 9,
+ "Chrome": 43,
+ "Edge": 15,
+ "Firefox": 52,
+}
-func CheckBrowserCompatability(c *api.Context, r *http.Request) bool {
- ua := user_agent.New(r.UserAgent())
+func CheckBrowserCompatability(ua *user_agent.UserAgent) bool {
bname, bversion := ua.Browser()
- browsers := strings.Split(browsersNotSupported, ";")
- for _, browser := range browsers {
- version := strings.Split(browser, "/")
+ l4g.Debug("Detected Browser: %v %v", bname, bversion)
- if strings.HasPrefix(bname, version[0]) && strings.HasPrefix(bversion, version[1]) {
- return false
- }
+ curVersion := strings.Split(bversion, ".")
+ intCurVersion, _ := strconv.Atoi(curVersion[0])
+
+ if version, exist := browserMinimumSupported[bname]; exist && intCurVersion < version {
+ return false
}
return true
@@ -66,10 +76,12 @@ func CheckBrowserCompatability(c *api.Context, r *http.Request) bool {
}
func root(c *api.Context, w http.ResponseWriter, r *http.Request) {
- if !CheckBrowserCompatability(c, r) {
+ if !CheckBrowserCompatability(user_agent.New(r.UserAgent())) {
w.Header().Set("Cache-Control", "no-store")
- w.WriteHeader(http.StatusBadRequest)
- w.Write([]byte(c.T("web.check_browser_compatibility.app_error")))
+ page := utils.NewHTMLTemplate("unsupported_browser", c.Locale)
+ page.Props["Title"] = c.T("web.error.unsupported_browser.title")
+ page.Props["Message"] = c.T("web.error.unsupported_browser.message")
+ page.RenderToWriter(w)
return
}