mirror of
https://github.com/gravitl/netmaker.git
synced 2025-10-17 22:31:23 +08:00
fixed duplicate interface issue
This commit is contained in:
BIN
netclient/functions/.common.go.swp
Normal file
BIN
netclient/functions/.common.go.swp
Normal file
Binary file not shown.
@@ -433,18 +433,35 @@ func initWireguard(node *nodepb.Node, privkey string, peers []wgtypes.PeerConfig
|
|||||||
Stdout: os.Stdout,
|
Stdout: os.Stdout,
|
||||||
Stderr: os.Stdout,
|
Stderr: os.Stdout,
|
||||||
}
|
}
|
||||||
err = cmdIPDevLinkAdd.Run()
|
|
||||||
|
|
||||||
|
currentiface, err := net.InterfaceByName(ifacename)
|
||||||
|
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
err = cmdIPDevLinkAdd.Run()
|
||||||
if err != nil && !strings.Contains(err.Error(), "exists") {
|
if err != nil && !strings.Contains(err.Error(), "exists") {
|
||||||
fmt.Println("Error creating interface")
|
fmt.Println("Error creating interface")
|
||||||
//fmt.Println(err.Error())
|
//fmt.Println(err.Error())
|
||||||
//return err
|
//return err
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
match := false
|
||||||
|
addrs, _ := currentiface.Addrs()
|
||||||
|
for _, a := range addrs {
|
||||||
|
fmt.Println("Current address: " + a.String())
|
||||||
|
fmt.Println("node.Address: " + node.Address)
|
||||||
|
if strings.Contains(a.String(), node.Address){
|
||||||
|
match = true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if !match {
|
||||||
err = cmdIPAddrAdd.Run()
|
err = cmdIPAddrAdd.Run()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
fmt.Println("Error adding address")
|
fmt.Println("Error adding address")
|
||||||
//return err
|
//return err
|
||||||
}
|
}
|
||||||
|
}
|
||||||
var nodeport int
|
var nodeport int
|
||||||
nodeport = int(node.Listenport)
|
nodeport = int(node.Listenport)
|
||||||
|
|
||||||
@@ -476,7 +493,7 @@ func initWireguard(node *nodepb.Node, privkey string, peers []wgtypes.PeerConfig
|
|||||||
fmt.Println("Device does not exist: ")
|
fmt.Println("Device does not exist: ")
|
||||||
fmt.Println(err)
|
fmt.Println(err)
|
||||||
} else {
|
} else {
|
||||||
log.Fatalf("Unknown config error: %v", err)
|
fmt.Printf("This is inconvenient: %v", err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
cmdIPLinkUp := &exec.Cmd {
|
cmdIPLinkUp := &exec.Cmd {
|
||||||
@@ -601,6 +618,32 @@ func CheckIn() error {
|
|||||||
fmt.Println("Node is in pending status. Waiting for Admin approval of node before making furtherupdates.")
|
fmt.Println("Node is in pending status. Waiting for Admin approval of node before making furtherupdates.")
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
newinterface := getNode().Interface
|
||||||
|
readreq := &nodepb.ReadNodeReq{
|
||||||
|
Macaddress: node.Macaddress,
|
||||||
|
Group: node.Nodegroup,
|
||||||
|
}
|
||||||
|
readres, err := wcclient.ReadNode(ctx, readreq, grpc.Header(&header))
|
||||||
|
if err != nil {
|
||||||
|
fmt.Printf("Error: %v", err)
|
||||||
|
} else {
|
||||||
|
currentiface := readres.Node.Interface
|
||||||
|
ifaceupdate := newinterface != currentiface
|
||||||
|
fmt.Println("Is it time to update the interface? ")
|
||||||
|
fmt.Println(ifaceupdate)
|
||||||
|
if err != nil {
|
||||||
|
log.Printf("Error retrieving interface: %v", err)
|
||||||
|
}
|
||||||
|
if ifaceupdate {
|
||||||
|
err := DeleteInterface(currentiface)
|
||||||
|
if err != nil {
|
||||||
|
fmt.Println("ERROR DELETING INTERFACE: " + currentiface)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
err = setWGConfig()
|
||||||
|
}
|
||||||
|
|
||||||
if checkinres.Checkinresponse.Needconfigupdate {
|
if checkinres.Checkinresponse.Needconfigupdate {
|
||||||
fmt.Println("Server has requested that node update config.")
|
fmt.Println("Server has requested that node update config.")
|
||||||
fmt.Println("Updating config from remote server.")
|
fmt.Println("Updating config from remote server.")
|
||||||
@@ -628,28 +671,21 @@ func CheckIn() error {
|
|||||||
fmt.Println("Node has requested to update remote config.")
|
fmt.Println("Node has requested to update remote config.")
|
||||||
fmt.Println("Posting local config to remote server.")
|
fmt.Println("Posting local config to remote server.")
|
||||||
postnode := getNode()
|
postnode := getNode()
|
||||||
currentinterface := postnode.Interface
|
|
||||||
req := &nodepb.UpdateNodeReq{
|
req := &nodepb.UpdateNodeReq{
|
||||||
Node: &postnode,
|
Node: &postnode,
|
||||||
}
|
}
|
||||||
res, err := wcclient.UpdateNode(ctx, req, grpc.Header(&header))
|
res, err := wcclient.UpdateNode(ctx, req, grpc.Header(&header))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
log.Fatalf("Error: %v", err)
|
log.Fatalf("Error: %v", err)
|
||||||
}
|
}
|
||||||
res.Node.Postchanges = "false"
|
res.Node.Postchanges = "false"
|
||||||
newinterface := res.Node.Interface
|
|
||||||
err = modConfig(res.Node)
|
err = modConfig(res.Node)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
log.Fatalf("Error: %v", err)
|
log.Fatalf("Error: %v", err)
|
||||||
}
|
}
|
||||||
if currentinterface != newinterface {
|
|
||||||
err := DeleteInterface(currentinterface)
|
|
||||||
if err != nil {
|
|
||||||
fmt.Println("ERROR DELETING INTERFACE: " + currentinterface)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
err = setWGConfig()
|
err = setWGConfig()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
@@ -681,6 +717,23 @@ func CheckIn() error {
|
|||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func needInterfaceUpdate(ctx context.Context, mac string, group string, iface string) (bool, string, error) {
|
||||||
|
var header metadata.MD
|
||||||
|
req := &nodepb.ReadNodeReq{
|
||||||
|
Macaddress: mac,
|
||||||
|
Group: group,
|
||||||
|
}
|
||||||
|
readres, err := wcclient.ReadNode(ctx, req, grpc.Header(&header))
|
||||||
|
if err != nil {
|
||||||
|
return false, "", err
|
||||||
|
log.Fatalf("Error: %v", err)
|
||||||
|
}
|
||||||
|
oldiface := readres.Node.Interface
|
||||||
|
|
||||||
|
return iface != oldiface, oldiface, err
|
||||||
|
}
|
||||||
|
|
||||||
func getNode() nodepb.Node {
|
func getNode() nodepb.Node {
|
||||||
modcfg := config.Config
|
modcfg := config.Config
|
||||||
modcfg.ReadConfig()
|
modcfg.ReadConfig()
|
||||||
|
Reference in New Issue
Block a user