configs mostly working. Need to add in public dns default check.

This commit is contained in:
afeiszli 2021-05-05 22:03:37 +00:00
parent 46a81c9767
commit de3d81db3a
10 changed files with 163 additions and 210 deletions

View file

@ -15,7 +15,7 @@ import (
//setting dev by default //setting dev by default
func getEnv() string { func getEnv() string {
env := os.Getenv("APP_ENV") env := os.Getenv("NETMAKER_ENV")
if len(env) == 0 { if len(env) == 0 {
return "dev" return "dev"
@ -35,15 +35,17 @@ type EnvironmentConfig struct {
// ServerConfig : // ServerConfig :
type ServerConfig struct { type ServerConfig struct {
Host string `yaml:"host"` APIHost string `yaml:"apihost"`
ApiPort string `yaml:"apiport"` APIPort string `yaml:"apiport"`
GrpcPort string `yaml:"grpcport"` GRPCHost string `yaml:"grpchost"`
GRPCPort string `yaml:"grpcport"`
MasterKey string `yaml:"masterkey"` MasterKey string `yaml:"masterkey"`
AllowedOrigin string `yaml:"allowedorigin"` AllowedOrigin string `yaml:"allowedorigin"`
RestBackend bool `yaml:"restbackend"` RestBackend string `yaml:"restbackend"`
AgentBackend bool `yaml:"agentbackend"` AgentBackend string `yaml:"agentbackend"`
DefaultNetName string `yaml:"defaultnetname"` ClientMode string `yaml:"clientmode"`
DefaultNetRange string `yaml:"defaultnetrange"` DNSMode string `yaml:"dnsmode"`
DisableRemoteIPCheck string `yaml:"disableremoteipcheck"`
} }
type MongoConnConfig struct { type MongoConnConfig struct {
@ -59,13 +61,16 @@ type MongoConnConfig struct {
func readConfig() *EnvironmentConfig { func readConfig() *EnvironmentConfig {
file := fmt.Sprintf("config/environments/%s.yaml", getEnv()) file := fmt.Sprintf("config/environments/%s.yaml", getEnv())
f, err := os.Open(file) f, err := os.Open(file)
var cfg EnvironmentConfig
if err != nil { if err != nil {
log.Fatal(err) //log.Fatal(err)
os.Exit(2) //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
} }
defer f.Close() defer f.Close()
var cfg EnvironmentConfig
decoder := yaml.NewDecoder(f) decoder := yaml.NewDecoder(f)
err = decoder.Decode(&cfg) err = decoder.Decode(&cfg)
if err != nil { if err != nil {

View file

@ -2,6 +2,7 @@ package controller
import ( import (
"github.com/gravitl/netmaker/mongoconn" "github.com/gravitl/netmaker/mongoconn"
"github.com/gravitl/netmaker/servercfg"
"os/signal" "os/signal"
"os" "os"
"fmt" "fmt"
@ -10,7 +11,6 @@ import (
"github.com/gorilla/mux" "github.com/gorilla/mux"
"github.com/gorilla/handlers" "github.com/gorilla/handlers"
"sync" "sync"
"github.com/gravitl/netmaker/config"
) )
@ -22,7 +22,7 @@ func HandleRESTRequests(wg *sync.WaitGroup) {
// Currently allowed dev origin is all. Should change in prod // Currently allowed dev origin is all. Should change in prod
// should consider analyzing the allowed methods further // should consider analyzing the allowed methods further
headersOk := handlers.AllowedHeaders([]string{"Access-Control-Allow-Origin", "X-Requested-With", "Content-Type", "authorization"}) headersOk := handlers.AllowedHeaders([]string{"Access-Control-Allow-Origin", "X-Requested-With", "Content-Type", "authorization"})
originsOk := handlers.AllowedOrigins([]string{config.Config.Server.AllowedOrigin}) originsOk := handlers.AllowedOrigins([]string{servercfg.GetAllowedOrigin()})
methodsOk := handlers.AllowedMethods([]string{"GET", "PUT", "POST", "DELETE"}) methodsOk := handlers.AllowedMethods([]string{"GET", "PUT", "POST", "DELETE"})
nodeHandlers(r) nodeHandlers(r)
@ -32,10 +32,7 @@ func HandleRESTRequests(wg *sync.WaitGroup) {
fileHandlers(r) fileHandlers(r)
serverHandlers(r) serverHandlers(r)
port := config.Config.Server.ApiPort port := servercfg.GetAPIPort()
if os.Getenv("API_PORT") != "" {
port = os.Getenv("API_PORT")
}
srv := &http.Server{Addr: ":" + port, Handler: handlers.CORS(originsOk, headersOk, methodsOk)(r)} srv := &http.Server{Addr: ":" + port, Handler: handlers.CORS(originsOk, headersOk, methodsOk)(r)}
go func(){ go func(){

View file

@ -9,9 +9,8 @@ import (
"net/http" "net/http"
"strings" "strings"
"time" "time"
"os"
"github.com/gorilla/mux" "github.com/gorilla/mux"
"github.com/gravitl/netmaker/config" "github.com/gravitl/netmaker/servercfg"
"github.com/gravitl/netmaker/functions" "github.com/gravitl/netmaker/functions"
"github.com/gravitl/netmaker/models" "github.com/gravitl/netmaker/models"
"github.com/gravitl/netmaker/mongoconn" "github.com/gravitl/netmaker/mongoconn"
@ -83,7 +82,7 @@ func securityCheck(next http.Handler) http.HandlerFunc {
//Consider a more secure way of setting master key //Consider a more secure way of setting master key
func authenticateMaster(tokenString string) bool { func authenticateMaster(tokenString string) bool {
if tokenString == config.Config.Server.MasterKey || (tokenString == os.Getenv("MASTER_KEY") && tokenString != "") { if tokenString == servercfg.GetMasterKey() {
return true return true
} }
return false return false

View file

@ -3,7 +3,7 @@ package controller
import ( import (
"github.com/gravitl/netmaker/models" "github.com/gravitl/netmaker/models"
"github.com/gravitl/netmaker/serverctl" "github.com/gravitl/netmaker/serverctl"
"github.com/gravitl/netmaker/config" "github.com/gravitl/netmaker/servercfg"
"encoding/json" "encoding/json"
"strings" "strings"
"net/http" "net/http"
@ -12,6 +12,7 @@ import (
func serverHandlers(r *mux.Router) { func serverHandlers(r *mux.Router) {
r.HandleFunc("/api/server/addnetwork/{network}", securityCheckServer(http.HandlerFunc(addNetwork))).Methods("POST") r.HandleFunc("/api/server/addnetwork/{network}", securityCheckServer(http.HandlerFunc(addNetwork))).Methods("POST")
r.HandleFunc("/api/server/getconfig", securityCheckServer(http.HandlerFunc(getConfig))).Methods("GET")
r.HandleFunc("/api/server/removenetwork/{network}", securityCheckServer(http.HandlerFunc(removeNetwork))).Methods("DELETE") r.HandleFunc("/api/server/removenetwork/{network}", securityCheckServer(http.HandlerFunc(removeNetwork))).Methods("DELETE")
} }
@ -49,7 +50,7 @@ func securityCheckServer(next http.Handler) http.HandlerFunc {
} }
//Consider a more secure way of setting master key //Consider a more secure way of setting master key
func authenticateMasterServer(tokenString string) bool { func authenticateMasterServer(tokenString string) bool {
if tokenString == config.Config.Server.MasterKey { if tokenString == servercfg.GetMasterKey() {
return true return true
} }
return false return false
@ -72,6 +73,18 @@ func removeNetwork(w http.ResponseWriter, r *http.Request) {
json.NewEncoder(w).Encode("Server removed from network " + params["network"]) json.NewEncoder(w).Encode("Server removed from network " + params["network"])
} }
func getConfig(w http.ResponseWriter, r *http.Request) {
// Set header
w.Header().Set("Content-Type", "application/json")
// get params
scfg := servercfg.GetConfig()
w.WriteHeader(http.StatusOK)
json.NewEncoder(w).Encode(scfg)
}
func addNetwork(w http.ResponseWriter, r *http.Request) { func addNetwork(w http.ResponseWriter, r *http.Request) {
// Set header // Set header
w.Header().Set("Content-Type", "application/json") w.Header().Set("Content-Type", "application/json")

View file

@ -2,9 +2,8 @@ package functions
import ( import (
"time" "time"
"os"
"github.com/gravitl/netmaker/config"
"github.com/gravitl/netmaker/models" "github.com/gravitl/netmaker/models"
"github.com/gravitl/netmaker/servercfg"
"github.com/dgrijalva/jwt-go" "github.com/dgrijalva/jwt-go"
) )
@ -51,7 +50,7 @@ func CreateUserJWT(username string, isadmin bool) (response string, err error) {
func VerifyUserToken(tokenString string) (username string, isadmin bool, err error) { func VerifyUserToken(tokenString string) (username string, isadmin bool, err error) {
claims := &models.UserClaims{} claims := &models.UserClaims{}
if tokenString == config.Config.Server.MasterKey || (tokenString == os.Getenv("MASTER_KEY") && tokenString != "") { if tokenString == servercfg.GetMasterKey() {
return "masteradministrator", true, nil return "masteradministrator", true, nil
} }
@ -71,7 +70,7 @@ func VerifyToken(tokenString string) (macaddress string, network string, err err
//this may be a stupid way of serving up a master key //this may be a stupid way of serving up a master key
//TODO: look into a different method. Encryption? //TODO: look into a different method. Encryption?
if tokenString == config.Config.Server.MasterKey || (tokenString == os.Getenv("MASTER_KEY") && tokenString != "") { if tokenString == servercfg.GetMasterKey() {
return "mastermac", "", nil return "mastermac", "", nil
} }

23
main.go
View file

@ -5,17 +5,11 @@ package main
import ( import (
"log" "log"
"flag"
"github.com/gravitl/netmaker/models"
"github.com/gravitl/netmaker/controllers" "github.com/gravitl/netmaker/controllers"
"github.com/gravitl/netmaker/servercfg"
"github.com/gravitl/netmaker/serverctl" "github.com/gravitl/netmaker/serverctl"
"github.com/gravitl/netmaker/functions"
"github.com/gravitl/netmaker/mongoconn" "github.com/gravitl/netmaker/mongoconn"
"github.com/gravitl/netmaker/config"
"go.mongodb.org/mongo-driver/bson"
"fmt" "fmt"
"time"
"strings"
"os" "os"
"os/exec" "os/exec"
"net" "net"
@ -23,7 +17,6 @@ import (
"strconv" "strconv"
"sync" "sync"
"os/signal" "os/signal"
"go.mongodb.org/mongo-driver/mongo"
service "github.com/gravitl/netmaker/controllers" service "github.com/gravitl/netmaker/controllers"
nodepb "github.com/gravitl/netmaker/grpc" nodepb "github.com/gravitl/netmaker/grpc"
"google.golang.org/grpc" "google.golang.org/grpc"
@ -33,7 +26,7 @@ import (
func main() { func main() {
//Client Mode Prereq Check //Client Mode Prereq Check
if serverctl.IsClientMode() { if servercfg.IsClientMode() {
cmd := exec.Command("id", "-u") cmd := exec.Command("id", "-u")
output, err := cmd.Output() output, err := cmd.Output()
@ -62,7 +55,7 @@ func main() {
fmt.Printf("Error creating default network: %v", err) fmt.Printf("Error creating default network: %v", err)
} }
if created && serverctl.IsClientMode() { if created && servercfg.IsClientMode() {
installserver = true installserver = true
} }
@ -74,17 +67,17 @@ func main() {
var waitnetwork sync.WaitGroup var waitnetwork sync.WaitGroup
//Run Agent Server //Run Agent Server
if serverctl.IsAgentBackend() { if servercfg.IsAgentBackend() {
waitnetwork.Add(1) waitnetwork.Add(1)
go runGRPC(&waitnetwork, installserver) go runGRPC(&waitnetwork, installserver)
} }
//Run Rest Server //Run Rest Server
if serverctl.IsRestBackend() { if servercfg.IsRestBackend() {
waitnetwork.Add(1) waitnetwork.Add(1)
controller.HandleRESTRequests(&waitnetwork) controller.HandleRESTRequests(&waitnetwork)
} }
if !serverctl.IsAgentBackend() && !serverctl.IsRestBackend { if !servercfg.IsAgentBackend() && !servercfg.IsRestBackend() {
fmt.Println("Oops! No Server Mode selected. Nothing is being served! Set either Agent mode (AGENT_BACKEND) or Rest mode (REST_BACKEND) to 'true'.") fmt.Println("Oops! No Server Mode selected. Nothing is being served! Set either Agent mode (AGENT_BACKEND) or Rest mode (REST_BACKEND) to 'true'.")
} }
waitnetwork.Wait() waitnetwork.Wait()
@ -101,9 +94,9 @@ func runGRPC(wg *sync.WaitGroup, installserver bool) {
// Pipe flags to one another (log.LstdFLags = log.Ldate | log.Ltime) // Pipe flags to one another (log.LstdFLags = log.Ldate | log.Ltime)
log.SetFlags(log.LstdFlags | log.Lshortfile) log.SetFlags(log.LstdFlags | log.Lshortfile)
grpcport := serverctl.GetGRPCPort() grpcport := servercfg.GetGRPCPort()
listener, err := net.Listen("tcp", grpcport) listener, err := net.Listen("tcp", ":"+grpcport)
// Handle errors if any // Handle errors if any
if err != nil { if err != nil {
log.Fatalf("Unable to listen on port" + grpcport + ": %v", err) log.Fatalf("Unable to listen on port" + grpcport + ": %v", err)

View file

@ -3,10 +3,9 @@ package mongoconn
import ( import (
"context" "context"
"log" "log"
"os"
"go.mongodb.org/mongo-driver/mongo" "go.mongodb.org/mongo-driver/mongo"
"go.mongodb.org/mongo-driver/mongo/options" "go.mongodb.org/mongo-driver/mongo/options"
"github.com/gravitl/netmaker/config" "github.com/gravitl/netmaker/servercfg"
) )
var Client *mongo.Client var Client *mongo.Client
@ -19,51 +18,13 @@ var port string
var opts string var opts string
func setVars() { func setVars() {
user = servercfg.GetMongoUser()
//defaults pass = servercfg.GetMongoPass()
user = "admin" host = servercfg.GetMongoHost()
pass = "password" port = servercfg.GetMongoPort()
host = "localhost" opts = servercfg.GetMongoOpts()
port = "27017"
opts = "/?authSource=admin"
//override with settings from config file
if config.Config.MongoConn.User != "" {
user = config.Config.MongoConn.User
}
if config.Config.MongoConn.Pass != "" {
pass = config.Config.MongoConn.Pass
}
if config.Config.MongoConn.Host != "" {
host = config.Config.MongoConn.Host
}
if config.Config.MongoConn.Port != "" {
port = config.Config.MongoConn.Port
}
if config.Config.MongoConn.Opts != "" {
opts = config.Config.MongoConn.Opts
}
//override with settings from env
if os.Getenv("MONGO_USER") != "" {
user = os.Getenv("MONGO_USER")
}
if os.Getenv("MONGO_PASS") != "" {
pass = os.Getenv("MONGO_PASS")
}
if os.Getenv("MONGO_HOST") != "" {
host = os.Getenv("MONGO_HOST")
}
if os.Getenv("MONGO_PORT") != "" {
port = os.Getenv("MONGO_PORT")
}
if os.Getenv("MONGO_OPTS") != "" {
opts = os.Getenv("MONGO_OPTS")
}
} }
//TODO: are we even using this besides at startup? Is it truely necessary?
//TODO: Use config file instead of os.Getenv
func ConnectDatabase() { func ConnectDatabase() {
// Set client options // Set client options

53
servercfg/mongoconf.go Normal file
View file

@ -0,0 +1,53 @@
package servercfg
import (
"github.com/gravitl/netmaker/config"
"os"
)
func GetMongoUser() string {
user := "mongoadmin"
if os.Getenv("MONGO_ADMIN") != "" {
user = os.Getenv("MONGO_ADMIN")
} else if config.Config.MongoConn.User != "" {
user = config.Config.MongoConn.User
}
return user
}
func GetMongoPass() string {
pass := "mongopass"
if os.Getenv("MONGO_PASS") != "" {
pass = os.Getenv("MONGO_PASS")
} else if config.Config.MongoConn.Pass != "" {
pass = config.Config.MongoConn.Pass
}
return pass
}
func GetMongoHost() string {
host := "127.0.0.1"
if os.Getenv("MONGO_HOST") != "" {
host = os.Getenv("MONGO_HOST")
} else if config.Config.MongoConn.Host != "" {
host = config.Config.MongoConn.Host
}
return host
}
func GetMongoPort() string {
port := "27017"
if os.Getenv("MONGO_PORT") != "" {
port = os.Getenv("MONGO_PORT")
} else if config.Config.MongoConn.Port != "" {
port = config.Config.MongoConn.Port
}
return port
}
func GetMongoOpts() string {
opts := "/?authSource=admin"
if os.Getenv("MONGO_OPTS") != "" {
opts = os.Getenv("MONGO_OPTS")
} else if config.Config.MongoConn.Opts != "" {
opts = config.Config.MongoConn.Opts
}
return opts
}

View file

@ -1,4 +1,12 @@
package serverctl package servercfg
import (
"github.com/gravitl/netmaker/config"
"net/http"
"io/ioutil"
"os"
"errors"
)
func SetHost() error { func SetHost() error {
remoteip, err := GetPublicIP() remoteip, err := GetPublicIP()
@ -6,9 +14,41 @@ func SetHost() error {
return err return err
} }
os.Setenv("SERVER_HOST", remoteip) os.Setenv("SERVER_HOST", remoteip)
return nil
} }
func GetConfig() config.ServerConfig {
var cfg config.ServerConfig
cfg.APIHost = GetAPIHost()
cfg.APIPort = GetAPIPort()
cfg.GRPCHost = GetGRPCHost()
cfg.GRPCPort = GetGRPCPort()
cfg.MasterKey = "(hidden)"
cfg.AllowedOrigin = GetAllowedOrigin()
cfg.RestBackend = "off"
if IsRestBackend() {
cfg.RestBackend = "on"
}
cfg.AgentBackend = "off"
if IsAgentBackend() {
cfg.AgentBackend = "on"
}
cfg.ClientMode = "off"
if IsClientMode() {
cfg.ClientMode = "on"
}
cfg.DNSMode = "off"
if IsDNSMode() {
cfg.DNSMode = "on"
}
cfg.DisableRemoteIPCheck = "off"
if DisableRemoteIPCheck() {
cfg.DisableRemoteIPCheck = "on"
}
return cfg
}
func GetAPIHost() string { func GetAPIHost() string {
serverhost := 127.0.0.1 serverhost := "127.0.0.1"
if os.Getenv("SERVER_HTTP_HOST") != "" { if os.Getenv("SERVER_HTTP_HOST") != "" {
serverhost = os.Getenv("SERVER_HTTP_HOST") serverhost = os.Getenv("SERVER_HTTP_HOST")
} else if config.Config.Server.APIHost != "" { } else if config.Config.Server.APIHost != "" {
@ -28,7 +68,7 @@ func GetAPIPort() string {
return apiport return apiport
} }
func GetGRPCHost() string { func GetGRPCHost() string {
serverhost := 127.0.0.1 serverhost := "127.0.0.1"
if os.Getenv("SERVER_GRPC_HOST") != "" { if os.Getenv("SERVER_GRPC_HOST") != "" {
serverhost = os.Getenv("SERVER_GRPC_HOST") serverhost = os.Getenv("SERVER_GRPC_HOST")
} else if config.Config.Server.GRPCHost != "" { } else if config.Config.Server.GRPCHost != "" {
@ -68,7 +108,7 @@ func GetAllowedOrigin() string {
func IsRestBackend() bool { func IsRestBackend() bool {
isrest := true isrest := true
if os.Getenv("REST_BACKEND") != "" { if os.Getenv("REST_BACKEND") != "" {
if os.Getenv("REST_BACKEND") == "off" if os.Getenv("REST_BACKEND") == "off" {
isrest = false isrest = false
} }
} else if config.Config.Server.RestBackend != "" { } else if config.Config.Server.RestBackend != "" {
@ -81,7 +121,7 @@ func IsRestBackend() bool {
func IsAgentBackend() bool { func IsAgentBackend() bool {
isagent := true isagent := true
if os.Getenv("AGENT_BACKEND") != "" { if os.Getenv("AGENT_BACKEND") != "" {
if os.Getenv("AGENT_BACKEND") == "off" if os.Getenv("AGENT_BACKEND") == "off" {
isagent = false isagent = false
} }
} else if config.Config.Server.AgentBackend != "" { } else if config.Config.Server.AgentBackend != "" {
@ -94,7 +134,7 @@ func IsAgentBackend() bool {
func IsClientMode() bool { func IsClientMode() bool {
isclient := true isclient := true
if os.Getenv("CLIENT_MODE") != "" { if os.Getenv("CLIENT_MODE") != "" {
if os.Getenv("CLIENT_MODE") == "off" if os.Getenv("CLIENT_MODE") == "off" {
isclient = false isclient = false
} }
} else if config.Config.Server.ClientMode != "" { } else if config.Config.Server.ClientMode != "" {
@ -107,7 +147,7 @@ func IsClientMode() bool {
func IsDNSMode() bool { func IsDNSMode() bool {
isdns := true isdns := true
if os.Getenv("DNS_MODE") != "" { if os.Getenv("DNS_MODE") != "" {
if os.Getenv("DNS_MODE") == "off" if os.Getenv("DNS_MODE") == "off" {
isdns = false isdns = false
} }
} else if config.Config.Server.DNSMode != "" { } else if config.Config.Server.DNSMode != "" {
@ -120,11 +160,11 @@ func IsDNSMode() bool {
func DisableRemoteIPCheck() bool { func DisableRemoteIPCheck() bool {
disabled := false disabled := false
if os.Getenv("DISABLE_REMOTE_IP_CHECK") != "" { if os.Getenv("DISABLE_REMOTE_IP_CHECK") != "" {
if os.Getenv("DISABLE_REMOTE_IP_CHECK") == "on" if os.Getenv("DISABLE_REMOTE_IP_CHECK") == "on" {
disabled = true disabled = true
} }
} else if config.Config.Server.DisableRemoteIpCheck != "" { } else if config.Config.Server.DisableRemoteIPCheck != "" {
if config.Config.Server.DisableRemoteIpCheck == "on" { if config.Config.Server.DisableRemoteIPCheck == "on" {
disabled= true disabled= true
} }
} }

View file

@ -2,10 +2,13 @@ package serverctl
import ( import (
"fmt" "fmt"
"net/http"
"io/ioutil"
"github.com/gravitl/netmaker/functions" "github.com/gravitl/netmaker/functions"
"github.com/gravitl/netmaker/models"
"github.com/gravitl/netmaker/mongoconn"
"github.com/gravitl/netmaker/servercfg"
"io" "io"
"time"
"context"
"errors" "errors"
"os" "os"
"os/exec" "os/exec"
@ -16,7 +19,7 @@ func CreateDefaultNetwork() (bool, error) {
fmt.Println("Creating default network...") fmt.Println("Creating default network...")
iscreated := false iscreated := false
exists, err := functions.NetworkExists(config.Config.Server.DefaultNetName) exists, err := functions.NetworkExists("default")
if exists || err != nil { if exists || err != nil {
fmt.Println("Default network already exists. Skipping...") fmt.Println("Default network already exists. Skipping...")
@ -56,116 +59,6 @@ func CreateDefaultNetwork() (bool, error) {
} }
func GetHTTPPort() (string, error) {
}
func GetGRPCPort() (string, error) {
}
func GetServerDomain() (string, error) {
}
func modConfig(node *nodepb.Node) error{
network := node.Nodenetwork
if network == "" {
return errors.New("No Network Provided")
}
modconfig, err := config.ReadConfig(network)
if err != nil {
return err
}
nodecfg := modconfig.Node
if node.Name != ""{
nodecfg.Name = node.Name
}
if node.Interface != ""{
nodecfg.Interface = node.Interface
}
if node.Nodenetwork != ""{
nodecfg.Network = node.Nodenetwork
}
if node.Macaddress != ""{
nodecfg.MacAddress = node.Macaddress
}
if node.Localaddress != ""{
nodecfg.LocalAddress = node.Localaddress
}
if node.Postup != ""{
nodecfg.PostUp = node.Postup
}
if node.Postdown != ""{
nodecfg.PostDown = node.Postdown
}
if node.Listenport != 0{
nodecfg.Port = node.Listenport
}
if node.Keepalive != 0{
nodecfg.KeepAlive = node.Keepalive
}
if node.Publickey != ""{
nodecfg.PublicKey = node.Publickey
}
if node.Endpoint != ""{
nodecfg.Endpoint = node.Endpoint
}
if node.Password != ""{
nodecfg.Password = node.Password
}
if node.Address != ""{
nodecfg.WGAddress = node.Address
}
if node.Postchanges != "" {
nodecfg.PostChanges = node.Postchanges
}
if node.Localrange != "" && node.Islocal {
nodecfg.IsLocal = true
nodecfg.LocalRange = node.Localrange
}
modconfig.Node = nodecfg
err = config.Write(modconfig, network)
return err
}
func SetGlobalConfig(globalconf models.GlobalConfig) (error) {
if err != nil && err != mongo.ErrNoDocuments{
log.Fatalf("Unable to set global config: %v", err)
}
collection := mongoconn.Client.Database("netmaker").Collection("config")
ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
create, _, err := functions.GetGlobalConfig()
if create {
_, err := collection.InsertOne(ctx, globalconf)
defer cancel()
if err != nil {
if err == mongo.ErrNoDocuments || strings.Contains(err.Error(), "no documents in result"){
return nil
} else {
return err
}
}
} else {
filter := bson.M{"name": "netmaker"}
update := bson.D{
{"$set", bson.D{
{"servergrpc", globalconf.ServerGRPC},
{"portgrpc", globalconf.PortGRPC},
}},
}
err := collection.FindOneAndUpdate(ctx, filter, update).Decode(&globalconf)
if err == mongo.ErrNoDocuments {
//if err == mongo.ErrNoDocuments || strings.Contains(err.Error(), "no documents in result"){
return nil
}
}
return err
}
func DownloadNetclient() error { func DownloadNetclient() error {
/* /*
// Get the data // Get the data
@ -247,7 +140,7 @@ func RemoveNetwork(network string) (bool, error) {
} }
func AddNetwork(network string) (bool, error) { func AddNetwork(network string) (bool, error) {
pubip, err := GetPublicIP() pubip, err := servercfg.GetPublicIP()
if err != nil { if err != nil {
fmt.Println("could not get public IP.") fmt.Println("could not get public IP.")
return false, err return false, err