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 # 鍔╂墜鐗堟湰