relay.go 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. package controller
  2. import (
  3. "encoding/json"
  4. "net/http"
  5. "github.com/gorilla/mux"
  6. "github.com/gravitl/netmaker/logger"
  7. "github.com/gravitl/netmaker/logic"
  8. "github.com/gravitl/netmaker/models"
  9. )
  10. func createRelay(w http.ResponseWriter, r *http.Request) {
  11. var relay models.RelayRequest
  12. var params = mux.Vars(r)
  13. w.Header().Set("Content-Type", "application/json")
  14. err := json.NewDecoder(r.Body).Decode(&relay)
  15. if err != nil {
  16. returnErrorResponse(w, r, formatError(err, "internal"))
  17. return
  18. }
  19. relay.NetID = params["network"]
  20. relay.NodeID = params["nodeid"]
  21. node, err := logic.CreateRelay(relay)
  22. if err != nil {
  23. returnErrorResponse(w, r, formatError(err, "internal"))
  24. return
  25. }
  26. if err = runServerPeerUpdate(); err != nil {
  27. logger.Log(1, "internal error when creating relay on node:", relay.NodeID)
  28. }
  29. logger.Log(1, r.Header.Get("user"), "created relay on node", relay.NodeID, "on network", relay.NetID)
  30. w.WriteHeader(http.StatusOK)
  31. json.NewEncoder(w).Encode(node)
  32. }
  33. func deleteRelay(w http.ResponseWriter, r *http.Request) {
  34. w.Header().Set("Content-Type", "application/json")
  35. var params = mux.Vars(r)
  36. nodeid := params["nodeid"]
  37. netid := params["network"]
  38. node, err := logic.DeleteRelay(netid, nodeid)
  39. if err != nil {
  40. returnErrorResponse(w, r, formatError(err, "internal"))
  41. return
  42. }
  43. if err = runServerPeerUpdate(); err != nil {
  44. logger.Log(1, "internal error when deleting relay on node:", nodeid)
  45. }
  46. logger.Log(1, r.Header.Get("user"), "deleted egress gateway", nodeid, "on network", netid)
  47. w.WriteHeader(http.StatusOK)
  48. json.NewEncoder(w).Encode(node)
  49. }