diff --git a/controllers/network.go b/controllers/network.go index 41b7e4a3..d350ec00 100644 --- a/controllers/network.go +++ b/controllers/network.go @@ -3,6 +3,7 @@ package controller import ( "encoding/json" "errors" + "fmt" "net/http" "strings" @@ -12,6 +13,7 @@ import ( "github.com/gravitl/netmaker/logic" "github.com/gravitl/netmaker/models" "github.com/gravitl/netmaker/servercfg" + "github.com/gravitl/netmaker/serverctl" ) // ALL_NETWORK_ACCESS - represents all networks @@ -44,7 +46,7 @@ func getNetworks(w http.ResponseWriter, r *http.Request) { return } allnetworks := []models.Network{} - err := errors.New("Networks Error") + var err error if networksSlice[0] == ALL_NETWORK_ACCESS { allnetworks, err = logic.GetNetworks() if err != nil && !database.IsEmptyRecord(err) { @@ -55,7 +57,9 @@ func getNetworks(w http.ResponseWriter, r *http.Request) { for _, network := range networksSlice { netObject, parentErr := logic.GetParentNetwork(network) if parentErr == nil { - allnetworks = append(allnetworks, netObject) + if netObject.IsComms != "yes" { + allnetworks = append(allnetworks, netObject) + } } } } @@ -76,6 +80,10 @@ func getNetwork(w http.ResponseWriter, r *http.Request) { w.Header().Set("Content-Type", "application/json") var params = mux.Vars(r) netname := params["networkname"] + if isCommsEdit(w, r, netname) { + return + } + network, err := logic.GetNetwork(netname) if err != nil { returnErrorResponse(w, r, formatError(err, "internal")) @@ -93,6 +101,10 @@ func keyUpdate(w http.ResponseWriter, r *http.Request) { w.Header().Set("Content-Type", "application/json") var params = mux.Vars(r) netname := params["networkname"] + if isCommsEdit(w, r, netname) { + return + } + network, err := logic.KeyUpdate(netname) if err != nil { returnErrorResponse(w, r, formatError(err, "internal")) @@ -118,6 +130,10 @@ func updateNetwork(w http.ResponseWriter, r *http.Request) { var params = mux.Vars(r) var network models.Network netname := params["networkname"] + if isCommsEdit(w, r, netname) { + return + } + network, err := logic.GetParentNetwork(netname) if err != nil { returnErrorResponse(w, r, formatError(err, "internal")) @@ -220,8 +236,11 @@ func deleteNetwork(w http.ResponseWriter, r *http.Request) { var params = mux.Vars(r) network := params["networkname"] - err := logic.DeleteNetwork(network) + if isCommsEdit(w, r, network) { + return + } + err := logic.DeleteNetwork(network) if err != nil { errtype := "badrequest" if strings.Contains(err.Error(), "Node check failed") { @@ -279,6 +298,9 @@ func createAccessKey(w http.ResponseWriter, r *http.Request) { var accesskey models.AccessKey //start here netname := params["networkname"] + if isCommsEdit(w, r, netname) { + return + } network, err := logic.GetParentNetwork(netname) if err != nil { returnErrorResponse(w, r, formatError(err, "internal")) @@ -331,3 +353,11 @@ func deleteAccessKey(w http.ResponseWriter, r *http.Request) { logger.Log(1, r.Header.Get("user"), "deleted access key", keyname, "on network,", netname) w.WriteHeader(http.StatusOK) } + +func isCommsEdit(w http.ResponseWriter, r *http.Request, netname string) bool { + if netname == serverctl.COMMS_NETID { + returnErrorResponse(w, r, formatError(fmt.Errorf("cannot access comms network"), "internal")) + return true + } + return false +}