1.时间不对会导致身份证认证器失效,在系统配置里面添加时间的配置,管理员直接可以在页面配置调整系统时间

2.邮箱没有配置的时候创建账号,实际成功了但是没发邮件,完全红色的提示容易有误解-->改为绿底红色显示。
pull/111/head
“haocao” 2018-09-28 21:10:40 +08:00
parent 051b1fee28
commit 2ba6b59359
6 changed files with 146 additions and 1 deletions

74
server/www/teleport/static/js/system/config.js Normal file → Executable file
View File

@ -21,6 +21,7 @@ $app.on_init = function (cb_stack) {
$app.storage = $app.create_config_storage();
cb_stack.add($app.storage.init);
$app.systime = $app.create_config_systime();
cb_stack.exec();
};
@ -769,3 +770,76 @@ $app.create_config_storage = function () {
return _sto;
};
$app.create_config_systime = function () {
var _st = {};
_st.dom = {
tp_time: $('#system-time'),
sys_data_set: $("#system-data-set"),
sys_time_set: $("#system-time-set"),
btn_sys_time_save: $('#btn-system-time-save')
};
$app.sys_time = 0;
_st.init = function (cb_stack) {
cb_stack.exec();
};
// 获取服务器时间
_st.sync_tp_time = function () {
var data_str;
$tp.ajax_post_json('/system/get-time', {},
function (ret) {
if (ret.code === TPE_OK) {
_st.tp_time = tp_utc2local(ret.data);
_st.show_tp_time();
// 引用一下当前系统时间,因为一般只是微调
data_str = tp_format_datetime(_st.tp_time).split(" ");
_st.dom.sys_data_set.val(data_str[0]);
_st.dom.sys_time_set.val(data_str[1]);
}
},
function () {
}
);
};
_st.sync_tp_time();
_st.show_tp_time = function () {
if (_st.tp_time === 0)
return;
_st.dom.tp_time.text(tp_format_datetime(_st.tp_time));
_st.tp_time += 1;
};
setInterval(_st.show_tp_time, 1000);
// 每五分钟同步一次服务器时间,避免长时间误差积累导致显示不正确
setInterval(_st.sync_tp_time, 1000 * 60 * 5);
_st.dom.btn_sys_time_save.click(function () {
var nDate = _st.dom.sys_data_set.val();
var nTime = _st.dom.sys_time_set.val();
var full_time = nDate + " " + nTime;
if (check_date_valid(full_time) == true) {
$tp.ajax_post_json('/system/set-time', {settime: full_time},
function (ret) {
if (ret.code === TPE_OK) {
//立即更新页面显示的时间
_st.sync_tp_time();
$tp.notify_success('系统时间更新成功!');
} else {
$tp.notify_error('系统时间更新失败:' + tp_error_msg(ret.code, ret.message));
}
},
function () {
$tp.notify_error('网络故障,系统时间更新失败!');
}
);
}
});
return _st;
};

12
server/www/teleport/static/js/tp-utils.js Normal file → Executable file
View File

@ -387,3 +387,15 @@ function tp_check_strong_password(p) {
return !!((s & 1) && (s & 2) && (s & 4));
}
//检查日期合法性
function check_date_valid(date) {
var reg = /^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2}) (\d{1,2}):(\d{1,2}):(\d{1,2})$/;
var r = date.match(reg);
if(r == null) {
$tp.notify_error("输入格式不正确!" + date);
return false;
} else {
return true;
}
}

19
server/www/teleport/view/system/config.mako Normal file → Executable file
View File

