agent/session/plugin/config/flags.go (474 lines of code) (raw):

// Copyright (c) 2009-present, Alibaba Cloud All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package config import ( "github.com/aliyun/aliyun_assist_client/agent/session/plugin/i18n" "github.com/aliyun/aliyun_assist_client/agent/session/plugin/cli" ) const ( ProfileFlagName = "profile" InstanceFlagName = "instance" IdleTimeoutFlagName = "idle-timeout" VerboseFlagName = "verbose" PortNumberFlagName = "port" WssUrlFlagName = "wss-url" ModeFlagName = "mode" LocalPortFlagName = "local-port" RemotePortFlagName = "remote-port" AccessKeyIdFlagName = "access-key-id" AccessKeySecretFlagName = "access-key-secret" StsTokenFlagName = "sts-token" StsRegionFlagName = "sts-region" RamRoleNameFlagName = "ram-role-name" RamRoleArnFlagName = "ram-role-arn" RoleSessionNameFlagName = "role-session-name" PrivateKeyFlagName = "private-key" KeyPairNameFlagName = "key-pair-name" RegionFlagName = "region" LanguageFlagName = "language" ReadTimeoutFlagName = "read-timeout" ConnectTimeoutFlagName = "connect-timeout" RetryCountFlagName = "retry-count" SkipSecureVerifyName = "skip-secure-verify" ConfigurePathFlagName = "config-path" ExpiredSecondsFlagName = "expired-seconds" ProcessCommandFlagName = "process-command" ServiceInstanceFlagName = "service-instance" PublicKeyFlagName = "public-key" UserNameFlagName = "user-name" ) func AddFlags(fs *cli.FlagSet) { fs.Add(NewModeFlag()) ///////////////////////////////////////////////// fs.Add(NewInstanceFlag()) fs.Add(NewIdleTimeoutFlag()) fs.Add(NewProfileFlag()) fs.Add(NewWebsocketUrlFlag()) fs.Add(NewVerboseFlag()) fs.Add(NewPortNumberUrlFlag()) ///////////////////////////////////////////////// fs.Add(NewLocalPortFlag()) fs.Add(NewRemotePortFlag()) fs.Add(NewServiceInstanceFlag()) ///////////////////////////////////////////////// fs.Add(NewLanguageFlag()) fs.Add(NewRegionFlag()) fs.Add(NewConfigurePathFlag()) fs.Add(NewAccessKeyIdFlag()) fs.Add(NewAccessKeySecretFlag()) fs.Add(NewStsTokenFlag()) fs.Add(NewStsRegionFlag()) fs.Add(NewRamRoleNameFlag()) fs.Add(NewRamRoleArnFlag()) fs.Add(NewRoleSessionNameFlag()) fs.Add(NewPrivateKeyFlag()) fs.Add(NewKeyPairNameFlag()) fs.Add(NewReadTimeoutFlag()) fs.Add(NewConnectTimeoutFlag()) fs.Add(NewRetryCountFlag()) fs.Add(NewSkipSecureVerify()) fs.Add(NewExpiredSecondsFlag()) fs.Add(NewProcessCommandFlag()) ///////////////////////////////////////////////// fs.Add(NewPublicKeyFlag()) fs.Add(NewUserNameFlag()) } func ConnectTimeoutFlag(fs *cli.FlagSet) *cli.Flag { return fs.Get(ConnectTimeoutFlagName) } func ProfileFlag(fs *cli.FlagSet) *cli.Flag { return fs.Get(ProfileFlagName) } func InstanceFlag(fs *cli.FlagSet) *cli.Flag { return fs.Get(InstanceFlagName) } func IdleTimeoutFlag(fs *cli.FlagSet) *cli.Flag { return fs.Get(IdleTimeoutFlagName) } func WssUrlFlag(fs *cli.FlagSet) *cli.Flag { return fs.Get(WssUrlFlagName) } func VerboseFlag(fs *cli.FlagSet) *cli.Flag { return fs.Get(VerboseFlagName) } func PortNumberFlag(fs *cli.FlagSet) *cli.Flag { return fs.Get(PortNumberFlagName) } func ModeFlag(fs *cli.FlagSet) *cli.Flag { return fs.Get(ModeFlagName) } func LocalPortFlag(fs *cli.FlagSet) *cli.Flag { return fs.Get(LocalPortFlagName) } func RemotePortFlag(fs *cli.FlagSet) *cli.Flag { return fs.Get(RemotePortFlagName) } func AccessKeyIdFlag(fs *cli.FlagSet) *cli.Flag { return fs.Get(AccessKeyIdFlagName) } func AccessKeySecretFlag(fs *cli.FlagSet) *cli.Flag { return fs.Get(AccessKeySecretFlagName) } func StsTokenFlag(fs *cli.FlagSet) *cli.Flag { return fs.Get(StsTokenFlagName) } func StsRegionFlag(fs *cli.FlagSet) *cli.Flag { return fs.Get(StsRegionFlagName) } func RamRoleNameFlag(fs *cli.FlagSet) *cli.Flag { return fs.Get(RamRoleNameFlagName) } func RamRoleArnFlag(fs *cli.FlagSet) *cli.Flag { return fs.Get(RamRoleArnFlagName) } func RoleSessionNameFlag(fs *cli.FlagSet) *cli.Flag { return fs.Get(RoleSessionNameFlagName) } func PrivateKeyFlag(fs *cli.FlagSet) *cli.Flag { return fs.Get(PrivateKeyFlagName) } func KeyPairNameFlag(fs *cli.FlagSet) *cli.Flag { return fs.Get(KeyPairNameFlagName) } func RegionFlag(fs *cli.FlagSet) *cli.Flag { return fs.Get(RegionFlagName) } func LanguageFlag(fs *cli.FlagSet) *cli.Flag { return fs.Get(LanguageFlagName) } func ReadTimeoutFlag(fs *cli.FlagSet) *cli.Flag { return fs.Get(ReadTimeoutFlagName) } func RetryCountFlag(fs *cli.FlagSet) *cli.Flag { return fs.Get(RetryCountFlagName) } func SkipSecureVerify(fs *cli.FlagSet) *cli.Flag { return fs.Get(SkipSecureVerifyName) } func ConfigurePathFlag(fs *cli.FlagSet) *cli.Flag { return fs.Get(ConfigurePathFlagName) } func ExpiredSecondsFlag(fs *cli.FlagSet) *cli.Flag { return fs.Get(ExpiredSecondsFlagName) } func ProcessCommandFlag(fs *cli.FlagSet) *cli.Flag { return fs.Get(ProcessCommandFlagName) } func ServiceInstanceFlag(fs *cli.FlagSet) *cli.Flag { return fs.Get(ServiceInstanceFlagName) } func PublicKeyFlag(fs *cli.FlagSet) *cli.Flag { return fs.Get(PublicKeyFlagName) } func UserNameFlag(fs *cli.FlagSet) *cli.Flag { return fs.Get(UserNameFlagName) } //var OutputFlag = &cli.Flag{Category: "config", // Name: "output", AssignedMode: cli.AssignedOnce, Hidden: true, // Usage: i18n.T( // "* assign output format, only support json", // "* 指定输出格式, 目前仅支持Json")} //varfs.Add(cli.Flag{Name: "site", AssignedMode: cli.AssignedOnce, //Usage: i18n.T("assign site, support china/international/japan", "")}) func NewProfileFlag() *cli.Flag { return &cli.Flag{ Category: "config", Name: ProfileFlagName, Shorthand: 'p', DefaultValue: "default", Persistent: true, Short: i18n.T( "use `--profile <profileName>` to select profile", "使用 `--profile <profileName>` 指定操作的配置集")} } // //////////////////////////////////////////////////////////////////////////////////////// func NewInstanceFlag() *cli.Flag { return &cli.Flag{ Category: "caller", Name: InstanceFlagName, Shorthand: 'i', AssignedMode: cli.AssignedOnce, DefaultValue: "", Persistent: true, Short: i18n.T( "use `--instance <instance id>` to select instance", "使用 `--instance <instance id>` 指定操作的实例")} } func NewIdleTimeoutFlag() *cli.Flag { return &cli.Flag{ Category: "caller", Name: IdleTimeoutFlagName, AssignedMode: cli.AssignedOnce, DefaultValue: "", Persistent: true, Short: i18n.T( "use `--idle-timeout <timeout>` to set the allowed idle time, unit is second, default is 180s, minimum is 60s. Only works for session subcommand", "使用 `--idle-timeout <timeout>` 设置连接允许的空闲时长,单位秒,默认为180秒,最小可设置60秒。仅对session子命令有效。", ), } } func NewVerboseFlag() *cli.Flag { return &cli.Flag{ Category: "caller", Name: VerboseFlagName, AssignedMode: cli.AssignedNone, DefaultValue: "", Persistent: true, Short: i18n.T( "use `--verbose` to log detail info", "使用 `--verbose` 显示更详细日志")} } func NewWebsocketUrlFlag() *cli.Flag { return &cli.Flag{ Category: "caller", Name: WssUrlFlagName, Shorthand: 'u', AssignedMode: cli.AssignedOnce, DefaultValue: "", Persistent: true, Short: i18n.T( "use `--url <wss url>` to select instance", "使用 `--url <wss url>` 指定操作的实例")} } func NewPortNumberUrlFlag() *cli.Flag { return &cli.Flag{ Category: "caller", Name: PortNumberFlagName, AssignedMode: cli.AssignedOnce, DefaultValue: "", Persistent: true, Short: i18n.T( "use `--port <port>` to select port", "使用 `--port <port>` 指定操作的实例端口")} } // ///////////////////////////////////////////////////////////////////////////////////////// func NewLocalPortFlag() *cli.Flag { return &cli.Flag{ Category: "caller", Name: LocalPortFlagName, AssignedMode: cli.AssignedOnce, Shorthand: 'l', DefaultValue: "", Persistent: true, Short: i18n.T( "use `--local-port <port>` to select local port", "使用 `--local-port <port>` 指定本地端口")} } func NewRemotePortFlag() *cli.Flag { return &cli.Flag{ Category: "caller", Name: RemotePortFlagName, AssignedMode: cli.AssignedOnce, Shorthand: 'r', DefaultValue: "", Persistent: true, Short: i18n.T( "use `--remote-port <port>` to select remote port\n\tuse `--remote-port <ip:port>` to select other host and port", "使用 `--remote-port <port>` 指定实例的端口\n\t使用 `--remote-port <ip:port>` 指定实例能够访问的其他主机的端口")} } // ///////////////////////////////////////////////////////////////////////////////////////// // --mode {AK|StsToken|RamRoleArn|EcsRamRole|RsaKeyPair|RamRoleArnWithRoleName} func NewModeFlag() *cli.Flag { return &cli.Flag{ Category: "config", Name: ModeFlagName, DefaultValue: "AK", Persistent: true, Short: i18n.T( "use `--mode {AK|StsToken|CredentialsURI}` to assign authenticate mode", "使用 `--mode {AK|StsToken|CredentialsURI}` 指定认证方式")} } func NewAccessKeyIdFlag() *cli.Flag { return &cli.Flag{ Category: "config", Name: AccessKeyIdFlagName, AssignedMode: cli.AssignedOnce, Persistent: true, Short: i18n.T( "use `--access-key-id <AccessKeyId>` to assign AccessKeyId, required in AK/StsToken/RamRoleArn mode", "使用 `--access-key-id <AccessKeyId>` 指定AccessKeyId")} } func NewAccessKeySecretFlag() *cli.Flag { return &cli.Flag{ Category: "config", Name: AccessKeySecretFlagName, AssignedMode: cli.AssignedOnce, Persistent: true, Short: i18n.T( "use `--access-key-secret <AccessKeySecret>` to assign AccessKeySecret", "使用 `--access-key-secret <AccessKeySecret>` 指定AccessKeySecret")} } func NewStsTokenFlag() *cli.Flag { return &cli.Flag{ Category: "config", Name: StsTokenFlagName, AssignedMode: cli.AssignedOnce, Persistent: true, Short: i18n.T( "use `--sts-token <StsToken>` to assign StsToken", "使用 `--sts-token <StsToken>` 指定StsToken")} } func NewStsRegionFlag() *cli.Flag { return &cli.Flag{ Category: "config", Name: StsRegionFlagName, AssignedMode: cli.AssignedOnce, Persistent: true, Short: i18n.T( "use `--sts-region <StsRegion>` to assign StsRegion", "使用 `--sts-region <StsRegion>` 指定StsRegion")} } func NewRamRoleNameFlag() *cli.Flag { return &cli.Flag{ Category: "config", Name: RamRoleNameFlagName, AssignedMode: cli.AssignedOnce, Persistent: true, Short: i18n.T( "use `--ram-role-name <RamRoleName>` to assign RamRoleName", "使用 `--ram-role-name <RamRoleName>` 指定RamRoleName")} } func NewRamRoleArnFlag() *cli.Flag { return &cli.Flag{ Category: "config", Name: RamRoleArnFlagName, AssignedMode: cli.AssignedOnce, Short: i18n.T( "use `--ram-role-arn <RamRoleArn>` to assign RamRoleArn", "使用 `--ram-role-arn <RamRoleArn>` 指定RamRoleArn")} } func NewRoleSessionNameFlag() *cli.Flag { return &cli.Flag{Category: "config", Name: RoleSessionNameFlagName, AssignedMode: cli.AssignedOnce, Short: i18n.T( "use `--role-session-name <RoleSessionName>` to assign RoleSessionName", "使用 `--role-session-name <RoleSessionName>` 指定RoleSessionName")} } func NewExpiredSecondsFlag() *cli.Flag { return &cli.Flag{ Category: "config", Name: ExpiredSecondsFlagName, AssignedMode: cli.AssignedOnce, Short: i18n.T( "use `--expired-seconds <seconds>` to specify expiration time", "使用 `--expired-seconds <seconds>` 指定凭证过期时间")} } func NewPrivateKeyFlag() *cli.Flag { return &cli.Flag{Category: "config", Name: PrivateKeyFlagName, AssignedMode: cli.AssignedOnce, Short: i18n.T( "use `--private-key <PrivateKey>` to assign RSA PrivateKey", "使用 `--private-key <PrivateKey>` 指定RSA私钥")} } func NewKeyPairNameFlag() *cli.Flag { return &cli.Flag{Category: "config", Name: KeyPairNameFlagName, AssignedMode: cli.AssignedOnce, Short: i18n.T( "use `--key-pair-name <KeyPairName>` to assign KeyPairName", "使用 `--key-pair-name <KeyPairName>` 指定KeyPairName")} } func NewProcessCommandFlag() *cli.Flag { return &cli.Flag{ Category: "config", Name: ProcessCommandFlagName, AssignedMode: cli.AssignedOnce, Short: i18n.T( "use `--process-command <ProcessCommand>` to specify external program execution command", "使用 `--process-command <ProcessCommand>` 指定外部程序运行命令", ), } } func NewRegionFlag() *cli.Flag { return &cli.Flag{Category: "config", Name: RegionFlagName, AssignedMode: cli.AssignedOnce, Persistent: true, Short: i18n.T( "use `--region <regionId>` to assign region", "使用 `--region <regionId>` 来指定访问大区")} } func NewLanguageFlag() *cli.Flag { return &cli.Flag{ Category: "config", Name: LanguageFlagName, AssignedMode: cli.AssignedOnce, Short: i18n.T( "use `--language [en|zh]` to assign language", "使用 `--language [en|zh]` 来指定语言")} } func NewConfigurePathFlag() *cli.Flag { return &cli.Flag{ Category: "config", Name: ConfigurePathFlagName, AssignedMode: cli.AssignedOnce, Persistent: true, Short: i18n.T( "use `--config-path` to specify the configuration file path", "使用 `--config-path` 指定配置文件路径", ), } } func NewReadTimeoutFlag() *cli.Flag { return &cli.Flag{ Category: "caller", Name: ReadTimeoutFlagName, AssignedMode: cli.AssignedOnce, Aliases: []string{"retry-timeout"}, Short: i18n.T( "use `--read-timeout <seconds>` to set I/O timeout(seconds)", "使用 `--read-timeout <seconds>` 指定I/O超时时间(秒)"), } } func NewConnectTimeoutFlag() *cli.Flag { return &cli.Flag{ Category: "caller", Name: ConnectTimeoutFlagName, AssignedMode: cli.AssignedOnce, Short: i18n.T( "use `--connect-timeout <seconds>` to set connect timeout(seconds)", "使用 `--connect-timeout <seconds>` 指定请求连接超时时间(秒)"), } } func NewRetryCountFlag() *cli.Flag { return &cli.Flag{ Category: "caller", Name: RetryCountFlagName, AssignedMode: cli.AssignedOnce, Short: i18n.T( "use `--retry-count <count>` to set retry count", "使用 `--retry-count <count>` 指定重试次数"), } } func NewSkipSecureVerify() *cli.Flag { return &cli.Flag{ Category: "caller", Name: SkipSecureVerifyName, AssignedMode: cli.AssignedNone, Persistent: true, Short: i18n.T( "use `--skip-secure-verify` to skip https certification validate [Not recommended]", "使用 `--skip-secure-verify` 跳过https的证书校验 [不推荐使用]", ), } } func NewServiceInstanceFlag() *cli.Flag { return &cli.Flag{ Category: "caller", Name: ServiceInstanceFlagName, Shorthand: 's', AssignedMode: cli.AssignedOnce, DefaultValue: "", Persistent: true, Short: i18n.T( "use `--service-instance` to specify service instance", "使用 `--service-instance` 指定代运维的服务实例", ), } } func NewPublicKeyFlag() *cli.Flag { return &cli.Flag{ Category: "caller", Name: PublicKeyFlagName, AssignedMode: cli.AssignedOnce, Persistent: true, Short: i18n.T( "use `--public-key <public-key>` to set the content of temporary ssh_public_key or the path of ssh_public_key file", "使用 `--public-key <public-key>` 指定临时ssh公钥的内容或者公钥文件的路径", ), } } func NewUserNameFlag() *cli.Flag { return &cli.Flag{ Category: "caller", Name: UserNameFlagName, AssignedMode: cli.AssignedOnce, Persistent: true, Short: i18n.T( "use `--user-name <user-name>` to set the user name of temporary ssh_public_key, default root", "使用 `--user-name <user-name>` 指定临时公钥的用户名, 默认是root", ), } }