-// в˵Էʽ
+// 命令行参数说明(不带参数运行则以服务方式启动)
// tp_core [-i|-u|--version] [ [-d] start]
-// -d ϢΪػ/ģʽ
-// -i װȻ˳Winƽ̨
-// -u жطȻ˳Winƽ̨
-// --version ӡ汾Ȼ˳
-// start Էʽ
-// stop ֹͣеij
+// -d 启动程序并输出调试信息(不会运行为守护进程/服务模式)
+// -i 安装服务然后退出(仅限Win平台)
+// -u 卸载服务然后退出(仅限Win平台)
+// --version 打印版本号然后退出
+// start 以服务方式运行
+// stop 停止运行中的程序
//
ExLogger g_ex_logger;
@@ -205,10 +205,10 @@ static DWORD WINAPI service_thread_func(LPVOID lpParam);
int main()
{
int ret = 0;
- LPWSTR szCmdLine = (LPWSTR)::GetCommandLineW(); //ȡв
+ LPWSTR szCmdLine = (LPWSTR)::GetCommandLineW(); //获取命令行参数;
int _argc = 0;
- wchar_t** _argv = ::CommandLineToArgvW(szCmdLine, &_argc); //вַ
+ wchar_t** _argv = ::CommandLineToArgvW(szCmdLine, &_argc); //拆分命令行参数字符串;
ret = _app_main(_argc, _argv);
@@ -240,7 +240,7 @@ static DWORD WINAPI service_thread_func(LPVOID lpParam)
{
int ret = _main_loop();
- // ·״̬УΪֹͣ״̬
+ // 更新服务状态(如果服务还在运行,将其设置为停止状态)
g_ServiceStatus.dwWin32ExitCode = 0;
g_ServiceStatus.dwCurrentState = SERVICE_STOPPED;
g_ServiceStatus.dwCheckPoint = 0;
diff --git a/server/tp_core/protocol/ssh/ssh_session.cpp b/server/tp_core/protocol/ssh/ssh_session.cpp
index 71f7f2c..e81e714 100644
--- a/server/tp_core/protocol/ssh/ssh_session.cpp
+++ b/server/tp_core/protocol/ssh/ssh_session.cpp
@@ -297,8 +297,9 @@ void SshSession::_thread_loop()
if (t_now - t_last_send_keepalive >= 60)
{
t_last_send_keepalive = t_now;
- EXLOGD("[%s] send keepalive to client.\n", m_dbg_name.c_str());
+ EXLOGD("[%s] send keepalive.\n", m_dbg_name.c_str());
ssh_send_ignore(m_rs_tp2cli, "keepalive@openssh.com");
+ ssh_send_ignore(m_rs_tp2srv, "keepalive@openssh.com");
}
continue;
diff --git a/server/www/teleport/.idea/teleport.iml b/server/www/teleport/.idea/teleport.iml
index 757ecc8..812d3b6 100644
--- a/server/www/teleport/.idea/teleport.iml
+++ b/server/www/teleport/.idea/teleport.iml
@@ -1,6 +1,7 @@
+
@@ -17,7 +18,4 @@
-
-
-
\ No newline at end of file
diff --git a/server/www/teleport/.idea/webResources.xml b/server/www/teleport/.idea/webResources.xml
index 0bf2c75..3c4baf3 100644
--- a/server/www/teleport/.idea/webResources.xml
+++ b/server/www/teleport/.idea/webResources.xml
@@ -2,6 +2,13 @@
+
+
+
+
+
+
+
@@ -11,4 +18,4 @@
-
+
\ No newline at end of file
diff --git a/server/www/teleport/static/js/user/user-list.js b/server/www/teleport/static/js/user/user-list.js
index 3db85d1..418c96d 100755
--- a/server/www/teleport/static/js/user/user-list.js
+++ b/server/www/teleport/static/js/user/user-list.js
@@ -224,9 +224,7 @@ $app.on_table_users_cell_created = function (tbl, row_id, col_key, cell_obj) {
cell_obj.find('[data-check-box]').click(function () {
$app.check_user_list_all_selected();
});
- }
-
- else if (col_key === 'action') {
+ } else if (col_key === 'action') {
cell_obj.find('[data-action]').click(function () {
var user = $app.table_users.get_row(row_id);
var action = $(this).attr('data-action');
@@ -234,7 +232,7 @@ $app.on_table_users_cell_created = function (tbl, row_id, col_key, cell_obj) {
$app.dlg_edit_user.show_edit(row_id);
} else if (action === 'reset-password') {
// console.log(user);
- if(user.type === TP_USER_TYPE_LDAP)
+ if (user.type === TP_USER_TYPE_LDAP)
return;
$app.dlg_reset_password.show_edit(row_id);
} else if (action === 'reset-oath-bind') {
@@ -419,7 +417,7 @@ $app.on_table_users_render_created = function (render) {
} else {
class_user_type = '';
}
- h.push(' 重置密码');
+ h.push(' 重置密码');
h.push(' 重置身份验证器');
h.push('');
@@ -808,16 +806,16 @@ $app.create_dlg_edit_user = function () {
dlg.dom.edit_valid_from.datetimepicker({format: "yyyy-mm-dd hh:ii", autoclose: true, todayHighlight: true, todayBtn: true, language: "zh-CN"});
dlg.dom.edit_valid_to.datetimepicker({format: "yyyy-mm-dd hh:ii", autoclose: true, todayHighlight: true, todayBtn: true, language: "zh-CN"});
- dlg.dom.edit_valid_from.on('changeDate', function(ev){
+ dlg.dom.edit_valid_from.on('changeDate', function (ev) {
var start_time = dlg.dom.edit_valid_from.find('input').val();
- if(start_time === '')
+ if (start_time === '')
dlg.dom.edit_valid_to.datetimepicker('setStartDate', '1000-01-01 00:00');
else
dlg.dom.edit_valid_to.datetimepicker('setStartDate', start_time);
});
- dlg.dom.edit_valid_to.on('changeDate', function(ev){
+ dlg.dom.edit_valid_to.on('changeDate', function (ev) {
var end_time = dlg.dom.edit_valid_to.find('input').val();
- if(end_time === '')
+ if (end_time === '')
dlg.dom.edit_valid_from.datetimepicker('setEndDate', '9999-12-12 00:00');
else
dlg.dom.edit_valid_from.datetimepicker('setEndDate', end_time);
@@ -892,7 +890,7 @@ $app.create_dlg_edit_user = function () {
var role_name = '选择角色';
dlg.field_role = -1;
dlg.field_auth_type = 0;
-
+
// dlg.dom.btn_auth_use_sys_config.removeClass('tp-selected');
// dlg.dom.btn_auth_username_password.removeClass('tp-selected');
// dlg.dom.btn_auth_username_password_captcha.removeClass('tp-selected');
@@ -930,22 +928,22 @@ $app.create_dlg_edit_user = function () {
dlg.dom.edit_qq.val(user.qq);
dlg.dom.edit_wechat.val(user.wechat);
dlg.dom.edit_desc.val(user.desc);
- if (user.valid_from === 0 ) {
- dlg.dom.edit_valid_from.find('input').val('');
- dlg.dom.edit_valid_to.datetimepicker('setStartDate', '9999-12-12 00:00');
- }else{
+ if (user.valid_from === 0) {
+ dlg.dom.edit_valid_from.find('input').val('');
+ dlg.dom.edit_valid_to.datetimepicker('setStartDate', '9999-12-12 00:00');
+ } else {
var start_time = tp_format_datetime(user.valid_from, 'yyyy-MM-dd HH:mm');
- dlg.dom.edit_valid_from.find('input').val(start_time);
- dlg.dom.edit_valid_to.datetimepicker('setStartDate', start_time);
+ dlg.dom.edit_valid_from.find('input').val(start_time);
+ dlg.dom.edit_valid_to.datetimepicker('setStartDate', start_time);
}
- if (user.valid_to === 0 ) {
- dlg.dom.edit_valid_to.find('input').val('');
- dlg.dom.edit_valid_from.datetimepicker('setEndDate', '1000-01-01 00:00');
- }else{
+ if (user.valid_to === 0) {
+ dlg.dom.edit_valid_to.find('input').val('');
+ dlg.dom.edit_valid_from.datetimepicker('setEndDate', '1000-01-01 00:00');
+ } else {
var end_time = tp_format_datetime(user.valid_to, 'yyyy-MM-dd HH:mm');
- dlg.dom.edit_valid_to.find('input').val(end_time);
- dlg.dom.edit_valid_from.datetimepicker('setEndDate', end_time);
- }
+ dlg.dom.edit_valid_to.find('input').val(end_time);
+ dlg.dom.edit_valid_from.datetimepicker('setEndDate', end_time);
+ }
}
dlg.dom.selected_role.text(role_name);
@@ -1290,6 +1288,7 @@ $app.create_dlg_ldap_config = function () {
dlg.ldap_config = {
server: '',
port: '',
+ use_ssl: false,
domain: '',
admin: '',
password: '',
@@ -1315,6 +1314,7 @@ $app.create_dlg_ldap_config = function () {
attr_surname: $('#edit-ldap-attr-surname'),
attr_email: $('#edit-ldap-attr-email'),
+ btn_use_ssl: $('#edit-ldap-ssl'),
btn_switch_password: $('#btn-switch-ldap-password'),
btn_switch_password_icon: $('#btn-switch-ldap-password i'),
@@ -1338,6 +1338,10 @@ $app.create_dlg_ldap_config = function () {
}
});
+ // dlg.dom.btn_use_ssl.click(function () {
+ // dlg.ldap_config.use_ssl = $(this).is(':checked')
+ // });
+
cb_stack.exec();
};
@@ -1346,6 +1350,8 @@ $app.create_dlg_ldap_config = function () {
dlg.mode = 'set';
} else {
dlg.ldap_config = $app.options.sys_cfg.ldap;
+ if (_.isUndefined(dlg.ldap_config.use_ssl))
+ dlg.ldap_config.use_ssl = false;
dlg.mode = 'edit';
// dlg.dom.password.val();
@@ -1359,6 +1365,11 @@ $app.create_dlg_ldap_config = function () {
dlg.dom.attr_username.val(dlg.ldap_config.attr_username);
dlg.dom.attr_surname.val(dlg.ldap_config.attr_surname);
dlg.dom.attr_email.val(dlg.ldap_config.attr_email);
+
+ if (dlg.ldap_config.use_ssl)
+ dlg.dom.btn_use_ssl.prop('checked', true);
+ else
+ dlg.dom.btn_use_ssl.prop('checked', false);
}
};
@@ -1408,6 +1419,9 @@ $app.create_dlg_ldap_config = function () {
return false;
}
+ // dlg.ldap_config.use_ssl = dlg.dom.btn_use_ssl.hasClass('tp-selected');
+ dlg.ldap_config.use_ssl = $(this).is(':checked')
+
if (dlg.mode === 'set') {
if (tp_is_empty_str(dlg.ldap_config.password)) {
dlg.dom.password.focus();
@@ -1582,9 +1596,9 @@ $app.create_dlg_ldap_test_result = function () {
h.push('邮箱 | ');
h.push('');
- var _mktd = function(h, d) {
- if((!_.isUndefined(d)) && !_.isEmpty(d))
- h.push(''+d+' | ');
+ var _mktd = function (h, d) {
+ if ((!_.isUndefined(d)) && !_.isEmpty(d))
+ h.push('' + d + ' | ');
else
h.push(' | ');
};
diff --git a/server/www/teleport/view/_sidebar_nav_menu.mako b/server/www/teleport/view/_sidebar_nav_menu.mako
index 61e2c11..a3f462b 100644
--- a/server/www/teleport/view/_sidebar_nav_menu.mako
+++ b/server/www/teleport/view/_sidebar_nav_menu.mako
@@ -1,6 +1,9 @@
<%!
import app.app_ver as app_ver
from app import const
+
+ _ver_state = '' if app_ver.TP_STATE_VER == 'release' else '-{}'.format(app_ver.TP_STATE_VER)
+
_sidebar = [
{
'privilege': const.TP_PRIVILEGE_LOGIN_WEB,
@@ -213,10 +216,8 @@
-
服务端:v${app_ver.TP_SERVER_VER}
+
服务端:v${app_ver.TP_SERVER_VER}${_ver_state}
助手:
-
-##
beta版
diff --git a/server/www/teleport/view/user/user-list.mako b/server/www/teleport/view/user/user-list.mako
index 756323b..0c36131 100644
--- a/server/www/teleport/view/user/user-list.mako
+++ b/server/www/teleport/view/user/user-list.mako
@@ -45,8 +45,8 @@
@@ -236,15 +236,15 @@
-
+
开始
@@ -253,11 +253,11 @@
@@ -465,6 +471,9 @@
+
+
+
diff --git a/server/www/teleport/webroot/app/app_ver.py b/server/www/teleport/webroot/app/app_ver.py
index 3a7ad7a..4b82e4a 100644
--- a/server/www/teleport/webroot/app/app_ver.py
+++ b/server/www/teleport/webroot/app/app_ver.py
@@ -1,3 +1,4 @@
-# -*- coding: utf8 -*-
-TP_SERVER_VER = "3.5.6"
-TP_ASSIST_REQUIRE_VER = "3.5.5"
+# -*- coding: utf8 -*-
+TP_SERVER_VER = "3.5.6"
+TP_ASSIST_REQUIRE_VER = "3.5.5"
+TP_STATE_VER = "rc6"
diff --git a/server/www/teleport/webroot/app/base/configs.py b/server/www/teleport/webroot/app/base/configs.py
index ffdd665..1913e2a 100644
--- a/server/www/teleport/webroot/app/base/configs.py
+++ b/server/www/teleport/webroot/app/base/configs.py
@@ -595,6 +595,8 @@ class AppConfig(BaseAppConfig):
self.sys.ldap.server = ''
if not self.sys.ldap.is_exists('port'):
self.sys.ldap.port = 389
+ if not self.sys.ldap.is_exists('use_ssl'):
+ self.sys.ldap.use = False
if not self.sys.ldap.is_exists('domain'):
self.sys.ldap.domain = ''
if not self.sys.ldap.is_exists('admin'):
diff --git a/server/www/teleport/webroot/app/base/database/create.py b/server/www/teleport/webroot/app/base/database/create.py
index 3b84bdd..9dc5342 100644
--- a/server/www/teleport/webroot/app/base/database/create.py
+++ b/server/www/teleport/webroot/app/base/database/create.py
@@ -70,7 +70,7 @@ class DatabaseInit:
# name: 配置项名称
f.append('`name` varchar(64) NOT NULL')
# name: 配置项内容
- f.append('`value` varchar(255) NOT NULL')
+ f.append('`value` TEXT')
# 设置主键
f.append('PRIMARY KEY (`name` ASC)')
diff --git a/server/www/teleport/webroot/app/base/mail.py b/server/www/teleport/webroot/app/base/mail.py
index 52cd372..8e1ab8a 100644
--- a/server/www/teleport/webroot/app/base/mail.py
+++ b/server/www/teleport/webroot/app/base/mail.py
@@ -119,7 +119,8 @@ def tp_send_mail(recipient, message, subject=None, sender=None, cc=None, bcc=Non
except:
pass
- _smtp.login(_username, _password)
+ if _password is not None and len(_password) > 0:
+ _smtp.login(_username, _password)
_smtp.set_debuglevel(0)
send_errors = _smtp.sendmail(
diff --git a/server/www/teleport/webroot/app/controller/system.py b/server/www/teleport/webroot/app/controller/system.py
index 0bd9e54..c7a141d 100644
--- a/server/www/teleport/webroot/app/controller/system.py
+++ b/server/www/teleport/webroot/app/controller/system.py
@@ -284,7 +284,6 @@ class DoSaveCfgHandler(TPBaseJsonHandler):
tp_cfg().sys.glob.url_proto = _url_proto
else:
return self.write_json(err)
-
if 'password' in args:
processed = True
@@ -371,6 +370,7 @@ class DoSaveCfgHandler(TPBaseJsonHandler):
# _password = _cfg['password']
_server = _cfg['server']
_port = _cfg['port']
+ _use_ssl = _cfg['use_ssl']
_domain = _cfg['domain']
_admin = _cfg['admin']
_base_dn = _cfg['base_dn']
@@ -391,6 +391,7 @@ class DoSaveCfgHandler(TPBaseJsonHandler):
if err == TPE_OK:
tp_cfg().sys.ldap.server = _server
tp_cfg().sys.ldap.port = _port
+ tp_cfg().sys.ldap.use_ssl = _use_ssl
tp_cfg().sys.ldap.domain = _domain
tp_cfg().sys.ldap.admin = _admin
tp_cfg().sys.ldap.base_dn = _base_dn
@@ -478,7 +479,7 @@ class DoLdapListUserAttrHandler(TPBaseJsonHandler):
return self.write_json(TPE_PARAM)
try:
- ldap = Ldap(cfg['server'], cfg['port'], cfg['base_dn'])
+ ldap = Ldap(cfg['server'], cfg['port'], cfg['base_dn'], cfg['use_ssl'])
ret, data, err_msg = ldap.get_all_attr(cfg['admin'], cfg['password'], cfg['filter'])
if ret != TPE_OK:
return self.write_json(ret, message=err_msg)
@@ -516,7 +517,7 @@ class DoLdapConfigTestHandler(TPBaseJsonHandler):
return self.write_json(TPE_PARAM)
try:
- ldap = Ldap(cfg['server'], cfg['port'], cfg['base_dn'])
+ ldap = Ldap(cfg['server'], cfg['port'], cfg['base_dn'], cfg['use_ssl'])
ret, data, err_msg = ldap.list_users(
cfg['admin'], cfg['password'], cfg['filter'],
cfg['attr_username'], cfg['attr_surname'], cfg['attr_email'],
@@ -554,6 +555,7 @@ class DoLdapGetUsersHandler(TPBaseJsonHandler):
_password = tp_cfg().sys_ldap_password
_server = tp_cfg().sys.ldap.server
_port = tp_cfg().sys.ldap.port
+ _use_ssl = tp_cfg().sys.ldap.use_ssl
_admin = tp_cfg().sys.ldap.admin
_base_dn = tp_cfg().sys.ldap.base_dn
_filter = tp_cfg().sys.ldap.filter
@@ -564,7 +566,7 @@ class DoLdapGetUsersHandler(TPBaseJsonHandler):
return self.write_json(TPE_PARAM)
try:
- ldap = Ldap(_server, _port, _base_dn)
+ ldap = Ldap(_server, _port, _base_dn, _use_ssl)
ret, data, err_msg = ldap.list_users(_admin, _password, _filter, _attr_username, _attr_surname, _attr_email)
if ret != TPE_OK:
return self.write_json(ret, message=err_msg)
@@ -618,6 +620,7 @@ class DoLdapImportHandler(TPBaseJsonHandler):
_password = tp_cfg().sys_ldap_password
_server = tp_cfg().sys.ldap.server
_port = tp_cfg().sys.ldap.port
+ _use_ssl = tp_cfg().sys.ldap.use_ssl
_admin = tp_cfg().sys.ldap.admin
_base_dn = tp_cfg().sys.ldap.base_dn
_filter = tp_cfg().sys.ldap.filter
@@ -628,7 +631,7 @@ class DoLdapImportHandler(TPBaseJsonHandler):
return self.write_json(TPE_PARAM)
try:
- ldap = Ldap(_server, _port, _base_dn)
+ ldap = Ldap(_server, _port, _base_dn, _use_ssl)
ret, data, err_msg = ldap.list_users(_admin, _password, _filter, _attr_username, _attr_surname, _attr_email)
if ret != TPE_OK:
diff --git a/server/www/teleport/webroot/app/logic/auth/ldap.py b/server/www/teleport/webroot/app/logic/auth/ldap.py
index 625d9e8..958eaa3 100644
--- a/server/www/teleport/webroot/app/logic/auth/ldap.py
+++ b/server/www/teleport/webroot/app/logic/auth/ldap.py
@@ -8,8 +8,8 @@ from app.const import *
class Ldap(object):
- def __init__(self, ldap_host, ldap_port, base_dn):
- self._server = ldap3.Server(ldap_host, ldap_port, connect_timeout=5, use_ssl=False)
+ def __init__(self, ldap_host, ldap_port, base_dn, use_ssl):
+ self._server = ldap3.Server(ldap_host, ldap_port, connect_timeout=5, use_ssl=use_ssl)
self._base_dn = base_dn
@staticmethod
diff --git a/version.in b/version.in
index 7941094..536e498 100644
--- a/version.in
+++ b/version.in
@@ -15,3 +15,4 @@ TP_TPCORE 3.5.5 # 核心服务 tp_core 的版本
TP_TPWEB 3.1.0 # web服务 tp_web 的版本(一般除非升级Python,否则不会变化)
TP_ASSIST 3.5.6 # 助手版本
TP_ASSIST_REQUIRE 3.5.5 # 适配的助手最低版本
+TP_STATE rc6 # 版本状态,可以是 beta1,rc2 等,用于打包文件名及部分界面。如果是 release 则忽略。