@ -22,6 +22,7 @@
<li><a href="#tab-session" data-toggle="tab">连接控制</a></li>
<li><a href="#tab-smtp" data-toggle="tab">邮件系统</a></li>
<li><a href="#tab-storage" data-toggle="tab">存储</a></li>
<li><a href="#tab-systime" data-toggle="tab">时间</a></li>
## <li><a href="#tab-backup" data-toggle="tab">备份</a></li>
</ul>
@ -360,6 +361,24 @@
## <button id="btn-clear-storage" class="btn btn-sm btn-danger"><i class="fa fa-edit fa-fw"></i> 立即清理</button>
</div>
<!-- panel for system time config -->
<div class="tab-pane" id="tab-systime">
<div class="alert alert-warning">
注意:当系统时间偏离过多时,动态身份认证器将失效,可以在这里设置系统时间。请谨慎设置!
</div>
<div class="alert alert-info">
当前服务器系统时间:<span id="system-time">-</span>
</div>
<div>
<input type="date" id="system-data-set" />
<input type="time" id="system-time-set" step="1" />
<input type="button" id="btn-system-time-save" value="保存系统时间" />
</div>
<hr/>
</div>
<!-- panel for backup config -->
## <div class="tab-pane" id="tab-backup">
## <div class="alert alert-danger">备份功能尚未实现</div>

View File

@ -255,6 +255,8 @@ controllers = [
#
# - [json] 获取服务器时间
(r'/system/get-time', system.DoGetTimeHandler),
# - [json] 设置服务器时间
(r'/system/set-time', system.DoSetTimeHandler),
# - [json] 重建授权映射
(r'/system/rebuild-ops-auz-map', system.DoRebuildOpsAuzMapHandler),
(r'/system/rebuild-audit-auz-map', system.DoRebuildAuditAuzMapHandler),

35
server/www/teleport/webroot/app/controller/system.py Normal file → Executable file
View File

@ -3,6 +3,8 @@
import datetime
import json
import shutil
import time
import os
import app.model.system as system_model
import tornado.gen
@ -26,6 +28,39 @@ class DoGetTimeHandler(TPBaseJsonHandler):
time_now = int(datetime.datetime.utcnow().timestamp())
self.write_json(TPE_OK, data=time_now)
class DoSetTimeHandler(TPBaseJsonHandler):
def post(self):
ret = self.check_privilege(TP_PRIVILEGE_SYS_CONFIG)
if ret != TPE_OK:
return
args = self.get_argument('args', None)
if args is None:
return self.write_json(TPE_PARAM)
try:
args = json.loads(args)
except:
return self.write_json(TPE_JSON_FORMAT)
try:
set_time = args['settime']
except:
return self.write_json(TPE_PARAM)
try:
#这里在文件头必须import time,不然tornado会报错
time.strptime(set_time, "%Y-%m-%d %H:%M:%S")
except:
return False
cmd = 'date -s \"{}\" > /dev/null'.format(set_time)
cmd_ret = os.system(cmd)
if cmd_ret != 0:
syslog.sys_log(self.get_current_user(), self.request.remote_ip, TPE_FAILED, "系统时间修改失败,错误码{}".format(cmd_ret))
return self.write_json(TPE_FAILED, "修改系统时间出错!")
syslog.sys_log(self.get_current_user(), self.request.remote_ip, TPE_OK, "系统时间修改成功,当前时间为[{}]".format(set_time))
return self.write_json(TPE_OK)
class ConfigHandler(TPBaseHandler):
@tornado.gen.coroutine

View File

@ -608,9 +608,12 @@ class DoUpdateUserHandler(TPBaseJsonHandler):
subject='用户密码函'
)
if err != TPE_OK:
return self.write_json(TPE_OK, '用户账号创建成功,但发送密码函失败:{}'.format(msg))
return self.write_json(TPE_OK, '<font color="#e33b3b">用户账号创建成功,但发送密码函失败:{}</font>'.format(msg))
else:
return self.write_json(TPE_OK)
#在没配置邮箱得情况下给出错误提示
else:
return self.write_json(TPE_OK, '<font color="#e33b3b">用户账号创建成功,但发送密码函失败。请检查邮件配置。</font>')
else:
return self.write_json(err)
else: