diff --git a/.gitignore b/.gitignore index bc4b632271943f06318827d23e9d53ce86816a52..cb721c0bf03bdc9112bac0162eadfc60a5f01f0a 100644 --- a/.gitignore +++ b/.gitignore @@ -8,6 +8,7 @@ clab-gosdn*/ # non vimmers .vscode/ +.idea/ # MacOS .DS_Store diff --git a/controller/controller.go b/controller/controller.go index 2798cf80eb21bf2a80357707270f188144724e68..965540a6262f1fbfd550f2c855db880f0688b656 100644 --- a/controller/controller.go +++ b/controller/controller.go @@ -291,13 +291,22 @@ func ensureDefaultUserExists() error { if err != nil { log.Info(err) } - if adminUser == nil { - // Generate a password that is 16 characters long with 3 digits, 0 symbols, - // allowing upper and lower case letters, disallowing repeat characters. - generatedPassword, err := password.Generate(16, 3, 0, true, false) - if err != nil { - log.Fatal(err) + // Getting the password from the environment variable which is set in gosdn.clab.yaml. + var preDefinedPassword = os.Getenv("GOSDN_ADMIN_PASSWORD") + var usedPassword string + + // If environment variable is set and password is not 0, the password from the environment variable will be used. + if len(preDefinedPassword) == 0 { + // Generate a password that is 16 characters long with 3 digits, 0 symbols, + // allowing upper and lower case letters, disallowing repeat characters. + generatedPassword, err := password.Generate(16, 3, 0, true, false) + if err != nil { + log.Fatal(err) + } + usedPassword = generatedPassword + } else { + usedPassword = preDefinedPassword } salt, err := password.Generate(16, 3, 0, true, false) @@ -305,14 +314,14 @@ func ensureDefaultUserExists() error { log.Fatal(err) } - hashedPassword := base64.RawStdEncoding.EncodeToString(argon2.IDKey([]byte(generatedPassword), []byte(salt), 1, 64*1024, 4, 32)) + hashedPassword := base64.RawStdEncoding.EncodeToString(argon2.IDKey([]byte(usedPassword), []byte(salt), 1, 64*1024, 4, 32)) err = c.userService.Add(rbacImpl.NewUser(uuid.New(), defaultUserName, map[string]string{config.BasePndUUID.String(): "admin"}, string(hashedPassword), "", salt, conflict.Metadata{})) if err != nil { return err } - fmt.Printf("########\n Generated admin password: %s\n########\n", generatedPassword) + fmt.Printf("########\n Generated admin password: %s\n########\n", usedPassword) } return nil diff --git a/dev_env_data/clab/gosdn.clab.yaml b/dev_env_data/clab/gosdn.clab.yaml index 7f7d771f5916e02af194de0c72aa4a46a475eb11..991c217e2c934e7ec621c094e1043a2ba8c070ce 100644 --- a/dev_env_data/clab/gosdn.clab.yaml +++ b/dev_env_data/clab/gosdn.clab.yaml @@ -42,6 +42,8 @@ topology: cmd: --config /gosdn/configs/containerlab-gosdn.toml mgmt_ipv4: 172.100.0.5 + env: + GOSDN_ADMIN_PASSWORD: TestPassword gnmi-target: kind: linux diff --git a/models/YangModels b/models/YangModels index 1f247060d80be7d7f368135dcdba9a939d24e4c9..f978661713bcc520a6fb0c7ad44a25b6abd6c57d 160000 --- a/models/YangModels +++ b/models/YangModels @@ -1 +1 @@ -Subproject commit 1f247060d80be7d7f368135dcdba9a939d24e4c9 +Subproject commit f978661713bcc520a6fb0c7ad44a25b6abd6c57d diff --git a/models/openconfig b/models/openconfig index f04dff4e782f9795da6e06323353c44000853a07..d9701d1fa0f50dfb56818f5b440d1ef922051108 160000 --- a/models/openconfig +++ b/models/openconfig @@ -1 +1 @@ -Subproject commit f04dff4e782f9795da6e06323353c44000853a07 +Subproject commit d9701d1fa0f50dfb56818f5b440d1ef922051108