summaryrefslogtreecommitdiffstats
path: root/api4/system.go
diff options
context:
space:
mode:
authorCarlos Tadeu Panato Junior <ctadeu@gmail.com>2017-04-21 11:16:35 +0200
committerGeorge Goldberg <george@gberg.me>2017-04-21 10:16:35 +0100
commitb57b5abce814cfcdf3889d4e267492e809245593 (patch)
tree6cd8d56eb272c0ba7cc8b7698c8112fc14b22271 /api4/system.go
parent08822def53059550e168bef93fbdc0bd7d53e741 (diff)
downloadchat-b57b5abce814cfcdf3889d4e267492e809245593.tar.gz
chat-b57b5abce814cfcdf3889d4e267492e809245593.tar.bz2
chat-b57b5abce814cfcdf3889d4e267492e809245593.zip
implement POST /logs for apiV4 (#6143)
Diffstat (limited to 'api4/system.go')
-rw-r--r--api4/system.go29
1 files changed, 29 insertions, 0 deletions
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")