diff options
author | Carlos Tadeu Panato Junior <ctadeu@gmail.com> | 2018-03-01 00:12:11 +0100 |
---|---|---|
committer | Joram Wilander <jwawilander@gmail.com> | 2018-02-28 23:12:11 +0000 |
commit | 6e024c45b50d31c20eb0d509263d3e0f888847de (patch) | |
tree | d5f2832be27e721b3669c4fc536e96c4187345bb /api4/system.go | |
parent | d2b70b8671bd267e4b955e3da2ee0670daba5f2c (diff) | |
download | chat-6e024c45b50d31c20eb0d509263d3e0f888847de.tar.gz chat-6e024c45b50d31c20eb0d509263d3e0f888847de.tar.bz2 chat-6e024c45b50d31c20eb0d509263d3e0f888847de.zip |
[PLT-8186] add support for ec2 instance profile authentication (#8243)
Diffstat (limited to 'api4/system.go')
-rw-r--r-- | api4/system.go | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/api4/system.go b/api4/system.go index 2355cb476..aab65bf20 100644 --- a/api4/system.go +++ b/api4/system.go @@ -29,6 +29,7 @@ func (api *API) InitSystem() { api.BaseRoutes.ApiRoot.Handle("/audits", api.ApiSessionRequired(getAudits)).Methods("GET") api.BaseRoutes.ApiRoot.Handle("/email/test", api.ApiSessionRequired(testEmail)).Methods("POST") + api.BaseRoutes.ApiRoot.Handle("/file/s3_test", api.ApiSessionRequired(testS3)).Methods("POST") api.BaseRoutes.ApiRoot.Handle("/database/recycle", api.ApiSessionRequired(databaseRecycle)).Methods("POST") api.BaseRoutes.ApiRoot.Handle("/caches/invalidate", api.ApiSessionRequired(invalidateCaches)).Methods("POST") @@ -384,3 +385,33 @@ func getAnalytics(c *Context, w http.ResponseWriter, r *http.Request) { w.Write([]byte(rows.ToJson())) } + +func testS3(c *Context, w http.ResponseWriter, r *http.Request) { + cfg := model.ConfigFromJson(r.Body) + if cfg == nil { + cfg = c.App.Config() + } + + if !c.App.SessionHasPermissionTo(c.Session, model.PERMISSION_MANAGE_SYSTEM) { + c.SetPermissionError(model.PERMISSION_MANAGE_SYSTEM) + return + } + + err := utils.CheckMandatoryS3Fields(&cfg.FileSettings) + if err != nil { + c.Err = err + return + } + + license := c.App.License() + backend, appErr := utils.NewFileBackend(&cfg.FileSettings, license != nil && *license.Features.Compliance) + if appErr == nil { + appErr = backend.TestConnection() + } + if appErr != nil { + c.Err = appErr + return + } + + ReturnStatusOK(w) +} |