64 lines
1.8 KiB
Go
64 lines
1.8 KiB
Go
/*
|
|
* Copyright 2026 Oleg Borodin <onborodin@gmail.com>
|
|
*/
|
|
package servcmd
|
|
|
|
import (
|
|
"github.com/spf13/cobra"
|
|
"github.com/spf13/viper"
|
|
)
|
|
|
|
const (
|
|
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: "hello [user:pass@]hostname[:port]",
|
|
Short: "Get service hello",
|
|
Args: cobra.ExactArgs(1),
|
|
Run: util.GetHello,
|
|
}
|
|
subCmd.AddCommand(getservcmd)
|
|
|
|
return subCmd
|
|
}
|