create default network on startup

This commit is contained in:
afeiszli 2021-04-06 08:24:57 -04:00
parent 536ebc2a66
commit f61f6b1227
4 changed files with 53 additions and 1 deletions

View file

@ -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 {

View file

@ -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"

View file

@ -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)

46
main.go
View file

@ -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) {