diff --git a/cmd/pro.go b/cmd/pro.go deleted file mode 100644 index b343b2213..000000000 --- a/cmd/pro.go +++ /dev/null @@ -1,142 +0,0 @@ -package cmd - -import ( - "fmt" - "io" - "net/http" - "os" - "time" - - "github.com/creasty/defaults" - "github.com/gin-gonic/gin" - "github.com/kubeshark/kubeshark/config" - "github.com/kubeshark/kubeshark/config/configStructs" - "github.com/kubeshark/kubeshark/internal/connect" - "github.com/kubeshark/kubeshark/kubernetes" - "github.com/kubeshark/kubeshark/utils" - "github.com/rs/zerolog/log" - "github.com/spf13/cobra" -) - -var proCmd = &cobra.Command{ - Use: "pro", - Short: "Acquire a Pro license", - RunE: func(cmd *cobra.Command, args []string) error { - acquireLicense() - return nil - }, -} - -const ( - PRO_URL = "https://console.kubeshark.co/cli" - PRO_PORT = 5252 -) - -func init() { - rootCmd.AddCommand(proCmd) - - defaultTapConfig := configStructs.TapConfig{} - if err := defaults.Set(&defaultTapConfig); err != nil { - log.Debug().Err(err).Send() - } - - proCmd.Flags().Uint16(configStructs.ProxyFrontPortLabel, defaultTapConfig.Proxy.Front.Port, "Provide a custom port for the Kubeshark") - proCmd.Flags().String(configStructs.ProxyHostLabel, defaultTapConfig.Proxy.Host, "Provide a custom host for the Kubeshark") - proCmd.Flags().StringP(configStructs.ReleaseNamespaceLabel, "s", defaultTapConfig.Release.Namespace, "Release namespace of Kubeshark") -} - -func acquireLicense() { - hubUrl := kubernetes.GetHubUrl() - response, err := http.Get(fmt.Sprintf("%s/echo", hubUrl)) - if err != nil || response.StatusCode != 200 { - log.Info().Msg(fmt.Sprintf(utils.Yellow, "Couldn't connect to Hub. Establishing proxy...")) - runProxy(false, true) - } - - connector = connect.NewConnector(kubernetes.GetHubUrl(), connect.DefaultRetries, connect.DefaultTimeout) - - log.Info().Str("url", PRO_URL).Msg("Opening in the browser:") - utils.OpenBrowser(PRO_URL) - - runLicenseRecieverServer() -} - -func updateLicense(licenseKey string) { - log.Info().Str("key", licenseKey).Msg("Received license:") - - config.Config.License = licenseKey - err := config.WriteConfig(&config.Config) - if err != nil { - log.Error().Err(err).Send() - } - - kubernetesProvider, err := getKubernetesProviderForCli(false, false) - if err != nil { - log.Error().Err(err).Send() - return - } - updated, err := kubernetes.SetSecret(kubernetesProvider, kubernetes.SECRET_LICENSE, config.Config.License) - if err != nil { - log.Error().Err(err).Send() - } - - if updated { - log.Info().Msg("Updated the license, exiting...") - } else { - log.Info().Msg("Exiting...") - } - - go func() { - time.Sleep(2 * time.Second) - os.Exit(0) - }() -} - -func runLicenseRecieverServer() { - gin.SetMode(gin.ReleaseMode) - ginApp := gin.New() - ginApp.Use(func(c *gin.Context) { - c.Writer.Header().Set("Access-Control-Allow-Origin", "*") - c.Writer.Header().Set("Access-Control-Allow-Credentials", "true") - c.Writer.Header().Set("Access-Control-Allow-Headers", "Content-Type, Content-Length, Accept-Encoding, X-CSRF-Token, Authorization, accept, origin, Cache-Control, X-Requested-With, x-session-token") - c.Writer.Header().Set("Access-Control-Allow-Methods", "POST, OPTIONS, GET, PUT, DELETE") - c.Writer.Header().Set("Access-Control-Expose-Headers", "Content-Disposition") - - if c.Request.Method == "OPTIONS" { - c.AbortWithStatus(http.StatusNoContent) - return - } - - c.Next() - }) - - ginApp.POST("/", func(c *gin.Context) { - data, err := io.ReadAll(c.Request.Body) - if err != nil { - log.Error().Err(err).Send() - c.AbortWithStatus(http.StatusBadRequest) - return - } - - licenseKey := string(data) - - updateLicense(licenseKey) - }) - - go func() { - if err := ginApp.Run(fmt.Sprintf(":%d", PRO_PORT)); err != nil { - log.Error().Err(err).Send() - } - }() - - log.Info().Msg("Alternatively enter your license key:") - - var licenseKey string - _, err := fmt.Scanf("%s", &licenseKey) - if err != nil { - log.Error().Err(err).Send() - return - } - - updateLicense(licenseKey) -}