changed logs

This commit is contained in:
afeiszli 2021-08-09 12:43:09 -04:00
parent 1c521934ba
commit 382901b124
17 changed files with 82 additions and 126 deletions

View file

@ -73,10 +73,6 @@ func readConfig() *EnvironmentConfig {
f, err := os.Open(file) f, err := os.Open(file)
var cfg EnvironmentConfig var cfg EnvironmentConfig
if err != nil { if err != nil {
//log.Fatal(err)
//os.Exit(2)
//log.Println("Unable to open config file at config/environments/" + getEnv())
//log.Println("Will proceed with defaults or enironment variables (no config file).")
return &cfg return &cfg
} }
defer f.Close() defer f.Close()

View file

@ -2,11 +2,9 @@ package controller
import ( import (
"encoding/json" "encoding/json"
"log"
"strconv" "strconv"
"strings" "strings"
"time" "time"
"github.com/gravitl/netmaker/database" "github.com/gravitl/netmaker/database"
"github.com/gravitl/netmaker/functions" "github.com/gravitl/netmaker/functions"
"github.com/gravitl/netmaker/models" "github.com/gravitl/netmaker/models"
@ -23,20 +21,19 @@ func GetPeersList(networkName string) ([]models.Node, error) {
if database.IsEmptyRecord(err) { if database.IsEmptyRecord(err) {
return peers, nil return peers, nil
} }
log.Println(err) functions.PrintUserLog("",err.Error(),2)
return nil, err return nil, err
} }
udppeers, errN := database.GetPeers(networkName) udppeers, errN := database.GetPeers(networkName)
if errN != nil { if errN != nil {
log.Println("failed to collect udp peers") functions.PrintUserLog("",errN.Error(),2)
log.Println(errN)
} }
for _, value := range collection { for _, value := range collection {
var node models.Node var node models.Node
var peer models.Node var peer models.Node
err := json.Unmarshal([]byte(value), &node) err := json.Unmarshal([]byte(value), &node)
if err != nil { if err != nil {
log.Println(err) functions.PrintUserLog("",err.Error(),2)
continue continue
} }
if node.IsEgressGateway == "yes" { // handle egress stuff if node.IsEgressGateway == "yes" { // handle egress stuff
@ -62,7 +59,7 @@ func GetPeersList(networkName string) ([]models.Node, error) {
} }
} }
} }
functions.PrintUserLog("netmaker", "sending peer "+peer.MacAddress+" "+peer.Endpoint, 2) functions.PrintUserLog(models.NODE_SERVER_NAME, "sending peer "+peer.MacAddress+" "+peer.Endpoint, 2)
peers = append(peers, peer) peers = append(peers, peer)
} }
} }
@ -87,12 +84,12 @@ func GetExtPeersList(macaddress string, networkName string) ([]models.ExtPeersRe
var extClient models.ExtClient var extClient models.ExtClient
err = json.Unmarshal([]byte(value), &peer) err = json.Unmarshal([]byte(value), &peer)
if err != nil { if err != nil {
functions.PrintUserLog("netmaker", "failed to unmarshal peer", 2) functions.PrintUserLog(models.NODE_SERVER_NAME, "failed to unmarshal peer", 2)
continue continue
} }
err = json.Unmarshal([]byte(value), &extClient) err = json.Unmarshal([]byte(value), &extClient)
if err != nil { if err != nil {
functions.PrintUserLog("netmaker", "failed to unmarshal ext client", 2) functions.PrintUserLog(models.NODE_SERVER_NAME, "failed to unmarshal ext client", 2)
continue continue
} }
if extClient.Network == networkName && extClient.IngressGatewayID == macaddress { if extClient.Network == networkName && extClient.IngressGatewayID == macaddress {
@ -125,7 +122,7 @@ func DeleteNode(key string, exterminate bool) error {
} }
} else { } else {
if err := database.DeleteRecord(database.DELETED_NODES_TABLE_NAME, key); err != nil { if err := database.DeleteRecord(database.DELETED_NODES_TABLE_NAME, key); err != nil {
log.Println(err) functions.PrintUserLog("",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 {
@ -197,6 +194,12 @@ func CreateNode(node models.Node, networkName string) (models.Node, error) {
node.Network = networkName node.Network = networkName
if node.Name == models.NODE_SERVER_NAME {
if node.CheckIsServer() {
node.IsServer = "yes"
}
}
node.SetDefaults() node.SetDefaults()
node.Address, err = functions.UniqueAddress(networkName) node.Address, err = functions.UniqueAddress(networkName)
if err != nil { if err != nil {
@ -216,7 +219,6 @@ func CreateNode(node models.Node, networkName string) (models.Node, error) {
if err != nil { if err != nil {
return node, err return node, err
} }
key, err := functions.GetRecordKey(node.MacAddress, node.Network) key, err := functions.GetRecordKey(node.MacAddress, node.Network)
if err != nil { if err != nil {
return node, err return node, err
@ -242,12 +244,11 @@ func CreateNode(node models.Node, networkName string) (models.Node, error) {
func SetNetworkServerPeers(networkName string) { func SetNetworkServerPeers(networkName string) {
if currentPeersList, err := serverctl.GetPeers(networkName); err == nil { if currentPeersList, err := serverctl.GetPeers(networkName); err == nil {
if database.SetPeers(currentPeersList, networkName) { if database.SetPeers(currentPeersList, networkName) {
log.Println("set new peers on network", networkName) functions.PrintUserLog(models.NODE_SERVER_NAME,"set new peers on network "+networkName,1)
} else {
log.Println("attempted to set peers on network", networkName)
} }
} else { } else {
log.Println("could not set server peers on network", networkName) functions.PrintUserLog(models.NODE_SERVER_NAME,"could not set peers on network "+networkName,1)
functions.PrintUserLog(models.NODE_SERVER_NAME,err.Error(),1)
} }
} }

View file

@ -7,7 +7,6 @@ import (
"os" "os"
"os/signal" "os/signal"
"sync" "sync"
"github.com/gorilla/handlers" "github.com/gorilla/handlers"
"github.com/gorilla/mux" "github.com/gorilla/mux"
"github.com/gravitl/netmaker/servercfg" "github.com/gravitl/netmaker/servercfg"

View file

@ -2,10 +2,7 @@ package controller
import ( import (
"encoding/json" "encoding/json"
"fmt"
"log"
"net/http" "net/http"
"github.com/go-playground/validator/v10" "github.com/go-playground/validator/v10"
"github.com/gorilla/mux" "github.com/gorilla/mux"
"github.com/gravitl/netmaker/database" "github.com/gravitl/netmaker/database"
@ -319,7 +316,7 @@ func deleteDNS(w http.ResponseWriter, r *http.Request) {
return return
} }
entrytext := params["domain"] + "." + params["network"] entrytext := params["domain"] + "." + params["network"]
functions.PrintUserLog("netmaker", "deleted dns entry: "+entrytext, 1) functions.PrintUserLog(models.NODE_SERVER_NAME, "deleted dns entry: "+entrytext, 1)
err = SetDNS() err = SetDNS()
if err != nil { if err != nil {
returnErrorResponse(w, r, formatError(err, "internal")) returnErrorResponse(w, r, formatError(err, "internal"))
@ -401,7 +398,7 @@ func pushDNS(w http.ResponseWriter, r *http.Request) {
returnErrorResponse(w, r, formatError(err, "internal")) returnErrorResponse(w, r, formatError(err, "internal"))
return return
} }
log.Println("pushed DNS updates to nameserver") functions.PrintUserLog(r.Header.Get("user"),"pushed DNS updates to nameserver",1)
json.NewEncoder(w).Encode("DNS Pushed to CoreDNS") json.NewEncoder(w).Encode("DNS Pushed to CoreDNS")
} }
@ -422,7 +419,7 @@ func ValidateDNSCreate(entry models.DNSEntry) error {
err := v.Struct(entry) err := v.Struct(entry)
if err != nil { if err != nil {
for _, e := range err.(validator.ValidationErrors) { for _, e := range err.(validator.ValidationErrors) {
fmt.Println(e) functions.PrintUserLog("", e.Error(),1)
} }
} }
return err return err
@ -442,7 +439,9 @@ func ValidateDNSUpdate(change models.DNSEntry, entry models.DNSEntry) error {
}) })
_ = v.RegisterValidation("network_exists", func(fl validator.FieldLevel) bool { _ = v.RegisterValidation("network_exists", func(fl validator.FieldLevel) bool {
_, err := functions.GetParentNetwork(change.Network) _, err := functions.GetParentNetwork(change.Network)
fmt.Println(err, entry.Network) if err != nil {
functions.PrintUserLog("",err.Error(),0)
}
return err == nil return err == nil
}) })
@ -464,7 +463,7 @@ func ValidateDNSUpdate(change models.DNSEntry, entry models.DNSEntry) error {
if err != nil { if err != nil {
for _, e := range err.(validator.ValidationErrors) { for _, e := range err.(validator.ValidationErrors) {
fmt.Println(e) functions.PrintUserLog("", e.Error(),1)
} }
} }
return err return err

View file

@ -6,12 +6,9 @@ import (
"fmt" "fmt"
"io" "io"
"math/rand" "math/rand"
// "fmt"
"net/http" "net/http"
"strconv" "strconv"
"time" "time"
"github.com/gorilla/mux" "github.com/gorilla/mux"
"github.com/gravitl/netmaker/database" "github.com/gravitl/netmaker/database"
"github.com/gravitl/netmaker/functions" "github.com/gravitl/netmaker/functions"
@ -31,43 +28,6 @@ func extClientHandlers(r *mux.Router) {
r.HandleFunc("/api/extclients/{network}/{macaddress}", securityCheck(false, http.HandlerFunc(createExtClient))).Methods("POST") r.HandleFunc("/api/extclients/{network}/{macaddress}", securityCheck(false, http.HandlerFunc(createExtClient))).Methods("POST")
} }
// TODO: Implement Validation
func ValidateExtClientCreate(networkName string, extclient models.ExtClient) error {
// v := validator.New()
// _ = v.RegisterValidation("macaddress_unique", func(fl validator.FieldLevel) bool {
// var isFieldUnique bool = functions.IsFieldUnique(networkName, "macaddress", extclient.MacAddress)
// return isFieldUnique
// })
// _ = v.RegisterValidation("network_exists", func(fl validator.FieldLevel) bool {
// _, err := extclient.GetNetwork()
// return err == nil
// })
// err := v.Struct(extclient)
// if err != nil {
// for _, e := range err.(validator.ValidationErrors) {
// fmt.Println(e)
// }
// }
return nil
}
// TODO: Implement Validation
func ValidateExtClientUpdate(networkName string, extclient models.ExtClient) error {
// v := validator.New()
// _ = v.RegisterValidation("network_exists", func(fl validator.FieldLevel) bool {
// _, err := extclient.GetNetwork()
// return err == nil
// })
// err := v.Struct(extclient)
// if err != nil {
// for _, e := range err.(validator.ValidationErrors) {
// fmt.Println(e)
// }
// }
return nil
}
func checkIngressExists(network string, macaddress string) bool { func checkIngressExists(network string, macaddress string) bool {
node, err := functions.GetNodeByMacAddress(network, macaddress) node, err := functions.GetNodeByMacAddress(network, macaddress)
if err != nil { if err != nil {
@ -178,14 +138,14 @@ func getExtClientConf(w http.ResponseWriter, r *http.Request) {
gwnode, err := functions.GetNodeByMacAddress(client.Network, client.IngressGatewayID) gwnode, err := functions.GetNodeByMacAddress(client.Network, client.IngressGatewayID)
if err != nil { if err != nil {
fmt.Println("Could not retrieve Ingress Gateway Node " + client.IngressGatewayID) functions.PrintUserLog(r.Header.Get("user"),"Could not retrieve Ingress Gateway Node " + client.IngressGatewayID,1)
returnErrorResponse(w, r, formatError(err, "internal")) returnErrorResponse(w, r, formatError(err, "internal"))
return return
} }
network, err := functions.GetParentNetwork(client.Network) network, err := functions.GetParentNetwork(client.Network)
if err != nil { if err != nil {
fmt.Println("Could not retrieve Ingress Gateway Network " + client.Network) functions.PrintUserLog(r.Header.Get("user"),"Could not retrieve Ingress Gateway Network " + client.Network,1)
returnErrorResponse(w, r, formatError(err, "internal")) returnErrorResponse(w, r, formatError(err, "internal"))
return return
} }
@ -238,7 +198,7 @@ Endpoint = %s
} }
return return
} }
functions.PrintUserLog(r.Header.Get("user"),"retrieved ext client config",2)
w.WriteHeader(http.StatusOK) w.WriteHeader(http.StatusOK)
json.NewEncoder(w).Encode(client) json.NewEncoder(w).Encode(client)
} }
@ -263,9 +223,7 @@ func CreateExtClient(extclient models.ExtClient) error {
} }
if extclient.ClientID == "" { if extclient.ClientID == "" {
clientid := StringWithCharset(7, charset) extclient.ClientID = models.GenerateNodeName()
clientname := "client-" + clientid
extclient.ClientID = clientname
} }
extclient.LastModified = time.Now().Unix() extclient.LastModified = time.Now().Unix()
@ -284,10 +242,10 @@ func CreateExtClient(extclient models.ExtClient) error {
err = SetNetworkNodesLastModified(extclient.Network) err = SetNetworkNodesLastModified(extclient.Network)
return err return err
} }
/**
//This one's a doozy * To create a extclient
//To create a extclient * Must have valid key and be unique
//Must have valid key and be unique */
func createExtClient(w http.ResponseWriter, r *http.Request) { func createExtClient(w http.ResponseWriter, r *http.Request) {
w.Header().Set("Content-Type", "application/json") w.Header().Set("Content-Type", "application/json")
@ -295,9 +253,6 @@ func createExtClient(w http.ResponseWriter, r *http.Request) {
networkName := params["network"] networkName := params["network"]
macaddress := params["macaddress"] macaddress := params["macaddress"]
//Check if network exists first
//TODO: This is inefficient. Let's find a better way.
//Just a few rows down we grab the network anyway
ingressExists := checkIngressExists(networkName, macaddress) ingressExists := checkIngressExists(networkName, macaddress)
if !ingressExists { if !ingressExists {
returnErrorResponse(w, r, formatError(errors.New("ingress does not exist"), "internal")) returnErrorResponse(w, r, formatError(errors.New("ingress does not exist"), "internal"))
@ -319,11 +274,6 @@ func createExtClient(w http.ResponseWriter, r *http.Request) {
returnErrorResponse(w, r, formatError(err, "internal")) returnErrorResponse(w, r, formatError(err, "internal"))
return return
} }
err = ValidateExtClientCreate(params["network"], extclient)
if err != nil {
returnErrorResponse(w, r, formatError(err, "badrequest"))
return
}
err = CreateExtClient(extclient) err = CreateExtClient(extclient)
if err != nil { if err != nil {
@ -340,14 +290,8 @@ func updateExtClient(w http.ResponseWriter, r *http.Request) {
var newExtClient models.ExtClient var newExtClient models.ExtClient
var oldExtClient models.ExtClient var oldExtClient models.ExtClient
// we decode our body request params
_ = json.NewDecoder(r.Body).Decode(&newExtClient) _ = json.NewDecoder(r.Body).Decode(&newExtClient)
// TODO: Validation for update.
// err := ValidateExtClientUpdate(params["network"], params["clientid"], newExtClient)
// if err != nil {
// returnErrorResponse(w, r, formatError(err, "badrequest"))
// return
// }
key, err := functions.GetRecordKey(params["clientid"], params["network"]) key, err := functions.GetRecordKey(params["clientid"], params["network"])
if err != nil { if err != nil {
returnErrorResponse(w, r, formatError(err, "internal")) returnErrorResponse(w, r, formatError(err, "internal"))
@ -362,7 +306,6 @@ func updateExtClient(w http.ResponseWriter, r *http.Request) {
returnErrorResponse(w, r, formatError(err, "internal")) returnErrorResponse(w, r, formatError(err, "internal"))
return return
} }
newclient, err := UpdateExtClient(newExtClient.ClientID, params["network"], oldExtClient) newclient, err := UpdateExtClient(newExtClient.ClientID, params["network"], oldExtClient)
if err != nil { if err != nil {
returnErrorResponse(w, r, formatError(err, "internal")) returnErrorResponse(w, r, formatError(err, "internal"))
@ -404,7 +347,7 @@ func DeleteGatewayExtClients(gatewayID string, networkName string) error {
for _, extClient := range currentExtClients { for _, extClient := range currentExtClients {
if extClient.IngressGatewayID == gatewayID { if extClient.IngressGatewayID == gatewayID {
if err = DeleteExtClient(networkName, extClient.ClientID); err != nil { if err = DeleteExtClient(networkName, extClient.ClientID); err != nil {
functions.PrintUserLog("netmaker", "failed to remove ext client "+extClient.ClientID, 2) functions.PrintUserLog(models.NODE_SERVER_NAME, "failed to remove ext client "+extClient.ClientID, 2)
continue continue
} }
} }

View file

@ -4,11 +4,9 @@ import (
"encoding/base64" "encoding/base64"
"encoding/json" "encoding/json"
"errors" "errors"
"log"
"net/http" "net/http"
"strings" "strings"
"time" "time"
"github.com/go-playground/validator/v10" "github.com/go-playground/validator/v10"
"github.com/gorilla/mux" "github.com/gorilla/mux"
"github.com/gravitl/netmaker/database" "github.com/gravitl/netmaker/database"
@ -181,7 +179,7 @@ func ValidateNetworkUpdate(network models.Network) error {
if err != nil { if err != nil {
for _, e := range err.(validator.ValidationErrors) { for _, e := range err.(validator.ValidationErrors) {
log.Println(e) functions.PrintUserLog("validator",e.Error(),1)
} }
} }
return err return err
@ -517,7 +515,7 @@ func CreateAccessKey(accesskey models.AccessKey, network models.Network) (models
err = v.Struct(accesskey) err = v.Struct(accesskey)
if err != nil { if err != nil {
for _, e := range err.(validator.ValidationErrors) { for _, e := range err.(validator.ValidationErrors) {
log.Println(e) functions.PrintUserLog("validator",e.Error(),1)
} }
return models.AccessKey{}, err return models.AccessKey{}, err
} }

View file

@ -4,9 +4,7 @@ import (
"context" "context"
"encoding/json" "encoding/json"
"errors" "errors"
"log"
"strings" "strings"
"github.com/gravitl/netmaker/functions" "github.com/gravitl/netmaker/functions"
nodepb "github.com/gravitl/netmaker/grpc" nodepb "github.com/gravitl/netmaker/grpc"
"github.com/gravitl/netmaker/models" "github.com/gravitl/netmaker/models"
@ -25,7 +23,6 @@ func (s *NodeServiceServer) ReadNode(ctx context.Context, req *nodepb.Object) (*
} }
node, err := GetNode(macAndNetwork[0], macAndNetwork[1]) node, err := GetNode(macAndNetwork[0], macAndNetwork[1])
if err != nil { if err != nil {
log.Println("could not get node "+macAndNetwork[0]+" "+macAndNetwork[1], err)
return nil, err return nil, err
} }
node.SetLastCheckIn() node.SetLastCheckIn()
@ -71,7 +68,6 @@ func (s *NodeServiceServer) CreateNode(ctx context.Context, req *nodepb.Object)
node, err = CreateNode(node, node.Network) node, err = CreateNode(node, node.Network)
if err != nil { if err != nil {
log.Println("could not create node on network " + node.Network + " (gRPC controller)")
return nil, err return nil, err
} }
nodeData, err := json.Marshal(&node) nodeData, err := json.Marshal(&node)
@ -121,7 +117,6 @@ func (s *NodeServiceServer) DeleteNode(ctx context.Context, req *nodepb.Object)
err := DeleteNode(nodeID, true) err := DeleteNode(nodeID, true)
if err != nil { if err != nil {
log.Println("Error deleting node (gRPC controller).")
return nil, err return nil, err
} }
@ -139,7 +134,7 @@ func (s *NodeServiceServer) GetPeers(ctx context.Context, req *nodepb.Object) (*
if err != nil { if err != nil {
return nil, err return nil, err
} }
if node.Name == "netmaker" { if node.IsServer == "yes" {
SetNetworkServerPeers(macAndNetwork[1]) SetNetworkServerPeers(macAndNetwork[1])
} }
peers, err := GetPeersList(macAndNetwork[1]) peers, err := GetPeersList(macAndNetwork[1])

View file

@ -3,11 +3,9 @@ package controller
import ( import (
"encoding/json" "encoding/json"
"errors" "errors"
"log"
"net/http" "net/http"
"strings" "strings"
"time" "time"
"github.com/gorilla/mux" "github.com/gorilla/mux"
"github.com/gravitl/netmaker/database" "github.com/gravitl/netmaker/database"
"github.com/gravitl/netmaker/functions" "github.com/gravitl/netmaker/functions"
@ -648,7 +646,6 @@ func CreateIngressGateway(netid string, macaddress string) (models.Node, error)
network, err := functions.GetParentNetwork(netid) network, err := functions.GetParentNetwork(netid)
if err != nil { if err != nil {
log.Println("Could not find network.")
return models.Node{}, err return models.Node{}, err
} }
node.IsIngressGateway = "yes" node.IsIngressGateway = "yes"

View file

@ -396,7 +396,7 @@ func UpdateUser(userchange models.User, user models.User) (models.User, error) {
if err = database.Insert(user.UserName, string(data), database.USERS_TABLE_NAME); err != nil { if err = database.Insert(user.UserName, string(data), database.USERS_TABLE_NAME); err != nil {
return models.User{}, err return models.User{}, err
} }
functions.PrintUserLog("netmaker", "updated user "+queryUser, 1) functions.PrintUserLog(models.NODE_SERVER_NAME, "updated user "+queryUser, 1)
return user, nil return user, nil
} }

View file

@ -13,7 +13,7 @@ import (
gconf.ServerGRPC = "localhost:8081" gconf.ServerGRPC = "localhost:8081"
gconf.PortGRPC = "50051" gconf.PortGRPC = "50051"
//err := SetGlobalConfig(gconf) //err := SetGlobalConfig(gconf)
collection := REMOVE.Client.Database("netmaker").Collection("config") collection := REMOVE.Client.Database(models.NODE_SERVER_NAME).Collection("config")
ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second) ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
defer cancel() defer cancel()
//create, _, err := functions.GetGlobalConfig() //create, _, err := functions.GetGlobalConfig()
@ -24,7 +24,7 @@ import (
//drop network, nodes, and user collections //drop network, nodes, and user collections
var collections = []string{"networks", "nodes", "users", "dns"} var collections = []string{"networks", "nodes", "users", "dns"}
for _, table := range collections { for _, table := range collections {
collection := REMOVE.Client.Database("netmaker").Collection(table) collection := REMOVE.Client.Database(models.NODE_SERVER_NAME).Collection(table)
ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second) ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
defer cancel() defer cancel()
err := collection.Drop(ctx) err := collection.Drop(ctx)

View file

@ -131,6 +131,5 @@ func FetchRecords(tableName string) (map[string]string, error) {
if len(records) == 0 { if len(records) == 0 {
return nil, errors.New(NO_RECORDS) return nil, errors.New(NO_RECORDS)
} }
// log.Println(records)
return records, nil return records, nil
} }

View file

@ -252,6 +252,9 @@ func NetworkNodesUpdateAction(networkName string, action string) error {
fmt.Println("error in node address assignment!") fmt.Println("error in node address assignment!")
return err return err
} }
if action == models.NODE_UPDATE_KEY && node.StaticPubKey == "yes" {
continue
}
if node.Network == networkName { if node.Network == networkName {
node.Action = action node.Action = action
data, err := json.Marshal(&node) data, err := json.Marshal(&node)
@ -261,8 +264,7 @@ func NetworkNodesUpdateAction(networkName string, action string) error {
node.SetID() node.SetID()
database.Insert(node.ID, string(data), database.NODES_TABLE_NAME) database.Insert(node.ID, string(data), database.NODES_TABLE_NAME)
} }
} }
return nil return nil
} }
@ -763,7 +765,7 @@ func DecrimentKey(networkName string, keyvalue string) {
} }
if newNetworkData, err := json.Marshal(&network); err != nil { if newNetworkData, err := json.Marshal(&network); err != nil {
PrintUserLog("netmaker", "failed to decrement key", 2) PrintUserLog(models.NODE_SERVER_NAME, "failed to decrement key", 2)
return return
} else { } else {
database.Insert(network.NetID, string(newNetworkData), database.NETWORKS_TABLE_NAME) database.Insert(network.NetID, string(newNetworkData), database.NETWORKS_TABLE_NAME)

View file

@ -2,7 +2,6 @@ package functions
import ( import (
"io/ioutil" "io/ioutil"
"log"
"os" "os"
) )
@ -23,7 +22,7 @@ func SetDNSDir() error {
if os.IsNotExist(err) { if os.IsNotExist(err) {
os.Mkdir(dir+"/config/dnsconfig", 744) os.Mkdir(dir+"/config/dnsconfig", 744)
} else if err != nil { } else if err != nil {
log.Println("couldnt find or create /config/dnsconfig") PrintUserLog("","couldnt find or create /config/dnsconfig",0)
return err return err
} }
return nil return nil
@ -38,7 +37,7 @@ func SetCorefile(domains string) error {
if os.IsNotExist(err) { if os.IsNotExist(err) {
os.Mkdir(dir+"/config/dnsconfig", 744) os.Mkdir(dir+"/config/dnsconfig", 744)
} else if err != nil { } else if err != nil {
log.Println("couldnt find or create /config/dnsconfig") PrintUserLog("","couldnt find or create /config/dnsconfig",0)
return err return err
} }
@ -55,8 +54,6 @@ func SetCorefile(domains string) error {
err = ioutil.WriteFile(dir+"/config/dnsconfig/Corefile", corebytes, 0644) err = ioutil.WriteFile(dir+"/config/dnsconfig/Corefile", corebytes, 0644)
if err != nil { if err != nil {
log.Println(err)
log.Println("")
return err return err
} }
return err return err

View file

@ -18,6 +18,7 @@ const TEN_YEARS_IN_SECONDS = 300000000
// == ACTIONS == (can only be set by GRPC) // == ACTIONS == (can only be set by GRPC)
const NODE_UPDATE_KEY = "updatekey" const NODE_UPDATE_KEY = "updatekey"
const NODE_SERVER_NAME = "netmaker"
const NODE_DELETE = "delete" const NODE_DELETE = "delete"
const NODE_IS_PENDING = "pending" const NODE_IS_PENDING = "pending"
const NODE_NOOP = "noop" const NODE_NOOP = "noop"
@ -56,12 +57,13 @@ type Node struct {
IsIngressGateway string `json:"isingressgateway" bson:"isingressgateway" yaml:"isingressgateway"` IsIngressGateway string `json:"isingressgateway" bson:"isingressgateway" yaml:"isingressgateway"`
EgressGatewayRanges []string `json:"egressgatewayranges" bson:"egressgatewayranges" yaml:"egressgatewayranges"` EgressGatewayRanges []string `json:"egressgatewayranges" bson:"egressgatewayranges" yaml:"egressgatewayranges"`
IngressGatewayRange string `json:"ingressgatewayrange" bson:"ingressgatewayrange" yaml:"ingressgatewayrange"` IngressGatewayRange string `json:"ingressgatewayrange" bson:"ingressgatewayrange" yaml:"ingressgatewayrange"`
StaticIP string `json:"staticip" bson:"staticip" yaml:"staticip"` StaticPubKey string `json:"staticpubkey" bson:"staticpubkey" yaml:"staticpubkey" validate:"checkyesorno"`
StaticPubKey string `json:"staticpubkey" bson:"staticpubkey" yaml:"staticpubkey"` StaticIP string `json:"staticip" bson:"staticip" yaml:"staticip" validate:"checkyesorno"`
UDPHolePunch string `json:"udpholepunch" bson:"udpholepunch" yaml:"udpholepunch" validate:"checkyesorno"` UDPHolePunch string `json:"udpholepunch" bson:"udpholepunch" yaml:"udpholepunch" validate:"checkyesorno"`
PullChanges string `json:"pullchanges" bson:"pullchanges" yaml:"pullchanges" validate:"checkyesorno"` PullChanges string `json:"pullchanges" bson:"pullchanges" yaml:"pullchanges" validate:"checkyesorno"`
DNSOn string `json:"dnson" bson:"dnson" yaml:"dnson" validate:"checkyesorno"` DNSOn string `json:"dnson" bson:"dnson" yaml:"dnson" validate:"checkyesorno"`
IsDualStack string `json:"isdualstack" bson:"isdualstack" yaml:"isdualstack" validate:"checkyesorno"` IsDualStack string `json:"isdualstack" bson:"isdualstack" yaml:"isdualstack" validate:"checkyesorno"`
IsServer string `json:"isserver" bson:"isserver" yaml:"isserver" validate:"checkyesorno"`
Action string `json:"action" bson:"action" yaml:"action"` Action string `json:"action" bson:"action" yaml:"action"`
IsLocal string `json:"islocal" bson:"islocal" yaml:"islocal" validate:"checkyesorno"` IsLocal string `json:"islocal" bson:"islocal" yaml:"islocal" validate:"checkyesorno"`
LocalRange string `json:"localrange" bson:"localrange" yaml:"localrange"` LocalRange string `json:"localrange" bson:"localrange" yaml:"localrange"`
@ -111,6 +113,12 @@ func (node *Node) SetIsDualStackDefault() {
} }
} }
func (node *Node) SetIsServerDefault() {
if node.IsServer != "yes" {
node.IsServer = "no"
}
}
func (node *Node) SetLastModified() { func (node *Node) SetLastModified() {
node.LastModified = time.Now().Unix() node.LastModified = time.Now().Unix()
} }
@ -137,6 +145,23 @@ func (node *Node) SetDefaultName() {
} }
} }
func (node *Node) CheckIsServer() bool {
nodeData, err := database.FetchRecords(database.NODES_TABLE_NAME)
if err != nil && !database.IsEmptyRecord(err) {
return false
}
for _, value := range nodeData {
var tmpNode Node
if err := json.Unmarshal([]byte(value), &tmpNode); err != nil {
continue
}
if tmpNode.Network == node.Network && tmpNode.MacAddress != node.MacAddress {
return false
}
}
return true
}
func (node *Node) GetNetwork() (Network, error) { func (node *Node) GetNetwork() (Network, error) {
var network Network var network Network
@ -204,6 +229,7 @@ func (node *Node) SetDefaults() {
node.SetPullChangesDefault() node.SetPullChangesDefault()
node.SetDefaultAction() node.SetDefaultAction()
node.SetID() node.SetID()
node.SetIsServerDefault()
node.KeyUpdateTimeStamp = time.Now().Unix() node.KeyUpdateTimeStamp = time.Now().Unix()
} }

View file

@ -232,7 +232,7 @@ func GetPeers(macaddress string, network string, server string, dualstack bool,
} }
allowedips = append(allowedips, addr6) allowedips = append(allowedips, addr6)
} }
if nodecfg.Name == "netmaker" { if nodecfg.IsServer == "yes" {
peer = wgtypes.PeerConfig{ peer = wgtypes.PeerConfig{
PublicKey: pubkey, PublicKey: pubkey,
PersistentKeepaliveInterval: &keepaliveserver, PersistentKeepaliveInterval: &keepaliveserver,

View file

@ -80,7 +80,9 @@ func InitWireguard(node *models.Node, privkey string, peers []wgtypes.PeerConfig
nodeport = int(node.ListenPort) nodeport = int(node.ListenPort)
conf := wgtypes.Config{} conf := wgtypes.Config{}
if nodecfg.UDPHolePunch == "yes" && nodecfg.Name != "netmaker" { if nodecfg.UDPHolePunch == "yes" &&
nodecfg.IsServer == "no" &&
nodecfg.IsIngressGateway == "no" {
conf = wgtypes.Config{ conf = wgtypes.Config{
PrivateKey: &key, PrivateKey: &key,
ReplacePeers: true, ReplacePeers: true,

View file

@ -163,10 +163,12 @@ func AddNetwork(network string) (bool, error) {
log.Println("could not change netclient directory permissions") log.Println("could not change netclient directory permissions")
return false, err return false, err
} }
log.Println("executing network join: " + "/etc/netclient/netclient " + "join " + "-t " + token + " -name " + "netmaker" + " -endpoint " + pubip) functions.PrintUserLog(models.NODE_SERVER_NAME,"executing network join: " + "/etc/netclient/netclient " + "join " + "-t " + token + " -name " + models.NODE_SERVER_NAME + " -endpoint " + pubip,0)
joinCMD := exec.Command("/etc/netclient/netclient", "join", "-t", token, "-name", "netmaker", "-endpoint", pubip) joinCMD := exec.Command("/etc/netclient/netclient", "join", "-t", token, "-name", models.NODE_SERVER_NAME, "-endpoint", pubip)
err = joinCMD.Start() err = joinCMD.Start()
if err != nil { if err != nil {
log.Println(err) log.Println(err)
} }