summaryrefslogtreecommitdiffstats
path: root/api
diff options
context:
space:
mode:
authorChristopher Speller <crspeller@gmail.com>2016-04-01 11:48:19 -0400
committerChristopher Speller <crspeller@gmail.com>2016-04-01 11:51:17 -0400
commit7e9c7ce60a90f3628888f178c27642561643abaa (patch)
tree5f4ec04e9d7d62213d8daac7ddafe8e864a5feff /api
parent36f611fac48536f26770357de8d5b6767bd46d2f (diff)
downloadchat-7e9c7ce60a90f3628888f178c27642561643abaa.tar.gz
chat-7e9c7ce60a90f3628888f178c27642561643abaa.tar.bz2
chat-7e9c7ce60a90f3628888f178c27642561643abaa.zip
Visiting invalid URLs and bad APIs causes redirect to error page
Diffstat (limited to 'api')
-rw-r--r--api/api.go2
-rw-r--r--api/context.go36
2 files changed, 19 insertions, 19 deletions
diff --git a/api/api.go b/api/api.go
index 20f77e558..476047877 100644
--- a/api/api.go
+++ b/api/api.go
@@ -27,6 +27,8 @@ func InitApi() {
InitWebhook(r)
InitPreference(r)
InitLicense(r)
+ // 404 on any api route before web.go has a chance to serve it
+ Srv.Router.Handle("/api/{anything:.*}", http.HandlerFunc(Handle404))
utils.InitHTML()
}
diff --git a/api/context.go b/api/context.go
index eed035daf..0f7ba0fff 100644
--- a/api/context.go
+++ b/api/context.go
@@ -476,25 +476,23 @@ func IsPrivateIpAddress(ipAddress string) bool {
}
func RenderWebError(err *model.AppError, w http.ResponseWriter, r *http.Request) {
- T, locale := utils.GetTranslationsAndLocale(w, r)
- page := utils.NewHTMLTemplate("error", locale)
- page.Props["Message"] = err.Message
- page.Props["Details"] = err.DetailedError
-
- pathParts := strings.Split(r.URL.Path, "/")
- if len(pathParts) > 1 {
- page.Props["SiteURL"] = GetProtocol(r) + "://" + r.Host + "/" + pathParts[1]
- } else {
- page.Props["SiteURL"] = GetProtocol(r) + "://" + r.Host
- }
-
- page.Props["Title"] = T("api.templates.error.title", map[string]interface{}{"SiteName": utils.ClientCfg["SiteName"]})
- page.Props["Link"] = T("api.templates.error.link")
-
- w.WriteHeader(err.StatusCode)
- if rErr := page.RenderToWriter(w); rErr != nil {
- l4g.Error("Failed to create error page: " + rErr.Error() + ", Original error: " + err.Error())
- }
+ T, _ := utils.GetTranslationsAndLocale(w, r)
+
+ title := T("api.templates.error.title", map[string]interface{}{"SiteName": utils.ClientCfg["SiteName"]})
+ message := err.Message
+ details := err.DetailedError
+ link := "/"
+ linkMessage := T("api.templates.error.link")
+
+ http.Redirect(
+ w,
+ r,
+ "/error?title="+url.QueryEscape(title)+
+ "&message="+url.QueryEscape(message)+
+ "&details="+url.QueryEscape(details)+
+ "&link="+url.QueryEscape(link)+
+ "&linkmessage="+url.QueryEscape(linkMessage),
+ http.StatusTemporaryRedirect)
}
func Handle404(w http.ResponseWriter, r *http.Request) {