elasticsearch.go 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. // Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
  2. // See LICENSE.txt for license information.
  3. package api4
  4. import (
  5. "net/http"
  6. "github.com/mattermost/mattermost-server/v5/audit"
  7. "github.com/mattermost/mattermost-server/v5/model"
  8. )
  9. func (api *API) InitElasticsearch() {
  10. api.BaseRoutes.Elasticsearch.Handle("/test", api.ApiSessionRequired(testElasticsearch)).Methods("POST")
  11. api.BaseRoutes.Elasticsearch.Handle("/purge_indexes", api.ApiSessionRequired(purgeElasticsearchIndexes)).Methods("POST")
  12. }
  13. func testElasticsearch(c *Context, w http.ResponseWriter, r *http.Request) {
  14. cfg := model.ConfigFromJson(r.Body)
  15. if cfg == nil {
  16. cfg = c.App.Config()
  17. }
  18. if !c.App.SessionHasPermissionTo(*c.App.Session(), model.PERMISSION_MANAGE_SYSTEM) {
  19. c.SetPermissionError(model.PERMISSION_MANAGE_SYSTEM)
  20. return
  21. }
  22. if *c.App.Config().ExperimentalSettings.RestrictSystemAdmin {
  23. c.Err = model.NewAppError("testElasticsearch", "api.restricted_system_admin", nil, "", http.StatusForbidden)
  24. return
  25. }
  26. if err := c.App.TestElasticsearch(cfg); err != nil {
  27. c.Err = err
  28. return
  29. }
  30. ReturnStatusOK(w)
  31. }
  32. func purgeElasticsearchIndexes(c *Context, w http.ResponseWriter, r *http.Request) {
  33. auditRec := c.MakeAuditRecord("purgeElasticsearchIndexes", audit.Fail)
  34. defer c.LogAuditRec(auditRec)
  35. if !c.App.SessionHasPermissionTo(*c.App.Session(), model.PERMISSION_MANAGE_SYSTEM) {
  36. c.SetPermissionError(model.PERMISSION_MANAGE_SYSTEM)
  37. return
  38. }
  39. if *c.App.Config().ExperimentalSettings.RestrictSystemAdmin {
  40. c.Err = model.NewAppError("purgeElasticsearchIndexes", "api.restricted_system_admin", nil, "", http.StatusForbidden)
  41. return
  42. }
  43. if err := c.App.PurgeElasticsearchIndexes(); err != nil {
  44. c.Err = err
  45. return
  46. }
  47. auditRec.Success()
  48. ReturnStatusOK(w)
  49. }