From 1d35922f7af39575a311e332b563aa3b856980ac Mon Sep 17 00:00:00 2001 From: Apex Liu Date: Wed, 14 Nov 2018 00:45:25 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=AD=A3macOS=E5=8A=A9=E6=89=8B?= =?UTF-8?q?=E6=9C=89=E6=97=B6=E6=97=A0=E6=B3=95=E4=BF=9D=E5=AD=98=E9=85=8D?= =?UTF-8?q?=E7=BD=AE=E7=9A=84=E9=97=AE=E9=A2=98=EF=BC=9B=E6=9A=82=E6=97=B6?= =?UTF-8?q?=E7=A7=BB=E9=99=A4telnet=E7=9A=84=E6=94=AF=E6=8C=81=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- client/cfg/tp-assist.macos.json | 14 +-- client/tp_assist_macos/site/css/style.css | 2 +- client/tp_assist_macos/site/index.html | 87 ++++++--------- client/tp_assist_macos/site/js/config.js | 102 +++++++++--------- client/tp_assist_macos/site/less/style.less | 6 ++ .../src/apple-scpt/iterm2.scpt | Bin 2058 -> 2016 bytes .../src/apple-scpt/terminal.scpt | Bin 2566 -> 2514 bytes client/tp_assist_macos/src/csrc/ts_cfg.cpp | 10 +- .../tp_assist_macos/src/csrc/ts_http_rpc.cpp | 31 +++++- server/www/teleport/static/js/tp-const.js | 3 + 10 files changed, 133 insertions(+), 122 deletions(-) diff --git a/client/cfg/tp-assist.macos.json b/client/cfg/tp-assist.macos.json index aaba0e5..0ede898 100644 --- a/client/cfg/tp-assist.macos.json +++ b/client/cfg/tp-assist.macos.json @@ -6,16 +6,16 @@ { "name":"terminal", "display": "终端(系统自带)", - "app": "Terminal.app", + "app": "", "cmdline": "Basic", - "desc": [] + "desc": ["命令参数为终端偏好设置中描述文件的名称"] }, { "name": "iterm2", "display": "iTerm2", - "app": "iTerm2.app", + "app": "", "cmdline": "Default", - "desc": [] + "desc": ["命令参数为iTerm偏好设置中描述文件的名称"] }, { "name": "securecrt", @@ -62,20 +62,20 @@ "display": "终端(系统自带)", "app": "Terminal.app", "cmdline": "Basic", - "desc": [] + "desc": ["命令参数为终端偏好设置中描述文件的名称"] }, { "name": "iterm2", "display": "iTerm2", "app": "iTerm2.app", "cmdline": "Default", - "desc": [] + "desc": ["命令参数为iTerm偏好设置中描述文件的名称"] }, { "name": "securecrt", "display": "SecureCRT", "app": "SecureCRT.app", - "cmdline": "/T /N \"TP#ssh://{real_ip}\" /SSH2 /P {host_port} /PASSWORD **** {user_name}@{host_ip}", + "cmdline": "/T /N \"TP#telnet://{real_ip}\" /TELNET {user_name}@{host_ip} {host_port}", "desc": [] }, { diff --git a/client/tp_assist_macos/site/css/style.css b/client/tp_assist_macos/site/css/style.css index 36da044..414f387 100644 --- a/client/tp_assist_macos/site/css/style.css +++ b/client/tp_assist_macos/site/css/style.css @@ -1 +1 @@ -@charset "utf-8";body{font-family:"Microsoft YaHei","微软雅黑",Helvetica,Arial,sans-serif;font-size:13px;background-color:#fff;color:#333}html,body{height:100%}.header{width:100%;height:48px;position:fixed;top:0;line-height:48px;background-color:#3b3b3b;color:#fff;z-index:999}.header .title{font-size:16px}.header .sub-title{margin-left:30px;color:#acacac}.header-fix{height:48px}.footer{width:100%;height:24px;position:fixed;bottom:0;text-align:center;line-height:24px;background-color:#d5d5d5;border-top:1px solid #a2a2a2;z-index:999}.content{margin:20px 0 50px 0}.content .cfg-title{font-size:16px;font-weight:bold}.content .form-group{margin-bottom:5px}.content .col-sm-1,.content .col-sm-2,.content .col-sm-3,.content .col-sm-4,.content .col-sm-5,.content .col-sm-6,.content .col-sm-7,.content .col-sm-8,.content .col-sm-9,.content .col-sm-10,.content .col-sm-11{padding-left:3px;padding-right:3px}.content .arg-detail ol,.content .arg-detail ul{margin-bottom:0}.content .arg-detail-common{background-color:#dbffbe;border-radius:5px;padding:15px}.content .input-args{font-family:Consolas,Lucida Console,Monaco,Courier,'Courier New',monospace}.arg-varb{color:#0a6aa1;font-weight:bold;font-family:Consolas,Lucida Console,Monaco,Courier,'Courier New',monospace;display:inline-block;width:164px}#gritter-notice-wrapper{z-index:9999}.gritter-bottom,.gritter-item,.gritter-top{background:rgba(0,0,0,0.8) !important}.gritter-top{border-top-left-radius:3px;border-top-right-radius:3px}.gritter-bottom{border-bottom-left-radius:3px;border-bottom-right-radius:3px}.gritter-close,.gritter-light .gritter-close{left:auto !important;right:5px !important;top:5px !important;width:16px !important;height:16px !important;line-height:16px !important;display:block !important;border-radius:50%}.gritter-close:before,.gritter-light .gritter-close:before{content:'\f00d' !important;font-family:FontAwesome !important;font-size:9px !important;width:16px !important;height:16px !important;line-height:16px !important;color:#fff !important;text-indent:0 !important;position:absolute !important;text-align:center !important;right:0 !important;top:0 !important}.gritter-title{font-size:13px !important;line-height:16px !important;padding-bottom:5px !important;font-weight:400 !important;color:#fff !important;text-shadow:none !important}.gritter-item{color:#aaa !important;font-size:13px !important;padding:2px 15px 5px !important}.gritter-error .gritter-bottom,.gritter-error .gritter-item,.gritter-error .gritter-top{background:rgba(123,32,32,0.9) !important}.gritter-error .gritter-title{color:#fff !important}.gritter-error .gritter-item{color:#ddd !important}.gritter-error .gritter-close{left:auto !important;right:5px !important;top:5px !important;width:16px !important;height:16px !important;line-height:16px !important;display:block !important;border-radius:50%;background:#e33b3b !important}.gritter-success .gritter-bottom,.gritter-success .gritter-item,.gritter-success .gritter-top{background:rgba(1,65,16,0.9) !important}.gritter-success .gritter-title{color:#ddd !important}.gritter-success .gritter-item{color:#ccc !important}.gritter-success .gritter-close{background:#0eb320 !important}#gritter-notice-wrapper{width:320px;max-width:480px}/*# sourceMappingURL=style.css.map */ \ No newline at end of file +@charset "utf-8";body{font-family:"Microsoft YaHei","微软雅黑",Helvetica,Arial,sans-serif;font-size:13px;background-color:#fff;color:#333}html,body{height:100%}.header{width:100%;height:48px;position:fixed;top:0;line-height:48px;background-color:#3b3b3b;color:#fff;z-index:999}.header .title{font-size:16px}.header .sub-title{margin-left:30px;color:#acacac}.header-fix{height:48px}.footer{width:100%;height:24px;position:fixed;bottom:0;text-align:center;line-height:24px;background-color:#d5d5d5;border-top:1px solid #a2a2a2;z-index:999}.content{margin:20px 0 50px 0}.content .cfg-title{font-size:16px;font-weight:bold}.content .form-group{margin-bottom:5px}.content .col-sm-1,.content .col-sm-2,.content .col-sm-3,.content .col-sm-4,.content .col-sm-5,.content .col-sm-6,.content .col-sm-7,.content .col-sm-8,.content .col-sm-9,.content .col-sm-10,.content .col-sm-11{padding-left:3px;padding-right:3px}.content .arg-detail ol,.content .arg-detail ul{margin-bottom:0}.content .arg-detail-common{background-color:#dbffbe;border-radius:5px;padding:15px}.content .input-args{font-family:Consolas,Lucida Console,Monaco,Courier,'Courier New',monospace}.content .desc{margin-top:5px;color:#6b6b6b}.arg-varb{color:#0a6aa1;font-weight:bold;font-family:Consolas,Lucida Console,Monaco,Courier,'Courier New',monospace;display:inline-block;width:164px}#gritter-notice-wrapper{z-index:9999}.gritter-bottom,.gritter-item,.gritter-top{background:rgba(0,0,0,0.8) !important}.gritter-top{border-top-left-radius:3px;border-top-right-radius:3px}.gritter-bottom{border-bottom-left-radius:3px;border-bottom-right-radius:3px}.gritter-close,.gritter-light .gritter-close{left:auto !important;right:5px !important;top:5px !important;width:16px !important;height:16px !important;line-height:16px !important;display:block !important;border-radius:50%}.gritter-close:before,.gritter-light .gritter-close:before{content:'\f00d' !important;font-family:FontAwesome !important;font-size:9px !important;width:16px !important;height:16px !important;line-height:16px !important;color:#fff !important;text-indent:0 !important;position:absolute !important;text-align:center !important;right:0 !important;top:0 !important}.gritter-title{font-size:13px !important;line-height:16px !important;padding-bottom:5px !important;font-weight:400 !important;color:#fff !important;text-shadow:none !important}.gritter-item{color:#aaa !important;font-size:13px !important;padding:2px 15px 5px !important}.gritter-error .gritter-bottom,.gritter-error .gritter-item,.gritter-error .gritter-top{background:rgba(123,32,32,0.9) !important}.gritter-error .gritter-title{color:#fff !important}.gritter-error .gritter-item{color:#ddd !important}.gritter-error .gritter-close{left:auto !important;right:5px !important;top:5px !important;width:16px !important;height:16px !important;line-height:16px !important;display:block !important;border-radius:50%;background:#e33b3b !important}.gritter-success .gritter-bottom,.gritter-success .gritter-item,.gritter-success .gritter-top{background:rgba(1,65,16,0.9) !important}.gritter-success .gritter-title{color:#ddd !important}.gritter-success .gritter-item{color:#ccc !important}.gritter-success .gritter-close{background:#0eb320 !important}#gritter-notice-wrapper{width:320px;max-width:480px} \ No newline at end of file diff --git a/client/tp_assist_macos/site/index.html b/client/tp_assist_macos/site/index.html index 375ae05..35292c5 100644 --- a/client/tp_assist_macos/site/index.html +++ b/client/tp_assist_macos/site/index.html @@ -69,10 +69,6 @@
- - - -
@@ -80,6 +76,7 @@
+
@@ -99,10 +96,7 @@
-
- - -
+
@@ -110,58 +104,45 @@
+
-
-

本地 TELNET 客户端配置

- -
-
- -
- -
-
- -
- -
-
- - -
-
-
- -
- -
- -
-
- -
+ + + + + + + + + + + + + + + + + + + + + + + + + + +

本地 RDP 客户端配置

- - - - - - - - - - - -
@@ -173,10 +154,7 @@
-
- - -
+
@@ -184,6 +162,9 @@
+
+ +
diff --git a/client/tp_assist_macos/site/js/config.js b/client/tp_assist_macos/site/js/config.js index 4722b3f..e01122a 100644 --- a/client/tp_assist_macos/site/js/config.js +++ b/client/tp_assist_macos/site/js/config.js @@ -10,22 +10,23 @@ var dom = { ssh_type: $('#ssh-type'), ssh_app: $('#ssh-app'), ssh_cmdline: $('#ssh-cmdline'), - ssh_select_app: $('#ssh-select-app'), + ssh_desc: $('#ssh-desc'), sftp_type: $('#sftp-type'), sftp_app: $('#sftp-app'), sftp_cmdline: $('#sftp-cmdline'), - sftp_select_app: $('#sftp-select-app'), + sftp_desc: $('#sftp-desc'), + telnet_type: $('#telnet-type'), telnet_app: $('#telnet-app'), telnet_cmdline: $('#telnet-cmdline'), - telnet_select_app: $('#telnet-select-app'), + telnet_desc: $('#telnet-desc'), rdp_type: $('#rdp-type'), rdp_app: $('#rdp-app'), rdp_cmdline: $('#rdp-cmdline'), - rdp_select_app: $('#rdp-select-app'), + rdp_desc: $('#rdp-desc'), btn_save: $('#btn-save') }; @@ -107,6 +108,8 @@ function update_dom() { dom.ssh_type.val(selected); dom.ssh_app.val(app); dom.ssh_cmdline.val(cmdline); + + $(dom.ssh_type).trigger('change'); } } @@ -139,6 +142,8 @@ function update_dom() { dom.sftp_type.val(selected); dom.sftp_app.val(app); dom.sftp_cmdline.val(cmdline); + + $(dom.sftp_type).trigger('change'); } } @@ -172,6 +177,8 @@ function update_dom() { dom.telnet_type.val(selected); dom.telnet_app.val(app); dom.telnet_cmdline.val(cmdline); + + $(dom.telnet_type).trigger('change'); } } @@ -205,6 +212,8 @@ function update_dom() { dom.rdp_type.val(selected); dom.rdp_app.val(app); dom.rdp_cmdline.val(cmdline); + + $(dom.rdp_type).trigger('change'); } } } @@ -230,14 +239,14 @@ function on_save() { break; } } - for (i = 0; i < g_cfg.telnet.available.length; i++) { - var item = g_cfg.telnet.available[i]; - if (item.name === g_cfg.telnet.selected) { - item.app = dom.telnet_app.val(); - item.cmdline = dom.telnet_cmdline.val(); - break; - } - } +// for (i = 0; i < g_cfg.telnet.available.length; i++) { +// var item = g_cfg.telnet.available[i]; +// if (item.name === g_cfg.telnet.selected) { +// item.app = dom.telnet_app.val(); +// item.cmdline = dom.telnet_cmdline.val(); +// break; +// } +// } for (i = 0; i < g_cfg.rdp.available.length; i++) { var item = g_cfg.rdp.available[i]; if (item.name === g_cfg.rdp.selected) { @@ -319,8 +328,6 @@ function notify_success(message_, title_) { $(document).ready(function () { get_version(); - get_config(); - dom.ssh_type.change(function () { g_cfg.ssh.selected = dom.ssh_type.val(); for (var i = 0; i < g_cfg.ssh.available.length; i++) { @@ -328,22 +335,19 @@ $(document).ready(function () { if (item.name === g_cfg.ssh.selected) { dom.ssh_app.val(item.app); dom.ssh_cmdline.val(item.cmdline); + + var html = []; + for(var j = 0; j < item.desc.length; j++) { + html.push('
' + item.desc[j] + '
'); + } + dom.ssh_desc.html(html.join('')); return; } } notify_error('所选的配置项不存在!'); }); - dom.ssh_select_app.click(function () { - select_local_file(function (code, path) { - if (code == 0) { - dom.ssh_app.val(path); - } else { - console.log("can not select file."); - } - }); - }); - + dom.sftp_type.change(function () { g_cfg.sftp.selected = dom.sftp_type.val(); for (var i = 0; i < g_cfg.sftp.available.length; i++) { @@ -351,20 +355,17 @@ $(document).ready(function () { if (item.name === g_cfg.sftp.selected) { dom.sftp_app.val(item.app); dom.sftp_cmdline.val(item.cmdline); + + var html = []; + for(var j = 0; j < item.desc.length; j++) { + html.push('
' + item.desc[j] + '
'); + } + dom.sftp_desc.html(html.join('')); return; } } notify_error('所选的配置项不存在!'); }); - dom.sftp_select_app.click(function () { - select_local_file(function (code, path) { - if (code == 0) { - dom.sftp_app.val(path); - } else { - console.log("can not select file."); - } - }); - }); dom.telnet_type.change(function () { @@ -374,20 +375,17 @@ $(document).ready(function () { if (item.name === g_cfg.telnet.selected) { dom.telnet_app.val(item.app); dom.telnet_cmdline.val(item.cmdline); + + var html = []; + for(var j = 0; j < item.desc.length; j++) { + html.push('
' + item.desc[j] + '
'); + } + dom.telnet_desc.html(html.join('')); return; } } notify_error('所选的配置项不存在!'); }); - dom.telnet_select_app.click(function () { - select_local_file(function (code, path) { - if (code == 0) { - dom.telnet_app.val(path); - } else { - console.log("can not select file."); - } - }); - }); dom.rdp_type.change(function () { @@ -397,23 +395,23 @@ $(document).ready(function () { if (item.name === g_cfg.rdp.selected) { dom.rdp_app.val(item.app); dom.rdp_cmdline.val(item.cmdline); + + var html = []; + for(var j = 0; j < item.desc.length; j++) { + html.push('
' + item.desc[j] + '
'); + } + dom.rdp_desc.html(html.join('')); return; } } notify_error('所选的配置项不存在!'); }); - dom.rdp_select_app.click(function () { - select_local_file(function (code, path) { - if (code == 0) { - dom.rdp_app.val(path); - } else { - console.log("can not select file."); - } - }); - }); + + + get_config(); dom.btn_save.click(function () { on_save(); }); -}); \ No newline at end of file +}); diff --git a/client/tp_assist_macos/site/less/style.less b/client/tp_assist_macos/site/less/style.less index 6560fe8..b85be3d 100644 --- a/client/tp_assist_macos/site/less/style.less +++ b/client/tp_assist_macos/site/less/style.less @@ -98,6 +98,12 @@ html, body { .input-args { font-family: @font-family-mono; } + + .desc { + // display:inline-block; + margin-top:5px; + color:rgb(107, 107, 107); + } } .arg-varb { diff --git a/client/tp_assist_macos/src/apple-scpt/iterm2.scpt b/client/tp_assist_macos/src/apple-scpt/iterm2.scpt index 85f01b998cacd8a913ebe8755f9331dde9ba2314..431c2bf779e8e8c340ebc470140c0bf35a6bcc3a 100644 GIT binary patch delta 26 gcmeAYc)-7bjg66EvM5_5kgR1>XJpvCnJt_V09rf-Q2+n{ delta 68 tcmaFB-zBhtjg6m=p_HMRA(bHqh>IDDC$qCfVu&TOsiTW+?qmyR1OO5&4_yEN diff --git a/client/tp_assist_macos/src/apple-scpt/terminal.scpt b/client/tp_assist_macos/src/apple-scpt/terminal.scpt index bd6e757f8e45b0f2190df2a799dc7364e6fcb96b..abda883671f069658116bc4e307ae8a5565190c4 100644 GIT binary patch delta 610 zcmZvZIcyU_6o%h;eJs22`XT}sD>qc2AXk8dPzvMx*4h@Uco%EEAth842qdJb z=paBx0W#F|Ic?_-Ih=!#145`Ne%>ykV~Uw?r1$^te>0EI_HyrwA{oaooZ=@=@B`oF zu$a)&lpuj)9mg^sDGUw1EVaw8N*~J;rBCIHuiw0NE)k^+icunsBOKxY-{=f!*w=9+ z?TC5xkjTIRMWXmhy26`ckWLC=54+gWu}A45#r=CV%c+LvO{c13R~8gg?8qC+xuFPK zQkq?3*hU{)*u;j8?f>ffp>B(H`TQnji@s5KmRvRqn{XqP7dsYvRf}MYX0k=4xzp z{<34YtcvA7aK{=A;1L1ODPWb7qz<1_xHPQEXEAedm8GL~yP;u)$r`uWWLbWWnS~|3 z`%SN|VKE@9Q`56r1`j4aP&PwZ9&m(e5FfCn4l8NB9dq-Wt)tNHg;r&3oUxW0n$6lM^W|8sRTq@F#!p zJHN5v-`2+a6dO<}M5>l1FX+%^ z(Jgd92akBj1H~i6QfRF_cCv+BbH7u_DIWTbkexn2G6h5KD*1}*G-)uPkUS&7D}-6+ zKKHoG9mV=TmG%Rr8+-pzQrtzSl%(j4R-AI734;QPJAS|3)8CG634fbgh;ow~T<02B zxx!^GA;v{6aGrCVVLwukO(Zh;^>mkBNEdhF+4ORkxao*&i$NsPkL!`5|?@d V>5)>|D^^|Ce_&YJam_Ib+Ha_8`rrTn diff --git a/client/tp_assist_macos/src/csrc/ts_cfg.cpp b/client/tp_assist_macos/src/csrc/ts_cfg.cpp index 71ad8bf..7e3daf5 100644 --- a/client/tp_assist_macos/src/csrc/ts_cfg.cpp +++ b/client/tp_assist_macos/src/csrc/ts_cfg.cpp @@ -100,15 +100,13 @@ bool TsCfg::_parse_app(const Json::Value& m_root, const ex_astr& str_app, APP_CO cfg.cmdline = jAppList[i]["cmdline"].asCString(); if(jAppList[i]["desc"].size() > 0) { -// cfg.description = jApp["available"][i]["app"].asCString(); - const Json::Value& jAppDescList = jAppList[i]["desc"]; int j = 0; for(j = 0; j < jAppDescList.size(); ++j) { - if(!jAppDescList[i].isString()) + if(!jAppDescList[j].isString()) return false; - cfg.description.push_back(jAppDescList[i].asCString()); + cfg.description.push_back(jAppDescList[j].asCString()); } } @@ -139,8 +137,8 @@ bool TsCfg::_load(const ex_astr& str_json) { return false; if(!_parse_app(m_root, "sftp", sftp)) return false; - if(!_parse_app(m_root, "telnet", telnet)) - return false; +// if(!_parse_app(m_root, "telnet", telnet)) +// return false; if(!_parse_app(m_root, "rdp", rdp)) return false; diff --git a/client/tp_assist_macos/src/csrc/ts_http_rpc.cpp b/client/tp_assist_macos/src/csrc/ts_http_rpc.cpp index 4f2bc74..f74a9a7 100644 --- a/client/tp_assist_macos/src/csrc/ts_http_rpc.cpp +++ b/client/tp_assist_macos/src/csrc/ts_http_rpc.cpp @@ -687,9 +687,34 @@ void TsHttpRpc::_rpc_func_run_client(const ex_astr& func_args, ex_astr& buf) //============================================== // sorry, TELNET not supported yet for macOS. - _create_json_ret(buf, TPE_NOT_IMPLEMENT); - return; - } + _create_json_ret(buf, TPE_NOT_IMPLEMENT); + return; + +// if(g_cfg.telnet.name == "terminal" || g_cfg.telnet.name == "iterm2") { +// char szCmd[1024] = {0}; +// ex_strformat(szCmd, 1023, "telnet -l %s %s %d", sid.c_str(), teleport_ip.c_str(), teleport_port); +// +// char szTitle[128] = {0}; +// ex_strformat(szTitle, 127, "TP#%s", real_host_ip.c_str()); +// +// int ret = AppDelegate_start_ssh_client(g_app, szCmd, g_cfg.telnet.name.c_str(), g_cfg.telnet.cmdline.c_str(), szTitle); +// if(ret == 0) +// _create_json_ret(buf, TPE_OK); +// else +// _create_json_ret(buf, TPE_FAILED); +// return; +// } +// +// if(g_cfg.telnet.application.length() == 0) { +// _create_json_ret(buf, TPE_NOT_EXISTS); +// return; +// } +// +// s_exec = g_cfg.telnet.application; +// s_argv.push_back(s_exec.c_str()); +// +// s_arg = g_cfg.telnet.cmdline; + } //---- split s_arg and push to s_argv --- diff --git a/server/www/teleport/static/js/tp-const.js b/server/www/teleport/static/js/tp-const.js index 9d520d2..a4491ea 100755 --- a/server/www/teleport/static/js/tp-const.js +++ b/server/www/teleport/static/js/tp-const.js @@ -262,6 +262,9 @@ function tp_error_msg(error_code, message) { case TPE_PRIVILEGE: msg = '没有此操作权限'; break; + case TPE_NOT_IMPLEMENT: + msg = '功能尚未实现'; + break; case TPE_EXISTS: msg = '已经存在'; break;