handlers.go 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169
  1. package ganserv
  2. import (
  3. "encoding/json"
  4. "net/http"
  5. "regexp"
  6. "imuslab.com/zoraxy/mod/utils"
  7. )
  8. func (m *NetworkManager) HandleGetNodeID(w http.ResponseWriter, r *http.Request) {
  9. if m.ControllerID == "" {
  10. //Node id not exists. Check again
  11. instanceInfo, err := getControllerInfo(m.option.AuthToken, m.option.ApiPort)
  12. if err != nil {
  13. utils.SendErrorResponse(w, "unable to access node id information")
  14. return
  15. }
  16. m.ControllerID = instanceInfo.Address
  17. }
  18. js, _ := json.Marshal(m.ControllerID)
  19. utils.SendJSONResponse(w, string(js))
  20. }
  21. func (m *NetworkManager) HandleAddNetwork(w http.ResponseWriter, r *http.Request) {
  22. networkInfo, err := m.createNetwork()
  23. if err != nil {
  24. utils.SendErrorResponse(w, err.Error())
  25. return
  26. }
  27. //Network created. Assign it the standard network settings
  28. err = m.configureNetwork(networkInfo.Nwid, "192.168.192.1", "192.168.192.254", "192.168.192.0/24")
  29. if err != nil {
  30. utils.SendErrorResponse(w, err.Error())
  31. return
  32. }
  33. // Return the new network ID
  34. js, _ := json.Marshal(networkInfo.Nwid)
  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. if !m.networkExists(networkID) {
  44. utils.SendErrorResponse(w, "network id not exists")
  45. return
  46. }
  47. err = m.deleteNetwork(networkID)
  48. if err != nil {
  49. utils.SendErrorResponse(w, err.Error())
  50. }
  51. utils.SendOK(w)
  52. }
  53. func (m *NetworkManager) HandleListNetwork(w http.ResponseWriter, r *http.Request) {
  54. netid, _ := utils.GetPara(r, "netid")
  55. if netid != "" {
  56. targetNetInfo, err := m.getNetworkInfoById(netid)
  57. if err != nil {
  58. utils.SendErrorResponse(w, err.Error())
  59. return
  60. }
  61. js, _ := json.Marshal(targetNetInfo)
  62. utils.SendJSONResponse(w, string(js))
  63. } else {
  64. // Return the list of networks as JSON
  65. networkIds, err := m.listNetworkIds()
  66. if err != nil {
  67. utils.SendErrorResponse(w, err.Error())
  68. return
  69. }
  70. networkInfos := []*NetworkInfo{}
  71. for _, id := range networkIds {
  72. thisNetInfo, err := m.getNetworkInfoById(id)
  73. if err == nil {
  74. networkInfos = append(networkInfos, thisNetInfo)
  75. }
  76. }
  77. js, _ := json.Marshal(networkInfos)
  78. utils.SendJSONResponse(w, string(js))
  79. }
  80. }
  81. func (m *NetworkManager) HandleNetworkNaming(w http.ResponseWriter, r *http.Request) {
  82. netid, err := utils.PostPara(r, "netid")
  83. if err != nil {
  84. utils.SendErrorResponse(w, "network id not given")
  85. return
  86. }
  87. if !m.networkExists(netid) {
  88. utils.SendErrorResponse(w, "network not eixsts")
  89. }
  90. newName, _ := utils.PostPara(r, "name")
  91. newDesc, _ := utils.PostPara(r, "desc")
  92. if newName != "" && newDesc != "" {
  93. //Strip away html from name and desc
  94. re := regexp.MustCompile("<[^>]*>")
  95. newName := re.ReplaceAllString(newName, "")
  96. newDesc := re.ReplaceAllString(newDesc, "")
  97. //Set the new network name and desc
  98. err = m.setNetworkNameAndDescription(netid, newName, newDesc)
  99. if err != nil {
  100. utils.SendErrorResponse(w, err.Error())
  101. return
  102. }
  103. utils.SendOK(w)
  104. } else {
  105. //Get current name and description
  106. name, desc, err := m.getNetworkNameAndDescription(netid)
  107. if err != nil {
  108. utils.SendErrorResponse(w, err.Error())
  109. return
  110. }
  111. js, _ := json.Marshal([]string{name, desc})
  112. utils.SendJSONResponse(w, string(js))
  113. }
  114. }
  115. func (m *NetworkManager) HandleTest(w http.ResponseWriter, r *http.Request) {
  116. err := m.configureNetwork("e7dd1ce7bfd3b1f9", "192.168.192.1", "192.168.192.254", "192.168.192.0/24")
  117. if err != nil {
  118. utils.SendErrorResponse(w, err.Error())
  119. return
  120. }
  121. utils.SendOK(w)
  122. }
  123. func (m *NetworkManager) HandleMemberList(w http.ResponseWriter, r *http.Request) {
  124. netid, err := utils.GetPara(r, "netid")
  125. if err != nil {
  126. utils.SendErrorResponse(w, "netid is empty")
  127. return
  128. }
  129. details, _ := utils.GetPara(r, "detail")
  130. if details == "" {
  131. //Only show client ids
  132. memberIds, err := m.getNetworkMembers(netid)
  133. if err != nil {
  134. utils.SendErrorResponse(w, err.Error())
  135. return
  136. }
  137. js, _ := json.Marshal(memberIds)
  138. utils.SendJSONResponse(w, string(js))
  139. }
  140. }