From da1e59873367ee7a18e6698ccff3c6e63f2532c3 Mon Sep 17 00:00:00 2001 From: halo Date: Thu, 5 Oct 2023 21:13:14 +0800 Subject: [PATCH 1/6] =?UTF-8?q?feat:=20=E6=94=AF=E6=8C=81freerdp?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- go-client/config.json | 39 +++++++++++++++++++-- go-client/pkg/awaken/awaken_darwin.go | 2 +- go-client/pkg/awaken/awaken_linux.go | 15 ++++++-- go-client/pkg/awaken/awaken_unix.go | 2 +- interface/src/renderer/assets/xfreerdp.png | Bin 0 -> 27065 bytes 5 files changed, 52 insertions(+), 6 deletions(-) create mode 100644 interface/src/renderer/assets/xfreerdp.png diff --git a/go-client/config.json b/go-client/config.json index 254eb10..ccd7f48 100644 --- a/go-client/config.json +++ b/go-client/config.json @@ -346,8 +346,24 @@ "arg_format": "", "match_first": [], "is_internal": true, - "is_default": true, - "is_set": true + "is_default": false, + "is_set": false + }, + { + "name": "xfreerdp", + "display_name": "xFreeRDP", + "protocol": [ + "rdp" + ], + "comment": "FreeRDP 是远程桌面协议 (RDP) 的免费实现,在 Apache 许可证下发布。\n安装命令\nsudo apt-get install freerdp\nsudo yum install freerdp", + "download_url": "https://github.com/FreeRDP/FreeRDP-内置", + "type": "windows", + "path": "xfreerdp", + "arg_format": "", + "match_first": [], + "is_internal": true, + "is_default": false, + "is_set": false } ], "filetransfer": [], @@ -377,6 +393,25 @@ "is_internal": true, "is_default": false, "is_set": true + }, + { + "name": "dbeaver", + "display_name": "DBeaver Community", + "protocol": [ + "oracle", + "mysql", + "postgresql", + "mariadb" + ], + "comment": "DBeaver Community是一个通用的数据库管理工具和SQL客户端,支持MySQL、PostgreSQL、Oracle以及其他兼容JDBC的数据库。\n\n!!!手动下载安装,点击保存启用!!!", + "download_url": "https://dbeaver.io/download/", + "type": "databases", + "path": "", + "arg_format": "-con name={name}|driver={protocol}|user={username}|password={value}|database={dbname}|host={host}|port={port}|save=false|connect=true", + "match_first": [], + "is_internal": false, + "is_default": false, + "is_set": false } ] } diff --git a/go-client/pkg/awaken/awaken_darwin.go b/go-client/pkg/awaken/awaken_darwin.go index cab07e3..031cadf 100755 --- a/go-client/pkg/awaken/awaken_darwin.go +++ b/go-client/pkg/awaken/awaken_darwin.go @@ -18,7 +18,7 @@ func getCommandFromArgs(connectInfo map[string]string, argFormat string) string return argFormat } -func awakenRDPCommand(filePath string) *exec.Cmd { +func awakenRDPCommand(filePath string, cfg *config.AppConfig) *exec.Cmd { global.LOG.Debug(filePath) cmd := exec.Command("open", filePath) return cmd diff --git a/go-client/pkg/awaken/awaken_linux.go b/go-client/pkg/awaken/awaken_linux.go index 88a9911..22df10b 100755 --- a/go-client/pkg/awaken/awaken_linux.go +++ b/go-client/pkg/awaken/awaken_linux.go @@ -18,9 +18,20 @@ func getCommandFromArgs(connectInfo map[string]string, argFormat string) string return argFormat } -func awakenRDPCommand(filePath string) *exec.Cmd { +func awakenRDPCommand(filePath string, cfg *config.AppConfig) *exec.Cmd { global.LOG.Debug(filePath) - cmd := exec.Command("remmina", filePath) + var appItem *config.AppItem + appLst := cfg.Linux.RemoteDesktop + for _, app := range appLst { + if app.IsActive() && app.IsSupportProtocol("rdp") { + appItem = &app + break + } + } + if appItem == nil { + return nil + } + cmd := exec.Command(appItem.Name, filePath) return cmd } diff --git a/go-client/pkg/awaken/awaken_unix.go b/go-client/pkg/awaken/awaken_unix.go index 7c39d90..3cc5f3a 100755 --- a/go-client/pkg/awaken/awaken_unix.go +++ b/go-client/pkg/awaken/awaken_unix.go @@ -9,7 +9,7 @@ import ( ) func handleRDP(r *Rouse, filePath string, cfg *config.AppConfig) *exec.Cmd { - cmd := awakenRDPCommand(filePath) + cmd := awakenRDPCommand(filePath, cfg) return cmd } diff --git a/interface/src/renderer/assets/xfreerdp.png b/interface/src/renderer/assets/xfreerdp.png new file mode 100644 index 0000000000000000000000000000000000000000..397e62d8ff07e3376149fb3a7097f6cd73e8afbb GIT binary patch literal 27065 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

=)1`Y7D~zHu1b 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 qB|xxhJTGk3XOK4} Date: Fri, 6 Oct 2023 12:52:00 +0800 Subject: [PATCH 2/6] perf: README.md --- README.md | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 0ae2117..040cedf 100755 --- a/README.md +++ b/README.md @@ -3,12 +3,8 @@ JumpServer 客户端,支持本地本地客户端拉起。 ## 概览 -### Win ![windows](static/windows.png) -### Mac -![macos](static/macos.png) - ## 安装 ### Mac @@ -17,7 +13,15 @@ JumpServer 客户端,支持本地本地客户端拉起。 ### Win -下载Win安装包,双击JumpServer.exe 文件(需要等待10几秒钟)。 +下载Win安装包,双击JumpServer安装包文件(需要等待10几秒钟)。 + +### Linux + +下载Linux安装包,双击Deb安装包文件,打开安装包管理器进行安装。或者使用命令进行安装 +``` +sudo dpkg -i +``` + ## 卸载 @@ -29,6 +33,12 @@ JumpServer 客户端,支持本地本地客户端拉起。 移除JumpServer.app。 +### Linux + +点击打开软件管理器进行卸载。或者使用命令进行卸载 +``` +sudo dpkg --purge +``` ## 打包 From 5d174adce2c1218c8a2dfc5d277fdf7d79da5df4 Mon Sep 17 00:00:00 2001 From: halo Date: Fri, 6 Oct 2023 12:59:10 +0800 Subject: [PATCH 3/6] =?UTF-8?q?perf:=20=E6=9B=B4=E6=96=B0=E7=89=88?= =?UTF-8?q?=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- interface/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/interface/package.json b/interface/package.json index 1c1af93..9b2b167 100644 --- a/interface/package.json +++ b/interface/package.json @@ -1,7 +1,7 @@ { "name": "jumpserver-client", "author": "Fit2Cloud Technology Co., Ltd.; ", - "version": "v2.0.1", + "version": "v2.0.2", "homepage": "https://jumpserver.org", "private": true, "scripts": { From a9f1271410356eb1f57eb26bf70bac12fc933bf6 Mon Sep 17 00:00:00 2001 From: halo Date: Fri, 6 Oct 2023 18:45:59 +0800 Subject: [PATCH 4/6] =?UTF-8?q?perf:=20=E6=9B=B4=E6=96=B0=E9=BB=98?= =?UTF-8?q?=E8=AE=A4=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- go-client/config.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/go-client/config.json b/go-client/config.json index ccd7f48..a98f57d 100644 --- a/go-client/config.json +++ b/go-client/config.json @@ -209,7 +209,7 @@ "match_first": [], "is_internal": true, "is_default": false, - "is_set": true + "is_set": false }, { "name": "securecrt", @@ -309,7 +309,7 @@ "match_first": [], "is_internal": false, "is_default": false, - "is_set": true + "is_set": false } ] }, From 9baa354d8da37a18d26eb1563c2a7aa5ad2a0c9d Mon Sep 17 00:00:00 2001 From: halo Date: Sat, 14 Oct 2023 17:21:02 +0800 Subject: [PATCH 5/6] =?UTF-8?q?perf:=20windows=E6=94=AF=E6=8C=81=E4=BF=AE?= =?UTF-8?q?=E5=A4=8D=E5=AE=89=E8=A3=85=E8=B7=AF=E5=BE=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- interface/vue.config.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/interface/vue.config.js b/interface/vue.config.js index bbffb5f..6607cd5 100644 --- a/interface/vue.config.js +++ b/interface/vue.config.js @@ -81,7 +81,7 @@ module.exports = { }, nsis: { oneClick: true, - allowToChangeInstallationDirectory: false, + allowToChangeInstallationDirectory: true, deleteAppDataOnUninstall: true, include: "build/win/installer.nsh" }, From 2e8b5b74ff0249e290f6dd2464571b57c83fac8f Mon Sep 17 00:00:00 2001 From: halo Date: Tue, 17 Oct 2023 16:15:19 +0800 Subject: [PATCH 6/6] =?UTF-8?q?perf:=20=E6=94=AF=E6=8C=81windows=E5=AE=89?= =?UTF-8?q?=E8=A3=85=E4=BF=AE=E6=94=B9=E8=B7=AF=E5=BE=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- interface/build/win/installer.nsh | 2 +- interface/vue.config.js | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/interface/build/win/installer.nsh b/interface/build/win/installer.nsh index 2b2b731..c588eb5 100644 --- a/interface/build/win/installer.nsh +++ b/interface/build/win/installer.nsh @@ -7,7 +7,7 @@ WriteRegStr HKCR "jms" "URL Protocol" "" WriteRegStr HKCR "jms\shell" "" "" WriteRegStr HKCR "jms\shell\open" "" "" - WriteRegStr HKCR "jms\shell\open\command" "" '$INSTDIR\resources\bin\windows\JumpServerClient.exe "%1"' + WriteRegStr HKCR "jms\shell\open\command" "" '"$INSTDIR\resources\bin\windows\JumpServerClient.exe" "%1"' !macroend !macro customUnInstall diff --git a/interface/vue.config.js b/interface/vue.config.js index bbffb5f..4d611a2 100644 --- a/interface/vue.config.js +++ b/interface/vue.config.js @@ -80,8 +80,8 @@ module.exports = { }] }, nsis: { - oneClick: true, - allowToChangeInstallationDirectory: false, + oneClick: false, + allowToChangeInstallationDirectory: true, deleteAppDataOnUninstall: true, include: "build/win/installer.nsh" },