From 73d4b1ffeca84b65ecac8ae31282a5ae91796642 Mon Sep 17 00:00:00 2001 From: dgrisham Date: Fri, 28 Jul 2017 09:23:34 -0600 Subject: [PATCH 1/3] Refactor to distinguish empty and unset CLUSTER_SECRET env var --- ipfs-cluster-service/main.go | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/ipfs-cluster-service/main.go b/ipfs-cluster-service/main.go index 32bf13ca..4c1a3453 100644 --- a/ipfs-cluster-service/main.go +++ b/ipfs-cluster-service/main.go @@ -210,15 +210,14 @@ configuration. Name: "custom-secret, s", Usage: "prompt for the cluster secret", }, - cli.StringFlag{ - Name: "env-cluster-secret", - EnvVar: "CLUSTER_SECRET", - Hidden: true, - }, }, Action: func(c *cli.Context) error { - initConfig(c.GlobalBool("force"), !c.Bool("custom-secret"), - c.String("env-cluster-secret")) + envSecret, envSecretDefined := os.LookupEnv("CLUSTER_SECRET") + if envSecretDefined { + initConfig(c.GlobalBool("force"), !c.Bool("custom-secret"), &envSecret) + } else { + initConfig(c.GlobalBool("force"), !c.Bool("custom-secret"), nil) + } return nil }, }, @@ -251,7 +250,7 @@ configuration. func run(c *cli.Context) error { if c.Bool("init") { - initConfig(c.Bool("force"), false, "") + initConfig(c.Bool("force"), false, nil) return nil } @@ -370,7 +369,7 @@ func setupDebug() { //SetFacilityLogLevel("libp2p-raft", l) } -func initConfig(force bool, generateSecret bool, envSecret string) { +func initConfig(force bool, generateSecret bool, envSecret *string) { if _, err := os.Stat(configPath); err == nil && !force { err := fmt.Errorf("%s exists. Try running with -f", configPath) checkErr("", err) @@ -379,10 +378,10 @@ func initConfig(force bool, generateSecret bool, envSecret string) { cfg, err := ipfscluster.NewDefaultConfig() checkErr("creating default configuration", err) - if len(envSecret) != 0 { + if envSecret != nil { // read cluster secret from env variable fmt.Println("Reading cluster secret from CLUSTER_SECRET environment variable.") - cfg.ClusterSecret, err = ipfscluster.DecodeClusterSecret(envSecret) + cfg.ClusterSecret, err = ipfscluster.DecodeClusterSecret(*envSecret) } else if !generateSecret { // get cluster secret from user cfg.ClusterSecret, err = ipfscluster.DecodeClusterSecret(promptUser("Enter cluster secret (32-byte hex string): ")) From 5e0863da46f2fa7ca06faedb81fab1afccfd0ff5 Mon Sep 17 00:00:00 2001 From: dgrisham Date: Fri, 28 Jul 2017 09:26:19 -0600 Subject: [PATCH 2/3] Rename generateSecret -> customSecret --- ipfs-cluster-service/main.go | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/ipfs-cluster-service/main.go b/ipfs-cluster-service/main.go index 4c1a3453..20a72fe3 100644 --- a/ipfs-cluster-service/main.go +++ b/ipfs-cluster-service/main.go @@ -214,9 +214,9 @@ configuration. Action: func(c *cli.Context) error { envSecret, envSecretDefined := os.LookupEnv("CLUSTER_SECRET") if envSecretDefined { - initConfig(c.GlobalBool("force"), !c.Bool("custom-secret"), &envSecret) + initConfig(c.GlobalBool("force"), c.Bool("custom-secret"), &envSecret) } else { - initConfig(c.GlobalBool("force"), !c.Bool("custom-secret"), nil) + initConfig(c.GlobalBool("force"), c.Bool("custom-secret"), nil) } return nil }, @@ -369,7 +369,7 @@ func setupDebug() { //SetFacilityLogLevel("libp2p-raft", l) } -func initConfig(force bool, generateSecret bool, envSecret *string) { +func initConfig(force bool, customSecret bool, envSecret *string) { if _, err := os.Stat(configPath); err == nil && !force { err := fmt.Errorf("%s exists. Try running with -f", configPath) checkErr("", err) @@ -382,7 +382,7 @@ func initConfig(force bool, generateSecret bool, envSecret *string) { // read cluster secret from env variable fmt.Println("Reading cluster secret from CLUSTER_SECRET environment variable.") cfg.ClusterSecret, err = ipfscluster.DecodeClusterSecret(*envSecret) - } else if !generateSecret { + } else if customSecret { // get cluster secret from user cfg.ClusterSecret, err = ipfscluster.DecodeClusterSecret(promptUser("Enter cluster secret (32-byte hex string): ")) From c0f3fde409d477ab900c30bc13394bc0fa49dcd5 Mon Sep 17 00:00:00 2001 From: dgrisham Date: Fri, 28 Jul 2017 13:10:52 -0600 Subject: [PATCH 3/3] Refactored checks for user-provided secret --- ipfs-cluster-service/main.go | 38 ++++++++++++++++++++---------------- 1 file changed, 21 insertions(+), 17 deletions(-) diff --git a/ipfs-cluster-service/main.go b/ipfs-cluster-service/main.go index 20a72fe3..7c0f52c6 100644 --- a/ipfs-cluster-service/main.go +++ b/ipfs-cluster-service/main.go @@ -212,12 +212,8 @@ configuration. }, }, Action: func(c *cli.Context) error { - envSecret, envSecretDefined := os.LookupEnv("CLUSTER_SECRET") - if envSecretDefined { - initConfig(c.GlobalBool("force"), c.Bool("custom-secret"), &envSecret) - } else { - initConfig(c.GlobalBool("force"), c.Bool("custom-secret"), nil) - } + userSecret, userSecretDefined := userProvidedSecret(c.Bool("custom-secret")) + initConfig(c.GlobalBool("force"), userSecret, userSecretDefined) return nil }, }, @@ -250,7 +246,7 @@ configuration. func run(c *cli.Context) error { if c.Bool("init") { - initConfig(c.Bool("force"), false, nil) + initConfig(c.Bool("force"), nil, false) return nil } @@ -369,7 +365,7 @@ func setupDebug() { //SetFacilityLogLevel("libp2p-raft", l) } -func initConfig(force bool, customSecret bool, envSecret *string) { +func initConfig(force bool, userSecret []byte, userSecretDefined bool) { if _, err := os.Stat(configPath); err == nil && !force { err := fmt.Errorf("%s exists. Try running with -f", configPath) checkErr("", err) @@ -378,16 +374,9 @@ func initConfig(force bool, customSecret bool, envSecret *string) { cfg, err := ipfscluster.NewDefaultConfig() checkErr("creating default configuration", err) - if envSecret != nil { - // read cluster secret from env variable - fmt.Println("Reading cluster secret from CLUSTER_SECRET environment variable.") - cfg.ClusterSecret, err = ipfscluster.DecodeClusterSecret(*envSecret) - } else if customSecret { - // get cluster secret from user - cfg.ClusterSecret, err = ipfscluster.DecodeClusterSecret(promptUser("Enter cluster secret (32-byte hex string): ")) - + if userSecretDefined { + cfg.ClusterSecret = userSecret } - checkErr("parsing cluster secret", err) err = os.MkdirAll(filepath.Dir(configPath), 0700) err = cfg.Save(configPath) @@ -396,6 +385,21 @@ func initConfig(force bool, customSecret bool, envSecret *string) { programName, configPath) } +func userProvidedSecret(enterSecret bool) ([]byte, bool) { + var secret string + if enterSecret { + secret = promptUser("Enter cluster secret (32-byte hex string): ") + } else if envSecret, envSecretDefined := os.LookupEnv("CLUSTER_SECRET"); envSecretDefined { + secret = envSecret + } else { + return nil, false + } + + decodedSecret, err := ipfscluster.DecodeClusterSecret(secret) + checkErr("parsing user-provided secret", err) + return decodedSecret, true +} + func loadConfig() (*ipfscluster.Config, error) { return ipfscluster.LoadConfig(configPath) }