078761f00de33bfd4da082dfc0c53850aae1876b

Author
Ayman Bagabas <ayman.bagabas@gmail.com>
Committer
Ayman Bagabas <ayman.bagabas@gmail.com>
Date

Message

fix: skip parsing empty initial admin keys

Diff

 1diff --git a/internal/config/config.go b/internal/config/config.go
 2index 3c5037ee73d97516b7308aa4708d83bca50cef19..2b1ad55c368bfb1e57b0ab0f5591910d02430de6 100644
 3--- a/internal/config/config.go
 4+++ b/internal/config/config.go
 5@@ -54,18 +54,20 @@ func NewConfig(cfg *config.Config) (*Config, error) {
 6 	host := cfg.BindAddr
 7 	port := cfg.Port
 8 
 9-	pks := make([]string, 0, len(cfg.InitialAdminKeys))
10+	pks := make([]string, 0)
11 	for _, k := range cfg.InitialAdminKeys {
12 		var pk = strings.TrimSpace(k)
13-		if bts, err := os.ReadFile(k); err == nil {
14-			// pk is a file, set its contents as pk
15-			pk = string(bts)
16+		if pk != "" {
17+			if bts, err := os.ReadFile(k); err == nil {
18+				// pk is a file, set its contents as pk
19+				pk = string(bts)
20+			}
21+			// it is a valid ssh key, nothing to do
22+			if _, _, _, _, err := ssh.ParseAuthorizedKey([]byte(pk)); err != nil {
23+				return nil, fmt.Errorf("invalid initial admin key %q: %w", k, err)
24+			}
25+			pks = append(pks, pk)
26 		}
27-		// it is a valid ssh key, nothing to do
28-		if _, _, _, _, err := ssh.ParseAuthorizedKey([]byte(pk)); err != nil {
29-			return nil, fmt.Errorf("invalid initial admin key %q: %w", k, err)
30-		}
31-		pks = append(pks, pk)
32 	}
33 
34 	rs := git.NewRepoSource(cfg.RepoPath)