server.go 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. package controller
  2. import (
  3. "encoding/json"
  4. "net/http"
  5. "strings"
  6. "github.com/gorilla/mux"
  7. "github.com/gravitl/netmaker/logic"
  8. "github.com/gravitl/netmaker/models"
  9. "github.com/gravitl/netmaker/servercfg"
  10. )
  11. func serverHandlers(r *mux.Router) {
  12. // r.HandleFunc("/api/server/addnetwork/{network}", securityCheckServer(true, http.HandlerFunc(addNetwork))).Methods("POST")
  13. r.HandleFunc("/api/server/health", http.HandlerFunc(func(resp http.ResponseWriter, req *http.Request) {
  14. resp.WriteHeader(http.StatusOK)
  15. resp.Write([]byte("Server is up and running!!"))
  16. }))
  17. r.HandleFunc("/api/server/getconfig", allowUsers(http.HandlerFunc(getConfig))).Methods("GET")
  18. r.HandleFunc("/api/server/getserverinfo", authorize(true, false, "node", http.HandlerFunc(getServerInfo))).Methods("GET")
  19. }
  20. // allowUsers - allow all authenticated (valid) users - only used by getConfig, may be able to remove during refactor
  21. func allowUsers(next http.Handler) http.HandlerFunc {
  22. return func(w http.ResponseWriter, r *http.Request) {
  23. var errorResponse = models.ErrorResponse{
  24. Code: http.StatusInternalServerError, Message: logic.Unauthorized_Msg,
  25. }
  26. bearerToken := r.Header.Get("Authorization")
  27. var tokenSplit = strings.Split(bearerToken, " ")
  28. var authToken = ""
  29. if len(tokenSplit) < 2 {
  30. logic.ReturnErrorResponse(w, r, errorResponse)
  31. return
  32. } else {
  33. authToken = tokenSplit[1]
  34. }
  35. user, _, _, err := logic.VerifyUserToken(authToken)
  36. if err != nil || user == "" {
  37. logic.ReturnErrorResponse(w, r, errorResponse)
  38. return
  39. }
  40. next.ServeHTTP(w, r)
  41. }
  42. }
  43. // swagger:route GET /api/server/getserverinfo server getServerInfo
  44. //
  45. // Get the server configuration.
  46. //
  47. // Schemes: https
  48. //
  49. // Security:
  50. // oauth
  51. //
  52. // Responses:
  53. // 200: serverConfigResponse
  54. func getServerInfo(w http.ResponseWriter, r *http.Request) {
  55. // Set header
  56. w.Header().Set("Content-Type", "application/json")
  57. // get params
  58. json.NewEncoder(w).Encode(servercfg.GetServerInfo())
  59. //w.WriteHeader(http.StatusOK)
  60. }
  61. // swagger:route GET /api/server/getconfig server getConfig
  62. //
  63. // Get the server configuration.
  64. //
  65. // Schemes: https
  66. //
  67. // Security:
  68. // oauth
  69. //
  70. // Responses:
  71. // 200: serverConfigResponse
  72. func getConfig(w http.ResponseWriter, r *http.Request) {
  73. // Set header
  74. w.Header().Set("Content-Type", "application/json")
  75. // get params
  76. scfg := servercfg.GetServerConfig()
  77. scfg.IsEE = "no"
  78. if servercfg.Is_EE {
  79. scfg.IsEE = "yes"
  80. }
  81. json.NewEncoder(w).Encode(scfg)
  82. //w.WriteHeader(http.StatusOK)
  83. }