فهرست منبع

add check for relayed node

abhishek9686 1 سال پیش
والد
کامیت
0404e94a3d
3فایلهای تغییر یافته به همراه28 افزوده شده و 52 حذف شده
  1. 10 11
      controllers/hosts.go
  2. 14 15
      models/mqtt.go
  3. 4 26
      pro/logic/nodes.go

+ 10 - 11
controllers/hosts.go

@@ -133,17 +133,16 @@ func pull(w http.ResponseWriter, r *http.Request) {
 
 	serverConf.TrafficKey = key
 	response := models.HostPull{
-		Host:              *host,
-		Nodes:             logic.GetHostNodes(host),
-		ServerConfig:      serverConf,
-		Peers:             hPU.Peers,
-		PeerIDs:           hPU.PeerIDs,
-		HostNetworkInfo:   hPU.HostNetworkInfo,
-		EgressRoutes:      hPU.EgressRoutes,
-		FwUpdate:          hPU.FwUpdate,
-		ChangeDefaultGw:   hPU.ChangeDefaultGw,
-		DefaultGwIp:       hPU.DefaultGwIp,
-		DefaultGwEndpoint: hPU.DefaultGwEndpoint,
+		Host:            *host,
+		Nodes:           logic.GetHostNodes(host),
+		ServerConfig:    serverConf,
+		Peers:           hPU.Peers,
+		PeerIDs:         hPU.PeerIDs,
+		HostNetworkInfo: hPU.HostNetworkInfo,
+		EgressRoutes:    hPU.EgressRoutes,
+		FwUpdate:        hPU.FwUpdate,
+		ChangeDefaultGw: hPU.ChangeDefaultGw,
+		DefaultGwIp:     hPU.DefaultGwIp,
 	}
 
 	logger.Log(1, hostID, "completed a pull")

+ 14 - 15
models/mqtt.go

@@ -8,21 +8,20 @@ import (
 
 // HostPeerUpdate - struct for host peer updates
 type HostPeerUpdate struct {
-	Host              Host                 `json:"host" bson:"host" yaml:"host"`
-	ChangeDefaultGw   bool                 `json:"change_default_gw"`
-	DefaultGwIp       net.IP               `json:"default_gw_ip"`
-	DefaultGwEndpoint net.IPNet            `json:"default_gw_endpoint"`
-	NodeAddrs         []net.IPNet          `json:"nodes_addrs" yaml:"nodes_addrs"`
-	Server            string               `json:"server" bson:"server" yaml:"server"`
-	ServerVersion     string               `json:"serverversion" bson:"serverversion" yaml:"serverversion"`
-	ServerAddrs       []ServerAddr         `json:"serveraddrs" bson:"serveraddrs" yaml:"serveraddrs"`
-	NodePeers         []wgtypes.PeerConfig `json:"peers" bson:"peers" yaml:"peers"`
-	Peers             []wgtypes.PeerConfig
-	PeerIDs           PeerMap               `json:"peerids" bson:"peerids" yaml:"peerids"`
-	HostNetworkInfo   HostInfoMap           `json:"host_network_info,omitempty" bson:"host_network_info,omitempty" yaml:"host_network_info,omitempty"`
-	EgressRoutes      []EgressNetworkRoutes `json:"egress_network_routes"`
-	FwUpdate          FwUpdate              `json:"fw_update"`
-	ReplacePeers      bool                  `json:"replace_peers"`
+	Host            Host                 `json:"host" bson:"host" yaml:"host"`
+	ChangeDefaultGw bool                 `json:"change_default_gw"`
+	DefaultGwIp     net.IP               `json:"default_gw_ip"`
+	NodeAddrs       []net.IPNet          `json:"nodes_addrs" yaml:"nodes_addrs"`
+	Server          string               `json:"server" bson:"server" yaml:"server"`
+	ServerVersion   string               `json:"serverversion" bson:"serverversion" yaml:"serverversion"`
+	ServerAddrs     []ServerAddr         `json:"serveraddrs" bson:"serveraddrs" yaml:"serveraddrs"`
+	NodePeers       []wgtypes.PeerConfig `json:"peers" bson:"peers" yaml:"peers"`
+	Peers           []wgtypes.PeerConfig
+	PeerIDs         PeerMap               `json:"peerids" bson:"peerids" yaml:"peerids"`
+	HostNetworkInfo HostInfoMap           `json:"host_network_info,omitempty" bson:"host_network_info,omitempty" yaml:"host_network_info,omitempty"`
+	EgressRoutes    []EgressNetworkRoutes `json:"egress_network_routes"`
+	FwUpdate        FwUpdate              `json:"fw_update"`
+	ReplacePeers    bool                  `json:"replace_peers"`
 }
 
 // IngressInfo - struct for ingress info

+ 4 - 26
pro/logic/nodes.go

@@ -29,6 +29,9 @@ func ValidateInetGwReq(inetNode models.Node, req models.InetNodeReq) error {
 		if clientNode.InternetGwID != "" && clientNode.InternetGwID != inetNode.ID.String() {
 			return fmt.Errorf("node %s is already using a internet gateway", clientHost.Name)
 		}
+		if clientNode.IsRelayed {
+			return fmt.Errorf("node %s is being relayed", clientHost.Name)
+		}
 
 		for _, nodeID := range clientHost.Nodes {
 			node, err := logic.GetNodeByID(nodeID)
@@ -79,21 +82,9 @@ func UnsetInternetGw(node *models.Node) {
 
 func SetDefaultGwForRelayedUpdate(relayed, relay models.Node, peerUpdate models.HostPeerUpdate) models.HostPeerUpdate {
 	if relay.InternetGwID != "" {
-		relayHost, err := logic.GetHost(relay.HostID.String())
-		if err != nil {
-			return peerUpdate
-		}
 		peerUpdate.ChangeDefaultGw = true
 		peerUpdate.DefaultGwIp = relay.Address.IP
-		mask := 32
-		if relayHost.EndpointIP.To4() == nil {
-			mask = 128
-		}
-		_, cidr, err := net.ParseCIDR(fmt.Sprintf("%s/%d", relayHost.EndpointIP.String(), mask))
-		if err != nil {
-			return peerUpdate
-		}
-		peerUpdate.DefaultGwEndpoint = *cidr
+
 	}
 	return peerUpdate
 }
@@ -105,21 +96,8 @@ func SetDefaultGw(node models.Node, peerUpdate models.HostPeerUpdate) models.Hos
 		if err != nil {
 			return peerUpdate
 		}
-		inetHost, err := logic.GetHost(inetNode.HostID.String())
-		if err != nil {
-			return peerUpdate
-		}
 		peerUpdate.ChangeDefaultGw = true
 		peerUpdate.DefaultGwIp = inetNode.Address.IP
-		mask := 32
-		if inetHost.EndpointIP.To4() == nil {
-			mask = 128
-		}
-		_, cidr, err := net.ParseCIDR(fmt.Sprintf("%s/%d", inetHost.EndpointIP.String(), mask))
-		if err != nil {
-			return peerUpdate
-		}
-		peerUpdate.DefaultGwEndpoint = *cidr
 
 	}
 	return peerUpdate