1
0

handlers.go 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. package ganserv
  2. import (
  3. "encoding/json"
  4. "net/http"
  5. "imuslab.com/zoraxy/mod/utils"
  6. )
  7. func (m *NetworkManager) HandleAddNetwork(w http.ResponseWriter, r *http.Request) {
  8. networkName, err := utils.PostPara(r, "name")
  9. if err != nil {
  10. utils.SendErrorResponse(w, "invalid or empty name given")
  11. return
  12. }
  13. subnetMask, err := utils.PostPara(r, "subnetMask")
  14. if err != nil {
  15. utils.SendErrorResponse(w, "invalid or empty subnetMask given")
  16. return
  17. }
  18. // Generate a new UUID for this network
  19. networkUID := newNetworkID()
  20. // Create a new network object and add it to the list of networks
  21. newNetwork := &Network{
  22. UID: networkUID,
  23. Name: networkName,
  24. CIDR: subnetMask,
  25. Description: "",
  26. Nodes: []*Node{},
  27. }
  28. err = m.AddNetwork(newNetwork)
  29. if err != nil {
  30. utils.SendErrorResponse(w, err.Error())
  31. return
  32. }
  33. // Return the new network ID
  34. js, _ := json.Marshal(networkUID)
  35. utils.SendJSONResponse(w, string(js))
  36. }
  37. func (m *NetworkManager) HandleRemoveNetwork(w http.ResponseWriter, r *http.Request) {
  38. networkID, err := utils.PostPara(r, "id")
  39. if err != nil {
  40. utils.SendErrorResponse(w, "invalid or empty network id given")
  41. return
  42. }
  43. err = m.RemoveNetwork(networkID)
  44. if err != nil {
  45. utils.SendErrorResponse(w, err.Error())
  46. return
  47. }
  48. utils.SendOK(w)
  49. }
  50. func (m *NetworkManager) HandleListNetwork(w http.ResponseWriter, r *http.Request) {
  51. netid, _ := utils.GetPara(r, "netid")
  52. if netid != "" {
  53. targetNet, err := m.GetNetworkByID(netid)
  54. if err != nil {
  55. utils.SendErrorResponse(w, err.Error())
  56. return
  57. }
  58. js, _ := json.Marshal(targetNet)
  59. utils.SendJSONResponse(w, string(js))
  60. } else {
  61. // Return the list of networks as JSON
  62. js, _ := json.Marshal(m.networks)
  63. utils.SendJSONResponse(w, string(js))
  64. }
  65. }