mirror of
https://github.com/gravitl/netmaker.git
synced 2025-02-25 08:34:47 +08:00
gateway now appears to be fully functional
This commit is contained in:
parent
62ace03f5e
commit
c6714bcb8e
2 changed files with 31 additions and 7 deletions
|
@ -3,6 +3,7 @@ package controller
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"strconv"
|
||||||
nodepb "github.com/gravitl/netmaker/grpc"
|
nodepb "github.com/gravitl/netmaker/grpc"
|
||||||
"github.com/gravitl/netmaker/models"
|
"github.com/gravitl/netmaker/models"
|
||||||
"github.com/gravitl/netmaker/functions"
|
"github.com/gravitl/netmaker/functions"
|
||||||
|
@ -91,7 +92,16 @@ func (s *NodeServiceServer) CreateNode(ctx context.Context, req *nodepb.CreateNo
|
||||||
//Check to see if key is valid
|
//Check to see if key is valid
|
||||||
//TODO: Triple inefficient!!! This is the third call to the DB we make for networks
|
//TODO: Triple inefficient!!! This is the third call to the DB we make for networks
|
||||||
validKey := functions.IsKeyValid(node.Network, node.AccessKey)
|
validKey := functions.IsKeyValid(node.Network, node.AccessKey)
|
||||||
network, _ := functions.GetParentNetwork(node.Network)
|
network, err := functions.GetParentNetwork(node.Network)
|
||||||
|
if err != nil {
|
||||||
|
return nil, status.Errorf(codes.NotFound, fmt.Sprintf("Could not find network: %v", err))
|
||||||
|
} else {
|
||||||
|
fmt.Println("Creating node in network " + network.NetID)
|
||||||
|
fmt.Println("Network is local? " + strconv.FormatBool(*network.IsLocal))
|
||||||
|
fmt.Println("Range if local: " + network.LocalRange)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
if !validKey {
|
if !validKey {
|
||||||
//Check to see if network will allow manual sign up
|
//Check to see if network will allow manual sign up
|
||||||
|
|
|
@ -255,16 +255,21 @@ func Install(accesskey string, password string, server string, network string, n
|
||||||
if nodecfg.Endpoint == "" {
|
if nodecfg.Endpoint == "" {
|
||||||
if islocal && localaddress != "" {
|
if islocal && localaddress != "" {
|
||||||
endpoint = localaddress
|
endpoint = localaddress
|
||||||
|
fmt.Println("Endpoint is local. Setting to address: " + endpoint)
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
endpoint, err = getPublicIP()
|
endpoint, err = getPublicIP()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
fmt.Println("Error setting endpoint.")
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
fmt.Println("Endpoint is public. Setting to address: " + endpoint)
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
endpoint = nodecfg.Endpoint
|
endpoint = nodecfg.Endpoint
|
||||||
|
fmt.Println("Endpoint set in config. Setting to address: " + endpoint)
|
||||||
}
|
}
|
||||||
fmt.Println(" Public Endpoint: " + endpoint)
|
fmt.Println(" Endpoint: " + endpoint)
|
||||||
|
|
||||||
|
|
||||||
if nodecfg.Name != "" {
|
if nodecfg.Name != "" {
|
||||||
|
@ -414,6 +419,7 @@ func Install(accesskey string, password string, server string, network string, n
|
||||||
fmt.Println(" Local Range: " + node.Localrange)
|
fmt.Println(" Local Range: " + node.Localrange)
|
||||||
|
|
||||||
if !islocal && node.Islocal && node.Localrange != "" {
|
if !islocal && node.Islocal && node.Localrange != "" {
|
||||||
|
fmt.Println("Resetting local settings for local network.")
|
||||||
node.Localaddress, err = getLocalIP(node.Localrange)
|
node.Localaddress, err = getLocalIP(node.Localrange)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
|
@ -948,7 +954,7 @@ func CheckIn(network string) error {
|
||||||
|
|
||||||
if !nodecfg.RoamingOff {
|
if !nodecfg.RoamingOff {
|
||||||
if !nodecfg.IsLocal {
|
if !nodecfg.IsLocal {
|
||||||
fmt.Println("Checking to see if addresses have changed")
|
fmt.Println("Checking to see if public addresses have changed")
|
||||||
extIP, err := getPublicIP()
|
extIP, err := getPublicIP()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
fmt.Printf("Error encountered checking ip addresses: %v", err)
|
fmt.Printf("Error encountered checking ip addresses: %v", err)
|
||||||
|
@ -978,7 +984,7 @@ func CheckIn(network string) error {
|
||||||
ipchange = true
|
ipchange = true
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
fmt.Println("Checking to see if address has changed")
|
fmt.Println("Checking to see if local addresses have changed")
|
||||||
localIP, err := getLocalIP(nodecfg.LocalRange)
|
localIP, err := getLocalIP(nodecfg.LocalRange)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
fmt.Printf("Error encountered checking ip addresses: %v", err)
|
fmt.Printf("Error encountered checking ip addresses: %v", err)
|
||||||
|
@ -1413,14 +1419,13 @@ func getPeers(macaddress string, network string, server string) ([]wgtypes.PeerC
|
||||||
res, err := stream.Recv()
|
res, err := stream.Recv()
|
||||||
// If end of stream, break the loop
|
// If end of stream, break the loop
|
||||||
|
|
||||||
|
|
||||||
if err == io.EOF {
|
if err == io.EOF {
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
// if err, return an error
|
// if err, return an error
|
||||||
if err != nil {
|
if err != nil {
|
||||||
if strings.Contains(err.Error(), "mongo: no documents in result") {
|
if strings.Contains(err.Error(), "mongo: no documents in result") {
|
||||||
break
|
continue
|
||||||
} else {
|
} else {
|
||||||
fmt.Println("ERROR ENCOUNTERED WITH RESPONSE")
|
fmt.Println("ERROR ENCOUNTERED WITH RESPONSE")
|
||||||
fmt.Println(res)
|
fmt.Println(res)
|
||||||
|
@ -1432,6 +1437,16 @@ func getPeers(macaddress string, network string, server string) ([]wgtypes.PeerC
|
||||||
fmt.Println("error parsing key")
|
fmt.Println("error parsing key")
|
||||||
return peers, hasGateway, gateways, err
|
return peers, hasGateway, gateways, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if nodecfg.PublicKey == res.Peers.Publickey {
|
||||||
|
fmt.Println("Peer is self. Skipping")
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
if nodecfg.Endpoint == res.Peers.Endpoint {
|
||||||
|
fmt.Println("Peer is self. Skipping")
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
var peer wgtypes.PeerConfig
|
var peer wgtypes.PeerConfig
|
||||||
var peeraddr = net.IPNet{
|
var peeraddr = net.IPNet{
|
||||||
IP: net.ParseIP(res.Peers.Address),
|
IP: net.ParseIP(res.Peers.Address),
|
||||||
|
@ -1439,7 +1454,6 @@ func getPeers(macaddress string, network string, server string) ([]wgtypes.PeerC
|
||||||
}
|
}
|
||||||
var allowedips []net.IPNet
|
var allowedips []net.IPNet
|
||||||
allowedips = append(allowedips, peeraddr)
|
allowedips = append(allowedips, peeraddr)
|
||||||
|
|
||||||
if res.Peers.Isgateway {
|
if res.Peers.Isgateway {
|
||||||
hasGateway = true
|
hasGateway = true
|
||||||
gateways = append(gateways,res.Peers.Gatewayrange)
|
gateways = append(gateways,res.Peers.Gatewayrange)
|
||||||
|
|
Loading…
Reference in a new issue