From 45ddeaf084bf9b68839878a292cfc505f7173478 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B1=88=E8=BD=A9?= Date: Fri, 30 Nov 2018 16:59:24 +0800 Subject: [PATCH 1/3] =?UTF-8?q?=E8=A1=A5=E5=85=85=E8=85=BE=E8=AE=AF?= =?UTF-8?q?=E4=BA=91webconsole?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pkg/util/qcloud/instance.go | 2 +- pkg/webconsole/handlers.go | 2 +- pkg/webconsole/session/remote_console.go | 21 +++++++++++++++++++-- 3 files changed, 21 insertions(+), 4 deletions(-) diff --git a/pkg/util/qcloud/instance.go b/pkg/util/qcloud/instance.go index 233c5a3c8d..c4eba2cf52 100644 --- a/pkg/util/qcloud/instance.go +++ b/pkg/util/qcloud/instance.go @@ -364,7 +364,7 @@ func (self *SInstance) GetVNCInfo() (jsonutils.JSONObject, error) { return nil, err } ret := jsonutils.NewDict() - ret.Add(jsonutils.NewString("https://img.qcloud.com/qcloud/app/active_vnc/index.html?InstanceVncUrl="+url), "url") + ret.Add(jsonutils.NewString(url), "url") ret.Add(jsonutils.NewString("qcloud"), "protocol") ret.Add(jsonutils.NewString(self.InstanceId), "instance_id") return ret, nil diff --git a/pkg/webconsole/handlers.go b/pkg/webconsole/handlers.go index 2f0ed8c05a..37b2c47071 100644 --- a/pkg/webconsole/handlers.go +++ b/pkg/webconsole/handlers.go @@ -194,7 +194,7 @@ func handleServerRemoteConsole(ctx context.Context, w http.ResponseWriter, r *ht return } switch info.Protocol { - case session.ALIYUN: + case session.ALIYUN, session.QCLOUD: responsePublicCloudConsole(info, w) case session.VNC, session.SPICE, session.WMKS: handleDataSession(info, w) diff --git a/pkg/webconsole/session/remote_console.go b/pkg/webconsole/session/remote_console.go index ae211cc4ce..985d2a2fef 100644 --- a/pkg/webconsole/session/remote_console.go +++ b/pkg/webconsole/session/remote_console.go @@ -12,6 +12,7 @@ import ( const ( VNC = "vnc" ALIYUN = "aliyun" + QCLOUD = "qcloud" SPICE = "spice" WMKS = "wmks" ) @@ -74,10 +75,26 @@ func (info *RemoteConsoleInfo) ShowInfo() string { } func (info *RemoteConsoleInfo) GetConnectParams() (string, error) { - if info.Protocol != ALIYUN { - return "", fmt.Errorf("Can't convert protocol %s to connect params", info.Protocol) + if info.Protocol == ALIYUN { + return info.getAliyunUrl() } + if info.Protocol == QCLOUD { + return info.getQcloudUrl() + } + + return "", fmt.Errorf("Can't convert protocol %s to connect params", info.Protocol) +} + +func (info *RemoteConsoleInfo) getQcloudUrl() (string, error) { + base := "https://img.qcloud.com/qcloud/app/active_vnc/index.html" + params := url.Values{ + "InstanceVncUrl": {info.Url}, + } + return fmt.Sprintf("%s?%s", base, params.Encode()), nil +} + +func (info *RemoteConsoleInfo) getAliyunUrl() (string, error) { isWindows := "False" if info.OsName == "Windows" { isWindows = "True" From 511de80349281b5ad40b038c5dfdf36e3fadc078 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B1=88=E8=BD=A9?= Date: Fri, 30 Nov 2018 17:15:46 +0800 Subject: [PATCH 2/3] =?UTF-8?q?=E7=A3=81=E7=9B=98=E5=90=8D=E7=A7=B0?= =?UTF-8?q?=E4=B8=BA=E6=9C=AA=E5=91=BD=E5=90=8D=E6=97=B6=E4=BD=BF=E7=94=A8?= =?UTF-8?q?=E7=A3=81=E7=9B=98ID?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pkg/util/qcloud/disk.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/util/qcloud/disk.go b/pkg/util/qcloud/disk.go index 33884aaa78..527c23d514 100644 --- a/pkg/util/qcloud/disk.go +++ b/pkg/util/qcloud/disk.go @@ -178,7 +178,7 @@ func (self *SDisk) Resize(size int64) error { } func (self *SDisk) GetName() string { - if len(self.DiskName) > 0 { + if len(self.DiskName) > 0 && self.DiskName != "未命名" { return self.DiskName } return self.DiskId From d15aa96f861fd6f388c6a26f9b94c1d2f90feaf8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B1=88=E8=BD=A9?= Date: Fri, 30 Nov 2018 17:29:54 +0800 Subject: [PATCH 3/3] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=90=8C=E6=AD=A5?= =?UTF-8?q?=E8=A7=84=E5=88=99=E7=BC=BA=E5=A4=B1=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pkg/util/qcloud/instance.go | 5 ++++- pkg/util/qcloud/securitygroup.go | 4 ++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/pkg/util/qcloud/instance.go b/pkg/util/qcloud/instance.go index c4eba2cf52..65375440c8 100644 --- a/pkg/util/qcloud/instance.go +++ b/pkg/util/qcloud/instance.go @@ -162,7 +162,10 @@ func (self *SInstance) GetId() string { } func (self *SInstance) GetName() string { - return self.InstanceName + if len(self.InstanceName) > 0 && self.InstanceName != "未命名" { + return self.InstanceName + } + return self.InstanceId } func (self *SInstance) GetGlobalId() string { diff --git a/pkg/util/qcloud/securitygroup.go b/pkg/util/qcloud/securitygroup.go index 9e977adb8a..ad31faf336 100644 --- a/pkg/util/qcloud/securitygroup.go +++ b/pkg/util/qcloud/securitygroup.go @@ -264,8 +264,8 @@ func (self *SSecurityGroup) GetRules() ([]secrules.SecurityRule, error) { secgroup.SecurityGroupPolicySet.Ingress[i].direction = "in" } originRules := []SecurityGroupPolicy{} - originRules = append(secgroup.SecurityGroupPolicySet.Egress) - originRules = append(secgroup.SecurityGroupPolicySet.Ingress) + originRules = append(originRules, secgroup.SecurityGroupPolicySet.Egress...) + originRules = append(originRules, secgroup.SecurityGroupPolicySet.Ingress...) sort.Sort(SecurityGroupRuleSet(originRules)) rules := []secrules.SecurityRule{} priority := 100