mirror of https://github.com/tp4a/teleport
修正:当页面超时后,执行导入资产或导入用户的操作会失败,但得不到正确的错误原因。
parent
f565a7c92f
commit
878ca416b2
|
@ -4,7 +4,7 @@
|
||||||
<div id="page-footer">
|
<div id="page-footer">
|
||||||
<nav class="navbar navbar-fixed-bottom">
|
<nav class="navbar navbar-fixed-bottom">
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<p>触维软件旗下产品 | TELEPORT v${app_ver.TP_SERVER_VER} | ©2015 - 2017 <a href="http://teleport.eomsoft.net/" target="_blank">触维软件</a>,保留所有权利。</p>
|
<p>TELEPORT v${app_ver.TP_SERVER_VER} | ©2015 - 2018 <a href="http://www.tp4a.com/" target="_blank">TP4A</a>,保留所有权利。</p>
|
||||||
</div>
|
</div>
|
||||||
</nav>
|
</nav>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -122,25 +122,36 @@ class TPBaseHandler(tornado.web.RequestHandler):
|
||||||
def get_current_user(self):
|
def get_current_user(self):
|
||||||
return self._user
|
return self._user
|
||||||
|
|
||||||
def check_privilege(self, require_privilege):
|
def check_privilege(self, require_privilege, need_process=True):
|
||||||
if not self._user['_is_login']:
|
if not self._user['_is_login']:
|
||||||
if self._mode == self.MODE_HTTP:
|
if self._mode == self.MODE_HTTP:
|
||||||
self.redirect('/auth/login?ref={}'.format(quote(self.request.uri)))
|
if need_process:
|
||||||
|
self.redirect('/auth/login?ref={}'.format(quote(self.request.uri)))
|
||||||
elif self._mode == self.MODE_JSON:
|
elif self._mode == self.MODE_JSON:
|
||||||
self.write_json(TPE_NEED_LOGIN)
|
if need_process:
|
||||||
|
self.write_json(TPE_NEED_LOGIN)
|
||||||
else:
|
else:
|
||||||
raise RuntimeError("invalid request mode.")
|
if need_process:
|
||||||
|
raise RuntimeError("invalid request mode.")
|
||||||
|
else:
|
||||||
|
return TPE_HTTP_METHOD
|
||||||
return TPE_NEED_LOGIN
|
return TPE_NEED_LOGIN
|
||||||
|
|
||||||
else:
|
else:
|
||||||
if (self._user['privilege'] & require_privilege) != 0:
|
if (self._user['privilege'] & require_privilege) != 0:
|
||||||
return TPE_OK
|
return TPE_OK
|
||||||
|
|
||||||
if self._mode == self.MODE_HTTP:
|
if self._mode == self.MODE_HTTP:
|
||||||
self.show_error_page(TPE_PRIVILEGE)
|
if need_process:
|
||||||
|
self.show_error_page(TPE_PRIVILEGE)
|
||||||
elif self._mode == self.MODE_JSON:
|
elif self._mode == self.MODE_JSON:
|
||||||
self.write_json(TPE_PRIVILEGE)
|
if need_process:
|
||||||
|
self.write_json(TPE_PRIVILEGE)
|
||||||
else:
|
else:
|
||||||
raise RuntimeError("invalid request mode.")
|
if need_process:
|
||||||
|
raise RuntimeError("invalid request mode.")
|
||||||
|
else:
|
||||||
|
return TPE_HTTP_METHOD
|
||||||
|
|
||||||
return TPE_PRIVILEGE
|
return TPE_PRIVILEGE
|
||||||
|
|
||||||
|
|
|
@ -160,24 +160,31 @@ class DoImportHandler(TPBaseHandler):
|
||||||
def post(self):
|
def post(self):
|
||||||
"""
|
"""
|
||||||
csv导入规则:
|
csv导入规则:
|
||||||
每一行的数据格式: 操作系统类型,IP,名称,路由IP,路由端口,资产编号,协议类型,账号,认证类型,密码或私钥,账号提示,密码提示,分组,描述
|
每一行的数据格式: 主机IP,操作系统类型,名称,路由IP,路由端口,资产编号,账号,协议类型,协议端口,认证类型,密码或私钥,账号提示,密码提示,分组,描述
|
||||||
在导入时:
|
在导入时:
|
||||||
0. 以“#”作为行注释。
|
0. 以“#”作为行注释。
|
||||||
1. 首先必须是主机数据,随后可以跟多个账号数据(直到遇到下一个主机数据行之前,账号会与上一个主机关联)。
|
1. 首先必须是主机数据,随后可以跟多个账号数据(直到遇到下一个主机数据行之前,账号会与上一个主机关联)。
|
||||||
2. 一个主机或账号属于多个组,可以用“|”将组分隔,如果某个组并不存在,则会创建这个组。
|
2. 一个主机或账号属于多个组,可以用“|”将组分隔,如果某个组并不存在,则会创建这个组。
|
||||||
3. 空行跳过,数据格式不正确的跳过。
|
3. 空行跳过,数据格式不正确的跳过。
|
||||||
"""
|
"""
|
||||||
ret = self.check_privilege(TP_PRIVILEGE_ASSET_CREATE | TP_PRIVILEGE_ASSET_GROUP | TP_PRIVILEGE_USER_CREATE | TP_PRIVILEGE_USER_GROUP)
|
ret = dict()
|
||||||
if ret != TPE_OK:
|
ret['code'] = TPE_OK
|
||||||
return
|
ret['message'] = ''
|
||||||
|
|
||||||
|
rv = self.check_privilege(TP_PRIVILEGE_ASSET_CREATE | TP_PRIVILEGE_ASSET_GROUP | TP_PRIVILEGE_USER_CREATE | TP_PRIVILEGE_USER_GROUP, need_process=False)
|
||||||
|
if rv != TPE_OK:
|
||||||
|
ret['code'] = rv
|
||||||
|
if rv == TPE_NEED_LOGIN:
|
||||||
|
ret['message'] = '需要登录!'
|
||||||
|
elif rv == TPE_PRIVILEGE:
|
||||||
|
ret['message'] = '权限不足!'
|
||||||
|
else:
|
||||||
|
ret['message'] = '未知错误!'
|
||||||
|
return self.write(json.dumps(ret).encode('utf8'))
|
||||||
|
|
||||||
# success = list()
|
# success = list()
|
||||||
failed = list()
|
failed = list()
|
||||||
group_failed = list()
|
group_failed = list()
|
||||||
|
|
||||||
ret = dict()
|
|
||||||
ret['code'] = TPE_OK
|
|
||||||
ret['message'] = ''
|
|
||||||
csv_filename = ''
|
csv_filename = ''
|
||||||
|
|
||||||
try:
|
try:
|
||||||
|
|
|
@ -310,17 +310,26 @@ class DoImportHandler(TPBaseHandler):
|
||||||
2. 一个用户属于多个组,可以用“|”将组分隔,如果某个组并不存在,则会创建这个组。
|
2. 一个用户属于多个组,可以用“|”将组分隔,如果某个组并不存在,则会创建这个组。
|
||||||
3. 空行跳过,数据格式不正确的跳过。
|
3. 空行跳过,数据格式不正确的跳过。
|
||||||
"""
|
"""
|
||||||
ret = self.check_privilege(TP_PRIVILEGE_USER_CREATE | TP_PRIVILEGE_USER_GROUP)
|
|
||||||
if ret != TPE_OK:
|
|
||||||
return
|
|
||||||
|
|
||||||
success = list()
|
|
||||||
failed = list()
|
|
||||||
group_failed = list()
|
|
||||||
|
|
||||||
ret = dict()
|
ret = dict()
|
||||||
ret['code'] = TPE_OK
|
ret['code'] = TPE_OK
|
||||||
ret['message'] = ''
|
ret['message'] = ''
|
||||||
|
|
||||||
|
rv = self.check_privilege(TP_PRIVILEGE_USER_CREATE | TP_PRIVILEGE_USER_GROUP, need_process=False)
|
||||||
|
if rv != TPE_OK:
|
||||||
|
ret['code'] = rv
|
||||||
|
ret['code'] = rv
|
||||||
|
if rv == TPE_NEED_LOGIN:
|
||||||
|
ret['message'] = '需要登录!'
|
||||||
|
elif rv == TPE_PRIVILEGE:
|
||||||
|
ret['message'] = '权限不足!'
|
||||||
|
else:
|
||||||
|
ret['message'] = '未知错误!'
|
||||||
|
return self.write(json.dumps(ret).encode('utf8'))
|
||||||
|
|
||||||
|
success = list()
|
||||||
|
failed = list()
|
||||||
|
group_failed = list()
|
||||||
csv_filename = ''
|
csv_filename = ''
|
||||||
|
|
||||||
try:
|
try:
|
||||||
|
|
Loading…
Reference in New Issue