diff --git a/config/config.go b/config/config.go index e4d556c9..a827e627 100644 --- a/config/config.go +++ b/config/config.go @@ -42,6 +42,9 @@ type ServerConfig struct { AllowedOrigin string `yaml:"allowedorigin"` RestBackend bool `yaml:"restbackend"` AgentBackend bool `yaml:"agentbackend"` + DefaultNetName string `yaml:"defaultnetname"` + DefaultNetRange string `yaml:"defaultnetrange"` + CreateDefault bool `yaml:"createdefault"` } type MongoConnConfig struct { diff --git a/config/environments/dev.yaml b/config/environments/dev.yaml index 205f3771..1143af15 100644 --- a/config/environments/dev.yaml +++ b/config/environments/dev.yaml @@ -6,6 +6,9 @@ server: allowedorigin: "*" restbackend: true agentbackend: true + defaultnetname: "default" + defaultnetrange: "10.10.10.0/24" + createdefault: true mongoconn: user: "mongoadmin" pass: "mongopass" diff --git a/functions/helpers.go b/functions/helpers.go index 1c5461dd..d7a3a3fc 100644 --- a/functions/helpers.go +++ b/functions/helpers.go @@ -64,7 +64,7 @@ func GroupExists(name string) (bool, error) { if err != nil { if err == mongo.ErrNoDocuments { - return false, err + return false, nil } fmt.Println("ERROR RETRIEVING GROUP!") fmt.Println(err) diff --git a/main.go b/main.go index 7956e6b1..86e24ba8 100644 --- a/main.go +++ b/main.go @@ -34,6 +34,13 @@ func main() { log.Println("Server starting...") mongoconn.ConnectDatabase() + if config.Config.Server.CreateDefault { + err := createDefaultNetwork() + if err != nil { + fmt.Printf("Error creating default network: %v", err) + } + } + var waitgroup sync.WaitGroup if config.Config.Server.AgentBackend { @@ -165,6 +172,45 @@ func setGlobalConfig(globalconf models.GlobalConfig) (error) { return nil } +func createDefaultNetwork() error { + + + exists, err := functions.GroupExists(config.Config.Server.DefaultNetName) + + if exists || err != nil { + fmt.Println("Default group already exists") + fmt.Println("Skipping default group create") + return err + } else { + + var group models.Group + + group.NameID = config.Config.Server.DefaultNetName + group.AddressRange = config.Config.Server.DefaultNetRange + group.DisplayName = config.Config.Server.DefaultNetName + group.SetDefaults() + group.SetNodesLastModified() + group.SetGroupLastModified() + group.KeyUpdateTimeStamp = time.Now().Unix() + + + fmt.Println("Creating default group.") + + + collection := mongoconn.Client.Database("netmaker").Collection("groups") + ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second) + + + // insert our group into the group table + _, err = collection.InsertOne(ctx, group) + defer cancel() + + } + return err + + +} + func getPublicIP() (string, error) {