From 6af6c8167afe4e5d4ad978b37452d55be295683f Mon Sep 17 00:00:00 2001 From: rainzm Date: Thu, 5 Aug 2021 15:58:33 +0800 Subject: [PATCH] feat(region): check whether the esxi host is ip or domain name --- pkg/multicloud/esxi/provider/provider.go | 4 ++++ 1 file changed, 4 insertions(+) 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)