mirror of
				https://github.com/gravitl/netmaker.git
				synced 2025-10-31 12:16:29 +08:00 
			
		
		
		
	refactored all grpc to be uniform
This commit is contained in:
		| @@ -4,7 +4,6 @@ import ( | ||||
| 	"context" | ||||
| 	"encoding/json" | ||||
| 	"errors" | ||||
| 	"strings" | ||||
|  | ||||
| 	nodepb "github.com/gravitl/netmaker/grpc" | ||||
| 	"github.com/gravitl/netmaker/logger" | ||||
| @@ -22,16 +21,14 @@ type NodeServiceServer struct { | ||||
| func (s *NodeServiceServer) ReadNode(ctx context.Context, req *nodepb.Object) (*nodepb.Object, error) { | ||||
| 	// convert string id (from proto) to mongoDB ObjectId | ||||
| 	var err error | ||||
| 	var node models.Node | ||||
| 	var macAndNetwork = make([]string, 2) | ||||
| 	if strings.Contains(req.Data, "###") { | ||||
| 		macAndNetwork = strings.Split(req.Data, "###") | ||||
| 		if len(macAndNetwork) != 2 { | ||||
| 			return nil, errors.New("could not read node, invalid node id given") | ||||
| 		} | ||||
| 	var reqNode models.Node | ||||
| 	err = json.Unmarshal([]byte(req.Data), &reqNode) | ||||
| 	if err != nil { | ||||
| 		return nil, err | ||||
| 	} | ||||
|  | ||||
| 	node, err = logic.GetNodeByIDorMacAddress(req.Data, macAndNetwork[0], macAndNetwork[1]) | ||||
| 	var node models.Node | ||||
| 	node, err = logic.GetNodeByIDorMacAddress(reqNode.ID, reqNode.MacAddress, reqNode.Network) | ||||
| 	if err != nil { | ||||
| 		return nil, err | ||||
| 	} | ||||
| @@ -138,16 +135,17 @@ func (s *NodeServiceServer) UpdateNode(ctx context.Context, req *nodepb.Object) | ||||
|  | ||||
| // NodeServiceServer.DeleteNode - deletes a node and responds over gRPC | ||||
| func (s *NodeServiceServer) DeleteNode(ctx context.Context, req *nodepb.Object) (*nodepb.Object, error) { | ||||
| 	nodeID := req.GetData() | ||||
| 	var nodeInfo = make([]string, 2) | ||||
| 	if strings.Contains(nodeID, "###") { | ||||
| 		nodeInfo = strings.Split(nodeID, "###") | ||||
| 		if len(nodeInfo) != 2 { | ||||
| 			return nil, errors.New("node not found") | ||||
| 		} | ||||
|  | ||||
| 	var reqNode models.Node | ||||
| 	if err := json.Unmarshal([]byte(req.GetData()), &reqNode); err != nil { | ||||
| 		return nil, err | ||||
| 	} | ||||
|  | ||||
| 	node, err := logic.GetNodeByIDorMacAddress(reqNode.ID, reqNode.MacAddress, reqNode.Network) | ||||
| 	if err != nil { | ||||
| 		return nil, err | ||||
| 	} | ||||
|  | ||||
| 	var node, err = logic.GetNodeByIDorMacAddress(nodeID, nodeInfo[0], nodeInfo[1]) | ||||
| 	err = logic.DeleteNodeByID(&node, true) | ||||
| 	if err != nil { | ||||
| 		return nil, err | ||||
| @@ -161,16 +159,13 @@ func (s *NodeServiceServer) DeleteNode(ctx context.Context, req *nodepb.Object) | ||||
|  | ||||
| // NodeServiceServer.GetPeers - fetches peers over gRPC | ||||
| func (s *NodeServiceServer) GetPeers(ctx context.Context, req *nodepb.Object) (*nodepb.Object, error) { | ||||
| 	nodeID := req.GetData() | ||||
| 	var nodeInfo = make([]string, 2) | ||||
| 	if strings.Contains(nodeID, "###") { | ||||
| 		nodeInfo = strings.Split(nodeID, "###") | ||||
| 		if len(nodeInfo) != 2 { | ||||
| 			return nil, errors.New("could not fetch peers, invalid node id") | ||||
| 		} | ||||
|  | ||||
| 	var reqNode models.Node | ||||
| 	if err := json.Unmarshal([]byte(req.GetData()), &reqNode); err != nil { | ||||
| 		return nil, err | ||||
| 	} | ||||
|  | ||||
| 	node, err := logic.GetNodeByIDorMacAddress(nodeID, nodeInfo[0], nodeInfo[1]) | ||||
| 	node, err := logic.GetNodeByIDorMacAddress(reqNode.ID, reqNode.MacAddress, reqNode.Network) | ||||
| 	if err != nil { | ||||
| 		return nil, err | ||||
| 	} | ||||
| @@ -200,20 +195,12 @@ func (s *NodeServiceServer) GetExtPeers(ctx context.Context, req *nodepb.Object) | ||||
| 	// Initiate a NodeItem type to write decoded data to | ||||
| 	//data := &models.PeersResponse{} | ||||
| 	// collection.Find returns a cursor for our (empty) query | ||||
| 	macAndNetwork := strings.Split(req.Data, "###") | ||||
| 	if len(macAndNetwork) != 2 { | ||||
| 		return nil, errors.New("did not receive valid node id when fetching ext peers") | ||||
| 	} | ||||
| 	nodeID := req.GetData() | ||||
| 	var nodeInfo = make([]string, 2) | ||||
| 	if strings.Contains(nodeID, "###") { | ||||
| 		nodeInfo = strings.Split(nodeID, "###") | ||||
| 		if len(nodeInfo) != 2 { | ||||
| 			return nil, errors.New("could not fetch peers, invalid node id") | ||||
| 		} | ||||
| 	var reqNode models.Node | ||||
| 	if err := json.Unmarshal([]byte(req.GetData()), &reqNode); err != nil { | ||||
| 		return nil, err | ||||
| 	} | ||||
|  | ||||
| 	node, err := logic.GetNodeByIDorMacAddress(nodeID, nodeInfo[0], nodeInfo[1]) | ||||
| 	node, err := logic.GetNodeByIDorMacAddress(reqNode.ID, reqNode.MacAddress, reqNode.Network) | ||||
| 	if err != nil { | ||||
| 		return nil, err | ||||
| 	} | ||||
|   | ||||
| @@ -71,7 +71,7 @@ func AutoLogin(client nodepb.NodeServiceClient, network string) error { | ||||
| 		return err | ||||
| 	} | ||||
| 	tokenstring := []byte(res.Data) | ||||
| 	err = os.WriteFile(home+"nettoken-"+network, tokenstring, 0644) | ||||
| 	err = os.WriteFile(home+"nettoken-"+network, tokenstring, 0644) // TODO: Proper permissions? | ||||
| 	if err != nil { | ||||
| 		return err | ||||
| 	} | ||||
|   | ||||
| @@ -186,9 +186,15 @@ func Pull(network string, manual bool) (*models.Node, error) { | ||||
| 			return nil, err | ||||
| 		} | ||||
|  | ||||
| 		data, err := json.Marshal(&node) | ||||
| 		if err != nil { | ||||
| 			ncutils.PrintLog("Failed to parse node config: "+err.Error(), 1) | ||||
| 			return nil, err | ||||
| 		} | ||||
|  | ||||
| 		req := &nodepb.Object{ | ||||
| 			Data: node.MacAddress + "###" + node.Network, | ||||
| 			Type: nodepb.STRING_TYPE, | ||||
| 			Data: string(data), | ||||
| 			Type: nodepb.NODE_TYPE, | ||||
| 		} | ||||
|  | ||||
| 		readres, err := wcclient.ReadNode(ctx, req, grpc.Header(&header)) | ||||
|   | ||||
| @@ -1,6 +1,7 @@ | ||||
| package functions | ||||
|  | ||||
| import ( | ||||
| 	"encoding/json" | ||||
| 	"errors" | ||||
| 	"fmt" | ||||
| 	"log" | ||||
| @@ -165,18 +166,21 @@ func LeaveNetwork(network string) error { | ||||
| 			log.Printf("Failed to authenticate: %v", err) | ||||
| 		} else { // handle client side | ||||
| 			var header metadata.MD | ||||
| 			_, err = wcclient.DeleteNode( | ||||
| 				ctx, | ||||
| 				&nodepb.Object{ | ||||
| 					Data: node.ID, | ||||
| 					Type: nodepb.STRING_TYPE, | ||||
| 				}, | ||||
| 				grpc.Header(&header), | ||||
| 			) | ||||
| 			if err != nil { | ||||
| 				ncutils.PrintLog("encountered error deleting node: "+err.Error(), 1) | ||||
| 			} else { | ||||
| 				ncutils.PrintLog("removed machine from "+node.Network+" network on remote server", 1) | ||||
| 			nodeData, err := json.Marshal(&node) | ||||
| 			if err == nil { | ||||
| 				_, err = wcclient.DeleteNode( | ||||
| 					ctx, | ||||
| 					&nodepb.Object{ | ||||
| 						Data: string(nodeData), | ||||
| 						Type: nodepb.NODE_TYPE, | ||||
| 					}, | ||||
| 					grpc.Header(&header), | ||||
| 				) | ||||
| 				if err != nil { | ||||
| 					ncutils.PrintLog("encountered error deleting node: "+err.Error(), 1) | ||||
| 				} else { | ||||
| 					ncutils.PrintLog("removed machine from "+node.Network+" network on remote server", 1) | ||||
| 				} | ||||
| 			} | ||||
| 		} | ||||
| 	} | ||||
|   | ||||
| @@ -98,9 +98,14 @@ func getPeers(network string) ([]Peer, error) { | ||||
| 	// Instantiate the BlogServiceClient with our client connection to the server | ||||
| 	wcclient = nodepb.NewNodeServiceClient(conn) | ||||
|  | ||||
| 	nodeData, err := json.Marshal(&nodecfg) | ||||
| 	if err != nil { | ||||
| 		return []Peer{}, fmt.Errorf("could not parse config node on network %s : %w", network, err) | ||||
| 	} | ||||
|  | ||||
| 	req := &nodepb.Object{ | ||||
| 		Data: nodecfg.MacAddress + "###" + nodecfg.Network, | ||||
| 		Type: nodepb.STRING_TYPE, | ||||
| 		Data: string(nodeData), | ||||
| 		Type: nodepb.NODE_TYPE, | ||||
| 	} | ||||
|  | ||||
| 	ctx, err := auth.SetJWT(wcclient, network) | ||||
|   | ||||
| @@ -101,9 +101,15 @@ func GetPeers(macaddress string, network string, server string, dualstack bool, | ||||
| 		// Instantiate the BlogServiceClient with our client connection to the server | ||||
| 		wcclient = nodepb.NewNodeServiceClient(conn) | ||||
|  | ||||
| 		nodeData, err := json.Marshal(&nodecfg) | ||||
| 		if err != nil { | ||||
| 			ncutils.PrintLog("could not parse node data from config during peer fetch for network "+network, 1) | ||||
| 			return peers, hasGateway, gateways, err | ||||
| 		} | ||||
|  | ||||
| 		req := &nodepb.Object{ | ||||
| 			Data: macaddress + "###" + network, | ||||
| 			Type: nodepb.STRING_TYPE, | ||||
| 			Data: string(nodeData), | ||||
| 			Type: nodepb.NODE_TYPE, | ||||
| 		} | ||||
|  | ||||
| 		ctx, err := auth.SetJWT(wcclient, network) | ||||
| @@ -274,9 +280,15 @@ func GetExtPeers(macaddress string, network string, server string, dualstack boo | ||||
| 		// Instantiate the BlogServiceClient with our client connection to the server | ||||
| 		wcclient = nodepb.NewNodeServiceClient(conn) | ||||
|  | ||||
| 		nodeData, err := json.Marshal(&nodecfg) | ||||
| 		if err != nil { | ||||
| 			ncutils.PrintLog("could not parse node data from config during peer fetch for network "+network, 1) | ||||
| 			return peers, err | ||||
| 		} | ||||
|  | ||||
| 		req := &nodepb.Object{ | ||||
| 			Data: macaddress + "###" + network, | ||||
| 			Type: nodepb.STRING_TYPE, | ||||
| 			Data: string(nodeData), | ||||
| 			Type: nodepb.NODE_TYPE, | ||||
| 		} | ||||
|  | ||||
| 		ctx, err := auth.SetJWT(wcclient, network) | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 0xdcarns
					0xdcarns