/* * Copyright 2026 Oleg Borodin */ package servcmd import ( "github.com/spf13/cobra" "github.com/spf13/viper" ) const ( uuidRegex = `^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$` defaultHostname = "localhost:1025" ) func NewServiceUtil() *ServiceUtil { return &ServiceUtil{} } type ServiceUtil struct { getHelloParams GetHelloParams commonServiceParams CommonServiceParams } type CommonServiceParams struct { Username string Password string Hostname string Timeout uint64 SkipTLSVerify bool } func (util *ServiceUtil) MakeServiceCmds() *cobra.Command { var subCmd = &cobra.Command{ Use: "service", Short: "Service operations", } const defaultTimeout uint64 = 10 subCmd.PersistentFlags().StringVarP(&util.commonServiceParams.Username, "user", "U", util.commonServiceParams.Username, "Username") subCmd.PersistentFlags().StringVarP(&util.commonServiceParams.Password, "pass", "P", util.commonServiceParams.Password, "Password") subCmd.PersistentFlags().StringVarP(&util.commonServiceParams.Hostname, "host", "X", defaultHostname, "Hostname") subCmd.PersistentFlags().Uint64VarP(&util.commonServiceParams.Timeout, "timeout", "T", defaultTimeout, "Operation timeout") subCmd.PersistentFlags().BoolVarP(&util.commonServiceParams.SkipTLSVerify, "skipVerify", "S", true, "Skip server certificate verify") subCmd.MarkFlagsRequiredTogether("user", "pass") vi := viper.New() vi.SetEnvPrefix("mproxy") vi.BindEnv("user") vi.BindEnv("pass") util.commonServiceParams.Username = vi.GetString("user") util.commonServiceParams.Password = vi.GetString("pass") // GetService var getservcmd = &cobra.Command{ Use: "get [user:pass@]hostname[:port]", Short: "Get service hello", Args: cobra.ExactArgs(1), Run: util.GetHello, } subCmd.AddCommand(getservcmd) return subCmd }