mirror of
https://github.com/gravitl/netmaker.git
synced 2025-02-28 18:13:00 +08:00
added legacy check to maintain compatibility
This commit is contained in:
parent
fe77f65b41
commit
2e470f2f6d
3 changed files with 34 additions and 41 deletions
|
@ -4,7 +4,6 @@ import (
|
|||
"context"
|
||||
"encoding/json"
|
||||
"errors"
|
||||
"log"
|
||||
|
||||
"github.com/gravitl/netmaker/database"
|
||||
"github.com/gravitl/netmaker/functions"
|
||||
|
@ -108,9 +107,8 @@ func grpcAuthorize(ctx context.Context) error {
|
|||
// Login - node authenticates using its password and retrieves a JWT for authorization.
|
||||
func (s *NodeServiceServer) Login(ctx context.Context, req *nodepb.Object) (*nodepb.Object, error) {
|
||||
|
||||
//out := new(LoginResponse)
|
||||
var reqNode models.Node
|
||||
if err := json.Unmarshal([]byte(req.Data), &reqNode); err != nil {
|
||||
var reqNode, err = getNewOrLegacyNode(req.Data)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
|
@ -119,11 +117,7 @@ func (s *NodeServiceServer) Login(ctx context.Context, req *nodepb.Object) (*nod
|
|||
password := reqNode.Password
|
||||
macaddress := reqNode.MacAddress
|
||||
|
||||
log.Printf("authing node: %v \n", reqNode)
|
||||
|
||||
var result models.NodeAuth
|
||||
var err error
|
||||
// err := errors.New("generic server error")
|
||||
|
||||
if nodeID == "" {
|
||||
//TODO: Set Error response
|
||||
|
@ -133,7 +127,7 @@ func (s *NodeServiceServer) Login(ctx context.Context, req *nodepb.Object) (*nod
|
|||
err = errors.New("missing password")
|
||||
return nil, err
|
||||
} else {
|
||||
//Search DB for node with Mac Address. Ignore pending nodes (they should not be able to authenticate with API until approved).
|
||||
//Search DB for node with ID. Ignore pending nodes (they should not be able to authenticate with API until approved).
|
||||
collection, err := database.FetchRecords(database.NODES_TABLE_NAME)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
|
|
|
@ -4,6 +4,7 @@ import (
|
|||
"context"
|
||||
"encoding/json"
|
||||
"errors"
|
||||
"strings"
|
||||
|
||||
nodepb "github.com/gravitl/netmaker/grpc"
|
||||
"github.com/gravitl/netmaker/logger"
|
||||
|
@ -19,16 +20,7 @@ type NodeServiceServer struct {
|
|||
|
||||
// NodeServiceServer.ReadNode - reads node and responds with gRPC
|
||||
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 reqNode models.Node
|
||||
err = json.Unmarshal([]byte(req.Data), &reqNode)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var node models.Node
|
||||
node, err = logic.GetNodeByIDorMacAddress(reqNode.ID, reqNode.MacAddress, reqNode.Network)
|
||||
var node, err = getNewOrLegacyNode(req.Data)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
@ -99,7 +91,7 @@ func (s *NodeServiceServer) CreateNode(ctx context.Context, req *nodepb.Object)
|
|||
|
||||
// NodeServiceServer.UpdateNode updates a node and responds over gRPC
|
||||
func (s *NodeServiceServer) UpdateNode(ctx context.Context, req *nodepb.Object) (*nodepb.Object, error) {
|
||||
// Get the node data from the request
|
||||
|
||||
var newnode models.Node
|
||||
if err := json.Unmarshal([]byte(req.GetData()), &newnode); err != nil {
|
||||
return nil, err
|
||||
|
@ -136,12 +128,7 @@ 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) {
|
||||
|
||||
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)
|
||||
var node, err = getNewOrLegacyNode(req.Data)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
@ -160,15 +147,11 @@ 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) {
|
||||
|
||||
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)
|
||||
var node, err = getNewOrLegacyNode(req.Data)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
if node.IsServer == "yes" && logic.IsLeader(&node) {
|
||||
logic.SetNetworkServerPeers(&node)
|
||||
}
|
||||
|
@ -192,15 +175,8 @@ func (s *NodeServiceServer) GetPeers(ctx context.Context, req *nodepb.Object) (*
|
|||
|
||||
// NodeServiceServer.GetExtPeers - returns ext peers for a gateway node
|
||||
func (s *NodeServiceServer) GetExtPeers(ctx context.Context, req *nodepb.Object) (*nodepb.Object, error) {
|
||||
// Initiate a NodeItem type to write decoded data to
|
||||
//data := &models.PeersResponse{}
|
||||
// collection.Find returns a cursor for our (empty) query
|
||||
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)
|
||||
var node, err = getNewOrLegacyNode(req.Data)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
@ -232,3 +208,27 @@ func (s *NodeServiceServer) GetExtPeers(ctx context.Context, req *nodepb.Object)
|
|||
Type: nodepb.EXT_PEER,
|
||||
}, nil
|
||||
}
|
||||
|
||||
// == private methods ==
|
||||
|
||||
func getNewOrLegacyNode(data string) (models.Node, error) {
|
||||
var reqNode, node models.Node
|
||||
var err error
|
||||
|
||||
if err = json.Unmarshal([]byte(data), &reqNode); err != nil {
|
||||
oldID := strings.Split(data, "###") // handle legacy client IDs
|
||||
if len(oldID) == 2 {
|
||||
if node, err = logic.GetNodeByIDorMacAddress(reqNode.ID, reqNode.MacAddress, reqNode.Network); err != nil {
|
||||
return models.Node{}, err
|
||||
}
|
||||
} else {
|
||||
return models.Node{}, err
|
||||
}
|
||||
} else {
|
||||
node, err = logic.GetNodeByIDorMacAddress(reqNode.ID, reqNode.MacAddress, reqNode.Network)
|
||||
if err != nil {
|
||||
return models.Node{}, err
|
||||
}
|
||||
}
|
||||
return node, nil
|
||||
}
|
||||
|
|
|
@ -127,7 +127,6 @@ func JoinNetwork(cfg config.ClientConfig, privateKey string) error {
|
|||
if cfg.Node.IsServer != "yes" {
|
||||
ncutils.Log("joining " + cfg.Network + " at " + cfg.Server.GRPCAddress)
|
||||
var wcclient nodepb.NodeServiceClient
|
||||
log.Printf("used: %v\n", postnode)
|
||||
|
||||
conn, err := grpc.Dial(cfg.Server.GRPCAddress,
|
||||
ncutils.GRPCRequestOpts(cfg.Server.GRPCSSL))
|
||||
|
|
Loading…
Reference in a new issue