diff --git a/pkg/multicloud/esxi/provider/provider.go b/pkg/multicloud/esxi/provider/provider.go index 836da9539a..e080141893 100644 --- a/pkg/multicloud/esxi/provider/provider.go +++ b/pkg/multicloud/esxi/provider/provider.go @@ -24,6 +24,7 @@ import ( "yunion.io/x/jsonutils" "yunion.io/x/log" "yunion.io/x/pkg/errors" + "yunion.io/x/pkg/util/regutils" api "yunion.io/x/onecloud/pkg/apis/compute" "yunion.io/x/onecloud/pkg/cloudprovider" @@ -59,6 +60,9 @@ func (self *SESXiProviderFactory) ValidateCreateCloudaccountData(ctx context.Con if len(input.Host) == 0 { return output, errors.Wrap(httperrors.ErrMissingParameter, "host") } + if !regutils.MatchIPAddr(input.Host) && !regutils.MatchDomainName(input.Host) { + return output, errors.Wrap(httperrors.ErrInputParameter, "host should be ip or domain name") + } output.AccessUrl = fmt.Sprintf("https://%s:%d/sdk", input.Host, input.Port) if input.Port == 0 || input.Port == 443 { output.AccessUrl = fmt.Sprintf("https://%s/sdk", input.Host)