diff --git a/build/builder/build-assist.py b/build/builder/build-assist.py index 56d22aa..a228b4e 100644 --- a/build/builder/build-assist.py +++ b/build/builder/build-assist.py @@ -114,7 +114,7 @@ class BuilderMacOS(BuilderBase): utils.ensure_file_exists(os.path.join(out_file, 'Contents', 'Info.plist')) def build_installer(self): - cc.i('build assist installer...') + cc.e('assist for macOS does not need an installer, you should make an .DMG file for release...') # name = 'teleport-assist-{}-{}'.format(ctx.dist, VER_TP_ASSIST) # diff --git a/build/builder/build-external.py b/build/builder/build-external.py index 1443094..f9b9485 100644 --- a/build/builder/build-external.py +++ b/build/builder/build-external.py @@ -564,7 +564,7 @@ class BuilderMacOS(BuilderBase): if not os.path.exists(self.OPENSSL_PATH_SRC): os.system('tar -zxvf "{}/{}" -C "{}"'.format(PATH_DOWNLOAD, file_name, self.PATH_TMP)) - cc.n('build openssl static...') + cc.n('build openssl static...', end='') if os.path.exists(os.path.join(self.PATH_RELEASE, 'lib', 'libssl.a')): cc.w('already exists, skip.') return @@ -579,7 +579,7 @@ class BuilderMacOS(BuilderBase): os.chdir(old_p) def _build_libuv(self, file_name): - cc.w('build libuv...') + cc.n('prepare libuv source code...', end='') # return if not os.path.exists(self.LIBUV_PATH_SRC): # os.system('tar -zxvf "{}/{}" -C "{}"'.format(PATH_DOWNLOAD, file_name, PATH_TMP)) diff --git a/build/builder/build-version.py b/build/builder/build-version.py index d423902..afaaa82 100644 --- a/build/builder/build-version.py +++ b/build/builder/build-version.py @@ -140,6 +140,23 @@ class Builder: plist_file = os.path.join(env.root_path, 'client', 'tp_assist_macos', 'src', 'tp_assist-Info.plist') self._update_ver_plist(plist_file, self.VER_TP_ASSIST) + ver_file = os.path.join(env.root_path, 'client', 'tp_assist_macos', 'src', 'csrc', 'ts_ver.h') + ver_content = '#ifndef __TS_ASSIST_VER_H__\n#define __TS_ASSIST_VER_H__\n\n#define TP_ASSIST_VER\tL"{}"\n\n#endif // __TS_ASSIST_VER_H__\n'.format(self.VER_TP_ASSIST) + + rewrite = False + if not os.path.exists(ver_file): + rewrite = True + else: + with open(ver_file, 'r') as f: + old_content = f.read() + if old_content != ver_content: + rewrite = True + + if rewrite: + cc.v(' update {}...'.format(ver_file)) + with open(ver_file, 'w') as f: + f.write(ver_content) + def make_tpweb_ver(self): ver_file = os.path.join(env.root_path, 'server', 'tp_web', 'src', 'ts_ver.h') ver_content = '#ifndef __TS_SERVER_VER_H__\n#define __TS_SERVER_VER_H__\n\n#define TP_SERVER_VER\tL"{}"\n\n#endif // __TS_SERVER_VER_H__\n'.format(self.VER_TP_TPWEB) @@ -403,7 +420,7 @@ class Builder: old_ver = '.'.join(v) if old_ver == ver: continue - lines[x] = '{ver}'.format(ver=ver) + lines[x] = '\t{ver}\n'.format(ver=ver) bOK = True if bOK: diff --git a/build/builder/core/utils.py b/build/builder/core/utils.py index 245b7d1..5ca1f38 100644 --- a/build/builder/core/utils.py +++ b/build/builder/core/utils.py @@ -319,7 +319,7 @@ def xcode_build(proj_file, proj_name, target, force_rebuild): cmd = 'xcodebuild -project "{}" -target {} -configuration {}'.format(proj_file, proj_name, target) ret, _ = sys_exec(cmd, direct_output=True) if ret != 0: - raise RuntimeError('build MSVC project `{}` failed.'.format(proj_name)) + raise RuntimeError('build XCode project `{}` failed.'.format(proj_name)) def nsis_build(nsi_file, _define=''): diff --git a/build/builder/core/ver.py b/build/builder/core/ver.py index 39dd75d..d48092b 100644 --- a/build/builder/core/ver.py +++ b/build/builder/core/ver.py @@ -1,3 +1,3 @@ # -*- coding: utf8 -*- -VER_TP_SERVER = "3.0.0.2" -VER_TP_ASSIST = "3.0.0.2" +VER_TP_SERVER = "3.0.0.3" +VER_TP_ASSIST = "3.0.0.3" 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 e7253c6..cc2660a 100644 --- a/client/tp_assist_macos/src/csrc/ts_http_rpc.cpp +++ b/client/tp_assist_macos/src/csrc/ts_http_rpc.cpp @@ -21,22 +21,22 @@ /* 1. -SecureCRT支持设置标签页的标题,命令行参数 /N "tab name"就可以 +SecureCRT梅脽鈮ッ封γ嬅封垰卤脥芦漏鈥溾墺碌茠卤脥脙鈥毬Bㄢ垰赂隆脫鈥撯撯墹艗聽藵 /N "tab name"忙脮酶鈥︹溾 Example: To launch a new Telnet session, displaying the name "Houston, TX" on the tab, use the following: /T /N "Houston, TX" /TELNET 192.168.0.6 2. -多次启动的SecureCRT放到一个窗口的不同标签页中,使用参数: /T +鈭傗÷ヅ掆垎脵鈭偯樎灯扴ecureCRT鈭戔増碌惟鈥溌垙藛楼鈭灻糕亜碌茠鈮ぢ暵泵嵚┾溾墺梅鈥撀B犗鈥濃垰鈮づ捖犓澛b埆 /T SecureCRT.exe /T /N "TP#ssh://192.168.1.3" /SSH2 /L root /PASSWORD 1234 120.26.109.25 3. -telnet客户端的启动: +telnet酶脮陋脽鈭偯碌茠鈭喢欌垈脴拢鈭 putty.exe telnet://administrator@127.0.0.1:52389 -如果是SecureCRT,则需要 +禄脕蟺藲聽芦SecureCRT拢篓鈥樏氣撁嬧溾劉 SecureCRT.exe /T /N "TP#telnet://192.168.1.3" /SCRIPT X:\path\to\startup.vbs /TELNET 127.0.0.1 52389 -其中,startup.vbs的内容为: ----------文件开始--------- +鈭嗏懊封撀B╯tartup.vbs碌茠茠鈦劼烩号掆劉拢鈭 +---------艗茠潞藳酶鈩⒙犅--------- #$language = "VBScript" #$interface = "1.0" Sub main @@ -45,11 +45,11 @@ Sub main crt.Screen.Send "SESSION-ID" & VbCr crt.Screen.Synchronous = False End Sub ----------文件结束--------- +---------艗茠潞藳惟路聽炉--------- -4. 为了让putty的窗口标签显示正常的IP,可以尝试在连接成功后,主动向服务端发送下列命令: +4. 艗鈩⒙∶禄鈭歱utty碌茠楼鈭灻糕亜卤脥芦漏艙鈥樎犆︹櫵濃墺拢碌茠IP拢篓酶鈥︹溾樷墺垄聽鈥樷樷亜隆篓惟鈥濃墺鈥ο露鈭浡B匪溾垈脴艙脷鈭懰浥捗掆垈脌鈭懧⒚脮艙卢隆鈥撯垰赂隆脫拢鈭 PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@192.168.1.2: \w\a\]$PS1" -手工测试了,ubuntu服务器可以,不知道是否能够支持所有的Linux。SecureCRT对此表示忽略。 +聽梅蟺搂鈮も毬犫樎∶拢篓ubuntu鈭懰浥捗掆垎藴酶鈥︹溾樎Bㄢ墹陋梅鈩⒙德柯犅垜脪茠鈥瓜陋梅脽鈮ッ访藰鈥濃撀灯扡inux掳拢SecureCRT鈭傗樎ッ卤脤聽忙鈭喡樎奥 */ // #define RDP_CLIENT_SYSTEM_BUILTIN @@ -253,7 +253,7 @@ void TsHttpRpc::_mg_event_handler(struct mg_connection *nc, int ev, void *ev_dat uri = &_uri[0]; #ifdef EX_DEBUG - char* dbg_method = NULL; + const char* dbg_method = NULL; if (hm->method.len == 3 && 0 == memcmp(hm->method.p, "GET", hm->method.len)) dbg_method = "GET"; else if (hm->method.len == 4 && 0 == memcmp(hm->method.p, "POST", hm->method.len)) @@ -283,7 +283,7 @@ void TsHttpRpc::_mg_event_handler(struct mg_connection *nc, int ev, void *ev_dat } ex_astr temp; - int offset = uri.find("/", 1); + size_t offset = uri.find("/", 1); if (offset > 0) { temp = uri.substr(1, offset-1); @@ -375,7 +375,7 @@ int TsHttpRpc::_parse_request(struct http_message* req, ex_astr& func_cmd, ex_as ex_astrs strs; - size_t pos_start = 1; // 跳过第一个字节,一定是 '/' + size_t pos_start = 1; // 脙炉蟺藵碌鈦勨溌垙藛鈼娒肺┾亜拢篓鈥溌垈庐聽芦 '/' size_t i = 0; for (i = pos_start; i < req->uri.len; ++i) @@ -388,7 +388,7 @@ int TsHttpRpc::_parse_request(struct http_message* req, ex_astr& func_cmd, ex_as tmp_uri.assign(req->uri.p + pos_start, i - pos_start); strs.push_back(tmp_uri); } - pos_start = i + 1; // 跳过当前找到的分隔符 + pos_start = i + 1; // 脙炉蟺藵碌卤芦鈭炩欌溌滴┞灯掆垜梅鈭徝欌垜藲 } } if (pos_start < req->uri.len) @@ -436,12 +436,12 @@ int TsHttpRpc::_parse_request(struct http_message* req, ex_astr& func_cmd, ex_as if (func_args.length() > 0) { - // 将参数进行 url-decode 解码 - int len = func_args.length() * 2; + // 惟麓鈮づ捖犓澪┞撯 url-decode 惟鈥毬 + size_t len = func_args.length() * 2; ex_chars sztmp; sztmp.resize(len); memset(&sztmp[0], 0, len); - if (-1 == ts_url_decode(func_args.c_str(), func_args.length(), &sztmp[0], len, 0)) + if (-1 == ts_url_decode(func_args.c_str(), (int)func_args.length(), &sztmp[0], (int)len, 0)) return TPE_HTTP_URL_ENCODE; func_args = &sztmp[0]; @@ -487,7 +487,7 @@ void TsHttpRpc::_process_js_request(const ex_astr& func_cmd, const ex_astr& func void TsHttpRpc::_create_json_ret(ex_astr& buf, int errcode) { - // 返回: {"code":123} + // 鈭懧德柯b埆 {"code":123} Json::FastWriter jr_writer; Json::Value jr_root; @@ -504,11 +504,11 @@ void TsHttpRpc::_create_json_ret(ex_astr& buf, Json::Value& jr_root) void TsHttpRpc::_rpc_func_run_client(const ex_astr& func_args, ex_astr& buf) { - // 入参:{"ip":"192.168.5.11","port":22,"uname":"root","uauth":"abcdefg","authmode":1,"protocol":2} + // 禄脦鈮づ捖b埆{"ip":"192.168.5.11","port":22,"uname":"root","uauth":"abcdefg","authmode":1,"protocol":2} // authmode: 1=password, 2=private-key // protocol: 1=rdp, 2=ssh - // SSH返回: {"code":0, "data":{"sid":"0123abcde"}} - // RDP返回: {"code":0, "data":{"sid":"0123abcde0A"}} + // SSH鈭懧德柯b埆 {"code":0, "data":{"sid":"0123abcde"}} + // RDP鈭懧德柯b埆 {"code":0, "data":{"sid":"0123abcde0A"}} Json::Reader jreader; Json::Value jsRoot; @@ -524,7 +524,7 @@ void TsHttpRpc::_rpc_func_run_client(const ex_astr& func_args, ex_astr& buf) return; } - // 判断参数是否正确 + // 鈮堚撯垈艙鈮づ捖犓澛犅垜脪鈥櫵澛烩垜 if (!jsRoot["teleport_ip"].isString() || !jsRoot["teleport_port"].isNumeric() || !jsRoot["remote_host_ip"].isString() || !jsRoot["session_id"].isString() || !jsRoot["protocol_type"].isNumeric() || !jsRoot["protocol_sub_type"].isNumeric() @@ -565,8 +565,111 @@ void TsHttpRpc::_rpc_func_run_client(const ex_astr& func_args, ex_astr& buf) //============================================== // sorry, RDP not supported yet for macOS. - _create_json_ret(buf, TPE_NOT_IMPLEMENT); - return; +// _create_json_ret(buf, TPE_NOT_IMPLEMENT); +// return; + + + int rdp_w = 800; + int rdp_h = 640; + bool rdp_console = false; + + if (!jsRoot["rdp_width"].isNull()) { + if (jsRoot["rdp_width"].isNumeric()) { + rdp_w = jsRoot["rdp_width"].asUInt(); + } + else { + _create_json_ret(buf, TPE_PARAM); + return; + } + } + + if (!jsRoot["rdp_height"].isNull()) { + if (jsRoot["rdp_height"].isNumeric()) { + rdp_h = jsRoot["rdp_height"].asUInt(); + } + else { + _create_json_ret(buf, TPE_PARAM); + return; + } + } + + if (!jsRoot["rdp_console"].isNull()) { + if (jsRoot["rdp_console"].isBool()) { + rdp_console = jsRoot["rdp_console"].asBool(); + } + else { + _create_json_ret(buf, TPE_PARAM); + return; + } + } + + + size_t split_pos = sid.length() - 2; + ex_astr real_sid = sid.substr(0, split_pos); + ex_astr str_pwd_len = sid.substr(split_pos, sid.length()); + size_t n_pwd_len = strtol(str_pwd_len.c_str(), NULL, 16); + n_pwd_len -= real_sid.length(); + n_pwd_len -= 2; + char szPwd[256] = { 0 }; + for (int i = 0; i < n_pwd_len; i++) + { + szPwd[i] = '*'; + } + + ex_astr2wstr(real_sid, w_sid); + + //w_exe_path = _T("\""); + //w_exe_path += g_cfg.rdp_app + _T("\" "); + //w_exe_path += g_cfg.rdp_cmdline; + w_exe_path = _T("xfreerdp -u {user_name} {clipboard} {drives} "); + + { + // w_exe_path += L"{size} {console} {clipboard} {drives} "; + // w_exe_path += g_cfg.rdp_cmdline; + + ex_wstr w_screen; + + if (rdp_w == 0 || rdp_h == 0) { + w_screen = _T("/f"); + } + else { + char sz_size[64] = {0}; + ex_strformat(sz_size, 63, "/size:%dx%d", rdp_w, rdp_h); + ex_astr2wstr(sz_size, w_screen); + } + + const wchar_t* w_console = NULL; + + if (rdp_console) + { + w_console = _T("/admin"); + } + else + { + w_console = _T(""); + } + + ex_wstr w_password; + ex_astr2wstr(szPwd, w_password); + w_exe_path += _T(" -p "); + w_exe_path += w_password; + + w_sid = _T("02") + w_sid; + + //w_exe_path += _T(" /gdi:sw"); + w_exe_path += _T(" {host_ip}:{host_port}"); + + ex_replace_all(w_exe_path, _T("{size}"), w_screen); + ex_replace_all(w_exe_path, _T("{console}"), w_console); + //ex_replace_all(w_exe_path, _T("{clipboard}"), L"+clipboard"); + ex_replace_all(w_exe_path, _T("{clipboard}"), _T("/clipboard")); + ex_replace_all(w_exe_path, _T("{drives}"), _T("/drives")); +// } +// else { +// _create_json_ret(buf, TPE_FAILED); +// return; + } + } else if (pro_type == TP_PROTOCOL_TYPE_SSH) { @@ -606,6 +709,31 @@ void TsHttpRpc::_rpc_func_run_client(const ex_astr& func_args, ex_astr& buf) _create_json_ret(buf, TPE_NOT_IMPLEMENT); return; } + + ex_replace_all(w_exe_path, _T("{host_port}"), w_port); + ex_replace_all(w_exe_path, _T("{host_ip}"), w_teleport_ip.c_str()); + ex_replace_all(w_exe_path, _T("{user_name}"), w_sid.c_str()); + ex_replace_all(w_exe_path, _T("{real_ip}"), w_real_host_ip.c_str()); + //ex_replace_all(w_exe_path, _T("{assist_tools_path}"), g_env.m_tools_path.c_str()); + + + Json::Value root_ret; + ex_astr utf8_path; + ex_wstr2astr(w_exe_path, utf8_path, EX_CODEPAGE_UTF8); + root_ret["path"] = utf8_path; + + // if (!CreateProcess(NULL, (wchar_t *)w_exe_path.c_str(), NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi)) + // { + // EXLOGE(_T("CreateProcess() failed. Error=0x%08X.\n %s\n"), GetLastError(), w_exe_path.c_str()); + // root_ret["code"] = TPE_START_CLIENT; + // _create_json_ret(buf, root_ret); + // return; + // } + + system(utf8_path.c_str()); + + root_ret["code"] = TPE_OK; + _create_json_ret(buf, root_ret); } diff --git a/client/tp_assist_macos/src/csrc/ts_ver.h b/client/tp_assist_macos/src/csrc/ts_ver.h index 26478fd..41ae9fa 100644 --- a/client/tp_assist_macos/src/csrc/ts_ver.h +++ b/client/tp_assist_macos/src/csrc/ts_ver.h @@ -1,6 +1,6 @@ -#ifndef __TS_ASSIST_VER_H__ -#define __TS_ASSIST_VER_H__ - -#define TP_ASSIST_VER L"3.0.0.1" - -#endif // __TS_ASSIST_VER_H__ +#ifndef __TS_ASSIST_VER_H__ +#define __TS_ASSIST_VER_H__ + +#define TP_ASSIST_VER L"3.0.0.3" + +#endif // __TS_ASSIST_VER_H__ diff --git a/client/tp_assist_macos/src/tp_assist-Info.plist b/client/tp_assist_macos/src/tp_assist-Info.plist index 2808bde..a3f832f 100644 --- a/client/tp_assist_macos/src/tp_assist-Info.plist +++ b/client/tp_assist_macos/src/tp_assist-Info.plist @@ -17,17 +17,19 @@ CFBundlePackageType APPL CFBundleShortVersionString -3.0.0.2 CFBundleSignature + 3.0.0.3 + CFBundleSignature ???? CFBundleVersion -3.0.0.2 LSApplicationCategoryType + 3.0.0.3 + LSApplicationCategoryType public.app-category.productivity LSMinimumSystemVersion ${MACOSX_DEPLOYMENT_TARGET} LSUIElement NSHumanReadableCopyright - Copyright 漏 2017 EOMSOFT. All rights reserved. + Copyright 漏 2017~2018 EOMSOFT. All rights reserved. NSMainNibFile MainMenu NSPrincipalClass diff --git a/client/tp_assist_win/tp_assist.rc b/client/tp_assist_win/tp_assist.rc index 4cd3e21..3798fed 100644 Binary files a/client/tp_assist_win/tp_assist.rc and b/client/tp_assist_win/tp_assist.rc differ diff --git a/client/tp_assist_win/ts_ver.h b/client/tp_assist_win/ts_ver.h index c1a832b..41ae9fa 100644 --- a/client/tp_assist_win/ts_ver.h +++ b/client/tp_assist_win/ts_ver.h @@ -1,6 +1,6 @@ #ifndef __TS_ASSIST_VER_H__ #define __TS_ASSIST_VER_H__ -#define TP_ASSIST_VER L"3.0.0.2" +#define TP_ASSIST_VER L"3.0.0.3" #endif // __TS_ASSIST_VER_H__ diff --git a/dist/client/windows/assist/installer.nsi b/dist/client/windows/assist/installer.nsi index 503cf27..f07f878 100644 Binary files a/dist/client/windows/assist/installer.nsi and b/dist/client/windows/assist/installer.nsi differ diff --git a/server/tp_core/core/tp_core.rc b/server/tp_core/core/tp_core.rc index bdab1f8..e6ea184 100644 Binary files a/server/tp_core/core/tp_core.rc and b/server/tp_core/core/tp_core.rc differ diff --git a/server/tp_core/core/ts_ver.h b/server/tp_core/core/ts_ver.h index f62ed9d..9fca771 100644 --- a/server/tp_core/core/ts_ver.h +++ b/server/tp_core/core/ts_ver.h @@ -1,6 +1,6 @@ #ifndef __TS_SERVER_VER_H__ #define __TS_SERVER_VER_H__ -#define TP_SERVER_VER L"3.0.0.2" +#define TP_SERVER_VER L"3.0.0.3" #endif // __TS_SERVER_VER_H__ diff --git a/server/www/teleport/webroot/app/app_ver.py b/server/www/teleport/webroot/app/app_ver.py index 44872ba..b5fd62d 100644 --- a/server/www/teleport/webroot/app/app_ver.py +++ b/server/www/teleport/webroot/app/app_ver.py @@ -1,2 +1,2 @@ # -*- coding: utf8 -*- -TP_SERVER_VER = "3.0.0.2" +TP_SERVER_VER = "3.0.0.3" diff --git a/server/www/teleport/webroot/app/base/cron.py b/server/www/teleport/webroot/app/base/cron.py index c449306..2f183ab 100644 --- a/server/www/teleport/webroot/app/base/cron.py +++ b/server/www/teleport/webroot/app/base/cron.py @@ -56,7 +56,7 @@ class TPCron(threading.Thread): log.e('got exception when exec job: {}\n'.format(j)) -def tp_corn(): +def tp_cron(): """ 鍙栧緱TPCron绠$悊鍣ㄧ殑鍞竴瀹炰緥 diff --git a/server/www/teleport/webroot/app/base/database/create.py b/server/www/teleport/webroot/app/base/database/create.py index 51e5f75..b1ad5d6 100644 --- a/server/www/teleport/webroot/app/base/database/create.py +++ b/server/www/teleport/webroot/app/base/database/create.py @@ -649,6 +649,22 @@ class DatabaseInit: # gh_id: 涓绘満缁処D f.append('`gh_id` int(11) DEFAULT 0') + # 鍚庣画瀛楁浠呯敤浜庢樉绀 + + # u_name: 鐢ㄦ埛鐧诲綍鍚 + f.append('`u_name` varchar(32) DEFAULT ""') + # u_surname: 鐢ㄦ埛濮撳悕 + f.append('`u_surname` varchar(64) DEFAULT ""') + + # h_name: 涓绘満鍚嶇О + f.append('`h_name` varchar(64) DEFAULT ""') + # ip: IP鍦板潃 + f.append('`ip` varchar(40) NOT NULL') + # router_ip: 璺敱IP + f.append('`router_ip` varchar(40) DEFAULT ""') + # router_port: 璺敱绔彛 + f.append('`router_port` int(11) DEFAULT 0') + self._db_exec( '鍒涘缓瀹¤鎺堟潈鏄犲皠琛...', 'CREATE TABLE `{}audit_map` ({});'.format(self.db.table_prefix, ','.join(f)) diff --git a/server/www/teleport/webroot/app/base/session.py b/server/www/teleport/webroot/app/base/session.py index 2cdf139..3285bfa 100644 --- a/server/www/teleport/webroot/app/base/session.py +++ b/server/www/teleport/webroot/app/base/session.py @@ -4,7 +4,7 @@ import datetime import threading from app.base.configs import tp_cfg -from app.base.cron import tp_corn +from app.base.cron import tp_cron class SessionManager(object): @@ -28,7 +28,7 @@ class SessionManager(object): def init(self): self.update_default_expire() - tp_corn().add_job('session_expire', self._check_expire, first_interval_seconds=None, interval_seconds=60) + tp_cron().add_job('session_expire', self._check_expire, first_interval_seconds=None, interval_seconds=60) return True def update_default_expire(self): diff --git a/server/www/teleport/webroot/app/base/stats.py b/server/www/teleport/webroot/app/base/stats.py index c9f9a3a..8d83c97 100644 --- a/server/www/teleport/webroot/app/base/stats.py +++ b/server/www/teleport/webroot/app/base/stats.py @@ -4,7 +4,7 @@ import psutil from app.base.utils import tp_utc_timestamp_ms from app.const import * from app.base.wss import tp_wss -from app.base.cron import tp_corn +from app.base.cron import tp_cron from app.model import stats @@ -61,9 +61,9 @@ class TPStats(object): self._counter_stats = c # 姣 5绉 閲囬泦涓娆$郴缁熺姸鎬佺粺璁℃暟鎹 - tp_corn().add_job('sys_status', self._check_sys_stats, first_interval_seconds=self._INTERVAL, interval_seconds=self._INTERVAL) + tp_cron().add_job('sys_status', self._check_sys_stats, first_interval_seconds=self._INTERVAL, interval_seconds=self._INTERVAL) # 姣 涓灏忔椂 閲嶆柊鏌ヨ涓娆℃暟鎹簱锛屽緱鍒扮敤鎴锋暟/涓绘満鏁/璐﹀彿鏁/杩炴帴鏁帮紝閬垮厤缁熻鏁伴噺鍑虹幇鍋忓樊 - tp_corn().add_job('query_counter', self._query_counter, first_interval_seconds=60 * 60, interval_seconds=60 * 60) + tp_cron().add_job('query_counter', self._query_counter, first_interval_seconds=60 * 60, interval_seconds=60 * 60) tp_wss().register_get_sys_status_callback(self.get_sys_stats) tp_wss().register_get_stat_counter_callback(self.get_counter_stats) diff --git a/server/www/teleport/webroot/app/base/webapp.py b/server/www/teleport/webroot/app/base/webapp.py index ffb80ed..ad17f0f 100644 --- a/server/www/teleport/webroot/app/base/webapp.py +++ b/server/www/teleport/webroot/app/base/webapp.py @@ -16,7 +16,7 @@ from app.base.configs import tp_cfg from app.base.db import get_db from app.base.logger import log from app.base.session import tp_session -from app.base.cron import tp_corn +from app.base.cron import tp_cron from app.base.stats import tp_stats @@ -25,6 +25,7 @@ class WebApp: import builtins if '__web_app__' in builtins.__dict__: raise RuntimeError('WebApp object exists, you can not create more than one instance.') + self._cfg_file = '' def init(self, path_app_root, path_data): log.initialize() @@ -39,8 +40,8 @@ class WebApp: cfg.cfg_path = os.path.join(path_data, 'etc') cfg.log_path = os.path.join(path_data, 'log') - _cfg_file = os.path.join(cfg.cfg_path, 'web.ini') - if not cfg.load(_cfg_file): + self._cfg_file = os.path.join(cfg.cfg_path, 'web.ini') + if not cfg.load(self._cfg_file): return False return True @@ -63,9 +64,10 @@ class WebApp: def run(self): log.i('\n') log.i('###############################################################\n') - log.i('Web Server starting ...\n') + log.i('Load config file: {}\n'.format(self._cfg_file)) + log.i('Teleport Web Server starting ...\n') - tp_corn().init() + tp_cron().init() # 灏濊瘯閫氳繃CORE-JSON-RPC鑾峰彇core鏈嶅姟鐨勯厤缃紙涓昏鏄痵sh/rdp/telnet鐨勭鍙d互鍙婂綍鍍忔枃浠跺瓨鏀捐矾寰勶級 self._get_core_server_config() @@ -144,14 +146,14 @@ class WebApp: return 0 # 鍚姩瀹氭椂浠诲姟璋冨害鍣 - tp_corn().start() + tp_cron().start() try: tornado.ioloop.IOLoop.instance().start() except: log.e('\n') - tp_corn().stop() + tp_cron().stop() return 0 diff --git a/server/www/teleport/webroot/app/controller/audit.py b/server/www/teleport/webroot/app/controller/audit.py index 64b2e9a..e75c526 100644 --- a/server/www/teleport/webroot/app/controller/audit.py +++ b/server/www/teleport/webroot/app/controller/audit.py @@ -526,8 +526,10 @@ class ComandLogHandler(TPBaseHandler): if ret != TPE_OK: return + protocol = int(protocol) + param = dict() - header, err = record.read_record_head(record_id) + header, err = record.read_record_head(protocol, record_id) if header is None: # return self.write('鎿嶄綔澶辫触锛乕{}]'.format(err)) param['code'] = err @@ -543,7 +545,6 @@ class ComandLogHandler(TPBaseHandler): param['code'] = TPE_OK cmd_type = 0 # 0 = ssh, 1 = sftp - protocol = int(protocol) if protocol == 1: pass elif protocol == 2: diff --git a/server/www/teleport/webroot/app/controller/user.py b/server/www/teleport/webroot/app/controller/user.py index 2bb1eac..4db6a8a 100644 --- a/server/www/teleport/webroot/app/controller/user.py +++ b/server/www/teleport/webroot/app/controller/user.py @@ -553,6 +553,9 @@ class DoUpdateUserHandler(TPBaseJsonHandler): args['password'] = tp_gen_password(8) err, _ = user.create_user(self, args) if err == TPE_OK: + if len(args['email']) == 0: + return self.write_json(TPE_OK) + # 瀵逛簬鍒涘缓鎴愬姛鐨勭敤鎴凤紝鍙戦佸瘑鐮侀偖浠跺嚱 sys_smtp_password = tp_cfg().sys_smtp_password if len(sys_smtp_password) > 0: diff --git a/server/www/teleport/webroot/app/model/record.py b/server/www/teleport/webroot/app/model/record.py index dd9137b..3c4db85 100644 --- a/server/www/teleport/webroot/app/model/record.py +++ b/server/www/teleport/webroot/app/model/record.py @@ -48,6 +48,8 @@ def get_records(handler, sql_filter, sql_order, sql_limit, sql_restrict, sql_exc for h in s.recorder: if h.h_id not in allow_hids: allow_hids.append(h.h_id) + if len(allow_hids) == 0: + return TPE_OK, 0, [] if allow_uid == 0 and len(allow_hids) == 0: return TPE_FAILED, 0, [] diff --git a/version.in b/version.in index 374a5fb..725428a 100644 --- a/version.in +++ b/version.in @@ -13,7 +13,7 @@ Revision 锛 淇鍙枫備富鐗堟湰鍙峰拰娆$増鏈彿閮界浉鍚屼絾淇鍙蜂笉鍚 Build 锛 鏋勫缓鍙枫傛瀯寤哄彿鐢ㄤ簬琛ㄦ槑姝ょ増鏈彂甯冧箣鍓嶈繘琛屼簡澶氬皯娆℃瀯寤哄強娴嬭瘯銆傛煇浜涙儏鍐典笅姝ょ増鏈彿鍙互鐪佺暐銆 -TP_SERVER 3.0.0.2 # 鏁翠釜鏈嶅姟绔墦鍖呯殑鐗堟湰 -TP_TPCORE 3.0.0.2 # 鏍稿績鏈嶅姟 tp_core 鐨勭増鏈 +TP_SERVER 3.0.0.3 # 鏁翠釜鏈嶅姟绔墦鍖呯殑鐗堟湰 +TP_TPCORE 3.0.0.3 # 鏍稿績鏈嶅姟 tp_core 鐨勭増鏈 TP_TPWEB 3.0.0.1 # web鏈嶅姟 tp_web 鐨勭増鏈紙涓鑸櫎闈炲崌绾ython锛屽惁鍒欎笉浼氬彉鍖栵級 -TP_ASSIST 3.0.0.2 # 鍔╂墜鐗堟湰 +TP_ASSIST 3.0.0.3 # 鍔╂墜鐗堟湰