diff --git a/cmd/init.go b/cmd/init.go index 14375cb..fbf6996 100644 --- a/cmd/init.go +++ b/cmd/init.go @@ -26,6 +26,7 @@ import ( "log" "os" "os/exec" + "io" "strings" "boxen/config" @@ -73,11 +74,18 @@ func initProcess(_ *cobra.Command, _ []string) { } defer logFile.Close() - log.SetOutput(logFile) + //if verbose { + logWriter := io.MultiWriter(os.Stdout, logFile) + log.SetOutput(logWriter) + //} else { + // log.SetOutput(logFile) + //} // Generate SSH keys if they don't already exist if _, err := os.Stat(config.SshPrivKeyFile); os.IsNotExist(err) { + log.Printf("Generating ssh private key '%s'...", config.SshPrivKeyFile) utils.GenerateSSHKeys(config.SshPrivKeyFile, config.SshPubKeyFile) + log.Print("Done") } // Generate a password that is 50 characters long with 10 digits, 0 symbols, @@ -87,7 +95,7 @@ func initProcess(_ *cobra.Command, _ []string) { log.Fatal(err) } - fmt.Printf("Connecting to %s ...\n", host) + log.Printf("Connecting to %s ...\n", host) setupRemoteService(adminServiceSecret) @@ -155,43 +163,51 @@ func addZoneToLocalConfig(deviceEgo string) { } func setupRemoteService(serviceSecret string) { + + log.Printf("Setting up remote service...") // Copy over the gnunet.conf from the remote device. // TODO: Verify config path + + log.Printf("... SSH setup") sshApi, err := sshwrapper.DefaultSshApiSetup(host, port, user, privkey) if err != nil { log.Fatal(err) } - + + log.Printf("... copy .config/gnunet.conf") err = sshApi.CopyFromRemote(".config/gnunet.conf", "/tmp/gnunet.conf") if err != nil { log.Fatal(err) } // Add the admin service to the Exit section of config + log.Printf("... load /tmp/gnunet.conf") cfg, err := ini.LoadSources(ini.LoadOptions{ IgnoreInlineComment: true, }, "/tmp/gnunet.conf") if err != nil { - fmt.Printf("Fail to read file: %v", err) - os.Exit(1) + log.Panicf("Fail to read file: %v", err) } + log.Printf("... update /tmp/gnunet.conf") serviceName := fmt.Sprintf("%s.gnunet.", serviceSecret) cfg.Section(serviceName).Key("TCP_REDIRECTS").SetValue("22:169.254.86.1:22") cfg.SaveTo("/tmp/gnunet.conf") + log.Printf("... upload .config/gnunet.conf") err = sshApi.CopyToRemote("/tmp/gnunet.conf", ".config/gnunet.conf") if err != nil { log.Fatal(err) } // Restart GNUnet - stdout, stderr, err := sshApi.Run("gnunet-arm -s; gnunet-arm -r; sleep 20") + log.Printf("... restart gnunet") + stdout, stderr, err := sshApi.Run("gnunet-arm -s ; gnunet-arm -r && sleep 20") if err != nil { log.Print(stdout) log.Print(stderr) log.Fatal(err) } - + log.Printf("...Done!") }