mirror of
https://github.com/gravitl/netmaker.git
synced 2025-10-04 16:33:49 +08:00
feat(NET-709): add node metadata for remote gws
This commit is contained in:
@@ -635,6 +635,10 @@ func updateNode(w http.ResponseWriter, r *http.Request) {
|
|||||||
logic.ReturnErrorResponse(w, r, logic.FormatError(err, "badrequest"))
|
logic.ReturnErrorResponse(w, r, logic.FormatError(err, "badrequest"))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
if len(newData.Metadata) > 255 {
|
||||||
|
logic.ReturnErrorResponse(w, r, logic.FormatError(fmt.Errorf("metadata cannot be longer than 255 characters"), "badrequest"))
|
||||||
|
return
|
||||||
|
}
|
||||||
newNode := newData.ConvertToServerNode(¤tNode)
|
newNode := newData.ConvertToServerNode(¤tNode)
|
||||||
relayUpdate := logic.RelayUpdates(¤tNode, newNode)
|
relayUpdate := logic.RelayUpdates(¤tNode, newNode)
|
||||||
_, err = logic.GetHost(newNode.HostID.String())
|
_, err = logic.GetHost(newNode.HostID.String())
|
||||||
|
@@ -174,6 +174,9 @@ func CreateIngressGateway(netid string, nodeid string, ingress models.IngressReq
|
|||||||
node.IngressGatewayRange6 = network.AddressRange6
|
node.IngressGatewayRange6 = network.AddressRange6
|
||||||
node.IngressDNS = ingress.ExtclientDNS
|
node.IngressDNS = ingress.ExtclientDNS
|
||||||
node.SetLastModified()
|
node.SetLastModified()
|
||||||
|
if node.Metadata == "" {
|
||||||
|
node.Metadata = "This host can be used for remote access"
|
||||||
|
}
|
||||||
err = UpsertNode(&node)
|
err = UpsertNode(&node)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return models.Node{}, err
|
return models.Node{}, err
|
||||||
@@ -224,6 +227,7 @@ func DeleteIngressGateway(nodeid string) (models.Node, []models.ExtClient, error
|
|||||||
node.IsIngressGateway = false
|
node.IsIngressGateway = false
|
||||||
node.IsInternetGateway = false
|
node.IsInternetGateway = false
|
||||||
node.IngressGatewayRange = ""
|
node.IngressGatewayRange = ""
|
||||||
|
node.Metadata = ""
|
||||||
err = UpsertNode(&node)
|
err = UpsertNode(&node)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return models.Node{}, removedClients, err
|
return models.Node{}, removedClients, err
|
||||||
|
@@ -11,9 +11,9 @@ import (
|
|||||||
type ApiNode struct {
|
type ApiNode struct {
|
||||||
ID string `json:"id,omitempty" validate:"required,min=5,id_unique"`
|
ID string `json:"id,omitempty" validate:"required,min=5,id_unique"`
|
||||||
HostID string `json:"hostid,omitempty" validate:"required,min=5,id_unique"`
|
HostID string `json:"hostid,omitempty" validate:"required,min=5,id_unique"`
|
||||||
Address string `json:"address" validate:"omitempty,ipv4"`
|
Address string `json:"address" validate:"omitempty,cidrv4"`
|
||||||
Address6 string `json:"address6" validate:"omitempty,ipv6"`
|
Address6 string `json:"address6" validate:"omitempty,cidrv6"`
|
||||||
LocalAddress string `json:"localaddress" validate:"omitempty,ipv4"`
|
LocalAddress string `json:"localaddress" validate:"omitempty,cidr"`
|
||||||
AllowedIPs []string `json:"allowedips"`
|
AllowedIPs []string `json:"allowedips"`
|
||||||
LastModified int64 `json:"lastmodified"`
|
LastModified int64 `json:"lastmodified"`
|
||||||
ExpirationDateTime int64 `json:"expdatetime"`
|
ExpirationDateTime int64 `json:"expdatetime"`
|
||||||
@@ -37,6 +37,7 @@ type ApiNode struct {
|
|||||||
InternetGateway string `json:"internetgateway"`
|
InternetGateway string `json:"internetgateway"`
|
||||||
Connected bool `json:"connected"`
|
Connected bool `json:"connected"`
|
||||||
PendingDelete bool `json:"pendingdelete"`
|
PendingDelete bool `json:"pendingdelete"`
|
||||||
|
Metadata string `json:"metadata" validate:"max=256"`
|
||||||
// == PRO ==
|
// == PRO ==
|
||||||
DefaultACL string `json:"defaultacl,omitempty" validate:"checkyesornoorunset"`
|
DefaultACL string `json:"defaultacl,omitempty" validate:"checkyesornoorunset"`
|
||||||
IsFailOver bool `json:"is_fail_over"`
|
IsFailOver bool `json:"is_fail_over"`
|
||||||
@@ -104,6 +105,7 @@ func (a *ApiNode) ConvertToServerNode(currentNode *Node) *Node {
|
|||||||
convertedNode.LastCheckIn = time.Unix(a.LastCheckIn, 0)
|
convertedNode.LastCheckIn = time.Unix(a.LastCheckIn, 0)
|
||||||
convertedNode.LastPeerUpdate = time.Unix(a.LastPeerUpdate, 0)
|
convertedNode.LastPeerUpdate = time.Unix(a.LastPeerUpdate, 0)
|
||||||
convertedNode.ExpirationDateTime = time.Unix(a.ExpirationDateTime, 0)
|
convertedNode.ExpirationDateTime = time.Unix(a.ExpirationDateTime, 0)
|
||||||
|
convertedNode.Metadata = a.Metadata
|
||||||
return &convertedNode
|
return &convertedNode
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -158,6 +160,7 @@ func (nm *Node) ConvertToAPINode() *ApiNode {
|
|||||||
apiNode.IsFailOver = nm.IsFailOver
|
apiNode.IsFailOver = nm.IsFailOver
|
||||||
apiNode.FailOverPeers = nm.FailOverPeers
|
apiNode.FailOverPeers = nm.FailOverPeers
|
||||||
apiNode.FailedOverBy = nm.FailedOverBy
|
apiNode.FailedOverBy = nm.FailedOverBy
|
||||||
|
apiNode.Metadata = nm.Metadata
|
||||||
return &apiNode
|
return &apiNode
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -87,6 +87,7 @@ type Node struct {
|
|||||||
EgressGatewayRequest EgressGatewayRequest `json:"egressgatewayrequest" bson:"egressgatewayrequest" yaml:"egressgatewayrequest"`
|
EgressGatewayRequest EgressGatewayRequest `json:"egressgatewayrequest" bson:"egressgatewayrequest" yaml:"egressgatewayrequest"`
|
||||||
IngressGatewayRange string `json:"ingressgatewayrange" bson:"ingressgatewayrange" yaml:"ingressgatewayrange"`
|
IngressGatewayRange string `json:"ingressgatewayrange" bson:"ingressgatewayrange" yaml:"ingressgatewayrange"`
|
||||||
IngressGatewayRange6 string `json:"ingressgatewayrange6" bson:"ingressgatewayrange6" yaml:"ingressgatewayrange6"`
|
IngressGatewayRange6 string `json:"ingressgatewayrange6" bson:"ingressgatewayrange6" yaml:"ingressgatewayrange6"`
|
||||||
|
Metadata string `json:"metadata"`
|
||||||
// == PRO ==
|
// == PRO ==
|
||||||
DefaultACL string `json:"defaultacl,omitempty" bson:"defaultacl,omitempty" yaml:"defaultacl,omitempty" validate:"checkyesornoorunset"`
|
DefaultACL string `json:"defaultacl,omitempty" bson:"defaultacl,omitempty" yaml:"defaultacl,omitempty" validate:"checkyesornoorunset"`
|
||||||
OwnerID string `json:"ownerid,omitempty" bson:"ownerid,omitempty" yaml:"ownerid,omitempty"`
|
OwnerID string `json:"ownerid,omitempty" bson:"ownerid,omitempty" yaml:"ownerid,omitempty"`
|
||||||
|
@@ -71,6 +71,7 @@ type UserRemoteGws struct {
|
|||||||
IsInternetGateway bool `json:"is_internet_gateway"`
|
IsInternetGateway bool `json:"is_internet_gateway"`
|
||||||
GwClient ExtClient `json:"gw_client"`
|
GwClient ExtClient `json:"gw_client"`
|
||||||
GwPeerPublicKey string `json:"gw_peer_public_key"`
|
GwPeerPublicKey string `json:"gw_peer_public_key"`
|
||||||
|
Metadata string `json:"metadata"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// UserRemoteGwsReq - struct to hold user remote acccess gws req
|
// UserRemoteGwsReq - struct to hold user remote acccess gws req
|
||||||
|
@@ -212,6 +212,7 @@ func getUserRemoteAccessGws(w http.ResponseWriter, r *http.Request) {
|
|||||||
Connected: true,
|
Connected: true,
|
||||||
IsInternetGateway: node.IsInternetGateway,
|
IsInternetGateway: node.IsInternetGateway,
|
||||||
GwPeerPublicKey: host.PublicKey.String(),
|
GwPeerPublicKey: host.PublicKey.String(),
|
||||||
|
Metadata: node.Metadata,
|
||||||
})
|
})
|
||||||
userGws[node.Network] = gws
|
userGws[node.Network] = gws
|
||||||
delete(user.RemoteGwIDs, node.ID.String())
|
delete(user.RemoteGwIDs, node.ID.String())
|
||||||
@@ -226,6 +227,7 @@ func getUserRemoteAccessGws(w http.ResponseWriter, r *http.Request) {
|
|||||||
Connected: true,
|
Connected: true,
|
||||||
IsInternetGateway: node.IsInternetGateway,
|
IsInternetGateway: node.IsInternetGateway,
|
||||||
GwPeerPublicKey: host.PublicKey.String(),
|
GwPeerPublicKey: host.PublicKey.String(),
|
||||||
|
Metadata: node.Metadata,
|
||||||
})
|
})
|
||||||
userGws[node.Network] = gws
|
userGws[node.Network] = gws
|
||||||
processedAdminNodeIds[node.ID.String()] = struct{}{}
|
processedAdminNodeIds[node.ID.String()] = struct{}{}
|
||||||
@@ -258,6 +260,7 @@ func getUserRemoteAccessGws(w http.ResponseWriter, r *http.Request) {
|
|||||||
Network: node.Network,
|
Network: node.Network,
|
||||||
IsInternetGateway: node.IsInternetGateway,
|
IsInternetGateway: node.IsInternetGateway,
|
||||||
GwPeerPublicKey: host.PublicKey.String(),
|
GwPeerPublicKey: host.PublicKey.String(),
|
||||||
|
Metadata: node.Metadata,
|
||||||
})
|
})
|
||||||
userGws[node.Network] = gws
|
userGws[node.Network] = gws
|
||||||
}
|
}
|
||||||
@@ -284,6 +287,7 @@ func getUserRemoteAccessGws(w http.ResponseWriter, r *http.Request) {
|
|||||||
Network: node.Network,
|
Network: node.Network,
|
||||||
IsInternetGateway: node.IsInternetGateway,
|
IsInternetGateway: node.IsInternetGateway,
|
||||||
GwPeerPublicKey: host.PublicKey.String(),
|
GwPeerPublicKey: host.PublicKey.String(),
|
||||||
|
Metadata: node.Metadata,
|
||||||
})
|
})
|
||||||
userGws[node.Network] = gws
|
userGws[node.Network] = gws
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user