123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169 |
- package ganserv
- import (
- "encoding/json"
- "net/http"
- "regexp"
- "imuslab.com/zoraxy/mod/utils"
- )
- func (m *NetworkManager) HandleGetNodeID(w http.ResponseWriter, r *http.Request) {
- if m.ControllerID == "" {
- //Node id not exists. Check again
- instanceInfo, err := getControllerInfo(m.option.AuthToken, m.option.ApiPort)
- if err != nil {
- utils.SendErrorResponse(w, "unable to access node id information")
- return
- }
- m.ControllerID = instanceInfo.Address
- }
- js, _ := json.Marshal(m.ControllerID)
- utils.SendJSONResponse(w, string(js))
- }
- func (m *NetworkManager) HandleAddNetwork(w http.ResponseWriter, r *http.Request) {
- networkInfo, err := m.createNetwork()
- if err != nil {
- utils.SendErrorResponse(w, err.Error())
- return
- }
- //Network created. Assign it the standard network settings
- err = m.configureNetwork(networkInfo.Nwid, "192.168.192.1", "192.168.192.254", "192.168.192.0/24")
- if err != nil {
- utils.SendErrorResponse(w, err.Error())
- return
- }
- // Return the new network ID
- js, _ := json.Marshal(networkInfo.Nwid)
- utils.SendJSONResponse(w, string(js))
- }
- func (m *NetworkManager) HandleRemoveNetwork(w http.ResponseWriter, r *http.Request) {
- networkID, err := utils.PostPara(r, "id")
- if err != nil {
- utils.SendErrorResponse(w, "invalid or empty network id given")
- return
- }
- if !m.networkExists(networkID) {
- utils.SendErrorResponse(w, "network id not exists")
- return
- }
- err = m.deleteNetwork(networkID)
- if err != nil {
- utils.SendErrorResponse(w, err.Error())
- }
- utils.SendOK(w)
- }
- func (m *NetworkManager) HandleListNetwork(w http.ResponseWriter, r *http.Request) {
- netid, _ := utils.GetPara(r, "netid")
- if netid != "" {
- targetNetInfo, err := m.getNetworkInfoById(netid)
- if err != nil {
- utils.SendErrorResponse(w, err.Error())
- return
- }
- js, _ := json.Marshal(targetNetInfo)
- utils.SendJSONResponse(w, string(js))
- } else {
- // Return the list of networks as JSON
- networkIds, err := m.listNetworkIds()
- if err != nil {
- utils.SendErrorResponse(w, err.Error())
- return
- }
- networkInfos := []*NetworkInfo{}
- for _, id := range networkIds {
- thisNetInfo, err := m.getNetworkInfoById(id)
- if err == nil {
- networkInfos = append(networkInfos, thisNetInfo)
- }
- }
- js, _ := json.Marshal(networkInfos)
- utils.SendJSONResponse(w, string(js))
- }
- }
- func (m *NetworkManager) HandleNetworkNaming(w http.ResponseWriter, r *http.Request) {
- netid, err := utils.PostPara(r, "netid")
- if err != nil {
- utils.SendErrorResponse(w, "network id not given")
- return
- }
- if !m.networkExists(netid) {
- utils.SendErrorResponse(w, "network not eixsts")
- }
- newName, _ := utils.PostPara(r, "name")
- newDesc, _ := utils.PostPara(r, "desc")
- if newName != "" && newDesc != "" {
- //Strip away html from name and desc
- re := regexp.MustCompile("<[^>]*>")
- newName := re.ReplaceAllString(newName, "")
- newDesc := re.ReplaceAllString(newDesc, "")
- //Set the new network name and desc
- err = m.setNetworkNameAndDescription(netid, newName, newDesc)
- if err != nil {
- utils.SendErrorResponse(w, err.Error())
- return
- }
- utils.SendOK(w)
- } else {
- //Get current name and description
- name, desc, err := m.getNetworkNameAndDescription(netid)
- if err != nil {
- utils.SendErrorResponse(w, err.Error())
- return
- }
- js, _ := json.Marshal([]string{name, desc})
- utils.SendJSONResponse(w, string(js))
- }
- }
- func (m *NetworkManager) HandleTest(w http.ResponseWriter, r *http.Request) {
- err := m.configureNetwork("e7dd1ce7bfd3b1f9", "192.168.192.1", "192.168.192.254", "192.168.192.0/24")
- if err != nil {
- utils.SendErrorResponse(w, err.Error())
- return
- }
- utils.SendOK(w)
- }
- func (m *NetworkManager) HandleMemberList(w http.ResponseWriter, r *http.Request) {
- netid, err := utils.GetPara(r, "netid")
- if err != nil {
- utils.SendErrorResponse(w, "netid is empty")
- return
- }
- details, _ := utils.GetPara(r, "detail")
- if details == "" {
- //Only show client ids
- memberIds, err := m.getNetworkMembers(netid)
- if err != nil {
- utils.SendErrorResponse(w, err.Error())
- return
- }
- js, _ := json.Marshal(memberIds)
- utils.SendJSONResponse(w, string(js))
- }
- }
|