mirror of
https://github.com/gravitl/netmaker.git
synced 2025-10-03 18:35:01 +08:00
Merge branch 'develop' of https://github.com/gravitl/netmaker into hotfix_v0.8.4_netclient_dns
This commit is contained in:
commit
8a1b7d558b
10 changed files with 75 additions and 32 deletions
|
@ -344,14 +344,14 @@ func DeleteNetwork(network string) error {
|
|||
servers, err := logic.GetSortedNetworkServerNodes(network)
|
||||
if err == nil {
|
||||
for _, s := range servers {
|
||||
if err = logic.DeleteNode(s.ID, true); err != nil {
|
||||
functions.PrintUserLog("[netmaker]", "could not removed server "+s.Name+" before deleting network "+network, 2)
|
||||
if err = logic.DeleteNode(&s, true); err != nil {
|
||||
functions.PrintUserLog("", "could not removed server "+s.Name+" before deleting network "+network, 2)
|
||||
} else {
|
||||
functions.PrintUserLog("[netmaker]", "removed server "+s.Name+" before deleting network "+network, 2)
|
||||
functions.PrintUserLog("", "removed server "+s.Name+" before deleting network "+network, 2)
|
||||
}
|
||||
}
|
||||
} else {
|
||||
functions.PrintUserLog("[netmaker]", "could not remove servers before deleting network "+network, 1)
|
||||
functions.PrintUserLog("", "could not remove servers before deleting network "+network, 1)
|
||||
}
|
||||
return database.DeleteRecord(database.NETWORKS_TABLE_NAME, network)
|
||||
}
|
||||
|
|
|
@ -30,7 +30,7 @@ var SQLITE_FUNCTIONS = map[string]interface{}{
|
|||
func initSqliteDB() error {
|
||||
// == create db file if not present ==
|
||||
if _, err := os.Stat("data"); os.IsNotExist(err) {
|
||||
os.Mkdir("data", 0644)
|
||||
os.Mkdir("data", 0744)
|
||||
}
|
||||
dbFilePath := filepath.Join("data", dbFilename)
|
||||
if _, err := os.Stat(dbFilePath); os.IsNotExist(err) {
|
||||
|
|
|
@ -24,7 +24,7 @@ import (
|
|||
func PrintUserLog(username string, message string, loglevel int) {
|
||||
log.SetFlags(log.Flags() &^ (log.Llongfile | log.Lshortfile))
|
||||
if int32(loglevel) <= servercfg.GetVerbose() && servercfg.GetVerbose() != 0 {
|
||||
log.Println(username, message)
|
||||
log.Println("[netmaker]", username, message)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -80,7 +80,7 @@ func GetPeers(node models.Node) ([]models.Node, error) {
|
|||
func IsLeader(node *models.Node) bool {
|
||||
nodes, err := GetSortedNetworkServerNodes(node.Network)
|
||||
if err != nil {
|
||||
functions.PrintUserLog("[netmaker]", "ERROR: COULD NOT RETRIEVE SERVER NODES. THIS WILL BREAK HOLE PUNCHING.", 0)
|
||||
functions.PrintUserLog("", "ERROR: COULD NOT RETRIEVE SERVER NODES. THIS WILL BREAK HOLE PUNCHING.", 0)
|
||||
return false
|
||||
}
|
||||
for _, n := range nodes {
|
||||
|
|
|
@ -8,9 +8,10 @@ import (
|
|||
"strconv"
|
||||
"strings"
|
||||
"time"
|
||||
"github.com/gravitl/netmaker/servercfg"
|
||||
|
||||
"github.com/gravitl/netmaker/models"
|
||||
"github.com/gravitl/netmaker/netclient/ncutils"
|
||||
"github.com/gravitl/netmaker/servercfg"
|
||||
"golang.zx2c4.com/wireguard/wgctrl/wgtypes"
|
||||
)
|
||||
|
||||
|
@ -239,7 +240,7 @@ func ServerLeave(mac string, network string) error {
|
|||
return err
|
||||
}
|
||||
serverNode.SetID()
|
||||
return DeleteNode(serverNode.ID, true)
|
||||
return DeleteNode(&serverNode, true)
|
||||
}
|
||||
|
||||
// GetServerPeers - gets peers of server
|
||||
|
|
|
@ -45,8 +45,10 @@ func SetNetworkServerPeers(node *models.Node) {
|
|||
}
|
||||
|
||||
// DeleteNode - deletes a node from database or moves into delete nodes table
|
||||
func DeleteNode(key string, exterminate bool) error {
|
||||
func DeleteNode(node *models.Node, exterminate bool) error {
|
||||
var err error
|
||||
node.SetID()
|
||||
var key = node.ID
|
||||
if !exterminate {
|
||||
args := strings.Split(key, "###")
|
||||
node, err := GetNode(args[0], args[1])
|
||||
|
@ -67,13 +69,13 @@ func DeleteNode(key string, exterminate bool) error {
|
|||
Log(err.Error(), 2)
|
||||
}
|
||||
}
|
||||
if err := database.DeleteRecord(database.NODES_TABLE_NAME, key); err != nil {
|
||||
if err = database.DeleteRecord(database.NODES_TABLE_NAME, key); err != nil {
|
||||
return err
|
||||
}
|
||||
if servercfg.IsDNSMode() {
|
||||
err = dnslogic.SetDNS()
|
||||
}
|
||||
return err
|
||||
return removeLocalServer(node)
|
||||
}
|
||||
|
||||
// CreateNode - creates a node in database
|
||||
|
|
|
@ -313,3 +313,47 @@ func setWGKeyConfig(node models.Node) error {
|
|||
|
||||
return setWGConfig(node, node.Network, false)
|
||||
}
|
||||
|
||||
func removeLocalServer(node *models.Node) error {
|
||||
var ifacename = node.Interface
|
||||
var err error
|
||||
if ifacename != "" {
|
||||
if !ncutils.IsKernel() {
|
||||
if err = RemoveConf(ifacename, true); err == nil {
|
||||
Log("removed WireGuard interface: "+ifacename, 1)
|
||||
}
|
||||
} else {
|
||||
ipExec, err := exec.LookPath("ip")
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
out, err := ncutils.RunCmd(ipExec+" link del "+ifacename, false)
|
||||
dontprint := strings.Contains(out, "does not exist") || strings.Contains(out, "Cannot find device")
|
||||
if err != nil && !dontprint {
|
||||
Log("error running command: "+ipExec+" link del "+ifacename, 1)
|
||||
Log(out, 1)
|
||||
}
|
||||
if node.PostDown != "" {
|
||||
runcmds := strings.Split(node.PostDown, "; ")
|
||||
_ = ncutils.RunCmds(runcmds, false)
|
||||
}
|
||||
}
|
||||
}
|
||||
home := ncutils.GetNetclientPathSpecific()
|
||||
if ncutils.FileExists(home + "netconfig-" + node.Network) {
|
||||
_ = os.Remove(home + "netconfig-" + node.Network)
|
||||
}
|
||||
if ncutils.FileExists(home + "nettoken-" + node.Network) {
|
||||
_ = os.Remove(home + "nettoken-" + node.Network)
|
||||
}
|
||||
if ncutils.FileExists(home + "secret-" + node.Network) {
|
||||
_ = os.Remove(home + "secret-" + node.Network)
|
||||
}
|
||||
if ncutils.FileExists(home + "wgkey-" + node.Network) {
|
||||
_ = os.Remove(home + "wgkey-" + node.Network)
|
||||
}
|
||||
if ncutils.FileExists(home + "nm-" + node.Network + ".conf") {
|
||||
_ = os.Remove(home + "nm-" + node.Network + ".conf")
|
||||
}
|
||||
return err
|
||||
}
|
||||
|
|
|
@ -27,9 +27,6 @@ func Join(cfg config.ClientConfig, privateKey string) error {
|
|||
|
||||
var err error
|
||||
err = functions.JoinNetwork(cfg, privateKey)
|
||||
if err != nil && cfg.Node.IsServer != "yes" { // make sure server side is cleaned up
|
||||
return err
|
||||
}
|
||||
if err != nil && !cfg.DebugJoin {
|
||||
if !strings.Contains(err.Error(), "ALREADY_INSTALLED") {
|
||||
ncutils.PrintLog("error installing: "+err.Error(), 1)
|
||||
|
|
|
@ -112,16 +112,23 @@ func RemoveSystemDServices() error {
|
|||
if err != nil {
|
||||
log.Println(err)
|
||||
}
|
||||
_, err = ncutils.RunCmd("systemctl disable netclient.service", true)
|
||||
_, err = ncutils.RunCmd("systemctl disable netclient.timer", true)
|
||||
err = os.Remove("/etc/systemd/system/netclient.service")
|
||||
err = os.Remove("/etc/systemd/system/netclient.timer")
|
||||
if err != nil {
|
||||
log.Println("Error removing file. Please investigate.")
|
||||
log.Println(err)
|
||||
ncutils.RunCmd("systemctl disable netclient.service", false)
|
||||
ncutils.RunCmd("systemctl disable netclient.timer", false)
|
||||
if ncutils.FileExists("/etc/systemd/system/netclient.service") {
|
||||
err = os.Remove("/etc/systemd/system/netclient.service")
|
||||
if err != nil {
|
||||
ncutils.Log("Error removing /etc/systemd/system/netclient.service. Please investigate.")
|
||||
}
|
||||
}
|
||||
_, _ = ncutils.RunCmd("systemctl daemon-reload", true)
|
||||
_, _ = ncutils.RunCmd("systemctl reset-failed", true)
|
||||
if ncutils.FileExists("/etc/systemd/system/netclient.timer") {
|
||||
err = os.Remove("/etc/systemd/system/netclient.timer")
|
||||
if err != nil {
|
||||
ncutils.Log("Error removing /etc/systemd/system/netclient.timer. Please investigate.")
|
||||
}
|
||||
}
|
||||
ncutils.RunCmd("systemctl daemon-reload", false)
|
||||
ncutils.RunCmd("systemctl reset-failed", false)
|
||||
ncutils.Log("removed systemd remnants if any existed")
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
|
|
@ -12,7 +12,6 @@ import (
|
|||
"strings"
|
||||
|
||||
nodepb "github.com/gravitl/netmaker/grpc"
|
||||
"github.com/gravitl/netmaker/logic"
|
||||
"github.com/gravitl/netmaker/models"
|
||||
"github.com/gravitl/netmaker/netclient/auth"
|
||||
"github.com/gravitl/netmaker/netclient/config"
|
||||
|
@ -206,13 +205,6 @@ func LeaveNetwork(network string) error {
|
|||
ncutils.PrintLog("removed machine from "+node.Network+" network on remote server", 1)
|
||||
}
|
||||
}
|
||||
} else { // handle server side
|
||||
node.SetID()
|
||||
if err = logic.DeleteNode(node.ID, true); err != nil {
|
||||
ncutils.PrintLog("error removing server on network "+node.Network, 1)
|
||||
} else {
|
||||
ncutils.PrintLog("removed netmaker server instance on "+node.Network, 1)
|
||||
}
|
||||
}
|
||||
return RemoveLocalInstance(cfg, network)
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue