mirror of
https://github.com/gravitl/netmaker.git
synced 2025-09-07 21:54:54 +08:00
configs mostly working. Need to add in public dns default check.
This commit is contained in:
parent
46a81c9767
commit
de3d81db3a
10 changed files with 163 additions and 210 deletions
|
@ -15,7 +15,7 @@ import (
|
|||
//setting dev by default
|
||||
func getEnv() string {
|
||||
|
||||
env := os.Getenv("APP_ENV")
|
||||
env := os.Getenv("NETMAKER_ENV")
|
||||
|
||||
if len(env) == 0 {
|
||||
return "dev"
|
||||
|
@ -35,15 +35,17 @@ type EnvironmentConfig struct {
|
|||
|
||||
// ServerConfig :
|
||||
type ServerConfig struct {
|
||||
Host string `yaml:"host"`
|
||||
ApiPort string `yaml:"apiport"`
|
||||
GrpcPort string `yaml:"grpcport"`
|
||||
APIHost string `yaml:"apihost"`
|
||||
APIPort string `yaml:"apiport"`
|
||||
GRPCHost string `yaml:"grpchost"`
|
||||
GRPCPort string `yaml:"grpcport"`
|
||||
MasterKey string `yaml:"masterkey"`
|
||||
AllowedOrigin string `yaml:"allowedorigin"`
|
||||
RestBackend bool `yaml:"restbackend"`
|
||||
AgentBackend bool `yaml:"agentbackend"`
|
||||
DefaultNetName string `yaml:"defaultnetname"`
|
||||
DefaultNetRange string `yaml:"defaultnetrange"`
|
||||
RestBackend string `yaml:"restbackend"`
|
||||
AgentBackend string `yaml:"agentbackend"`
|
||||
ClientMode string `yaml:"clientmode"`
|
||||
DNSMode string `yaml:"dnsmode"`
|
||||
DisableRemoteIPCheck string `yaml:"disableremoteipcheck"`
|
||||
}
|
||||
|
||||
type MongoConnConfig struct {
|
||||
|
@ -59,13 +61,16 @@ type MongoConnConfig struct {
|
|||
func readConfig() *EnvironmentConfig {
|
||||
file := fmt.Sprintf("config/environments/%s.yaml", getEnv())
|
||||
f, err := os.Open(file)
|
||||
var cfg EnvironmentConfig
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
os.Exit(2)
|
||||
//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
|
||||
}
|
||||
defer f.Close()
|
||||
|
||||
var cfg EnvironmentConfig
|
||||
decoder := yaml.NewDecoder(f)
|
||||
err = decoder.Decode(&cfg)
|
||||
if err != nil {
|
||||
|
|
|
@ -2,6 +2,7 @@ package controller
|
|||
|
||||
import (
|
||||
"github.com/gravitl/netmaker/mongoconn"
|
||||
"github.com/gravitl/netmaker/servercfg"
|
||||
"os/signal"
|
||||
"os"
|
||||
"fmt"
|
||||
|
@ -10,7 +11,6 @@ import (
|
|||
"github.com/gorilla/mux"
|
||||
"github.com/gorilla/handlers"
|
||||
"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
|
||||
// should consider analyzing the allowed methods further
|
||||
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"})
|
||||
|
||||
nodeHandlers(r)
|
||||
|
@ -32,10 +32,7 @@ func HandleRESTRequests(wg *sync.WaitGroup) {
|
|||
fileHandlers(r)
|
||||
serverHandlers(r)
|
||||
|
||||
port := config.Config.Server.ApiPort
|
||||
if os.Getenv("API_PORT") != "" {
|
||||
port = os.Getenv("API_PORT")
|
||||
}
|
||||
port := servercfg.GetAPIPort()
|
||||
|
||||
srv := &http.Server{Addr: ":" + port, Handler: handlers.CORS(originsOk, headersOk, methodsOk)(r)}
|
||||
go func(){
|
||||
|
|
|
@ -9,9 +9,8 @@ import (
|
|||
"net/http"
|
||||
"strings"
|
||||
"time"
|
||||
"os"
|
||||
"github.com/gorilla/mux"
|
||||
"github.com/gravitl/netmaker/config"
|
||||
"github.com/gravitl/netmaker/servercfg"
|
||||
"github.com/gravitl/netmaker/functions"
|
||||
"github.com/gravitl/netmaker/models"
|
||||
"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
|
||||
func authenticateMaster(tokenString string) bool {
|
||||
if tokenString == config.Config.Server.MasterKey || (tokenString == os.Getenv("MASTER_KEY") && tokenString != "") {
|
||||
if tokenString == servercfg.GetMasterKey() {
|
||||
return true
|
||||
}
|
||||
return false
|
||||
|
|
|
@ -3,7 +3,7 @@ package controller
|
|||
import (
|
||||
"github.com/gravitl/netmaker/models"
|
||||
"github.com/gravitl/netmaker/serverctl"
|
||||
"github.com/gravitl/netmaker/config"
|
||||
"github.com/gravitl/netmaker/servercfg"
|
||||
"encoding/json"
|
||||
"strings"
|
||||
"net/http"
|
||||
|
@ -12,6 +12,7 @@ import (
|
|||
|
||||
func serverHandlers(r *mux.Router) {
|
||||
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")
|
||||
}
|
||||
|
||||
|
@ -49,7 +50,7 @@ func securityCheckServer(next http.Handler) http.HandlerFunc {
|
|||
}
|
||||
//Consider a more secure way of setting master key
|
||||
func authenticateMasterServer(tokenString string) bool {
|
||||
if tokenString == config.Config.Server.MasterKey {
|
||||
if tokenString == servercfg.GetMasterKey() {
|
||||
return true
|
||||
}
|
||||
return false
|
||||
|
@ -72,6 +73,18 @@ func removeNetwork(w http.ResponseWriter, r *http.Request) {
|
|||
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) {
|
||||
// Set header
|
||||
w.Header().Set("Content-Type", "application/json")
|
||||
|
|
|
@ -2,9 +2,8 @@ package functions
|
|||
|
||||
import (
|
||||
"time"
|
||||
"os"
|
||||
"github.com/gravitl/netmaker/config"
|
||||
"github.com/gravitl/netmaker/models"
|
||||
"github.com/gravitl/netmaker/servercfg"
|
||||
"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) {
|
||||
claims := &models.UserClaims{}
|
||||
|
||||
if tokenString == config.Config.Server.MasterKey || (tokenString == os.Getenv("MASTER_KEY") && tokenString != "") {
|
||||
if tokenString == servercfg.GetMasterKey() {
|
||||
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
|
||||
//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
|
||||
}
|
||||
|
||||
|
|
23
main.go
23
main.go
|
@ -5,17 +5,11 @@ package main
|
|||
|
||||
import (
|
||||
"log"
|
||||
"flag"
|
||||
"github.com/gravitl/netmaker/models"
|
||||
"github.com/gravitl/netmaker/controllers"
|
||||
"github.com/gravitl/netmaker/servercfg"
|
||||
"github.com/gravitl/netmaker/serverctl"
|
||||
"github.com/gravitl/netmaker/functions"
|
||||
"github.com/gravitl/netmaker/mongoconn"
|
||||
"github.com/gravitl/netmaker/config"
|
||||
"go.mongodb.org/mongo-driver/bson"
|
||||
"fmt"
|
||||
"time"
|
||||
"strings"
|
||||
"os"
|
||||
"os/exec"
|
||||
"net"
|
||||
|
@ -23,7 +17,6 @@ import (
|
|||
"strconv"
|
||||
"sync"
|
||||
"os/signal"
|
||||
"go.mongodb.org/mongo-driver/mongo"
|
||||
service "github.com/gravitl/netmaker/controllers"
|
||||
nodepb "github.com/gravitl/netmaker/grpc"
|
||||
"google.golang.org/grpc"
|
||||
|
@ -33,7 +26,7 @@ import (
|
|||
func main() {
|
||||
|
||||
//Client Mode Prereq Check
|
||||
if serverctl.IsClientMode() {
|
||||
if servercfg.IsClientMode() {
|
||||
cmd := exec.Command("id", "-u")
|
||||
output, err := cmd.Output()
|
||||
|
||||
|
@ -62,7 +55,7 @@ func main() {
|
|||
fmt.Printf("Error creating default network: %v", err)
|
||||
}
|
||||
|
||||
if created && serverctl.IsClientMode() {
|
||||
if created && servercfg.IsClientMode() {
|
||||
installserver = true
|
||||
}
|
||||
|
||||
|
@ -74,17 +67,17 @@ func main() {
|
|||
var waitnetwork sync.WaitGroup
|
||||
|
||||
//Run Agent Server
|
||||
if serverctl.IsAgentBackend() {
|
||||
if servercfg.IsAgentBackend() {
|
||||
waitnetwork.Add(1)
|
||||
go runGRPC(&waitnetwork, installserver)
|
||||
}
|
||||
|
||||
//Run Rest Server
|
||||
if serverctl.IsRestBackend() {
|
||||
if servercfg.IsRestBackend() {
|
||||
waitnetwork.Add(1)
|
||||
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'.")
|
||||
}
|
||||
waitnetwork.Wait()
|
||||
|
@ -101,9 +94,9 @@ func runGRPC(wg *sync.WaitGroup, installserver bool) {
|
|||
// Pipe flags to one another (log.LstdFLags = log.Ldate | log.Ltime)
|
||||
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
|
||||
if err != nil {
|
||||
log.Fatalf("Unable to listen on port" + grpcport + ": %v", err)
|
||||
|
|
|
@ -3,10 +3,9 @@ package mongoconn
|
|||
import (
|
||||
"context"
|
||||
"log"
|
||||
"os"
|
||||
"go.mongodb.org/mongo-driver/mongo"
|
||||
"go.mongodb.org/mongo-driver/mongo/options"
|
||||
"github.com/gravitl/netmaker/config"
|
||||
"github.com/gravitl/netmaker/servercfg"
|
||||
)
|
||||
|
||||
var Client *mongo.Client
|
||||
|
@ -19,51 +18,13 @@ var port string
|
|||
var opts string
|
||||
|
||||
func setVars() {
|
||||
|
||||
//defaults
|
||||
user = "admin"
|
||||
pass = "password"
|
||||
host = "localhost"
|
||||
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")
|
||||
}
|
||||
user = servercfg.GetMongoUser()
|
||||
pass = servercfg.GetMongoPass()
|
||||
host = servercfg.GetMongoHost()
|
||||
port = servercfg.GetMongoPort()
|
||||
opts = servercfg.GetMongoOpts()
|
||||
}
|
||||
|
||||
//TODO: are we even using this besides at startup? Is it truely necessary?
|
||||
//TODO: Use config file instead of os.Getenv
|
||||
func ConnectDatabase() {
|
||||
// Set client options
|
||||
|
||||
|
|
53
servercfg/mongoconf.go
Normal file
53
servercfg/mongoconf.go
Normal 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
|
||||
}
|
||||
|
|
@ -1,4 +1,12 @@
|
|||
package serverctl
|
||||
package servercfg
|
||||
|
||||
import (
|
||||
"github.com/gravitl/netmaker/config"
|
||||
"net/http"
|
||||
"io/ioutil"
|
||||
"os"
|
||||
"errors"
|
||||
)
|
||||
|
||||
func SetHost() error {
|
||||
remoteip, err := GetPublicIP()
|
||||
|
@ -6,9 +14,41 @@ func SetHost() error {
|
|||
return err
|
||||
}
|
||||
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 {
|
||||
serverhost := 127.0.0.1
|
||||
serverhost := "127.0.0.1"
|
||||
if os.Getenv("SERVER_HTTP_HOST") != "" {
|
||||
serverhost = os.Getenv("SERVER_HTTP_HOST")
|
||||
} else if config.Config.Server.APIHost != "" {
|
||||
|
@ -28,7 +68,7 @@ func GetAPIPort() string {
|
|||
return apiport
|
||||
}
|
||||
func GetGRPCHost() string {
|
||||
serverhost := 127.0.0.1
|
||||
serverhost := "127.0.0.1"
|
||||
if os.Getenv("SERVER_GRPC_HOST") != "" {
|
||||
serverhost = os.Getenv("SERVER_GRPC_HOST")
|
||||
} else if config.Config.Server.GRPCHost != "" {
|
||||
|
@ -68,7 +108,7 @@ func GetAllowedOrigin() string {
|
|||
func IsRestBackend() bool {
|
||||
isrest := true
|
||||
if os.Getenv("REST_BACKEND") != "" {
|
||||
if os.Getenv("REST_BACKEND") == "off"
|
||||
if os.Getenv("REST_BACKEND") == "off" {
|
||||
isrest = false
|
||||
}
|
||||
} else if config.Config.Server.RestBackend != "" {
|
||||
|
@ -81,7 +121,7 @@ func IsRestBackend() bool {
|
|||
func IsAgentBackend() bool {
|
||||
isagent := true
|
||||
if os.Getenv("AGENT_BACKEND") != "" {
|
||||
if os.Getenv("AGENT_BACKEND") == "off"
|
||||
if os.Getenv("AGENT_BACKEND") == "off" {
|
||||
isagent = false
|
||||
}
|
||||
} else if config.Config.Server.AgentBackend != "" {
|
||||
|
@ -94,7 +134,7 @@ func IsAgentBackend() bool {
|
|||
func IsClientMode() bool {
|
||||
isclient := true
|
||||
if os.Getenv("CLIENT_MODE") != "" {
|
||||
if os.Getenv("CLIENT_MODE") == "off"
|
||||
if os.Getenv("CLIENT_MODE") == "off" {
|
||||
isclient = false
|
||||
}
|
||||
} else if config.Config.Server.ClientMode != "" {
|
||||
|
@ -107,7 +147,7 @@ func IsClientMode() bool {
|
|||
func IsDNSMode() bool {
|
||||
isdns := true
|
||||
if os.Getenv("DNS_MODE") != "" {
|
||||
if os.Getenv("DNS_MODE") == "off"
|
||||
if os.Getenv("DNS_MODE") == "off" {
|
||||
isdns = false
|
||||
}
|
||||
} else if config.Config.Server.DNSMode != "" {
|
||||
|
@ -120,11 +160,11 @@ func IsDNSMode() bool {
|
|||
func DisableRemoteIPCheck() bool {
|
||||
disabled := false
|
||||
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
|
||||
}
|
||||
} else if config.Config.Server.DisableRemoteIpCheck != "" {
|
||||
if config.Config.Server.DisableRemoteIpCheck == "on" {
|
||||
} else if config.Config.Server.DisableRemoteIPCheck != "" {
|
||||
if config.Config.Server.DisableRemoteIPCheck == "on" {
|
||||
disabled= true
|
||||
}
|
||||
}
|
|
@ -2,10 +2,13 @@ package serverctl
|
|||
|
||||
import (
|
||||
"fmt"
|
||||
"net/http"
|
||||
"io/ioutil"
|
||||
"github.com/gravitl/netmaker/functions"
|
||||
"github.com/gravitl/netmaker/models"
|
||||
"github.com/gravitl/netmaker/mongoconn"
|
||||
"github.com/gravitl/netmaker/servercfg"
|
||||
"io"
|
||||
"time"
|
||||
"context"
|
||||
"errors"
|
||||
"os"
|
||||
"os/exec"
|
||||
|
@ -16,7 +19,7 @@ func CreateDefaultNetwork() (bool, error) {
|
|||
fmt.Println("Creating default network...")
|
||||
|
||||
iscreated := false
|
||||
exists, err := functions.NetworkExists(config.Config.Server.DefaultNetName)
|
||||
exists, err := functions.NetworkExists("default")
|
||||
|
||||
if exists || err != nil {
|
||||
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 {
|
||||
/*
|
||||
// Get the data
|
||||
|
@ -247,7 +140,7 @@ func RemoveNetwork(network string) (bool, error) {
|
|||
}
|
||||
|
||||
func AddNetwork(network string) (bool, error) {
|
||||
pubip, err := GetPublicIP()
|
||||
pubip, err := servercfg.GetPublicIP()
|
||||
if err != nil {
|
||||
fmt.Println("could not get public IP.")
|
||||
return false, err
|
||||
|
|
Loading…
Add table
Reference in a new issue