Skip to content
Snippets Groups Projects
Commit d1ba2e60 authored by Katharina Renk's avatar Katharina Renk
Browse files

added environment variable to set admin password manually via password.env,...

added environment variable to set admin password manually via password.env, modified controller.go for this use case

See merge request !423

Co-authored-by: default avatarMalte Bauch <malte.bauch@stud.h-da.de>
parent 9ee24082
Branches
Tags
2 merge requests!442Develop,!423added environment variable to set admin password manually via password.env, modified controller.go for this use case
Pipeline #133807 failed
...@@ -8,6 +8,7 @@ clab-gosdn*/ ...@@ -8,6 +8,7 @@ clab-gosdn*/
# non vimmers # non vimmers
.vscode/ .vscode/
.idea/
# MacOS # MacOS
.DS_Store .DS_Store
......
...@@ -291,13 +291,22 @@ func ensureDefaultUserExists() error { ...@@ -291,13 +291,22 @@ func ensureDefaultUserExists() error {
if err != nil { if err != nil {
log.Info(err) log.Info(err)
} }
if adminUser == nil { if adminUser == nil {
// Generate a password that is 16 characters long with 3 digits, 0 symbols, // Getting the password from the environment variable which is set in gosdn.clab.yaml.
// allowing upper and lower case letters, disallowing repeat characters. var preDefinedPassword = os.Getenv("GOSDN_ADMIN_PASSWORD")
generatedPassword, err := password.Generate(16, 3, 0, true, false) var usedPassword string
if err != nil {
log.Fatal(err) // 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) salt, err := password.Generate(16, 3, 0, true, false)
...@@ -305,14 +314,14 @@ func ensureDefaultUserExists() error { ...@@ -305,14 +314,14 @@ func ensureDefaultUserExists() error {
log.Fatal(err) 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{})) err = c.userService.Add(rbacImpl.NewUser(uuid.New(), defaultUserName, map[string]string{config.BasePndUUID.String(): "admin"}, string(hashedPassword), "", salt, conflict.Metadata{}))
if err != nil { if err != nil {
return err return err
} }
fmt.Printf("########\n Generated admin password: %s\n########\n", generatedPassword) fmt.Printf("########\n Generated admin password: %s\n########\n", usedPassword)
} }
return nil return nil
......
...@@ -42,6 +42,8 @@ topology: ...@@ -42,6 +42,8 @@ topology:
cmd: cmd:
--config /gosdn/configs/containerlab-gosdn.toml --config /gosdn/configs/containerlab-gosdn.toml
mgmt_ipv4: 172.100.0.5 mgmt_ipv4: 172.100.0.5
env:
GOSDN_ADMIN_PASSWORD: TestPassword
gnmi-target: gnmi-target:
kind: linux kind: linux
......
Subproject commit 1f247060d80be7d7f368135dcdba9a939d24e4c9 Subproject commit f978661713bcc520a6fb0c7ad44a25b6abd6c57d
Subproject commit f04dff4e782f9795da6e06323353c44000853a07 Subproject commit d9701d1fa0f50dfb56818f5b440d1ef922051108
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment