From b57b5abce814cfcdf3889d4e267492e809245593 Mon Sep 17 00:00:00 2001 From: Carlos Tadeu Panato Junior Date: Fri, 21 Apr 2017 11:16:35 +0200 Subject: implement POST /logs for apiV4 (#6143) --- api4/system.go | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) (limited to 'api4/system.go') diff --git a/api4/system.go b/api4/system.go index dfc702c8c..55be559bf 100644 --- a/api4/system.go +++ b/api4/system.go @@ -29,6 +29,7 @@ func InitSystem() { BaseRoutes.ApiRoot.Handle("/caches/invalidate", ApiSessionRequired(invalidateCaches)).Methods("POST") BaseRoutes.ApiRoot.Handle("/logs", ApiSessionRequired(getLogs)).Methods("GET") + BaseRoutes.ApiRoot.Handle("/logs", ApiSessionRequired(postLog)).Methods("POST") } func getSystemPing(c *Context, w http.ResponseWriter, r *http.Request) { @@ -160,6 +161,34 @@ func getLogs(c *Context, w http.ResponseWriter, r *http.Request) { w.Write([]byte(model.ArrayToJson(lines))) } +func postLog(c *Context, w http.ResponseWriter, r *http.Request) { + if !*utils.Cfg.ServiceSettings.EnableDeveloper && !app.SessionHasPermissionTo(c.Session, model.PERMISSION_MANAGE_SYSTEM) { + c.SetPermissionError(model.PERMISSION_MANAGE_SYSTEM) + return + } + + m := model.MapFromJson(r.Body) + lvl := m["level"] + msg := m["message"] + + if len(msg) > 400 { + msg = msg[0:399] + } + + if lvl == "ERROR" { + err := &model.AppError{} + err.Message = msg + err.Id = msg + err.Where = "client" + c.LogError(err) + } else { + l4g.Debug(msg) + } + + m["message"] = msg + w.Write([]byte(model.MapToJson(m))) +} + func getClientConfig(c *Context, w http.ResponseWriter, r *http.Request) { format := r.URL.Query().Get("format") -- cgit v1.2.3-1-g7c22