diff --git a/cmd/root.go b/cmd/root.go index f169f788796bdfb283551a142664b931f999a447..90269fcd4b8be18e168c15074b8fafc7c2bdbdda 100644 --- a/cmd/root.go +++ b/cmd/root.go @@ -1,7 +1,9 @@ package cmd import ( + "encoding/json" "fmt" + "net/http" "os" "github.com/joho/godotenv" @@ -9,15 +11,41 @@ import ( "github.com/spf13/viper" ) +type Tunnel struct { + Name string `json:"name"` + PublicURL string `json:"public_url"` +} + +var ngrok bool + var rootCmd = &cobra.Command{ Use: "go-ipa", Short: "Root Short", Long: `Root Long`, + PersistentPreRunE: func(cmd *cobra.Command, args []string) error { + if ngrok { + resp, err := http.Get("http://127.0.0.1:4040/api/tunnels/command_line") + if err != nil { + return err + } + defer resp.Body.Close() + var tunnel Tunnel + err = json.NewDecoder(resp.Body).Decode(&tunnel) + if err != nil { + return err + } + viper.Set("BASE_URL", tunnel.PublicURL) + viper.Set("SSL", "false") + return err + } + return nil + }, } func init() { cobra.OnInitialize(initEnv) rootCmd.PersistentFlags().StringP("url", "b", "", "Set a base URL") + rootCmd.PersistentFlags().BoolVarP(&ngrok, "ngrok", "n", false, "Use ngrok public url") viper.SetEnvPrefix("DIPA") viper.BindPFlag("BASE_URL", rootCmd.PersistentFlags().Lookup("url")) } diff --git a/cmd/share.go b/cmd/share.go index 15c744693ecc0555cbb90e62a7f471cb3b3cfd07..79b6cfb415eca289984777ca6ddf611dd9d00d68 100644 --- a/cmd/share.go +++ b/cmd/share.go @@ -26,7 +26,6 @@ type ExtendedAppInfo struct { DownloadURL string } -var useTLS bool var useHalfBlock bool var scheme string @@ -119,10 +118,14 @@ var shareCmd = &cobra.Command{ } else { qrterminal.Generate(extAppInfo.DownloadURL, qrterminal.L, os.Stdout) } + } else { + fmt.Println("Base url not set") } + fmt.Println(viper.GetBool("SSL")) + addr := viper.GetString("ADDR") - if useTLS { + if viper.GetBool("SSL") { scheme = "https" return http.ListenAndServeTLS(addr, viper.GetString("CERT"), viper.GetString("KEY"), nil) } @@ -133,12 +136,13 @@ var shareCmd = &cobra.Command{ func init() { rootCmd.AddCommand(shareCmd) - shareCmd.Flags().BoolVar(&useTLS, "ssl", true, "enable SSL/TLS") shareCmd.Flags().BoolVar(&useHalfBlock, "half", false, "generate a smaller QR code in the terminal") shareCmd.Flags().StringP("addr", "a", ":8080", "address and port on which the server will accept requests") shareCmd.Flags().StringP("cert", "c", "", "path to SSL certificate") shareCmd.Flags().StringP("key", "k", "", "path to SSL secret key") + shareCmd.Flags().Bool("ssl", true, "enable SSL/TLS") viper.BindPFlag("ADDR", shareCmd.Flags().Lookup("addr")) viper.BindPFlag("CERT", shareCmd.Flags().Lookup("cert")) viper.BindPFlag("KEY", shareCmd.Flags().Lookup("key")) + viper.BindPFlag("SSL", shareCmd.Flags().Lookup("ssl")) } diff --git a/vendor/vendor.json b/vendor/vendor.json index 8ce6ed34f360b81482c9aab5be445c3094ef6e10..4d5201bad9f4436d2b29a12ca1bafafa2a7bcd32 100644 --- a/vendor/vendor.json +++ b/vendor/vendor.json @@ -206,7 +206,7 @@ "revisionTime": "2019-09-17T10:36:37Z" }, { - "checksumSHA1": "MIB4bZiAqyrMRlIrPg99hCzzDQ4=", + "checksumSHA1": "CIkqNgrWiMPe6F2pXY8ED3A3a2M=", "path": "golang.org/x/sys/unix", "revision": "d5e6a3e2c0ae16fc7480523ebcb7fd4dd3215489", "revisionTime": "2020-02-16T19:14:09Z" @@ -218,7 +218,7 @@ "revisionTime": "2019-11-14T14:00:43Z" }, { - "checksumSHA1": "eTvVCF1qJTPYUphbo7NpQ7kXzPE=", + "checksumSHA1": "1C/qZEW+DDmMf7Y823CMSbhMA0A=", "path": "golang.org/x/text/unicode/norm", "revision": "929e72ca90deac4784bbe451caf10faa5b256ebe", "revisionTime": "2019-11-14T14:00:43Z" @@ -242,7 +242,7 @@ "revisionTime": "2018-06-05T10:54:35Z" }, { - "checksumSHA1": "WTjGqpo7TWA+9/HkTikQRa1bePM=", + "checksumSHA1": "cCb4q+jBCc35Mg77eeey7WUoLzo=", "path": "rsc.io/qr/coding", "revision": "ca9a01fc2f9505024045632c50e5e8cd6142fafe", "revisionTime": "2018-06-05T10:54:35Z"